diff --git a/Source/linq2db.LINQPad.csproj b/Source/linq2db.LINQPad.csproj index fb06967..d638f8d 100644 --- a/Source/linq2db.LINQPad.csproj +++ b/Source/linq2db.LINQPad.csproj @@ -70,12 +70,12 @@ False ..\Redist\LINQPad.exe - - ..\packages\Microsoft.CodeAnalysis.Common.1.1.1\lib\net45\Microsoft.CodeAnalysis.dll + + ..\packages\Microsoft.CodeAnalysis.Common.1.3.2\lib\net45\Microsoft.CodeAnalysis.dll True - - ..\packages\Microsoft.CodeAnalysis.CSharp.1.1.1\lib\net45\Microsoft.CodeAnalysis.CSharp.dll + + ..\packages\Microsoft.CodeAnalysis.CSharp.1.3.2\lib\net45\Microsoft.CodeAnalysis.CSharp.dll True @@ -140,8 +140,8 @@ - - ..\packages\System.Reflection.Metadata.1.1.0\lib\portable-net45+win8\System.Reflection.Metadata.dll + + ..\packages\System.Reflection.Metadata.1.2.0\lib\portable-net45+win8\System.Reflection.Metadata.dll True diff --git a/Source/packages.config b/Source/packages.config index b11f3e4..13b570b 100644 --- a/Source/packages.config +++ b/Source/packages.config @@ -7,8 +7,8 @@ - - + + @@ -38,7 +38,7 @@ - + diff --git a/packages/Microsoft.CodeAnalysis.CSharp.1.1.1/Microsoft.CodeAnalysis.CSharp.1.1.1.nupkg b/packages/Microsoft.CodeAnalysis.CSharp.1.1.1/Microsoft.CodeAnalysis.CSharp.1.1.1.nupkg deleted file mode 100644 index 2071b60..0000000 Binary files a/packages/Microsoft.CodeAnalysis.CSharp.1.1.1/Microsoft.CodeAnalysis.CSharp.1.1.1.nupkg and /dev/null differ diff --git a/packages/Microsoft.CodeAnalysis.CSharp.1.1.1/lib/net45/Microsoft.CodeAnalysis.CSharp.dll b/packages/Microsoft.CodeAnalysis.CSharp.1.1.1/lib/net45/Microsoft.CodeAnalysis.CSharp.dll deleted file mode 100644 index 35f86e5..0000000 Binary files a/packages/Microsoft.CodeAnalysis.CSharp.1.1.1/lib/net45/Microsoft.CodeAnalysis.CSharp.dll and /dev/null differ diff --git a/packages/Microsoft.CodeAnalysis.CSharp.1.1.1/lib/portable-net45+win8/Microsoft.CodeAnalysis.CSharp.dll b/packages/Microsoft.CodeAnalysis.CSharp.1.1.1/lib/portable-net45+win8/Microsoft.CodeAnalysis.CSharp.dll deleted file mode 100644 index 35f86e5..0000000 Binary files a/packages/Microsoft.CodeAnalysis.CSharp.1.1.1/lib/portable-net45+win8/Microsoft.CodeAnalysis.CSharp.dll and /dev/null differ diff --git a/packages/Microsoft.CodeAnalysis.CSharp.1.3.2/Microsoft.CodeAnalysis.CSharp.1.3.2.nupkg b/packages/Microsoft.CodeAnalysis.CSharp.1.3.2/Microsoft.CodeAnalysis.CSharp.1.3.2.nupkg new file mode 100644 index 0000000..fd10b5f Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.CSharp.1.3.2/Microsoft.CodeAnalysis.CSharp.1.3.2.nupkg differ diff --git a/packages/Microsoft.CodeAnalysis.CSharp.1.1.1/ThirdPartyNotices.rtf b/packages/Microsoft.CodeAnalysis.CSharp.1.3.2/ThirdPartyNotices.rtf similarity index 100% rename from packages/Microsoft.CodeAnalysis.CSharp.1.1.1/ThirdPartyNotices.rtf rename to packages/Microsoft.CodeAnalysis.CSharp.1.3.2/ThirdPartyNotices.rtf diff --git a/packages/Microsoft.CodeAnalysis.CSharp.1.3.2/lib/net45/Microsoft.CodeAnalysis.CSharp.dll b/packages/Microsoft.CodeAnalysis.CSharp.1.3.2/lib/net45/Microsoft.CodeAnalysis.CSharp.dll new file mode 100644 index 0000000..20ab202 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.CSharp.1.3.2/lib/net45/Microsoft.CodeAnalysis.CSharp.dll differ diff --git a/packages/Microsoft.CodeAnalysis.CSharp.1.1.1/lib/portable-net45+win8/Microsoft.CodeAnalysis.CSharp.xml b/packages/Microsoft.CodeAnalysis.CSharp.1.3.2/lib/net45/Microsoft.CodeAnalysis.CSharp.xml similarity index 98% rename from packages/Microsoft.CodeAnalysis.CSharp.1.1.1/lib/portable-net45+win8/Microsoft.CodeAnalysis.CSharp.xml rename to packages/Microsoft.CodeAnalysis.CSharp.1.3.2/lib/net45/Microsoft.CodeAnalysis.CSharp.xml index b40f265..031167d 100644 --- a/packages/Microsoft.CodeAnalysis.CSharp.1.1.1/lib/portable-net45+win8/Microsoft.CodeAnalysis.CSharp.xml +++ b/packages/Microsoft.CodeAnalysis.CSharp.1.3.2/lib/net45/Microsoft.CodeAnalysis.CSharp.xml @@ -1,32762 +1,33254 @@ - - - - Microsoft.CodeAnalysis.CSharp - - - - - A Binder converts names in to symbols and syntax nodes into bound trees. It is context - dependent, relative to a location in source code. - - - This portion of the binder converts a AnonymousObjectCreationExpressionSyntax into - a bound anonymous object creation node - - - This portion of the binder converts an AwaitExpressionSyntax into a BoundExpression - - - This portion of the binder converts an into a . - - - This portion of the binder converts an into a . - - - This portion of the binder converts a QueryExpressionSyntax into a BoundExpression - - - This portion of the binder reports errors arising from resolving queries. - - - This portion of the binder converts StatementSyntax nodes into BoundStatements - - - - - Get the next binder in which to look up a name, if not found by this binder. - - - - - if we are in an explicitly checked context (within checked block or expression). - if we are in an explicitly unchecked context (within unchecked block or expression). - otherwise. - - - - - True if instructions that check overflow should be generated. - - - Spec 7.5.12: - For non-constant expressions (expressions that are evaluated at run-time) that are not - enclosed by any checked or unchecked operators or statements, the default overflow checking - context is unchecked unless external factors (such as compiler switches and execution - environment configuration) call for checked evaluation. - - - - - True if the compiler should check for overflow while evaluating constant expressions. - - - Spec 7.5.12: - For constant expressions (expressions that can be fully evaluated at compile-time), - the default overflow checking context is always checked. Unless a constant expression - is explicitly placed in an unchecked context, overflows that occur during the compile-time - evaluation of the expression always cause compile-time errors. - - - - - Some nodes have special binder's for their contents (like Block's) - - - - - Get locals declared immediately in scope represented by the node. - - - - - The member containing the binding context. Note that for the purposes of the compiler, - a lambda expression is considered a "member" of its enclosing method, field, or lambda. - - - - - Is the contained code within a member method body? - - - May be false in lambdas that are outside of member method bodies, e.g. lambdas in - field initializers. - - - - - Is the contained code within an iterator block? - - - Will be false in a lambda in an iterator. - - - - - Is the contained code within the syntactic span of an - iterator method? - - - Will be true in a lambda in an iterator. - - - - - If we are inside a context where a break statement is legal, - returns the that a break statement would branch to. - Returns null otherwise. - - - - - If we are inside a context where a continue statement is legal, - returns the that a continue statement would branch to. - Returns null otherwise. - - - - - Get the element type of this iterator. - - Node to report diagnostics, if any, such as "yield statement cannot be used - inside a lambda expression" - Where to place any diagnostics - Element type of the current iterator, or an error type. - - - - The Imports for all containing namespace declarations (innermost-to-outermost, including global). - - - - - The type containing the binding context - - - - - Returns true if the binder is binding top-level script code. - - - - - Issue an error or warning for a symbol if it is Obsolete. If there is not enough - information to report diagnostics, then store the symbols so that diagnostics - can be reported at a later stage. - - - - - True if the symbol is definitely obsolete. - False if the symbol is definitely not obsolete. - Unknown if the symbol may be obsolete. - - NOTE: The return value reflects obsolete-ness, not whether or not the diagnostic was reported. - - - - - Expression lvalue and rvalue requirements. - - - - - Expression is the RHS of an assignment operation. - - - The following are rvalues: values, variables, null literals, properties - and indexers with getters, events. The following are not rvalues: - namespaces, types, method groups, anonymous functions. - - - - - Expression is the RHS of an assignment operation - and may be a method group. - - - - - Expression is the LHS of a simple assignment operation. - - - - - Expression is the operand of an increment - or decrement operation. - - - - - Expression is the LHS of a compound assignment - operation (such as +=). - - - - - Expression is an out parameter. - - - - - Expression is the operand of an address-of operation (&). - - - - - Expression is the receiver of a fixed buffer field access - - - - - Report diagnostics that should be reported when using a synthesized attribute. - - - - - Outside of checked, unchecked expression/block. - - - - - Within unchecked expression/block. - - - - - Within checked expression/block. - - - - - We represent the set of query variables in scope at a particular point by a RangeVariableMap. - Each query variable in scope has a key in this map. If the corresponding value is empty, then - that query variable is represented directly by a lambda parameter. If it is non-empty, then - to get the value of that query variable one starts with the first parameter of the current - lambda (the first parameter is always the transparent one), and dot through its members using - the names in the value list, in reverse order. So, for example, if the query variable "x" has - a value in this map of ["Item2", "Item1", "Item1"], then the way to compute the value of that - query variable is starting with the current lambda's first parameter P, compute "P.Item1.Item1.Item2". - See also WithQueryLambdaParametersBinder. - - - - - Actually, defines if an error ERR_AnonymousTypeNotAvailable is to be generated; - - Dev10 rules (which are based on BindingContext::InMethod()) are difficult to - reproduce, so this implementation checks both current symbol as well as syntax nodes. - - - - - Returns the type to be used as a field type; generates errors in case the type is not - supported for anonymous type fields. - - - - - Gets the rewritten attribute constructor arguments, i.e. the arguments - are in the order of parameters, which may differ from the source - if named constructor arguments are used. - - For example: - void Foo(int x, int y, int z, int w = 3); - - Foo(0, z: 2, y: 1); - - Arguments returned: 0, 1, 2, 3 - - Rewritten attribute constructor arguments - - CONSIDER: Can we share some code will call rewriting in the local rewriter? - - - - - Walk a custom attribute argument bound node and return a TypedConstant. Verify that the expression is a constant expression. - - - - - Return true iff an await with this subexpression would be legal where the expression appears. - - - - - Assuming we are in an async method, return true if we're in a context where await would be illegal. - Specifically, return true if we're in a lock, catch, or finally. - - - - - Reports an error if the await expression did not occur in an async context. - - True if the expression contains errors. - - - - Report diagnostics if the await expression occurs in a context where it is not allowed. - - True if errors were found. - - - - Finds and validates the required members of an awaitable expression, as described in spec 7.7.7.1. - - True if the expression is awaitable; false otherwise. - - - - Validates the awaited expression, returning true if no errors are found. - - - - - Finds the GetAwaiter method of an awaitable expression. - - - Spec 7.7.7.1: - An awaitable expression t has an accessible instance or extension method called GetAwaiter with no - parameters and no type parameters, and a return type A that meets the additional requirements for an - Awaiter. - NOTE: this is an error in the spec. An extension method of the form - Awaiter<T> GetAwaiter<T>(this Task<T>) may be used. - - - - - Finds the IsCompleted property of an Awaiter type. - - - Spec 7.7.7.1: - An Awaiter A has an accessible, readable instance property IsCompleted of type bool. - - - - - Checks that the Awaiter implements System.Runtime.CompilerServices.INotifyCompletion. - - - Spec 7.7.7.1: - An Awaiter A implements the interface System.Runtime.CompilerServices.INotifyCompletion. - - - - - Finds the GetResult method of an Awaiter type. - - - Spec 7.7.7.1: - An Awaiter A has an accessible instance method GetResult with no parameters and no type parameters. - - - - - Return a collection of bound constraint clauses indexed by type parameter - ordinal. All constraint clauses are bound, even if there are multiple constraints - for the same type parameter, or constraints for unrecognized type parameters. - Extra constraints are not included in the returned collection however. - - - - - Bind and return a single type parameter constraint clause. - - - - - Returns true if the type is a valid constraint type. - Otherwise returns false and generates a diagnostic. - - - - - This method implements the algorithm in spec section 7.6.5.1. - - For method group conversions, there are situations in which the conversion is - considered to exist ("Otherwise the algorithm produces a single best method M having - the same number of parameters as D and the conversion is considered to exist"), but - application of the conversion fails. These are the "final validation" steps of - overload resolution. - - - True if there is any error. - - - - - Performs the following checks: - - Spec 7.6.5: Invocation expressions (definition of Final Validation) - The method is validated in the context of the method group: If the best method is a static method, - the method group must have resulted from a simple-name or a member-access through a type. If the best - method is an instance method, the method group must have resulted from a simple-name, a member-access - through a variable or value, or a base-access. If neither of these requirements is true, a binding-time - error occurs. - (Note that the spec omits to mention, in the case of an instance method invoked through a simple name, that - the invocation must appear within the body of an instance method) - - Spec 7.5.4: Compile-time checking of dynamic overload resolution - If F is a static method, the method group must have resulted from a simple-name, a member-access through a type, - or a member-access whose receiver can't be classified as a type or value until after overload resolution (see §7.6.4.1). - If F is an instance method, the method group must have resulted from a simple-name, a member-access through a variable or value, - or a member-access whose receiver can't be classified as a type or value until after overload resolution (see §7.6.4.1). - - - True if there is any error. - - - - - Was the receiver expression compiler-generated? - - - - - This method implements the checks in spec section 15.2. - - - - - This method combines final validation (section 7.6.5.1) and delegate compatibility (section 15.2). - - CSharpSyntaxNode of the expression requiring method group conversion. - Conversion to be performed. - Optional receiver. - Method invoked as extension method. - Target delegate type. - Where diagnostics should be added. - True if a diagnostic has been added. - - - - This method is a wrapper around MethodGroupConversionHasErrors. As a preliminary step, - it checks whether a conversion exists. - - - - - We can't use BindNamespaceOrTypeSymbol, since it doesn't return inaccessible symbols (directly). - - - Guaranteed not to return null. - - CONSIDER: As in dev11, we don't handle ambiguity at this level. Hypothetically, - we could just pick one, though an "ideal" solution would probably involve a search - down all ambiguous branches. - - - - - Perform lookup (optionally, in a specified container). If nothing is found and the member name matches the containing type - name, then use the instance constructors of the type instead. The resulting symbols are sorted since tie-breaking is based - on order and we want cref binding to be repeatable. - - - Never returns null. - - - - - Given a list of viable lookup results (based on the name, arity, and containing symbol), - attempt to select one. - - - - - At this point, we have a list of viable symbols and no parameter list with which to perform - overload resolution. We'll just return the first symbol, giving a diagnostic if there are - others. - Caveat: If there are multiple candidates and only one is from source, then the source symbol - wins and no diagnostic is reported. - - - - - Replace any named type in the symbol list with its instance constructors. - Construct all candidates with the implicitly-declared CrefTypeParameterSymbols. - - - - - Given a list of method and/or property candidates, choose the first one (if any) with a signature - that matches the parameter list in the cref. Return null if there isn't one. - - - Produces a diagnostic for ambiguous matches, but not for unresolved members - WRN_BadXMLRef is - handled in BindMemberCref. - - - - - If the member is generic, construct it with the CrefTypeParameterSymbols that should be in scope. - - - - - Keep in sync with CSharpSemanticModel.GetSpeculativelyBoundExpression. - - - - - Determines whether "this" reference is available within the current context. - - The reference was explicitly specified in syntax. - True if "this" is not available due to the current method/property/field initializer being static. - True if a reference to "this" is available. - - - - Returns true if the node is in a position where an unbound type - such as (C<,>) is allowed. - - - - - Generates a new with no known type - - - - - Generates a new with no known type, and the given bound child. - - - - - Generates a new with no known type, and the given bound children. - - - - - Generates a new with no known type, given lookup resultKind. - - - - - Generates a new with no known type, given lookup resultKind and the given bound child. - - - - - Generates a new with no known type, given lookup resultKind and the given bound children. - - - - - Generates a new with no known type, given lookupResultKind and given symbols for GetSemanticInfo API. - - - - - Generates a new with no known type, given lookupResultKind and given symbols for GetSemanticInfo API, - and the given bound child. - - - - - Generates a new with no known type, given lookupResultKind and given symbols for GetSemanticInfo API, - and the given bound children. - - - - - Generates a new with no known type, given lookupResultKind and given symbols for GetSemanticInfo API, - and the given bound children. - - - - - Helper method to generate a bound expression with HasErrors set to true. - Returned bound expression is guaranteed to have a non-null type, except when is an unbound lambda. - If already has errors and meets the above type requirements, then it is returned unchanged. - Otherwise, if is a BoundBadExpression, then it is updated with the and non-null type. - Otherwise, a new wrapping is returned. - - - Returned expression need not be a , but is guaranteed to have HasErrors set to true. - - - - - Bind the expression and verify the expression matches the combination of lvalue and - rvalue requirements given by valueKind. If the expression was bound successfully, but - did not meet the requirements, the return value will be a that - (typically) wraps the subexpression. - - - - - This function is only needed for SemanticModel to perform binding for erroneous cases. - - - - - Binds a simple identifier. - - - - - This implements the casting behavior described in section 6.2.3 of the spec: - - - If the nullable conversion is from S to T?, the conversion is evaluated as the underlying conversion - from S to T followed by a wrapping from T to T?. - - This particular check is done in the binder because it involves conversion processing rules (like overflow - checking and constant folding) which are not handled by Conversions. - - - - - Gets the NameSyntax associated with the syntax node - If no syntax is attached it sets the nameString to plain text - name and returns a null NameSyntax - - Syntax node - Plain text name - - - - Gets the plain text name associated with the expression syntax node - - Expression syntax node - Plain text name - - - - This method walks through the array's InitializerExpressionSyntax and binds all the initializer expressions recursively. - NOTE: It doesn't convert the bound initializer expressions to array's element type. - NOTE: This is done separately in ConvertAndBindArrayInitialization method below. - - Initializer Syntax. - Bound expression builder. - Diagnostics. - Current array dimension being processed. - Rank of the array type. - - - - Given an array of bound initializer expressions, this method converts these bound expressions - to array's element type and generates a BoundArrayInitialization with the converted initializers. - - Diagnostics. - Initializer Syntax. - Array type. - Known array bounds. - Current array dimension being processed. - Array of bound initializer expressions. - - Index into the array of bound initializer expressions to fetch the next bound expression. - - - - - - Bind the (implicit or explicit) constructor initializer of a constructor symbol (in source). - - - Null for implicit, - BaseConstructorInitializerSyntax.ArgumentList, or - ThisConstructorInitializerSyntax.ArgumentList, or - BaseClassWithArgumentsSyntax.ArgumentList for explicit. - Constructor containing the initializer. - Accumulates errors (e.g. unable to find constructor to invoke). - A bound expression for the constructor initializer call. - - This method should be kept consistent with Compiler.BindConstructorInitializer (e.g. same error codes). - - - - - Given the type containing constructors, gets the list of candidate instance constructors and uses overload resolution to determine which one should be called. - - The containing type of the constructors. - The already bound arguments to the constructor. - The name to use in diagnostics if overload resolution fails. - The location at which to report overload resolution result diagnostics. - True to suppress overload resolution result diagnostics (but not argument diagnostics). - Where diagnostics will be reported. - If this method returns true, then it will contain a valid MethodResolutionResult. - Otherwise, it may contain a MethodResolutionResult for an inaccessible constructor (in which case, it will incorrectly indicate success) or nothing at all. - Candidate instance constructors of type used for overload resolution. - It is always legal to access a protected base class constructor - via a constructor initializer, but not from an object creation expression. - True if overload resolution successfully chose an accessible constructor. - - The two-pass algorithm (accessible constructors, then all constructors) is the reason for the unusual signature - of this method (i.e. not populating a pre-existing ). - Presently, rationalizing this behavior is not worthwhile. - - - - - Binds a member access expression - - - - - Attempt to bind the LHS of a member access expression. If this is a Color Color case (spec 7.6.4.1), - then return a BoundExpression if we can easily disambiguate or a BoundTypeOrValueExpression if we - cannot. If this is not a Color Color case, then return null. - - - - - Bind the RHS of a member access expression, given the bound LHS. - It is assumed that CheckValue has not been called on the LHS. - - - - - Create a value from the expression that can be used as a left-hand-side - of a member access. This method special-cases method and property - groups only. All other expressions are returned as is. - - - - - Report the error from member access lookup. Or, if there - was no explicit error from lookup, report "no such member". - - - - - Return true if the given type is or implements a WinRTAsyncInterface. - - - - - Return a BoundExpression representing the invalid member. - - - - - Combine the receiver and arguments of an extension method - invocation into a single argument list to allow overload resolution - to treat the invocation as a static method invocation with no receiver. - - - - - Binds a static or instance member access. - - - - - Given a viable LookupResult, report any ambiguity errors and return either a single - non-method symbol or a method or property group. If the result set represents a - collection of methods or a collection of properties where at least one of the properties - is an indexed property, then 'methodOrPropertyGroup' is populated with the method or - property group and the method returns null. Otherwise, the method returns a single - symbol and 'methodOrPropertyGroup' is empty. (Since the result set is viable, there - must be at least one symbol.) If the result set is ambiguous - either containing multiple - members of different member types, or multiple properties but no indexed properties - - then a diagnostic is reported for the ambiguity and a single symbol is returned. - - - - - Perform lookup and overload resolution on methods defined directly on the class and any - extension methods in scope. Lookup will occur for extension methods in all nested scopes - as necessary until an appropriate method is found. If analyzedArguments is null, the first - method group is returned, without overload resolution being performed. That method group - will either be the methods defined on the receiver class directly (no extension methods) - or the first set of extension methods. - - - - - Represents a small change from the enclosing/next binder. - Can specify a BindingLocation and a ContainingMemberOrLambda. - - - - - Represents a small change from the enclosing/next binder. - Can specify a receiver Expression for containing conditional member access. - - - - - It seems to be common to do both of these things at once, so provide a way to do so - without adding two links to the binder chain. - - - - - In regular C#, all field initializers are assignments to fields and the assigned expressions - may not reference instance members. - - - - - In script C#, some field initializers are assignments to fields and others are global - statements. There are no restrictions on accessing instance members. - - - - - Helper method to create a synthesized method invocation expression. - - Syntax Node. - Receiver for the method call. - Method to be invoked on the receiver. - Arguments to the method call. - Diagnostics. - Optional type arguments syntax. - Optional type arguments. - The syntax for the query clause generating this invocation expression, if any. - True to allow invocation of fields and properties of delegate type. Only methods are allowed otherwise. - False to prevent selecting a params method in unexpanded form. - Synthesized method invocation expression. - - - - Bind an expression as a method invocation. - - - - - Bind an expression as a method invocation. - - - - - Perform overload resolution on the method group or expression (BoundMethodGroup) - and arguments and return a BoundExpression representing the invocation. - - Invocation syntax node. - The syntax for the invoked method, including receiver. - Name of the invoked method. - Overload resolution result for method group executed by caller. - Arguments bound by the caller. - Method group if the invocation represents a potentially overloaded member. - Delegate type if method group represents a delegate. - Diagnostics. - The syntax for the query clause generating this invocation expression, if any. - BoundCall or error expression representing the invocation. - - - Invocation syntax node. - The syntax for the invoked method, including receiver. - - - - Replace a BoundTypeOrValueExpression with a BoundExpression for either a type (if useType is true) - or a value (if useType is false). Any other node is unmodified. - - - Call this once overload resolution has succeeded on the method group of which the BoundTypeOrValueExpression - is the receiver. Generally, useType will be true if the chosen method is static and false otherwise. - - - - - Return the delegate type if this expression represents a delegate. - - - - - Returns true if syntax form is OK (so no errors were reported) - - - - - Helper method that checks whether there is an invocable 'nameof' in scope. - - - - - Performs name lookup for simple generic or non-generic name - within an optional qualifier namespace or type symbol. - If LookupOption.AttributeTypeOnly is set, then it performs - attribute type lookup which involves attribute name lookup - with and without "Attribute" suffix. - - - - - Look for any symbols in scope with the given name and arity. - - - Makes a second attempt if the results are not viable, in order to produce more detailed failure information (symbols and diagnostics). - - - - - If qualifierOpt is null, look for any symbols in - scope with the given name and arity. - Otherwise look for symbols that are members of the specified qualifierOpt. - - - - - Look for symbols that are members of the specified namespace or type. - - - - - Lookup a member name in a submission chain. - - - We start with the current submission class and walk the submission chain back to the first submission. - The search has two phases - 1) We are looking for any symbol matching the given name, arity, and options. If we don't find any the search is over. - If we find and overloadable symbol(s) (a method or an indexer) we start looking for overloads of this kind - (lookingForOverloadsOfKind) of symbol in phase 2. - 2) If a visited submission contains a matching member of a kind different from lookingForOverloadsOfKind we stop - looking further. Otherwise, if we find viable overload(s) we add them into the result. - - Note that indexers are not supported in script but we deal with them here to handle errors. - - - - - Lookup extension methods by name and arity in the given binder and - check viability in this binder. The lookup is performed on a single - binder because extension method search stops at the first applicable - method group from the nearest enclosing namespace. - - - - - Lookup attribute name in the given binder. By default two name lookups are performed: - (1) With the provided name - (2) With an Attribute suffix added to the provided name - Lookup with Attribute suffix is performed only if LookupOptions.VerbatimAttributeName is not set. - - If either lookup is ambiguous, we return the corresponding result with ambiguous symbols. - Else if exactly one result is single viable attribute type, we return that result. - Otherwise, we return a non-viable result with LookupResult.NotAnAttributeType or an empty result. - - - - - Return the extension methods from this specific binding scope that match the name and optional - arity. Since the lookup of extension methods is iterative, proceeding one binding scope at a time, - GetCandidateExtensionMethods should not defer to the next binding scope. Instead, the caller is - responsible for walking the nested binding scopes from innermost to outermost. This method is overridden - to search the available members list in binding types that represent types, namespaces, and usings. - - - - - If the type implements one of a select few WinRT interfaces, the interface type is - projected to the CLR collection type (e.g., IVector to IList). - When importing a winmd type it may implement one or more winmd collection - interfaces. When the collection interfaces are projected, we may need - to add the projected members to the imported type so that calls to those - members succeed as normal. This method adds the interface methods to - the lookup, if necessary. The CLR understands that a call to the .NET interface - should be projected onto the WinRT interface method. - - - - - This helper is used to determine whether this symbol hides / is hidden - based on its signature, as opposed to its name. - - - CONSIDER: It might be nice to generalize this - maybe an extension method - on Symbol (e.g. IsOverloadable or HidesByName). - - - - - Distinguish from , which performs an analogous task for Add*LookupSymbolsInfo*. - - - - - Used by Add*LookupSymbolsInfo* to determine whether the symbol is of interest. - Distinguish from , which performs an analogous task for LookupSymbols*. - - - Does not consider - that is left to the caller. - - - - - A symbol is accessible for referencing in a cref if it is in the same assembly as the reference - or the symbols's effective visibility is not private. - - - - - Check whether "symbol" is accessible from this binder. - Also checks protected access via "accessThroughType". - - - - - Check whether "symbol" is accessible from this binder. - Also checks protected access via "accessThroughType", and sets "failedThroughTypeCheck" if fails - the protected access check. - - - - - Should only be called by , - which will already have checked for . - - - - - Look for names in scope - - - - - Look for names of members - - - - - Don't call this one directly - call one of the helpers. - - - - - For "receiver.event += expr", produce "receiver.add_event(expr)". - For "receiver.event -= expr", produce "receiver.remove_event(expr)". - - - Performs some validation of the accessor that couldn't be done in CheckEventValueKind, because - the specific accessor wasn't known. - - - - - If one of the (unconverted) operands has constant value null and the other has - a null constant value other than null, then they are definitely not equal - and we can give a constant value for either == or !=. This is a spec violation - that we retain from Dev10. - - The operator kind. Nothing will happen if it is not a lifted equality operator. - The left-hand operand of the operation (possibly wrapped in a conversion). - The right-hand operand of the operation (possibly wrapped in a conversion). - - If the operator represents lifted equality, then constant value true if both arguments have constant - value null, constant value false if exactly one argument has constant value null, and null otherwise. - If the operator represents lifted inequality, then constant value false if both arguments have constant - value null, constant value true if exactly one argument has constant value null, and null otherwise. - - - SPEC VIOLATION: according to the spec (section 7.19) constant expressions cannot - include implicit nullable conversions or nullable subexpressions. However, Dev10 - specifically folds over lifted == and != (see ExpressionBinder::TryFoldingNullableEquality). - Dev 10 does do compile-time evaluation of simple lifted operators, but it does so - in a rewriting pass (see NullableRewriter) - they are not treated as constant values. - - - - - Returns ConstantValue.Bad if, and only if, compound string length is out of supported limit. - The parameter contains value corresponding to the - left node, or zero, which will trigger inference. Upon return, it will - be adjusted to correspond future result node. - - - - - From ExpressionBinder::EnsureQMarkTypesCompatible: - - The v2.0 specification states that the types of the second and third operands T and S of a ternary operator - must be TT and TS such that either (a) TT==TS, or (b), TT->TS or TS->TT but not both. - - Unfortunately that is not what we implemented in v2.0. Instead, we implemented - that either (a) TT=TS or (b) T->TS or S->TT but not both. That is, we looked at the - convertibility of the expressions, not the types. - - - Changing that to the algorithm in the standard would be a breaking change. - - b ? (Func<int>)(delegate(){return 1;}) : (delegate(){return 2;}) - - and - - b ? 0 : myenum - - would suddenly stop working. (The first because o2 has no type, the second because 0 goes to - any enum but enum doesn't go to int.) - - It gets worse. We would like the 3.0 language features which require type inference to use - a consistent algorithm, and that furthermore, the algorithm be smart about choosing the best - of a set of types. However, the language committee has decided that this algorithm will NOT - consume information about the convertibility of expressions. Rather, it will gather up all - the possible types and then pick the "largest" of them. - - To maintain backwards compatibility while still participating in the spirit of consistency, - we implement an algorithm here which picks the type based on expression convertibility, but - if there is a conflict, then it chooses the larger type rather than producing a type error. - This means that b?0:myshort will have type int rather than producing an error (because 0->short, - myshort->int). - - - - - Constant folding for conditional (aka ternary) operators. - - - - - This is a clone of the Dev10 logic for reporting query errors. - - - - - This is the set of parameters and local variables that were used as arguments to - lock or using statements in enclosing scopes. - - - using (x) { } // x counts - using (IDisposable y = null) { } // y does not count - - - - - Noteworthy override is in MemberSemanticModel.IncrementalBinder (used for caching). - - - - - Report an error if this is an awaitable async method invocation that is not being awaited. - - - The checks here are equivalent to StatementBinder::CheckForUnobservedAwaitable() in the native compiler. - - - - - Wrap the initializer in a BoundFixedLocalCollectionInitializer so that the rewriter will have the - information it needs (e.g. conversions, helper methods). - - - - - The purpose of this method is to determine if the expression is classified by the - specification as a *variable*. If it is not then this code gives an appropriate error message. - - To determine the appropriate error message we need to know two things: - - (1) why do we want to know if this is a variable? Because we are trying to assign it, - increment it, or pass it by reference? - - (2) Are we trying to determine if the left hand side of a dot is a variable in order - to determine if the field or property on the right hand side of a dot is assignable? - - - - - Check the expression is of the required lvalue and rvalue specified by valueKind. - The method returns the original expression if the expression is of the required - type. Otherwise, an appropriate error is added to the diagnostics bag and the - method returns a BoundBadExpression node. The method returns the original - expression without generating any error if the expression has errors. - - - - - There are two BadEventUsage error codes and this method decides which one should - be used for a given event. - - - - - SPEC: When a property or indexer declared in a struct-type is the target of an - SPEC: assignment, the instance expression associated with the property or indexer - SPEC: access must be classified as a variable. If the instance expression is - SPEC: classified as a value, a compile-time error occurs. Because of 7.6.4, - SPEC: the same rule also applies to fields. - - - NOTE: The spec fails to impose the restriction that the receiver must be classified - as a variable (unlike for properties - 7.17.1). This seems like a bug, but we have - production code that won't build with the restriction in place (see DevDiv #15674). - - - - - Wrap a given expression e into a block as either { e; } or { return e; } - Shared between lambda and expression-bodied method binding. - - - - - Binds an expression-bodied member with expression e as either { return e;} or { e; }. - - - - - Binds a lambda with expression e as either { return e;} or { e; }. - - - - - Binds the type for the syntax taking into account possibility of "var" type. - - Type syntax to bind. - Diagnostics. - - Set to false if syntax binds to a type in the current context and true if - syntax is "var" and it binds to "var" keyword in the current context. - - - Bound type if syntax binds to a type in the current context and - null if syntax binds to "var" keyword in the current context. - - - - - Binds the type for the syntax taking into account possibility of "var" type. - - Type syntax to bind. - Diagnostics. - - Set to false if syntax binds to a type in the current context and true if - syntax is "var" and it binds to "var" keyword in the current context. - - Alias symbol if syntax binds to an alias. - - Bound type if syntax binds to a type in the current context and - null if syntax binds to "var" keyword in the current context. - - - - - Binds the type for the syntax taking into account possibility of "var" type. - If the syntax binds to an alias symbol to a type, it returns the alias symbol. - - Type syntax to bind. - Diagnostics. - - Set to false if syntax binds to a type or alias to a type in the current context and true if - syntax is "var" and it binds to "var" keyword in the current context. - - - Bound type or alias if syntax binds to a type or alias to a type in the current context and - null if syntax binds to "var" keyword in the current context. - - - - - The immediately containing namespace or named type, or the global - namespace if containing symbol is neither a namespace or named type. - - - - - Binds a simple name or the simple name portion of a qualified name. - - - - - Keep check and error in sync with ConstructBoundMethodGroupAndReportOmittedTypeArguments. - - - - - Keep check and error in sync with ConstructNamedTypeUnlessTypeArgumentOmitted. - - - - - Check generic type constraints unless the type is used as part of a type or method - declaration. In those cases, constraints checking is handled by the caller. - - - - - This is a layer on top of the Compilation version that generates a diagnostic if the special - member isn't found. - - - - - Reports use-site diagnostics for the specified symbol. - - - True if there was an error among the reported diagnostics - - - - - Reports use-site diagnostics for the specified symbol. - - - True if there was an error among the reported diagnostics - - - - - This is a layer on top of the Compilation version that generates a diagnostic if the well-known - type isn't found. - - - - - Retrieves a well-known type member and reports diagnostics. - - Null if the symbol is missing. - - - - Returns -1 if None. - - - - - Prefers symbols from source module, then from added modules, then from referenced assemblies. - Returns true if values were swapped. - - - - - Returns true if the second is a better location than the first. - - - - - Prefer symbols from source module, then from added modules, then from referenced assemblies. - - - - - This is only intended to be called when the type isn't found (i.e. not when it is found but is inaccessible, has the wrong arity, etc). - - - - - Look for a type forwarder for the given type in the containing assembly and any referenced assemblies. - If one is found, search again in the target assembly. Return the last assembly in the chain. - - The metadata name of the (potentially) forwarded type, including the arity (if non-zero). - The arity of the forwarded type. - Set to true if a cycle was found in the type forwarders. - - - Since this method is intended to be used for error reporting, it stops as soon as it finds - any type forwarder - it does not check other assemblies for consistency or better results. - - - - - True if we are currently in an unsafe region (type, member, or block). - - - Does not imply that this compilation allows unsafe regions (could be in an error recovery scenario). - To determine that, check this.Compilation.Options.AllowUnsafe. - - - - True if a diagnostic was reported, or would have been reported if not for - the suppress flag. - - - True if a diagnostic was reported, or would have been reported if not for - the suppress flag. - - - True if a diagnostic was reported, or would have been reported if not for - the suppress flag. - - - True if a diagnostic was reported, or would have been reported if not for - the suppress flag. - - - - Get the name of the method so that it can be looked up in the containing type. - - Non-null declaration syntax. - Binder for the scope around the method (may be null for operators, constructors, and destructors). - - - - Get the name of the property, indexer, or event so that it can be looked up in the containing type. - - Non-null declaration syntax. - Non-null binder for the scope around the member. - - - - Returns true if the location is within the syntax tree and span. - - - - - Returns true if containingNode has a child that contains the specified position - and has kind UsingDirective. - - - Usings can't see other usings, so this is extra info when looking at a namespace - or compilation unit scope. - - - - - Used to detect whether we are in a cref parameter type. - - - - - Used to detect whether we are in a cref return type. - - - - - We're in a <param> or <paramref> element, so we want a binder that can see - the parameters of the associated member and nothing else. - - - - - We're in a <typeparam> or <typeparamref> element, so we want a binder that can see - the type parameters of the associated member and nothing else. - - - - - Given a CrefSyntax and an associated member declaration syntax node, - construct an appropriate binder for binding the cref. - - Cref that will be bound. - The member to which the documentation comment (logically) containing - the cref syntax applies. - Corresponding binder factory. - True to get a special binder for cref parameter and return types. - - The CrefSyntax does not actually have to be within the documentation comment on the member - it - could be included from another file. - - - - - Internal version of MakeCrefBinder that allows the caller to explicitly set the underlying binder. - - - - - Walk up from an XML syntax node (attribute or tag) to the enclosing documentation comment trivia. - - - - - Note, there is no guarantee that the factory always gives back the same binder instance for the same . - - - - - Returns binder that binds usings and aliases - - - Specify imports in the corresponding namespace, or - for top-level imports. - - True if the binder will be used to bind a using directive. - - - - A specific location for binding. - - - - - Indicates that the current context allows unsafe constructs. - - - NOTE: Dev10 doesn't seem to treat attributes as being within the unsafe region. - Fortunately, not following this behavior should not be a breaking change since - attribute arguments have to be constants and there are no constants of unsafe - types. - - - - - Indicates that the unsafe diagnostics are not reported in the current context, regardless - of whether or not it is (part of) an unsafe region. - - - - - Indicates that this binder is being used to answer SemanticModel questions (i.e. not - for batch compilation). - - - Imports touched by a binder with this flag set are not consider "used". - - - - Remarks, mutually exclusive with . - - - Remarks, mutually exclusive with . - - - - In the debugger, one can take the address of a managed object. - - - - - In the debugger, the context is always unsafe, but one can still await. - - - - - Ignore duplicate types from the cor library. - - - - - When binding imports in scripts/submissions, using aliases (other than from the current submission) - are considered but other imports are not. - - - - - In a file that has been included in the compilation via #load. - - - - - Extension methods for the type. - - - - - A binder that knows no symbols and will not delegate further. - - - - - This is used while computing the values of constant fields. Since they can depend on each - other, we need to keep track of which ones we are currently computing in order to avoid (and - report) cycles. - - - - - This binder keeps track of the set of constant fields that are currently being evaluated - so that the set can be passed into the next call to SourceFieldSymbol.ConstantValue (and - its callers). - - - - - Each application of an attribute is effectively a constructor call. Since the attribute constructor - might have a CallerMemberName parameter, we need to keep track of which method/property/event - the attribute is on/in (e.g. on a parameter) so that we can use the name of that member as the - CallerMemberName argument. - - - - Next binder in the chain (enclosing). - Symbol to which the attribute was applied (e.g. a parameter). - - - - We're binding an attribute and this is the member to/in which the attribute was applied. - - - Method, property, event, or null. - A virtual property on Binder (i.e. our usual pattern) would be more robust, but the applicability - of this property is so narrow that it doesn't seem worthwhile. - - - - - Walk up to the nearest method/property/event. - - - - - This is a special binder used for decoding some special well-known attributes very early in the attribute binding phase. - It only binds those attribute argument syntax which can produce valid attribute arguments, but doesn't report any diagnostics. - Subsequent binding phase will rebind such erroneous attributes and generate appropriate diagnostics. - - - - - Since this method is expected to be called on every nested expression of the argument, it doesn't - need to recurse (directly). - - - - - This binder owns and lazily creates the map of SyntaxNodes to Binders associated with - the syntax with which it is created. This binder is not created in reaction to any - specific syntax node type. It is inserted into the binder chain - between the binder which it is constructed with and those that it constructs via - the LocalBinderFactory. - - - - - A distinct scope that may expose extension methods. For a particular Binder, there - are two possible scopes: one for the namespace, and another for any using statements - in the namespace. The namespace scope is searched before the using scope. - - - - - An enumerable collection of extension method scopes in search - order, from the given Binder, out through containing Binders. - - - - - An enumerator over ExtensionMethodScopes. - - - - - Information to be deduced while binding a foreach loop so that the loop can be lowered - to a while over an enumerator. Not applicable to the array or string forms. - - - - - A loop binder that (1) knows how to bind foreach loops and (2) has the foreach iteration variable in scope. - - - This binder produces BoundForEachStatements. The lowering described in the spec is performed in ControlFlowRewriter. - - - - - Bind the ForEachStatementSyntax at the root of this binder. - - - - - The spec describes an algorithm for finding the following types: - 1) Collection type - 2) Enumerator type - 3) Element type - - The implementation details are a bit difference. If we're iterating over a string or an array, then we don't need to record anything - but the inferredType (in case the iteration variable is implicitly typed). If we're iterating over anything else, then we want the - inferred type plus a ForEachEnumeratorInfo.Builder with: - 1) Collection type - 2) Element type - 3) GetEnumerator method of the collection type (return type will be the enumerator type from the spec) - 4) Current property of the enumerator type - 5) MoveNext method of the enumerator type - - The caller will have to do some extra conversion checks before creating a ForEachEnumeratorInfo for the BoundForEachStatement. - - Builder to fill in (partially, all but conversions). - The expression over which to iterate. - Populated with binding diagnostics. - Partially populated (all but conversions) or null if there was an error. - - - - Check for a GetEnumerator method on collectionExprType. Failing to satisfy the pattern is not an error - - it just means that we have to check for an interface instead. - - Type of the expression over which to iterate. - Populated with *warnings* if there are near misses. - Builder to fill in. set if the pattern in satisfied. - True if the method was found (still have to verify that the return (i.e. enumerator) type is acceptable). - - Only adds warnings, so does not affect control flow (i.e. no need to check for failure). - - - - - Perform a lookup for the specified method on the specified type. Perform overload resolution - on the lookup results. - - Type to search. - Method to search for. - Passed in for reusability. - True if failures should result in warnings; false if they should result in errors. - Populated with binding diagnostics. - The desired method or null. - - - - The overload resolution portion of FindForEachPatternMethod. - - - - - Called after it is determined that the expression being enumerated is of a type that - has a GetEnumerator method. Checks to see if the return type of the GetEnumerator - method is suitable (i.e. has Current and MoveNext). - - Must be non-null and contain a non-null GetEnumeratorMethod. - Will be populated with pattern diagnostics. - True if the return type has suitable members. - - It seems that every failure path reports the same diagnostics, so that is left to the caller. - - - - - Checks if the given type implements (or extends, in the case of an interface), - System.Collections.IEnumerable or System.Collections.Generic.IEnumerable<T>, - for at least one T. - - builder to fill in CollectionType. - Type to check. - - True if multiple T's are found. - True if some IEnumerable is found (may still be ambiguous). - - - - Report appropriate diagnostics when lookup of a pattern member (i.e. GetEnumerator, Current, or MoveNext) fails. - - Failed lookup result. - Type in which member was looked up. - Name of looked up member. - True if failures should result in warnings; false if they should result in errors. - Populated appropriately. - - - - Tracks fields that are being bound while binding their initializers. - - - Used to detect circular references like: - var x = y; - var y = x; - - - - - This binder is for binding the initializer of an implicitly typed - local variable. While binding an implicitly typed local variable - it is illegal to refer to the variable. - - - - - Represents symbols imported to the binding scope via using namespace, using alias, and extern alias. - - - - - Does not preserve diagnostics. - - - - - A binder that places the members of a symbol in scope. If there is a container declaration - with using directives, those are merged when looking up names. - - - - - Creates a binder for a container with imports (usings and extern aliases) that can be - retrieved from . - - - - - Creates a binder with given imports. - - - - - Creates a binder with given import computation function. - - - - - A binder for a method body, which places the method's parameters in scope - and notes if the method is an iterator method. - - - - - The LocalBinderFactory is used to build up the map of all Binders within a method body, and the associated - CSharpSyntaxNode. To do so it traverses all the statements, handling blocks and other - statements that create scopes. For efficiency reasons, it does not traverse into - expressions. This means that blocks within lambdas and queries are not created. - Blocks within lambdas are bound by their own LocalBinderFactory when they are - analyzed. - - For reasons of lifetime management, this type is distinct from the BinderFactory - which also creates a map from CSharpSyntaxNode to Binder. That type owns it's binders - and that type's lifetime is that of the compilation. Therefore we do not store - binders local to method bodies in that type's cache. - - - - - This binder keeps track of the local variable (if any) that is currently being evaluated - so that it can be passed into the next call to LocalSymbol.GetConstantValue (and - its callers). - - - - - Call this when you are sure there is a local declaration on this token. Returns the local. - - - - - This type exists to share code between UsingStatementBinder and LockBinder. - - - - - This class exists so these two fields can be set atomically. - CONSIDER: If this causes too many allocations, we could use start and end flags plus spinlocking - as for completion parts. - - - - - Options that can be used to modify the symbol lookup mechanism. - - - Multiple options can be combined together. LookupOptions.AreValid checks for valid combinations. - - - - - Consider all symbols, using normal accessibility rules. - - - - - Consider only namespace aliases and extern aliases. - - - - - Consider only namespaces and types. - - - - - Consider non-members, plus invocable members. - - - - - Consider only symbols that are instance members. Valid with IncludeExtensionMethods - since extension methods are invoked on an instance. - - - - - Do not consider symbols that are instance members. - - - - - Do not consider symbols that are namespaces. - - - - - Consider methods of any arity when arity zero is specified. Because type parameters can be inferred, it is - often desired to consider generic methods when no type arguments were present. - - - - - Look only for label symbols. This must be exclusive of all other options. - - - - - Usually, when determining if a member is accessible, both the type of the receiver - and the type containing the access are used. If this flag is specified, then only - the containing type will be used (i.e. as if you've written base.XX). - - - - - Include extension methods. - - - - - Consider only attribute types. - - - - - Consider lookup name to be a verbatim identifier. - If this flag is specified, then only one lookup is performed for attribute name: lookup with the given name, - and attribute name lookup with "Attribute" suffix is skipped. - - - - - Consider named types of any arity when arity zero is specified. It is specifically desired for nameof in such situations: nameof(System.Collections.Generic.List) - - - - - Do not consider symbols that are method type parameters. - - - - - Are these options valid in their current combination? - - - Some checks made here: - - - Default is valid. - - If LabelsOnly is set, it must be the only option. - - If one of MustBeInstance or MustNotBeInstance are set, the other one must not be set. - - If any of MustNotBeInstance, MustBeInstance, or MustNotBeNonInvocableMember are set, - the options are considered valid. - - If MustNotBeNamespace is set, neither NamespaceAliasesOnly nor NamespacesOrTypesOnly must be set. - - Otherwise, only one of NamespaceAliasesOnly, NamespacesOrTypesOnly, or AllMethodsOnArityZero must be set. - - - - - represents one-to-one symbol -> SingleLookupResult filter. - - - - - A LookupResult summarizes the result of a name lookup within a scope It also allows - combining name lookups from different scopes in an easy way. - - A LookupResult can be ONE OF: - empty - nothing found. - a viable result - this kind of result prevents lookup into further scopes of lower priority. - Viable results should be without error; ambiguity is handled in the caller. - (Note that handling multiple "viable" results is not the same as in the VB compiler) - a non-accessible result - this kind of result means that search continues into further scopes of lower priority for - a viable result. An error is attached with the inaccessibility errors. Non-accessible results take priority over - non-viable results. - a non-viable result - a result that means that the search continues into further scopes of lower priority for - a viable or non-accessible result. An error is attached with the error that indicates - why the result is non-viable. A typical reason would be that it is the wrong kind of symbol. - - Note that the class is poolable so its instances can be obtained from a pool via GetInstance. - Also it is a good idea to call Free on instances after they no longer needed. - - The typical pattern is "caller allocates / caller frees" - - - var result = LookupResult.GetInstance(); - - scope.Lookup(result, "foo"); - ... use result ... - - result.Clear(); - anotherScope.Lookup(result, "moo"); - ... use result ... - - result.Free(); //result and its content is invalid after this - - - - - - Currently LookupResult is intended only for name lookup, not for overload resolution. It is - not clear if overload resolution will work with the structure as is, require enhancements, - or be best served by an alternate mechanism. - - We might want to extend this to a more general priority scheme. - - - - - - Return the single symbol if there is exactly one, otherwise null. - - - - - Is the result viable with one or more symbols? - - - - - NOTE: Even there is a single viable symbol, it may be an error type symbol. - - - - - Set current result according to another. - - - - - Set current result according to another. - - - - - Merge another result with this one, with the symbols combined if both - this and other are viable. Otherwise the highest priority result wins (this if equal - priority and non-viable.) - - - - - Classifies the different ways in which a found symbol might be incorrect. - Higher values are considered "better" than lower values. These values are used - in a few different places: - 1) Inside a LookupResult to indicate the quality of a symbol from lookup. - 2) Inside a bound node (for example, BoundBadExpression), to indicate - the "binding quality" of the symbols referenced by that bound node. - 3) Inside an error type symbol, to indicate the reason that the candidate symbols - in the error type symbols were not good. - - While most of the values can occur in all places, some of the problems are not - detected at lookup time (e.g., NotAVariable), so only occur in bound nodes. - - - This enumeration is parallel to and almost the same as the CandidateReason enumeration. - Changes to one should usually result in changes to the other. - - There are two enumerations because: - 1) CandidateReason in language-independent, while this enum is language specific. - 2) The name "CandidateReason" didn't make much sense in the way LookupResultKind is used internally. - 3) Viable isn't used in CandidateReason, but we need it in LookupResultKind, and there isn't a - a way to have internal enumeration values. - - - - - Maps a LookupResultKind to a CandidateReason. Should not be called on LookupResultKind.Viable! - - - - - Packages up the various parts returned when resolving a method group. - - - - - Contains the code for determining C# accessibility rules. - - - - - Checks if 'symbol' is accessible from within assembly 'within'. - - - - - Checks if 'symbol' is accessible from within type 'within', with - an optional qualifier of type "throughTypeOpt". - - - - - Checks if 'symbol' is accessible from within type 'within', with - an qualifier of type "throughTypeOpt". Sets "failedThroughTypeCheck" to true - if it failed the "through type" check. - - - - - Checks if 'symbol' is accessible from within 'within', which must be a NamedTypeSymbol - or an AssemblySymbol. - - Note that NamedTypeSymbol, if available, is the type that is associated with the binder - that found the 'symbol', not the inner-most type that contains the access to the - 'symbol'. - - If 'symbol' is accessed off of an expression then 'throughTypeOpt' is the type of that - expression. This is needed to properly do protected access checks. Sets - "failedThroughTypeCheck" to true if this protected check failed. - - NOTE(cyrusn): I expect this function to be called a lot. As such, i do not do any memory - allocations in the function itself (including not making any iterators). This does mean - that certain helper functions that we'd like to call are inlined in this method to - prevent the overhead of returning collections or enumerators. - - - - - This method finds the best common type of a set of expressions as per section 7.5.2.14 of the specification. - NOTE: If some or all of the expressions have error types, we return error type as the inference result. - - - - - This method implements best type inference for the conditional operator ?:. - NOTE: If either expression is an error type, we return error type as the inference result. - - - - - Summarizes whether a conversion is allowed, and if so, which kind of conversion (and in some cases, the - associated symbol). - - - - - Returns true if the conversion exists, either as an implicit or explicit conversion. - - - The existence of a conversion does not necessarily imply that the conversion is valid. - For example, an ambiguous user-defined conversion may exist but may not be valid. - - - - - Returns true if the conversion is implicit. - - - Implicit conversions are described in section 6.1 of the C# language specification. - - - - - Returns true if the conversion is explicit. - - - Explicit conversions are described in section 6.2 of the C# language specification. - - - - - Returns true if the conversion is an identity conversion. - - - Identity conversions are described in section 6.1.1 of the C# language specification. - - - - - Returns true if the conversion is an implicit numeric conversion or explicit numeric conversion. - - - Implicit and explicit numeric conversions are described in sections 6.1.2 and 6.2.1 of the C# language specification. - - - - - Returns true if the conversion is an implicit enumeration conversion or explicit enumeration conversion. - - - Implicit and explicit enumeration conversions are described in sections 6.1.3 and 6.2.2 of the C# language specification. - - - - - Returns true if the conversion is an interpolated string conversion. - - - The interpolated string conversion described in section 6.1.N of the C# language specification. - - - - - Returns true if the conversion is an implicit nullable conversion or explicit nullable conversion. - - - Implicit and explicit nullable conversions are described in sections 6.1.4 and 6.2.3 of the C# language specification. - - - - - Returns true if the conversion is an implicit reference conversion or explicit reference conversion. - - - Implicit and explicit reference conversions are described in sections 6.1.6 and 6.2.4 of the C# language specification. - - - - - Returns true if the conversion is an implicit user-defined conversion or explicit user-defined conversion. - - - Implicit and explicit user-defined conversions are described in section 6.4 of the C# language specification. - - - - - Returns true if the conversion is an implicit boxing conversion. - - - Implicit boxing conversions are described in section 6.1.7 of the C# language specification. - - - - - Returns true if the conversion is an explicit unboxing conversion. - - - Explicit unboxing conversions as described in section 6.2.5 of the C# language specification. - - - - - Returns true if the conversion is an implicit null literal conversion. - - - Null literal conversions are described in section 6.1.5 of the C# language specification. - - - - - Returns true if the conversion is an implicit dynamic conversion. - - - Implicit dynamic conversions are described in section 6.1.8 of the C# language specification. - - - - - Returns true if the conversion is an implicit constant expression conversion. - - - Implicit constant expression conversions are described in section 6.1.9 of the C# language specification. - - - - - Returns true if the conversion is an implicit anonymous function conversion. - - - Implicit anonymous function conversions are described in section 6.5 of the C# language specification. - - - - - Returns true if the conversion is an implicit method group conversion. - - - Implicit method group conversions are described in section 6.6 of the C# language specification. - - - - - Returns true if the conversion is a pointer conversion - - - Pointer conversions are described in section 18.4 of the C# language specification. - - Returns true if the conversion is a conversion - a) from a pointer type to void*, - b) from a pointer type to another pointer type (other than void*), - c) from the null literal to a pointer type, - d) from an integral numeric type to a pointer type, or - e) from a pointer type to an integral numeric type. - - Does not return true for user-defined conversions to/from pointer types. - Does not return true for conversions between pointer types and IntPtr/UIntPtr. - - - - - Returns true if the conversion is a conversion to or from IntPtr or UIntPtr. - - - Returns true if the conversion is a conversion to or from IntPtr or UIntPtr. - This includes: - IntPtr to/from int - IntPtr to/from long - IntPtr to/from void* - UIntPtr to/from int - UIntPtr to/from long - UIntPtr to/from void* - - - - - Returns the method used to create the delegate for a method group conversion if is true - or the method used to perform the conversion for a user-defined conversion if is true. - Otherwise, returns null. - - - Method group conversions are described in section 6.6 of the C# language specification. - User-defined conversions are described in section 6.4 of the C# language specification. - - - - - Gives an indication of how successful the conversion was. - Viable - found a best built-in or user-defined conversion. - Empty - found no applicable built-in or user-defined conversions. - OverloadResolutionFailure - found applicable conversions, but no unique best. - - - - - Conversion applied to operand of the user-defined conversion. - - - - - Conversion applied to the result of the user-defined conversion. - - - - - The user-defined operators that were considered when attempting this conversion - (i.e. the arguments to overload resolution). - - - - - Returns a string that represents the of the conversion. - - A string that represents the of the conversion. - - - - Determines whether the specified object is equal to the current object. - - The object to compare with the current object. - true if the specified object is equal to the current object; otherwise, false. - - - - Determines whether the specified object is equal to the current object. - - The object to compare with the current object. - true if the specified object is equal to the current object; otherwise, false. - - - - Returns a hash code for the current object. - - A hash code for the current object. - - - - Returns true if the specified objects are equal and false otherwise. - - The first object. - The second object. - - - - - Returns false if the specified objects are equal and true otherwise. - - The first object. - The second object. - - - - - Determines if the source expression is convertible to the destination type via - any conversion: implicit, explicit, user-defined or built-in. - - - It is rare but possible for a source expression to be convertible to a destination type - by both an implicit user-defined conversion and a built-in explicit conversion. - In that circumstance, this method classifies the conversion as the implicit conversion. - - - - - Determines if the source expression is convertible to the destination type via - any conversion: implicit, explicit, user-defined or built-in. - - - It is rare but possible for a source expression to be convertible to a destination type - by both an implicit user-defined conversion and a built-in explicit conversion. - In that circumstance, this method classifies the conversion as the built-in conversion. - - An implicit conversion exists from an expression of a dynamic type to any type. - An explicit conversion exists from a dynamic type to any type. - When casting we prefer the explicit conversion. - - - - - Determines if the source expression is convertible to the destination type via - any built-in or user-defined implicit conversion. - - - - - Attempt a quick classification of builtin conversions. As result of "no conversion" - means that there is no built-in conversion, though there still may be a user-defined - conversion if compiling against a custom mscorlib. - - - - - IsBaseInterface returns true if baseType is on the base interface list of derivedType or - any base class of derivedType. It may be on the base interface list either directly or - indirectly. - * baseType must be an interface. - * type parameters do not have base interfaces. (They have an "effective interface list".) - * an interface is not a base of itself. - * this does not check for variance conversions; if a type inherits from - IEnumerable<string> then IEnumerable<object> is not a base interface. - - - - - Determines if the source type is convertible to the destination type via - any conversion: implicit, explicit, user-defined or built-in. - - - It is rare but possible for a source type to be convertible to a destination type - by both an implicit user-defined conversion and a built-in explicit conversion. - In that circumstance, this method classifies the conversion as the implicit conversion. - - - - - Determines if the source type is convertible to the destination type via - any conversion: implicit, explicit, user-defined or built-in. - - - It is rare but possible for a source type to be convertible to a destination type - by both an implicit user-defined conversion and a built-in explicit conversion. - In that circumstance, this method classifies the conversion as the built-in conversion. - - - - - Determines if the source type is convertible to the destination type via - any standard implicit or standard explicit conversion. - - - Not all built-in explicit conversions are standard explicit conversions. - - - - - Determines if the source type is convertible to the destination type via - any user-defined or built-in implicit conversion. - - - Not all built-in explicit conversions are standard explicit conversions. - - - - - NOTE: Keep this method in sync with AnalyzeImplicitUserDefinedConversionForSwitchGoverningType. - - - - - This method find the set of applicable user-defined and lifted conversion operators, u. - The set consists of the user-defined and lifted implicit conversion operators declared by - the classes and structs in d that convert from a type encompassing source to a type encompassed by target. - However if allowAnyTarget is true, then it considers all operators that convert from a type encompassing source - to any target. This flag must be set only if we are computing user defined conversions from a given source - type to any target type. - - - Currently allowAnyTarget flag is only set to true by AnalyzeImplicitUserDefinedConversionForSwitchGoverningType, - where we must consider user defined implicit conversions from the type of the switch expression to - any of the possible switch governing types. - - - - - Find the most specific among a set of conversion operators, with the given constraint on the conversion. - - - - - NOTE: Keep this method in sync with AnalyzeImplicitUserDefinedConversion. - - - - - Resolve method group based on the optional delegate invoke method. - If the invoke method is null, ignore arguments in resolution. - - - - - Return the Invoke method symbol if the type is a delegate - type and the Invoke method is available, otherwise null. - - - - - This is specifically a private helper function (rather than a public property or extension method) - because applying this predicate to a non-method member doesn't have a clear meaning. The goal was - simply to avoid repeating ad-hoc code in a group of related collections. - - - - - To duplicate native compiler behavior for some scenarios we force a priority among - operators. If two operators are both applicable and both have a non-null Priority, - the one with the numerically lower Priority value is preferred. - - - - - Omit ref feature for COM interop: We can pass arguments by value for ref parameters if we are invoking a method/property on an instance of a COM imported type. - This property returns a flag indicating whether we had any ref omitted argument for the given call. - - - - - Returns false for - because those diagnostics are only reported if no other candidates are - available. - - - - - Indicates why the compiler accepted or rejected the member during overload resolution. - - - - - No resolution has (yet) been determined. - - - - - The candidate member was accepted in its normal (non-expanded) form. - - - - - The candidate member was accepted in its expanded form, after expanding a "params" parameter. - - - - - The candidate member was rejected because an inferred type argument is inaccessible. - - - - - The candidate member was rejected because an argument was specified that did not have a corresponding - parameter. - - - - - The candidate member was rejected because a named argument was specified that did not have a corresponding - parameter. - - - - - The candidate member was rejected because an required parameter had no corresponding argument. - - - - - The candidate member was rejected because a named argument was used that corresponded to a previously-given positional argument. - - - - - The candidate member was rejected because it is not supported by the language or cannot be used - given the current set of assembly references. - - - - - The candidate member was rejected because it is not supported by the language. - - - No diagnostics will be reported for such candidates unless they "win" overload resolution. - - - - - The candidate member was rejected because an argument could not be converted to the appropriate parameter - type. - - - - - The candidate member was rejected because type inference failed. - - - - - The extension method candidate was rejected because type - inference based on the "instance" argument failed. - - - - - The candidate member was rejected because it a constraint on a type parameter was not satisfied. - - - - - The candidate member was rejected because another member further down in the inheritance hierarchy was - present. - - - - - The candidate member was rejected because it was considered worse that another member (according to section - 7.5.3.2 of the language specification). - - - - - Same as , but the candidate shouldn't be mentioned in an ambiguity diagnostics. - - - - - Represents the results of overload resolution for a single member. - - - - - The member considered during overload resolution. - - - - - The least overridden member that is accessible from the call site that performed overload resolution. - Typically a virtual or abstract method (but not necessarily). - - - The member whose parameter types and params modifiers were considered during overload resolution. - - - - - Indicates why the compiler accepted or rejected the member during overload resolution. - - - - - Returns true if the compiler accepted this member as the sole correct result of overload resolution. - - - - - The result of member analysis. - - - - - Return the interface with an original definition matches - the original definition of the target. If the are no matches, - or multiple matches, the return value is null. - - - - - Return the inferred type arguments using null - for any type arguments that were not inferred. - - - - - Summarizes the results of an overload resolution analysis, as described in section 7.5 of - the language specification. Describes whether overload resolution succeeded, and which - method was selected if overload resolution succeeded, as well as detailed information about - each method that was considered. - - - - - True if overload resolution successfully selected a single best method. - - - - - If overload resolution successfully selected a single best method, returns information - about that method. Otherwise returns null. - - - - - If there was a method that overload resolution considered better than all others, - returns information about that method. A method may be returned even if that method was - not considered a successful overload resolution, as long as it was better that any other - potential method considered. - - - - - Returns information about each method that was considered during overload resolution, - and what the results of overload resolution were for that method. - - - - - Returns true if one or more of the members in the group are applicable. (Note that - Succeeded implies IsApplicable but IsApplicable does not imply Succeeded. It is possible - that no applicable member was better than all others.) - - - - - Returns all methods in the group that are applicable, . - - - - - Called when overload resolution has failed. Figures out the best way to describe what went wrong. - - - Overload resolution (effectively) starts out assuming that all candidates are valid and then - gradually disqualifies them. Therefore, our strategy will be to perform our checks in the - reverse order - the farther a candidate got through the process without being flagged, the - "better" it was. - - Note that "final validation" is performed after overload resolution, - so final validation errors are not seen here. Final validation errors include - violations of constraints on method type parameters, static/instance mismatches, - and so on. - - - - - If an argument fails to convert to the type of the corresponding parameter and that - parameter is a params array, then the error message should reflect the element type - of the params array - not the array type. - - - - - The base class for all symbols (namespaces, classes, method, parameters, etc.) that are - exposed by the compiler. - - - - - Checks if 'symbol' is accessible from within named type 'within'. If 'symbol' is accessed off - of an expression then 'throughTypeOpt' is the type of that expression. This is needed to - properly do protected access checks. - - - - - Checks if 'symbol' is accessible from within assembly 'within'. - - - - - Checks if this symbol is a definition and its containing module is a SourceModuleSymbol. - - - - - Return whether the symbol is either the original definition - or distinct from the original. Intended for use in Debug.Assert - only since it may include a deep comparison. - - - - - Returns a list of attributes to emit to CustomAttribute table. - The builder is freed after all its items are enumerated. - - - - - True if this Symbol should be completed by calling ForceComplete. - Intuitively, true for source entities (from any compilation). - - - - - Gets the name of this symbol. Symbols without a name return the empty string; null is - never returned. - - - - - Gets the name of a symbol as it appears in metadata. Most of the time, this - is the same as the Name property, with the following exceptions: - 1) The metadata name of generic types includes the "`1", "`2" etc. suffix that - indicates the number of type parameters (it does not include, however, names of - containing types or namespaces). - 2) The metadata name of explicit interface names have spaces removed, compared to - the name property. - - - - - Gets the kind of this symbol. - - - - - Get the symbol that logically contains this symbol. - - - - - Returns the nearest lexically enclosing type, or null if there is none. - - - - - Gets the nearest enclosing namespace for this namespace or type. For a nested type, - returns the namespace that contains its container. - - - - - Returns the assembly containing this symbol. If this symbol is shared across multiple - assemblies, or doesn't belong to an assembly, returns null. - - - - - For a source assembly, the associated compilation. - For any other assembly, null. - For a source module, the DeclaringCompilation of the associated source assembly. - For any other module, null. - For any other symbol, the DeclaringCompilation of the associated module. - - - We're going through the containing module, rather than the containing assembly, - because of /addmodule (symbols in such modules should return null). - - Remarks, not "ContainingCompilation" because it isn't transitive. - - - - - Returns the module containing this symbol. If this symbol is shared across multiple - modules, or doesn't belong to a module, returns null. - - - - - The original definition of this symbol. If this symbol is constructed from another - symbol by type substitution then OriginalDefinition gets the original symbol as it was defined in - source or metadata. - - - - - Returns true if this is the original definition of this symbol. - - - - - - Get a source location key for sorting. For performance, it's important that this - be able to be returned from a symbol without doing any additional allocations (even - if nothing is cached yet.) - - - Only (original) source symbols and namespaces that can be merged - need implement this function if they want to do so for efficiency. - - - - - - Gets the locations where this symbol was originally defined, either in source or - metadata. Some symbols (for example, partial classes) may be defined in more than one - location. - - - - - - Get the syntax node(s) where this symbol was declared in source. Some symbols (for - example, partial classes) may be defined in more than one location. This property should - return one or more syntax nodes only if the symbol was declared in source code and also - was not implicitly declared (see the property). - - - Note that for namespace symbol, the declaring syntax might be declaring a nested - namespace. For example, the declaring syntax node for N1 in "namespace N1.N2 {...}" is - the entire for N1.N2. For the global namespace, the declaring - syntax will be the . - - - - The syntax node(s) that declared the symbol. If the symbol was declared in metadata or - was implicitly declared, returns an empty read-only array. - - - To go the opposite direction (from syntax node to symbol), see . - - - - - Helper for implementing for derived classes that store a location but not a - or . - - - - - Get this accessibility that was declared on this symbol. For symbols that do not have - accessibility declared on them, returns . - - - - - Returns true if this symbol is "static"; i.e., declared with the static modifier or - implicitly static. - - - - - Returns true if this symbol is "virtual", has an implementation, and does not override a - base class member; i.e., declared with the virtual modifier. Does not return true for - members declared as abstract or override. - - - - - Returns true if this symbol was declared to override a base class member; i.e., declared - with the override modifier. Still returns true if member was declared to override - something, but (erroneously) no member to override exists. - - - Even for metadata symbols, = true does not imply that will - be non-null. - - - - - Returns true if this symbol was declared as requiring an override; i.e., declared with - the abstract modifier. Also returns true on a type declared as "abstract", all - interface types, and members of interface types. - - - - - Returns true if this symbol was declared to override a base class member and was also - sealed from further overriding; i.e., declared with the sealed modifier. Also set for - types that do not allow a derived class (declared with sealed or static or struct - or enum or delegate). - - - - - Returns true if this symbol has external implementation; i.e., declared with the - extern modifier. - - - - - Returns true if this symbol was automatically created by the compiler, and does not - have an explicit corresponding source code declaration. - - This is intended for symbols that are ordinary symbols in the language sense, - and may be used by code, but that are simply declared implicitly rather than - with explicit language syntax. - - Examples include (this list is not exhaustive): - the default constructor for a class or struct that is created if one is not provided, - the BeginInvoke/Invoke/EndInvoke methods for a delegate, - the generated backing field for an auto property or a field-like event, - the "this" parameter for non-static methods, - the "value" parameter for a property setter, - the parameters on indexer accessor methods (not on the indexer itself), - methods in anonymous types, - - - - - Returns true if this symbol can be referenced by its name in code. Examples of symbols - that cannot be referenced by name are: - constructors, destructors, operators, explicit interface implementations, - accessor methods for properties and events, array types. - - - - - As an optimization, viability checking in the lookup code should use this property instead - of . The full name check will then be performed in the . - - - This property exists purely for performance reasons. - - - - - Perform additional checks after the member has been - added to the member list of the containing type. - - - - - Compare two symbol objects to see if they refer to the same symbol. You should always - use and , or the method, to compare two symbols for equality. - - - - - Compare two symbol objects to see if they refer to the same symbol. You should always - use == and !=, or the Equals method, to compare two symbols for equality. - - - - - Returns a string representation of this symbol, suitable for debugging purposes, or - for placing in an error message. - - - This will provide a useful representation, but it would be clearer to call - directly and provide an explicit format. - Sealed so that and can't get out of sync. - - - - - Build and add synthesized attributes for this symbol. - - - - - Convenience helper called by subclasses to add a synthesized attribute to a collection of attributes. - - - - - effective for this symbol (type or DllImport method). - Nothing if isn't applied on the containing module or it doesn't apply on this symbol. - - - Determined based upon value specified via applied on the containing module. - - - - - Always prefer . - - - - Unfortunately, when determining overriding/hiding/implementation relationships, we don't - have the "current" compilation available. We could, but that would clutter up the API - without providing much benefit. As a compromise, we consider all compilations "current". - - - Unlike in VB, we are not allowing retargeting symbols. This method is used as an approximation - for when a compilation is not available and that method will never return - true for retargeting symbols. - - - - - - Returns the Documentation Comment ID for the symbol, or null if the symbol doesn't - support documentation comments. - - - - - Fetches the documentation comment for this element with a cancellation token. - - Optionally, retrieve the comments formatted for a particular culture. No impact on source documentation comments. - Optionally, expand ]]> elements. No impact on non-source documentation comments. - Optionally, allow cancellation of documentation comment retrieval. - The XML that would be written to the documentation file for the symbol. - - - - True if the symbol has a use-site diagnostic with error severity. - - - - - Returns diagnostic info that should be reported at the use site of the symbol, or null if there is none. - - - - - Return error code that has highest priority while calculating use site error for this symbol. - Supposed to be ErrorCode, but it causes inconsistent accessibility error. - - - - - Indicates that this symbol uses metadata that cannot be supported by the language. - - Examples include: - - Pointer types in VB - - ByRef return type - - Required custom modifiers - - This is distinguished from, for example, references to metadata symbols defined in assemblies that weren't referenced. - Symbols where this returns true can never be used successfully, and thus should never appear in any IDE feature. - - This is set for metadata symbols, as follows: - Type - if a type is unsupported (e.g., a pointer type, etc.) - Method - parameter or return type is unsupported - Field - type is unsupported - Event - type is unsupported - Property - type is unsupported - Parameter - type is unsupported - - - - - Merges given diagnostic to the existing result diagnostic. - - - - - Reports specified use-site diagnostic to given diagnostic bag. - - - This method should be the only method adding use-site diagnostics to a diagnostic bag. - It performs additional adjustments of the location for unification related diagnostics and - may be the place where to add more use-site location post-processing. - - True if the diagnostic has error severity. - - - - Derive error info from a type symbol. - - - - - True if this symbol has been marked with the attribute. - This property returns if the attribute hasn't been cracked yet. - - - - - Returns data decoded from attribute or null if there is no attribute. - This property returns if attribute arguments haven't been decoded yet. - - - - - Returns true and a from the first on the symbol, - the string might be null or an invalid guid representation. False, - if there is no with string argument. - - - - - Gets the attributes for this symbol. Returns an empty if - there are no attributes. - - - - - Gets the attribute target kind corresponding to the symbol kind - If attributes cannot be applied to this symbol kind, returns - an invalid AttributeTargets value of 0 - - AttributeTargets or 0 - - - - Method to early decode the type of well-known attribute which can be queried during the BindAttributeType phase. - This method is called first during attribute binding so that any attributes that affect semantics of type binding - can be decoded here. - - - NOTE: If you are early decoding any new well-known attribute, make sure to update PostEarlyDecodeWellKnownAttributeTypes - to default initialize this data. - - - - - This method is called during attribute binding after EarlyDecodeWellKnownAttributeTypes has been executed. - Symbols should default initialize the data for early decoded well-known attributes here. - - - - - Method to early decode applied well-known attribute which can be queried by the binder. - This method is called during attribute binding after we have bound the attribute types for all attributes, - but haven't yet bound the attribute arguments/attribute constructor. - Early decoding certain well-known attributes enables the binder to use this decoded information on this symbol - when binding the attribute arguments/attribute constructor without causing attribute binding cycle. - - - - - This method is called by the binder when it is finished binding a set of attributes on the symbol so that - the symbol can extract data from the attribute arguments and potentially perform validation specific to - some well known attributes. - - NOTE: If we are decoding a well-known attribute that could be queried by the binder, consider decoding it during early decoding pass. - - - - - Symbol types should override this if they want to handle a specific well-known attribute. - If the attribute is of a type that the symbol does not wish to handle, it should delegate back to - this (base) method. - - - - - - Called to report attribute related diagnostics after all attributes have been bound and decoded. - Called even if there are no attributes. - - - This method is called by the binder from after it has finished binding attributes on the symbol, - has executed for attributes applied on the symbol and has stored the decoded data in the - lazyCustomAttributesBag on the symbol. Bound attributes haven't been stored on the bag yet. - - Post-validation for attributes that is dependent on other attributes can be done here. - - This method should not have any side effects on the symbol, i.e. it SHOULD NOT change the symbol state. - - Bound attributes. - Syntax nodes of attributes in order they are specified in source, or null if there are no attributes. - Diagnostic bag. - Specific part of the symbol to which the attributes apply, or if the attributes apply to the symbol itself. - Decoded well-known attribute data, could be null. - - - - This method does the following set of operations in the specified order: - (1) GetAttributesToBind: Merge attributes from the given attributesSyntaxLists and filter out attributes by attribute target. - (2) BindAttributeTypes: Bind all the attribute types to enable early decode of certain well-known attributes by type. - (3) EarlyDecodeWellKnownAttributes: Perform early decoding of certain well-known attributes that could be queried by the binder in subsequent steps. - (NOTE: This step has the side effect of updating the symbol state based on the data extracted from well known attributes). - (4) GetAttributes: Bind the attributes (attribute arguments and constructor) using bound attribute types. - (5) DecodeWellKnownAttributes: Decode and validate bound well known attributes. - (NOTE: This step has the side effect of updating the symbol state based on the data extracted from well known attributes). - (6) StoreBoundAttributesAndDoPostValidation: - (a) Store the bound attributes in lazyCustomAttributes in a thread safe manner. - (b) Perform some additional post attribute validations, such as - 1) Duplicate attributes, attribute usage target validation, etc. - 2) Post validation for attributes dependent on other attributes - These validations cannot be performed prior to step 6(a) as we might need to - perform a GetAttributes() call on a symbol which can introduce a cycle in attribute binding. - We avoid this cycle by performing such validations in PostDecodeWellKnownAttributes after lazyCustomAttributes have been set. - NOTE: PostDecodeWellKnownAttributes SHOULD NOT change the symbol state. - - - Current design of early decoding well-known attributes doesn't permit decoding attribute arguments/constructor as this can lead to binding cycles. - For well-known attributes used by the binder, where we need the decoded arguments, we must handle them specially in one of the following possible ways: - (a) Avoid decoding the attribute arguments during binding and delay the corresponding binder tasks to a separate post-pass executed after binding. - (b) As the cycles can be caused only when we are binding attribute arguments/constructor, special case the corresponding binder tasks based on the current BinderFlags. - - - - Specific part of the symbol to which the attributes apply, or if the attributes apply to the symbol itself. - Indicates that only early decoding should be performed. WARNING: the resulting bag will not be sealed. - Flag indicating whether lazyCustomAttributes were stored on this thread. Caller should check for this flag and perform NotePartComplete if true. - - - - Method to merge attributes from the given attributesSyntaxLists and filter out attributes by attribute target. - This is the first step in attribute binding. - - - This method can generate diagnostics for few cases where we have an invalid target specifier and the parser hasn't generated the necessary diagnostics. - It should not perform any bind operations as it can lead to an attribute binding cycle. - - - - - Method to early decode certain well-known attributes which can be queried by the binder. - This method is called during attribute binding after we have bound the attribute types for all attributes, - but haven't yet bound the attribute arguments/attribute constructor. - Early decoding certain well-known attributes enables the binder to use this decoded information on this symbol - when binding the attribute arguments/attribute constructor without causing attribute binding cycle. - - - - - This method validates attribute usage for each bound attribute and calls - on attributes with valid attribute usage. - This method is called by the binder when it is finished binding a set of attributes on the symbol so that - the symbol can extract data from the attribute arguments and potentially perform validation specific to - some well known attributes. - - - - - Validate attribute usage target and duplicate attributes. - - Bound attribute - Syntax node for attribute specification - Compilation - Symbol part to which the attribute has been applied. - Diagnostics - Set of unique attribute types applied to the symbol - - - - Ensure that attributes are bound and the ObsoleteState of this symbol is known. - - - - - Represents a result of lookup operation over a 0 or 1 symbol (as opposed to a scope). The - typical use is to represent that a particular symbol is good/bad/unavailable. - - For more explanation of Kind, Symbol, Error - see LookupResult. - - - - - This binder is for binding the argument to typeof. It traverses - the syntax marking each open type ("unbound generic type" in the - C# spec) as either allowed or not allowed, so that BindType can - appropriately return either the corresponding type symbol or an - error type. It also indicates whether the argument as a whole - should be considered open so that the flag can be set - appropriately in BoundTypeOfOperator. - - - - - This visitor walks over a type expression looking for open types. - Open types are allowed if an only if: - 1) There is no constructed generic type elsewhere in the visited syntax; and - 2) The open type is not used as a type argument or array/pointer/nullable - element type. - - - - The argument to typeof. - - Keys are GenericNameSyntax nodes representing unbound generic types. - Values are false if the node should result in an error and true otherwise. - - True if no constructed generic type was encountered. - - - - A binder that places class/interface/struct/delegate type parameters in scope - - - - - The scope within a documentation cref. Contains the implicitly declared type parameters - of the cref (see for details). - - - - - A binder that places method type parameters in scope. - - - - - Binder used to place the parameters of a method, property, indexer, or delegate - in scope when binding <param> tags inside of XML documentation comments. - - - - - Returns true if calls and delegate invocations with this - expression as the receiver should be non-virtual calls. - - - - - Returns a serializable object that is used for displaying this expression in a diagnostic message. - - - - - The set of method symbols from which this call's method was chosen. - Only kept in the tree if the call was an error and overload resolution - was unable to choose a best method. - - - - - The set of indexer symbols from which this call's indexer was chosen. - Only kept in the tree if the call was an error and overload resolution - was unable to choose a best indexer. - - - - - The set of method symbols from which this operator's method was chosen. - Only kept in the tree if the operator was an error and overload resolution - was unable to choose a best method. - - - - - The set of method symbols from which this operator's method was chosen. - Only kept in the tree if the operator was an error and overload resolution - was unable to choose a best method. - - - - - The set of method symbols from which this operator's method was chosen. - Only kept in the tree if the operator was an error and overload resolution - was unable to choose a best method. - - - - - The set of method symbols from which this operator's method was chosen. - Only kept in the tree if the operator was an error and overload resolution - was unable to choose a best method. - - - - - The set of method symbols from which this operator's method was chosen. - Only kept in the tree if the operator was an error and overload resolution - was unable to choose a best method. - - - - - The set of method symbols from which this conversion's method was chosen. - Only kept in the tree if the conversion was an error and overload resolution - was unable to choose a best method. - - - - - Returns true when conversion itself (not the operand) may have side-effects - A typical side-effect of a conversion is an exception when conversion is unsuccessful. - - - - - - This method is intended for passes other than the LocalRewriter. - Use MakeConversion helper method in the LocalRewriter instead, - it generates a synthesized conversion in its lowered form. - - - - - NOTE: This method is intended for passes other than the LocalRewriter. - NOTE: Use MakeConversion helper method in the LocalRewriter instead, - NOTE: it generates a synthesized conversion in its lowered form. - - - - - Build an object creation expression without performing any rewriting - - - - - Set if the group has a receiver but none was not specified in syntax. - - - - - Determines if a bound node, or associated syntax or type has an error (not a warning) - diagnostic associated with it. - - Typically used in the binder as a way to prevent cascading errors. - In most other cases a more lightweight HasErrors should be used. - - - - - Determines if a bound node, or any child, grandchild, etc has an error (not warning) - diagnostic associated with it. The HasError bit is initially set for a node by providing it - to the node constructor. If any child nodes of a node have - the HasErrors bit set, then it is automatically set to true on the parent bound node. - - HasErrors indicates that the tree is not emittable and used to short-circuit lowering/emit stages. - NOTE: not having HasErrors does not guarantee that we do not have any diagnostic associated - with corresponding syntax or type. - - - - - NOTE: not generally set in rewriters. - - - - - The bound expression that invokes the operation of the query clause. - - - - - The bound expression that is the invocation of a "Cast" method specified by the query translation. - - - - - The bound expression that is the query expression in "unoptimized" form. Specifically, a final ".Select" - invocation that is omitted by the specification is included here. - - - - - Consumers must provide implementation for . - - - - - We should be intentional about behavior of derived classes regarding guarding against stack overflow. - - - - - BoundExpressions to be used for emit. The expressions are assumed - to be lowered and will not be visited by . - - - - - What we need to do is find a *repeatable* arbitrary way to choose between - two errors; we can for example simply take the one that is lower in alphabetical - order when converted to a string. As an optimization, we compare error codes - first and skip string comparison if they differ. - - - - - In some cases returns are handled as gotos to return epilogue. - This is used to track the state of the epilogue. - - - - - Emits address as in & - - May introduce a temp which it will return. (otherwise returns null) - - - - - Emits address of a temp. - Used in cases where taking address directly is not possible - (typically because expression does not have a home) - - Introduce a temp which it will return. - - - - - May introduce a temp which it will return. (otherwise returns null) - - - - - Checks if expression directly or indirectly represents a value with its own home. In - such cases it is possible to get a reference without loading into a temporary. - - - - - Special HasHome for fields. Fields have homes when they are writable. - - - - - May introduce a temp which it will return. (otherwise returns null) - - - - - Emits receiver in a form that allows member accesses ( O or & ). For verifiably - reference types it is the actual reference. For generic types it is a address of the - receiver with readonly intent. For the value types it is an address of the receiver. - - isAccessConstrained indicates that receiver is a target of a constrained callvirt - in such case it is unnecessary to box a receiver that is typed to a type parameter - - May introduce a temp which it will return. (otherwise returns null) - - - - - May introduce a temp which it will return. (otherwise returns null) - - - - - Entry point to the array initialization. - Assumes that we have newly created array on the stack. - - inits could be an array of values for a single dimensional array - or an array (of array)+ of values for a multidimensional case - - in either case it is expected that number of leaf values will match number - of elements in the array and nesting level should match the rank of the array. - - - - - To handle array initialization of arbitrary rank it is convenient to - approach multidimensional initialization as a recursively nested. - - ForAll{i, j, k} Init(i, j, k) ===> - ForAll{i} ForAll{j, k} Init(i, j, k) ===> - ForAll{i} ForAll{j} ForAll{k} Init(i, j, k) - - This structure is used for capturing initializers of a given index and - the index value itself. - - - - - Emits all initializers that match indices on the stack recursively. - - Example: - if array has [0..2, 0..3, 0..2] shape - and we have {1, 2} indices on the stack - initializers for - [1, 2, 0] - [1, 2, 1] - [1, 2, 2] - - will be emitted and the top index will be pushed off the stack - as at that point we would be completely done with emitting initializers - corresponding to that index. - - - - - Count of all nontrivial initializers and count of those that are constants. - - - - - Produces a serialized blob of all constant initializers. - Non-constant initializers are matched with a zero of corresponding size. - - - - - Check if it is a regular collection of expressions or there are nested initializers. - - - - - Used to decide if we need to emit call or callvirt. - It basically checks if the receiver expression cannot be null, but it is not 100% precise. - There are cases where it really can be null, but we do not care. - - - - - checks if receiver is effectively ldarg.0 - - - - - Used to decide if we need to emit 'call' or 'callvirt' for structure method. - It basically checks if the method overrides any other and method's defining type - is not a 'special' or 'special-by-ref' type. - - - - - When array operation get long or ulong arguments the args should be - cast to native int. - Note that the cast is always checked. - - - - - Emit an element store instruction for a single dimensional array. - - - - - Emit code for a conditional (aka ternary) operator. - - - (b ? x : y) becomes - push b - if pop then goto CONSEQUENCE - push y - goto DONE - CONSEQUENCE: - push x - DONE: - - - - - Emit code for a null-coalescing operator. - - - x ?? y becomes - push x - dup x - if pop != null goto LEFT_NOT_NULL - pop - push y - LEFT_NOT_NULL: - - - - - Produces opcode for a jump that corresponds to given operation and sense. - Also produces a reverse opcode - opcode for the same condition with inverted sense. - - - - - The interesting part in the following method is the support for exception filters. - === Example: - - try - { - TryBlock - } - catch (ExceptionType ex) when (Condition) - { - Handler - } - - gets emitted as something like ===> - - Try - TryBlock - Filter - var tmp = Pop() as {ExceptionType} - if (tmp == null) - { - Push 0 - } - else - { - ex = tmp - Push Condition ? 1 : 0 - } - End Filter // leaves 1 or 0 on the stack - Catch // gets called after finalization of nested exception frames if condition above produced 1 - Pop // CLR pushes the exception object again - variable ex can be used here - Handler - EndCatch - - - - - Delegate to emit string compare call and conditional branch based on the compare result. - - Key to compare - Node for diagnostics. - Case constant to compare the key against - Target label to branch to if key = stringConstant - String equality method - - - - Gets already declared and initialized local. - - - - - Gets the name and id of the local that are going to be generated into the debug metadata. - - - - - Releases a local. - - - - - Allocates a temp without identity. - - - - - Frees a temp. - - - - - Frees an optional temp. - - - - - Clones all labels used in a finally block. - This allows creating an emittable clone of finally. - It is safe to do because no branches can go in or out of the finally handler. - - - - - The argument is BoundTryStatement (and not a BoundBlock) specifically - to support only Finally blocks where it is guaranteed to not have incoming or leaving branches. - - - - - Perform IL specific optimizations (mostly reduction of local slots) - - Method body to optimize - - When set, do not perform aggressive optimizations that degrade debugging experience. - In particular we do not do the following: - - 1) Do not elide any user defined locals, even if never read from. - Example: - { - var dummy = Foo(); // should not become just "Foo" - } - - User might want to examine dummy in the debugger. - - 2) Do not carry values on the stack between statements - Example: - { - var temp = Foo(); - temp.ToString(); // should not become Foo().ToString(); - } - - User might want to examine temp in the debugger. - - - - Produced list of "ephemeral" locals. - Essentially, these locals do not need to leave the evaluation stack. - As such they do not require an allocation of a local slot and - their load/store operations are implemented trivially. - - - - - - when current and other use spans are regular spans we can have only 2 conflict cases: - [1, 3) conflicts with [0, 2) - [1, 3) conflicts with [2, 4) - - NOTE: with regular spans, it is not possible for two spans to share an edge point - unless they belong to the same local. (because we cannot aceess two real locals at the same time) - - specifically: - [1, 3) does not conflict with [0, 1) since such spans would need to belong to the same local - - - - - Dummy locals represent implicit control flow - It is not allowed for a regular local span to cross into or - be immediately adjacent to a dummy span. - - specifically: - [1, 3) does conflict with [0, 1) since that would imply a value flowing into or out of a span surrounded by a branch/label - - - - - - The command line arguments to a C# . - - - - - Gets the compilation options for the C# - created from the . - - - - - Gets the parse options for the C# . - - - - - Should the format of error messages include the line and column of - the end of the offending text. - - - - - Get the path name starting from the - - - - - Parses a command line. - - A collection of strings representing the command line arguments. - The base directory used for qualifying file locations. - The directory to search for mscorlib, or null if not available. - A string representing additional reference paths. - a commandlinearguments object representing the parsed command line. - - - - Diagnostic for the errorCode added if the warningOptions does not mention suppressed for the errorCode. - - - - - Given a compilation and a destination directory, determine three names: - 1) The name with which the assembly should be output. - 2) The path of the assembly/module file. - 3) The path of the pdb file. - - When csc produces an executable, but the name of the resulting assembly - is not specified using the "/out" switch, the name is taken from the name - of the file (note: file, not class) containing the assembly entrypoint - (as determined by binding and the "/main" switch). - - For example, if the command is "csc /target:exe a.cs b.cs" and b.cs contains the - entrypoint, then csc will produce "b.exe" and "b.pdb" in the output directory, - with assembly name "b" and module name "b.exe" embedded in the file. - - - - - Print compiler logo - - - - - - Print Commandline help message (up to 80 English characters per line) - - - - - - A binding for an attribute. Represents the result of binding an attribute constructor and - the positional and named arguments. - - - - - Creates an AttributeSemanticModel that allows asking semantic questions about an attribute node. - - - - - Creates a speculative AttributeSemanticModel that allows asking semantic questions about an attribute node that did not appear in the original source code. - - - - - Structure containing all semantic information about an await expression. - - - - - Internal cache of built-in operators. - Cache is compilation-specific because it uses compilation-specific SpecialTypes. - - - - - Appends all trees (including any trees from #load'ed files). - - - - - Collects all the trees #load'ed by (as well as - itself) and populates - with all the trees that are safe to remove (not #load'ed by any other tree). - - - - - The compilation object is an immutable representation of a single invocation of the - compiler. Although immutable, a compilation is also on-demand, and will realize and cache - data as necessary. A compilation can produce a new compilation from existing compilation - with the application of small deltas. In many cases, it is more efficient than creating a - new compilation from scratch, as the new compilation can reuse information from the old - compilation. - - - - - Manages anonymous types declared in this compilation. Unifies types that are structurally equivalent. - - - - - The for this compilation. Do not access directly, use Assembly property - instead. This field is lazily initialized by ReferenceManager, ReferenceManager.CacheLockObject must be locked - while ReferenceManager "calculates" the value and assigns it, several threads must not perform duplicate - "calculation" simultaneously. - - - - - Holds onto data related to reference binding. - The manager is shared among multiple compilations that we expect to have the same result of reference binding. - In most cases this can be determined without performing the binding. If the compilation however contains a circular - metadata reference (a metadata reference that refers back to the compilation) we need to avoid sharing of the binding results. - We do so by creating a new reference manager for such compilation. - - - - - Contains the main method of this assembly, if there is one. - - - - - The set of trees for which a has been added to the queue. - - - - - The options the compilation was created with. - - - - - True when the compiler is run in "strict" mode, in which it enforces the language specification - in some cases even at the expense of full compatibility. Such differences typically arise when - earlier versions of the compiler failed to enforce the full language specification. - - - - - The language version that was used to parse the syntax trees of this compilation. - - - - - Creates a new compilation from scratch. Methods such as AddSyntaxTrees or AddReferences - on the returned object will allow to continue building up the Compilation incrementally. - - Simple assembly name. - The syntax trees with the source code for the new compilation. - The references for the new compilation. - The compiler options to use. - A new compilation. - - - - Creates a new compilation that can be used in scripting. - - - - - Create a duplicate of this compilation with different symbol instances. - - - - - Creates a new compilation with the specified name. - - - - - Creates a new compilation with the specified references. - - - The new will query the given for the underlying - metadata as soon as the are needed. - - The new compilation uses whatever metadata is currently being provided by the . - E.g. if the current compilation references a metadata file that has changed since the creation of the compilation - the new compilation is going to use the updated version, while the current compilation will be using the previous (it doesn't change). - - - - - Creates a new compilation with the specified references. - - - - - Creates a new compilation with the specified compilation options. - - - - - Returns a new compilation with the given compilation set as the previous submission. - - - - - Returns a new compilation with a given event queue. - - - - - The syntax trees (parsed from source code) that this compilation was created with. - - - - - Returns true if this compilation contains the specified tree. False otherwise. - - - - - Creates a new compilation with additional syntax trees. - - - - - Creates a new compilation with additional syntax trees. - - - - - Creates a new compilation without the specified syntax trees. Preserves metadata info for use with trees - added later. - - - - - Creates a new compilation without the specified syntax trees. Preserves metadata info for use with trees - added later. - - - - - Creates a new compilation without any syntax trees. Preserves metadata info - from this compilation for use with trees added later. - - - - - Creates a new compilation without the old tree but with the new tree. - - - - - Gets the or for a metadata reference used to create this compilation. - - or corresponding to the given reference or null if there is none. - - Uses object identity when comparing two references. - - - - - All reference directives used in this compilation. - - - - - Returns a metadata reference that a given #r resolves to. - - #r directive. - Metadata reference the specified directive resolves to, or null if the doesn't match any #r directive in the compilation. - - - - Creates a new compilation with additional metadata references. - - - - - Creates a new compilation with additional metadata references. - - - - - Creates a new compilation without the specified metadata references. - - - - - Creates a new compilation without the specified metadata references. - - - - - Creates a new compilation without any metadata references - - - - - Creates a new compilation with an old metadata reference replaced with a new metadata reference. - - - - - Get all modules in this compilation, including the source module, added modules, and all - modules of referenced assemblies that do not come from an assembly with an extern alias. - Metadata imported from aliased assemblies is not visible at the source level except through - the use of an extern alias directive. So exclude them from this list which is used to construct - the global namespace. - - - - - Return a list of assembly symbols than can be accessed without using an alias. - For example: - 1) /r:A.dll /r:B.dll -> A, B - 2) /r:Foo=A.dll /r:B.dll -> B - 3) /r:Foo=A.dll /r:A.dll -> A - - - - - Gets the that corresponds to the assembly symbol. - - - - - The AssemblySymbol that represents the assembly being created. - - - - - The AssemblySymbol that represents the assembly being created. - - - - - Get a ModuleSymbol that refers to the module being created by compiling all of the code. - By getting the GlobalNamespace property of that module, all of the namespaces and types - defined in source code can be obtained. - - - - - Gets the root namespace that contains all namespaces and types defined in source code or in - referenced metadata, merged into a single namespace hierarchy. - - - - - Given for the specified module or assembly namespace, gets the corresponding compilation - namespace (merged namespace representation for all namespace declarations and references - with contributions for the namespaceSymbol). Can return null if no corresponding - namespace can be bound in this compilation with the same name. - - - - - A symbol representing the implicit Script class. This is null if the class is not - defined in the compilation. - - - - - Resolves a symbol that represents script container (Script class). Uses the - full name of the container class stored in to find the symbol. - - The Script class symbol or null if it is not defined. - - - - Global imports (including those from previous submissions, if there are any). - - - - - Imports declared by this submission (null if this isn't one). - - - - - Imports from all previous submissions. - - - - - Get the symbol for the predefined type from the COR Library referenced by this compilation. - - - - - Get the symbol for the predefined type member from the COR Library referenced by this compilation. - - - - - Gets the type within the compilation's assembly and all referenced assemblies (other than - those that can only be referenced via an extern alias) using its canonical CLR metadata name. - - - - - The TypeSymbol for the type 'dynamic' in this Compilation. - - - - - The NamedTypeSymbol for the .NET System.Object type, which could have a TypeKind of - Error if there was no COR Library in this Compilation. - - - - - Returns a new ArrayTypeSymbol representing an array type tied to the base types of the - COR Library in this Compilation. - - - - - Returns a new PointerTypeSymbol representing a pointer type tied to a type in this Compilation. - - - - - Gets a new SyntaxTreeSemanticModel for the specified syntax tree. - - - - - Returns imported symbols for the given declaration. - - - - - The bag in which semantic analysis should deposit its diagnostics. - - - - - A bag in which diagnostics that should be reported after code gen can be deposited. - - - - - Gets the diagnostics produced during the parsing stage of a compilation. There are no diagnostics for declarations or accessor or - method bodies, for example. - - - - - Gets the diagnostics produced during symbol declaration headers. There are no diagnostics for accessor or - method bodies, for example. - - - - - Gets the diagnostics produced during the analysis of method bodies and field initializers. - - - - - Gets the all the diagnostics for the compilation, including syntax, declaration, and binding. Does not - include any diagnostics that might be produced during emit. - - - - - Filter out warnings based on the compiler options (/nowarn, /warn and /warnaserror) and the pragma warning directives. - 'incoming' is freed. - - True when there is no error or warning treated as an error. - - - - Filter out warnings based on the compiler options (/nowarn, /warn and /warnaserror) and the pragma warning directives. - - True when there is no error. - - - - Return true if there is a source declaration symbol name that meets given predicate. - - - - - Return source declaration symbols whose name meets given predicate. - - - - - Returns if the compilation has all of the members necessary to emit metadata about - dynamic types. - - - - - - Determine if enum arrays can be initialized using block initialization. - - True if it's safe to use block initialization for enum arrays. - - In NetFx 4.0, block array initializers do not work on all combinations of {32/64 X Debug/Retail} when array elements are enums. - This is fixed in 4.5 thus enabling block array initialization for a very common case. - We look for the presence of which was introduced in .Net 4.5 - - - - - An array of cached well known types available for use in this Compilation. - Lazily filled by GetWellKnownType method. - - - - - Lazy cache of well known members. - Not yet known value is represented by ErrorTypeSymbol.UnknownResultType - - - - - Lookup member declaration in well known type used by this Compilation. - - - If a well-known member of a generic type instantiation is needed use this method to get the corresponding generic definition and - to construct an instantiation. - - - - - Synthesizes a custom attribute. - Returns null if the symbol is missing, - or any of the members in are missing. - The attribute is synthesized only if present. - - - Constructor of the attribute. If it doesn't exist, the attribute is not created. - - Arguments to the attribute constructor. - - Takes a list of pairs of well-known members and constants. The constants - will be passed to the field/property referenced by the well-known member. - If the well-known member does not exist in the compilation then no attribute - will be synthesized. - - - - - Given a type , which is either dynamic type OR is a constructed type with dynamic type present in it's type argument tree, - returns a synthesized DynamicAttribute with encoded dynamic transforms array. - - This method is port of AttrBind::CompileDynamicAttr from the native C# compiler. - - - - Used to generate the dynamic attributes for the required typesymbol. - - - - - ReferenceManager encapsulates functionality to create an underlying SourceAssemblySymbol - (with underlying ModuleSymbols) for Compilation and AssemblySymbols for referenced - assemblies (with underlying ModuleSymbols) all properly linked together based on - reference resolution between them. - - ReferenceManager is also responsible for reuse of metadata readers for imported modules - and assemblies as well as existing AssemblySymbols for referenced assemblies. In order - to do that, it maintains global cache for metadata readers and AssemblySymbols - associated with them. The cache uses WeakReferences to refer to the metadata readers and - AssemblySymbols to allow memory and resources being reclaimed once they are no longer - used. The tricky part about reusing existing AssemblySymbols is to find a set of - AssemblySymbols that are created for the referenced assemblies, which (the - AssemblySymbols from the set) are linked in a way, consistent with the reference - resolution between the referenced assemblies. - - When existing Compilation is used as a metadata reference, there are scenarios when its - underlying SourceAssemblySymbol cannot be used to provide symbols in context of the new - Compilation. Consider classic multi-targeting scenario: compilation C1 references v1 of - Lib.dll and compilation C2 references C1 and v2 of Lib.dll. In this case, - SourceAssemblySymbol for C1 is linked to AssemblySymbol for v1 of Lib.dll. However, - given the set of references for C2, the same reference for C1 should be resolved against - v2 of Lib.dll. In other words, in context of C2, all types from v1 of Lib.dll leaking - through C1 (through method signatures, etc.) must be retargeted to the types from v2 of - Lib.dll. In this case, ReferenceManager creates a special RetargetingAssemblySymbol for - C1, which is responsible for the type retargeting. The RetargetingAssemblySymbols could - also be reused for different Compilations, ReferenceManager maintains a cache of - RetargetingAssemblySymbols (WeakReferences) for each Compilation. - - The only public entry point of this class is CreateSourceAssembly() method. - - - - - Checks if the properties of are compatible with properties of . - Reports inconsistencies to the given diagnostic bag. - - True if the properties are compatible and hence merged, false if the duplicate reference should not merge it's properties with primary reference. - - - - C# only considers culture when comparing weak identities. - It ignores versions of weak identities and reports an error if there are two weak assembly - references passed to a compilation that have the same simple name. - - - - - Creates a from specified metadata. - - - Used by EnC to create symbols for emit baseline. The PE symbols are used by . - - The assembly references listed in the metadata AssemblyRef table are matched to the resolved references - stored on this . Each AssemblyRef is matched against the assembly identities - using an exact equality comparison. No unification or further resolution is performed. - - - - - Guarded by . - - - - - Import options of the compilation being built. - - - - - For testing purposes only. - - - - - For testing purposes only. - - - - - Represents a reference to another C# compilation. - - - - - Returns the referenced Compilation. - - - - - Create a metadata reference to a compilation. - - The compilation to reference. - Extern aliases for this reference. - Should interop types be embedded in the created assembly? - - - - Applies C#-specific modification and filtering of s. - - - - - Modifies an input per the given options. For example, the - severity may be escalated, or the may be filtered out entirely - (by returning null). - - The input diagnostic - The maximum warning level to allow. Diagnostics with a higher warning level will be filtered out. - How warning diagnostics should be reported - How specific diagnostics should be reported - A diagnostic updated to reflect the options, or null if it has been filtered out - - - - Allows asking semantic questions about a tree of syntax nodes in a Compilation. Typically, - an instance is obtained by a call to .. - - - An instance of caches local symbols and semantic - information. Thus, it is much more efficient to use a single instance of when asking multiple questions about a syntax tree, because - information from the first question may be reused. This also means that holding onto an - instance of SemanticModel for a long time may keep a significant amount of memory from being - garbage collected. - - - When an answer is a named symbol that is reachable by traversing from the root of the symbol - table, (that is, from an of the ), - that symbol will be returned (i.e. the returned value will be reference-equal to one - reachable from the root of the symbol table). Symbols representing entities without names - (e.g. array-of-int) may or may not exhibit reference equality. However, some named symbols - (such as local variables) are not reachable from the root. These symbols are visible as - answers to semantic questions. When the same SemanticModel object is used, the answers - exhibit reference-equality. - - - - - - The compilation this object was obtained from. - - - - - The root node of the syntax tree that this binding is based on. - - - - - Gets symbol information about a syntax node. This is overridden by various specializations of SemanticModel. - It can assume that CheckSyntaxNode and CanGetSemanticInfo have already been called, as well as that named - argument nodes have been handled. - - The syntax node to get semantic information for. - Options to control behavior. - The cancellation token. - - - - Gets symbol information about the 'Add' method corresponding to an expression syntax within collection initializer. - This is the worker function that is overridden in various derived kinds of Semantic Models. It can assume that - CheckSyntaxNode has already been called and the is in the right place in the syntax tree. - - - - - Gets type information about a syntax node. This is overridden by various specializations of SemanticModel. - It can assume that CheckSyntaxNode and CanGetSemanticInfo have already been called, as well as that named - argument nodes have been handled. - - The syntax node to get semantic information for. - The cancellation token. - - - - Gets a list of method or indexed property symbols for a syntax node. This is overridden by various specializations of SemanticModel. - It can assume that CheckSyntaxNode and CanGetSemanticInfo have already been called, as well as that named - argument nodes have been handled. - - The syntax node to get semantic information for. - - The cancellation token. - - - - Gets a list of indexer symbols for a syntax node. This is overridden by various specializations of SemanticModel. - It can assume that CheckSyntaxNode and CanGetSemanticInfo have already been called, as well as that named - argument nodes have been handled. - - The syntax node to get semantic information for. - - The cancellation token. - - - - Gets the constant value for a syntax node. This is overridden by various specializations of SemanticModel. - It can assume that CheckSyntaxNode and CanGetSemanticInfo have already been called, as well as that named - argument nodes have been handled. - - The syntax node to get semantic information for. - The cancellation token. - - - - Bind the given expression speculatively at the given position, and return back - the resulting bound node. May return null in some error cases. - - - Keep in sync with Binder.BindCrefParameterOrReturnType. - - - - - Bind the given attribute speculatively at the given position, and return back - the resulting bound node. May return null in some error cases. - - - - - Gets the semantic information for an ordering clause in an orderby query clause. - - - - - Gets the semantic information associated with a select or group clause. - - - - - Returns what symbol(s), if any, the given expression syntax bound to in the program. - - An AliasSymbol will never be returned by this method. What the alias refers to will be - returned instead. To get information about aliases, call GetAliasInfo. - - If binding the type name C in the expression "new C(...)" the actual constructor bound to - will be returned (or all constructor if overload resolution failed). This occurs as long as C - unambiguously binds to a single type that has a constructor. If C ambiguously binds to multiple - types, or C binds to a static class, then type(s) are returned. - - - - - Returns what 'Add' method symbol(s), if any, corresponds to the given expression syntax - within . - - - - - Returns what symbol(s), if any, the given constructor initializer syntax bound to in the program. - - The syntax node to get semantic information for. - The cancellation token. - - - - Returns what symbol(s), if any, the given attribute syntax bound to in the program. - - The syntax node to get semantic information for. - The cancellation token. - - - - Gets the semantic information associated with a documentation comment cref. - - - - - Binds the expression in the context of the specified location and gets symbol information. - This method is used to get symbol information about an expression that did not actually - appear in the source code. - - A character position used to identify a declaration scope and - accessibility. This character position must be within the FullSpan of the Root syntax - node in this SemanticModel. - - A syntax node that represents a parsed expression. This syntax - node need not and typically does not appear in the source code referred to by the - SemanticModel instance. - Indicates whether to binding the expression as a full expressions, - or as a type or namespace. If SpeculativeBindingOption.BindAsTypeOrNamespace is supplied, then - expression should derive from TypeSyntax. - The symbol information for the topmost node of the expression. - - The passed in expression is interpreted as a stand-alone expression, as if it - appeared by itself somewhere within the scope that encloses "position". - - is ignored if is within a documentation - comment cref attribute value. - - - - - Bind the attribute in the context of the specified location and get semantic information - such as type, symbols and diagnostics. This method is used to get semantic information about an attribute - that did not actually appear in the source code. - - A character position used to identify a declaration scope and accessibility. This - character position must be within the FullSpan of the Root syntax node in this SemanticModel. In order to obtain - the correct scoping rules for the attribute, position should be the Start position of the Span of the symbol that - the attribute is being applied to. - - A syntax node that represents a parsed attribute. This syntax node - need not and typically does not appear in the source code referred to SemanticModel instance. - The semantic information for the topmost node of the attribute. - - - - Bind the constructor initializer in the context of the specified location and get semantic information - such as type, symbols and diagnostics. This method is used to get semantic information about a constructor - initializer that did not actually appear in the source code. - - NOTE: This will only work in locations where there is already a constructor initializer. - - A character position used to identify a declaration scope and accessibility. This - character position must be within the FullSpan of the Root syntax node in this SemanticModel. - Furthermore, it must be within the span of an existing constructor initializer. - - A syntax node that represents a parsed constructor initializer. This syntax node - need not and typically does not appear in the source code referred to SemanticModel instance. - The semantic information for the topmost node of the constructor initializer. - - - - Bind the cref in the context of the specified location and get semantic information - such as type, symbols and diagnostics. This method is used to get semantic information about a cref - that did not actually appear in the source code. - - A character position used to identify a declaration scope and accessibility. This - character position must be within the FullSpan of the Root syntax node in this SemanticModel. In order to obtain - the correct scoping rules for the cref, position should be the Start position of the Span of the original cref. - - A syntax node that represents a parsed cref. This syntax node - need not and typically does not appear in the source code referred to SemanticModel instance. - SymbolInfo options. - The semantic information for the topmost node of the cref. - - - - Gets type information about a constructor initializer. - - The syntax node to get semantic information for. - The cancellation token. - - - - Gets type information about an expression. - - The syntax node to get semantic information for. - The cancellation token. - - - - Gets type information about an attribute. - - The syntax node to get semantic information for. - The cancellation token. - - - - Gets the conversion that occurred between the expression's type and type implied by the expression's context. - - - - - Binds the expression in the context of the specified location and gets type information. - This method is used to get type information about an expression that did not actually - appear in the source code. - - A character position used to identify a declaration scope and - accessibility. This character position must be within the FullSpan of the Root syntax - node in this SemanticModel. - - A syntax node that represents a parsed expression. This syntax - node need not and typically does not appear in the source code referred to by the - SemanticModel instance. - Indicates whether to binding the expression as a full expressions, - or as a type or namespace. If SpeculativeBindingOption.BindAsTypeOrNamespace is supplied, then - expression should derive from TypeSyntax. - The type information for the topmost node of the expression. - The passed in expression is interpreted as a stand-alone expression, as if it - appeared by itself somewhere within the scope that encloses "position". - - - - Gets the conversion that occurred between the expression's type and type implied by the expression's context. - - - - - Gets a list of method or indexed property symbols for a syntax node. - - The syntax node to get semantic information for. - The cancellation token. - - - - Gets a list of method or indexed property symbols for a syntax node. - - The syntax node to get semantic information for. - The cancellation token. - - - - Gets a list of method or indexed property symbols for a syntax node. - - The syntax node to get semantic information for. - The cancellation token. - - - - Returns the list of accessible, non-hidden indexers that could be invoked with the given expression as receiver. - - Potential indexer receiver. - To cancel the computation. - Accessible, non-hidden indexers. - - If the receiver is an indexer expression, the list will contain the indexers that could be applied to the result - of accessing the indexer, not the set of candidates that were considered during construction of the indexer expression. - - - - - Gets the semantic information associated with a query clause. - - - - - If resolves to an alias name, return the AliasSymbol corresponding - to A. Otherwise return null. - - - - - Binds the name in the context of the specified location and sees if it resolves to an - alias name. If it does, return the AliasSymbol corresponding to it. Otherwise, return null. - - A character position used to identify a declaration scope and - accessibility. This character position must be within the FullSpan of the Root syntax - node in this SemanticModel. - - A syntax node that represents a name. This syntax - node need not and typically does not appear in the source code referred to by the - SemanticModel instance. - Indicates whether to binding the name as a full expression, - or as a type or namespace. If SpeculativeBindingOption.BindAsTypeOrNamespace is supplied, then - expression should derive from TypeSyntax. - The passed in name is interpreted as a stand-alone name, as if it - appeared by itself somewhere within the scope that encloses "position". - - - - Gets the binder that encloses the position. - - - - - Gets the MemberSemanticModel that contains the node. - - - - - Given a position, locates the containing token. If the position is actually within the - leading trivia of the containing token or if that token is EOF, moves one token to the - left. Returns the start position of the resulting token. - - This has the effect of moving the position left until it hits the beginning of a non-EOF - token. - - Throws an ArgumentOutOfRangeException if position is not within the root of this model. - - - - - A convenience method that determines a position from a node. If the node is missing, - then its position will be adjusted using CheckAndAdjustPosition. - - - - - Gets the available named symbols in the context of the specified location and optional container. Only - symbols that are accessible and visible from the given location are returned. - - The character position for determining the enclosing declaration scope and - accessibility. - The container to search for symbols within. If null then the enclosing declaration - scope around position is used. - The name of the symbol to find. If null is specified then symbols - with any names are returned. - Consider (reduced) extension methods. - A list of symbols that were found. If no symbols were found, an empty list is returned. - - The "position" is used to determine what variables are visible and accessible. Even if "container" is - specified, the "position" location is significant for determining which members of "containing" are - accessible. - - Labels are not considered (see ). - - Non-reduced extension methods are considered regardless of the value of . - - - - - Gets the available base type members in the context of the specified location. Akin to - calling with the container set to the immediate base type of - the type in which occurs. However, the accessibility rules - are different: protected members of the base type will be visible. - - Consider the following example: - - public class Base - { - protected void M() { } - } - - public class Derived : Base - { - void Test(Base b) - { - b.M(); // Error - cannot access protected member. - base.M(); - } - } - - Protected members of an instance of another type are only accessible if the instance is known - to be "this" instance (as indicated by the "base" keyword). - - The character position for determining the enclosing declaration scope and - accessibility. - The name of the symbol to find. If null is specified then symbols - with any names are returned. - A list of symbols that were found. If no symbols were found, an empty list is returned. - - The "position" is used to determine what variables are visible and accessible. - - Non-reduced extension methods are considered, but reduced extension methods are not. - - - - - Gets the available named static member symbols in the context of the specified location and optional container. - Only members that are accessible and visible from the given location are returned. - - Non-reduced extension methods are considered, since they are static methods. - - The character position for determining the enclosing declaration scope and - accessibility. - The container to search for symbols within. If null then the enclosing declaration - scope around position is used. - The name of the symbol to find. If null is specified then symbols - with any names are returned. - A list of symbols that were found. If no symbols were found, an empty list is returned. - - The "position" is used to determine what variables are visible and accessible. Even if "container" is - specified, the "position" location is significant for determining which members of "containing" are - accessible. - - - - - Gets the available named namespace and type symbols in the context of the specified location and optional container. - Only members that are accessible and visible from the given location are returned. - - The character position for determining the enclosing declaration scope and - accessibility. - The container to search for symbols within. If null then the enclosing declaration - scope around position is used. - The name of the symbol to find. If null is specified then symbols - with any names are returned. - A list of symbols that were found. If no symbols were found, an empty list is returned. - - The "position" is used to determine what variables are visible and accessible. Even if "container" is - specified, the "position" location is significant for determining which members of "containing" are - accessible. - - Does not return INamespaceOrTypeSymbol, because there could be aliases. - - - - - Gets the available named label symbols in the context of the specified location and optional container. - Only members that are accessible and visible from the given location are returned. - - The character position for determining the enclosing declaration scope and - accessibility. - The name of the symbol to find. If null is specified then symbols - with any names are returned. - A list of symbols that were found. If no symbols were found, an empty list is returned. - - The "position" is used to determine what variables are visible and accessible. Even if "container" is - specified, the "position" location is significant for determining which members of "containing" are - accessible. - - - - - Gets the available named symbols in the context of the specified location and optional - container. Only symbols that are accessible and visible from the given location are - returned. - - The character position for determining the enclosing declaration - scope and accessibility. - The container to search for symbols within. If null then the - enclosing declaration scope around position is used. - The name of the symbol to find. If null is specified then symbols - with any names are returned. - Additional options that affect the lookup process. - Ignore 'throughType' in accessibility checking. - Used in checking accessibility of symbols accessed via 'MyBase' or 'base'. - - The "position" is used to determine what variables are visible and accessible. Even if - "container" is specified, the "position" location is significant for determining which - members of "containing" are accessible. - - Throws an argument exception if the passed lookup options are invalid. - - - - Determines if the symbol is accessible from the specified location. - - A character position used to identify a declaration scope and - accessibility. This character position must be within the FullSpan of the Root syntax - node in this SemanticModel. - - The symbol that we are checking to see if it accessible. - - True if "symbol is accessible, false otherwise. - - This method only checks accessibility from the point of view of the accessibility - modifiers on symbol and its containing types. Even if true is returned, the given symbol - may not be able to be referenced for other reasons, such as name hiding. - - - - - Field-like events can be used as fields in types that can access private - members of the declaring type of the event. - - - - - Analyze control-flow within a part of a method body. - - The first statement to be included in the analysis. - The last statement to be included in the analysis. - An object that can be used to obtain the result of the control flow analysis. - The two statements are not contained within the same statement list. - - - - Analyze control-flow within a part of a method body. - - The statement to be included in the analysis. - An object that can be used to obtain the result of the control flow analysis. - - - - Analyze data-flow within an expression. - - The expression within the associated SyntaxTree to analyze. - An object that can be used to obtain the result of the data flow analysis. - - - - Analyze data-flow within a part of a method body. - - The first statement to be included in the analysis. - The last statement to be included in the analysis. - An object that can be used to obtain the result of the data flow analysis. - The two statements are not contained within the same statement list. - - - - Analyze data-flow within a part of a method body. - - The statement to be included in the analysis. - An object that can be used to obtain the result of the data flow analysis. - - - - Get a SemanticModel object that is associated with a method body that did not appear in this source code. - Given must lie within an existing method body of the Root syntax node for this SemanticModel. - Locals and labels declared within this existing method body are not considered to be in scope of the speculated method body. - - A character position used to identify a declaration scope and accessibility. This - character position must be within the FullSpan of the Root syntax node in this SemanticModel and must be - within the FullSpan of a Method body within the Root syntax node. - A syntax node that represents a parsed method declaration. This method should not be - present in the syntax tree associated with this object, but must have identical signature to the method containing - the given in this SemanticModel. - A SemanticModel object that can be used to inquire about the semantic - information associated with syntax nodes within . - Flag indicating whether a speculative semantic model was created. - Throws this exception if the node is contained any SyntaxTree in the current Compilation - Throws this exception if is null. - Throws this exception if this model is a speculative semantic model, i.e. is true. - Chaining of speculative semantic model is not supported. - - - - Get a SemanticModel object that is associated with a method body that did not appear in this source code. - Given must lie within an existing method body of the Root syntax node for this SemanticModel. - Locals and labels declared within this existing method body are not considered to be in scope of the speculated method body. - - A character position used to identify a declaration scope and accessibility. This - character position must be within the FullSpan of the Root syntax node in this SemanticModel and must be - within the FullSpan of a Method body within the Root syntax node. - A syntax node that represents a parsed accessor declaration. This accessor should not be - present in the syntax tree associated with this object. - A SemanticModel object that can be used to inquire about the semantic - information associated with syntax nodes within . - Flag indicating whether a speculative semantic model was created. - Throws this exception if the node is contained any SyntaxTree in the current Compilation - Throws this exception if is null. - Throws this exception if this model is a speculative semantic model, i.e. is true. - Chaining of speculative semantic model is not supported. - - - - Get a SemanticModel object that is associated with a type syntax node that did not appear in - this source code. This can be used to get detailed semantic information about sub-parts - of a type syntax that did not appear in source code. - - A character position used to identify a declaration scope and accessibility. This - character position must be within the FullSpan of the Root syntax node in this SemanticModel. - - A syntax node that represents a parsed expression. This expression should not be - present in the syntax tree associated with this object. - Indicates whether to bind the expression as a full expression, - or as a type or namespace. - A SemanticModel object that can be used to inquire about the semantic - information associated with syntax nodes within . - Flag indicating whether a speculative semantic model was created. - Throws this exception if the node is contained any SyntaxTree in the current Compilation - Throws this exception if is null. - Throws this exception if this model is a speculative semantic model, i.e. is true. - Chaining of speculative semantic model is not supported. - - - - Get a SemanticModel object that is associated with a statement that did not appear in - this source code. This can be used to get detailed semantic information about sub-parts - of a statement that did not appear in source code. - - A character position used to identify a declaration scope and accessibility. This - character position must be within the FullSpan of the Root syntax node in this SemanticModel. - A syntax node that represents a parsed statement. This statement should not be - present in the syntax tree associated with this object. - A SemanticModel object that can be used to inquire about the semantic - information associated with syntax nodes within . - Flag indicating whether a speculative semantic model was created. - Throws this exception if the node is contained any SyntaxTree in the current Compilation - Throws this exception if is null. - Throws this exception if this model is a speculative semantic model, i.e. is true. - Chaining of speculative semantic model is not supported. - - - - Get a SemanticModel object that is associated with an initializer that did not appear in - this source code. This can be used to get detailed semantic information about sub-parts - of a field initializer or default parameter value that did not appear in source code. - - A character position used to identify a declaration scope and accessibility. This - character position must be within the FullSpan of the Root syntax node in this SemanticModel. - - A syntax node that represents a parsed initializer. This initializer should not be - present in the syntax tree associated with this object. - A SemanticModel object that can be used to inquire about the semantic - information associated with syntax nodes within . - Flag indicating whether a speculative semantic model was created. - Throws this exception if the node is contained any SyntaxTree in the current Compilation. - Throws this exception if is null. - Throws this exception if this model is a speculative semantic model, i.e. is true. - Chaining of speculative semantic model is not supported. - - - - Get a SemanticModel object that is associated with an expression body that did not appear in - this source code. This can be used to get detailed semantic information about sub-parts - of an expression body that did not appear in source code. - - A character position used to identify a declaration scope and accessibility. This - character position must be within the FullSpan of the Root syntax node in this SemanticModel. - - A syntax node that represents a parsed expression body. This node should not be - present in the syntax tree associated with this object. - A SemanticModel object that can be used to inquire about the semantic - information associated with syntax nodes within . - Flag indicating whether a speculative semantic model was created. - Throws this exception if the node is contained any SyntaxTree in the current Compilation. - Throws this exception if is null. - Throws this exception if this model is a speculative semantic model, i.e. is true. - Chaining of speculative semantic model is not supported. - - - - Get a SemanticModel object that is associated with a constructor initializer that did not appear in - this source code. This can be used to get detailed semantic information about sub-parts - of a constructor initializer that did not appear in source code. - - NOTE: This will only work in locations where there is already a constructor initializer. - - A character position used to identify a declaration scope and accessibility. This - character position must be within the FullSpan of the Root syntax node in this SemanticModel. - Furthermore, it must be within the span of an existing constructor initializer. - - A syntax node that represents a parsed constructor initializer. - This node should not be present in the syntax tree associated with this object. - A SemanticModel object that can be used to inquire about the semantic - information associated with syntax nodes within . - Flag indicating whether a speculative semantic model was created. - Throws this exception if the node is contained any SyntaxTree in the current Compilation. - Throws this exception if is null. - Throws this exception if this model is a speculative semantic model, i.e. is true. - Chaining of speculative semantic model is not supported. - - - - Get a SemanticModel object that is associated with a cref that did not appear in - this source code. This can be used to get detailed semantic information about sub-parts - of a cref that did not appear in source code. - - NOTE: This will only work in locations where there is already a cref. - - A character position used to identify a declaration scope and accessibility. This - character position must be within the FullSpan of the Root syntax node in this SemanticModel. - Furthermore, it must be within the span of an existing cref. - - A syntax node that represents a parsed cref syntax. - This node should not be present in the syntax tree associated with this object. - A SemanticModel object that can be used to inquire about the semantic - information associated with syntax nodes within . - Flag indicating whether a speculative semantic model was created. - Throws this exception if the node is contained any SyntaxTree in the current Compilation. - Throws this exception if is null. - Throws this exception if this model is a speculative semantic model, i.e. is true. - Chaining of speculative semantic model is not supported. - - - - Get a SemanticModel object that is associated with an attribute that did not appear in - this source code. This can be used to get detailed semantic information about sub-parts - of an attribute that did not appear in source code. - - A character position used to identify a declaration scope and accessibility. This - character position must be within the FullSpan of the Root syntax node in this SemanticModel. - A syntax node that represents a parsed attribute. This attribute should not be - present in the syntax tree associated with this object. - A SemanticModel object that can be used to inquire about the semantic - information associated with syntax nodes within . - Flag indicating whether a speculative semantic model was created. - Throws this exception if the node is contained any SyntaxTree in the current Compilation. - Throws this exception if is null. - Throws this exception if this model is a speculative semantic model, i.e. is true. - Chaining of speculative semantic model is not supported. - - - - If this is a speculative semantic model, then returns its parent semantic model. - Otherwise, returns null. - - - - - The SyntaxTree that this object is associated with. - - - - - Determines what type of conversion, if any, would be used if a given expression was - converted to a given type. If isExplicitInSource is true, the conversion produced is - that which would be used if the conversion were done for a cast expression. - - An expression which much occur within the syntax tree - associated with this object. - The type to attempt conversion to. - True if the conversion should be determined as for a cast expression. - Returns a Conversion object that summarizes whether the conversion was - possible, and if so, what kind of conversion it was. If no conversion was possible, a - Conversion object with a false "Exists" property is returned. - To determine the conversion between two types (instead of an expression and a - type), use Compilation.ClassifyConversion. - - - - Determines what type of conversion, if any, would be used if a given expression was - converted to a given type. If isExplicitInSource is true, the conversion produced is - that which would be used if the conversion were done for a cast expression. - - The character position for determining the enclosing declaration - scope and accessibility. - The expression to classify. This expression does not need to be - present in the syntax tree associated with this object. - The type to attempt conversion to. - True if the conversion should be determined as for a cast expression. - Returns a Conversion object that summarizes whether the conversion was - possible, and if so, what kind of conversion it was. If no conversion was possible, a - Conversion object with a false "Exists" property is returned. - To determine the conversion between two types (instead of an expression and a - type), use Compilation.ClassifyConversion. - - - - Determines what type of conversion, if any, would be used if a given expression was - converted to a given type using an explicit cast. - - An expression which much occur within the syntax tree - associated with this object. - The type to attempt conversion to. - Returns a Conversion object that summarizes whether the conversion was - possible, and if so, what kind of conversion it was. If no conversion was possible, a - Conversion object with a false "Exists" property is returned. - To determine the conversion between two types (instead of an expression and a - type), use Compilation.ClassifyConversion. - - - - Determines what type of conversion, if any, would be used if a given expression was - converted to a given type using an explicit cast. - - The character position for determining the enclosing declaration - scope and accessibility. - The expression to classify. This expression does not need to be - present in the syntax tree associated with this object. - The type to attempt conversion to. - Returns a Conversion object that summarizes whether the conversion was - possible, and if so, what kind of conversion it was. If no conversion was possible, a - Conversion object with a false "Exists" property is returned. - To determine the conversion between two types (instead of an expression and a - type), use Compilation.ClassifyConversion. - - - - Given a member declaration syntax, get the corresponding symbol. - - The syntax node that declares a member. - The cancellation token. - The symbol that was declared. - - NOTE: We have no GetDeclaredSymbol overloads for following subtypes of MemberDeclarationSyntax: - NOTE: (1) GlobalStatementSyntax as they don't declare any symbols. - NOTE: (2) IncompleteMemberSyntax as there are no symbols for incomplete members. - NOTE: (3) BaseFieldDeclarationSyntax or its subtypes as these declarations can contain multiple variable declarators. - NOTE: GetDeclaredSymbol should be called on the variable declarators directly. - - - - - Given a namespace declaration syntax node, get the corresponding namespace symbol for - the declaration assembly. - - The syntax node that declares a namespace. - The cancellation token. - The namespace symbol that was declared by the namespace declaration. - - - - Given a type declaration, get the corresponding type symbol. - - The syntax node that declares a type. - The cancellation token. - The type symbol that was declared. - - NOTE: We have no GetDeclaredSymbol overloads for subtypes of BaseTypeDeclarationSyntax as all of them return a NamedTypeSymbol. - - - - - Given a delegate declaration, get the corresponding type symbol. - - The syntax node that declares a delegate. - The cancellation token. - The type symbol that was declared. - - - - Given a enum member declaration, get the corresponding field symbol. - - The syntax node that declares an enum member. - The cancellation token. - The symbol that was declared. - - - - Given a base method declaration syntax, get the corresponding method symbol. - - The syntax node that declares a method. - The cancellation token. - The symbol that was declared. - - NOTE: We have no GetDeclaredSymbol overloads for subtypes of BaseMethodDeclarationSyntax as all of them return a MethodSymbol. - - - - - Given a syntax node that declares a property, indexer or an event, get the corresponding declared symbol. - - The syntax node that declares a property, indexer or an event. - The cancellation token. - The symbol that was declared. - - - - Given a syntax node that declares a property, get the corresponding declared symbol. - - The syntax node that declares a property. - The cancellation token. - The symbol that was declared. - - - - Given a syntax node that declares an indexer, get the corresponding declared symbol. - - The syntax node that declares an indexer. - The cancellation token. - The symbol that was declared. - - - - Given a syntax node that declares a (custom) event, get the corresponding event symbol. - - The syntax node that declares a event. - The cancellation token. - The symbol that was declared. - - - - Given a syntax node of anonymous object creation initializer, get the anonymous object property symbol. - - The syntax node that declares a property. - The cancellation token. - The symbol that was declared. - - - - Given a syntax node of anonymous object creation expression, get the anonymous object type symbol. - - The syntax node that declares an anonymous object. - The cancellation token. - The symbol that was declared. - - - - Given a syntax node that declares a property or member accessor, get the corresponding - symbol. - - The syntax node that declares an accessor. - The cancellation token. - The symbol that was declared. - - - - Given a syntax node that declares an expression body, get the corresponding symbol. - - The syntax node that declares an expression body. - The cancellation token. - The symbol that was declared. - - - - Given a variable declarator syntax, get the corresponding symbol. - - The syntax node that declares a variable. - The cancellation token. - The symbol that was declared. - - - - Given a labeled statement syntax, get the corresponding label symbol. - - The syntax node of the labeled statement. - The cancellation token. - The label symbol for that label. - - - - Given a switch label syntax, get the corresponding label symbol. - - The syntax node of the switch label. - The cancellation token. - The label symbol for that label. - - - - Given a using declaration get the corresponding symbol for the using alias that was - introduced. - - - The cancellation token. - The alias symbol that was declared. - - If the using directive is an error because it attempts to introduce an alias for which an existing alias was - previously declared in the same scope, the result is a newly-constructed AliasSymbol (i.e. not one from the - symbol table). - - - - - Given an extern alias declaration get the corresponding symbol for the alias that was introduced. - - - The cancellation token. - The alias symbol that was declared, or null if a duplicate alias symbol was declared. - - - - Given a parameter declaration syntax node, get the corresponding symbol. - - The syntax node that declares a parameter. - The cancellation token. - The parameter that was declared. - - - - Given a base field declaration syntax, get the corresponding symbols. - - The syntax node that declares one or more fields or events. - The cancellation token. - The symbols that were declared. - - - - Given a type parameter declaration (field or method), get the corresponding symbol - - The cancellation token. - - - - - Given a foreach statement, get the symbol for the iteration variable - - The cancellation token. - - - - - Given a catch declaration, get the symbol for the exception variable - - The cancellation token. - - - - - Get the query range variable declared in a join into clause. - - - - - Get the query range variable declared in a query continuation clause. - - - - - Returns a list of accessible, non-hidden indexers that could be invoked with the given expression - as a receiver. - - - If the given expression is an indexer access, then this method will return the list of indexers - that could be invoked on the result, not the list of indexers that were considered. - - - - - The method group can contain "duplicate" symbols that we do not want to display in the IDE analysis. - - For example, there could be an overriding virtual method and the method it overrides both in - the method group. This, strictly speaking, is a violation of the C# specification because we are - supposed to strip out overriding methods from the method group before overload resolution; overload - resolution is supposed to treat overridden methods as being methods of the less derived type. However, - in the IDE we want to display information about the overriding method, not the overridden method, and - therefore we leave both in the method group. The overload resolution algorithm has been written - to handle this departure from the specification. - - Similarly, we might have two methods in the method group where one is a "new" method that hides - another. Again, in overload resolution this would be handled by the rule that says that methods - declared on more derived types take priority over methods declared on less derived types. Both - will be in the method group, but in the IDE we want to only display information about the - hiding method, not the hidden method. - - We can also have "diamond" inheritance of interfaces leading to multiple copies of the same - method ending up in the method group: - - interface IB { void M(); } - interface IL : IB {} - interface IR : IB {} - interface ID : IL, IR {} - ... - id.M(); - - We only want to display one symbol in the IDE, even if the member lookup algorithm is unsophisticated - and puts IB.M in the member group twice. (Again, this is a mild spec violation since a method group - is supposed to be a set, without duplicates.) - - Finally, the interaction of multiple inheritance of interfaces and hiding can lead to some subtle - situations. Suppose we make a slight modification to the scenario above: - - interface IL : IB { new void M(); } - - Again, we only want to display one symbol in the method group. The fact that there is a "path" - to IB.M from ID via IR is irrelevant; if the symbol IB.M is hidden by IL.M then it is hidden - in ID, period. - - - - - Get the semantic info of a named argument in an invocation-like expression. - - - - - Find the first parameter named "argumentName". - - - - - If the call represents an extension method invocation with an explicit receiver, return the original - methods as ReducedExtensionMethodSymbols. Otherwise, return the original methods unchanged. - - - - - If the call represents an extension method with an explicit receiver, return a - ReducedExtensionMethodSymbol if it can be constructed. Otherwise, return the - original call method. - - - - - Gets for each statement info. - - The node. - - - - Gets await expression info. - - The node. - - - - If the given node is within a preprocessing directive, gets the preprocessing symbol info for it. - - Preprocessing symbol identifier node. - - - - Options to control the internal working of GetSymbolInfoWorker. Not currently exposed - to public clients, but could be if desired. - - - - - When binding "C" new C(...), return the type C and do not return information about - which constructor was bound to. Bind "new C(...)" to get information about which constructor - was chosen. - - - - - When binding "C" new C(...), return the constructor of C that was bound to, if C unambiguously - binds to a single type with at least one constructor. - - - - - When binding a name X that was declared with a "using X=OtherTypeOrNamespace", return OtherTypeOrNamespace. - - - - - When binding a name X that was declared with a "using X=OtherTypeOrNamespace", return the alias symbol X. - - - - - Given a position in the SyntaxTree for this SemanticModel returns the innermost - NamedType that the position is considered inside of. - - - - - Structure containing all semantic information about a for each statement. - - - - - Gets the "GetEnumerator" method. - - - - - Gets the "MoveNext" method. - - - - - Gets the "Current" property. - - - - - Gets the "Dispose" method. - - - - - The intermediate type to which the output of the is converted - before being converted to the iteration variable type. - - - As you might hope, for an array, it is the element type of the array. - - - - - The conversion from the to the iteration variable type. - - - May be user-defined. - - - - - The conversion from the type of the to the . - - - - - Initializes a new instance of the structure. - - - - - A binding for a field initializer, property initializer, constructor - initializer, or a parameter default value. - Represents the result of binding a value expression rather than a - block (for that, use a ). - - - - - Creates a SemanticModel for a true field initializer (field = value) of a named type (incl. Enums). - - - - - Creates a SemanticModel for an autoprop initializer of a named type - - - - - Creates a SemanticModel for a constructor initializer (": this(...)" or ": base(...)"). - - - - - Creates a SemanticModel for a constructor initializer (": base-class(...)"). - - - - - Creates a SemanticModel for a parameter default value. - - - - - Creates a speculative SemanticModel for an initializer node (field initializer, constructor initializer, or parameter default value) - that did not appear in the original source code. - - - - This is an implementation of a special symbol comparer, which is supposed to be used for - sorting original definition symbols (explicitly or explicitly declared in source within the same - container) in lexical order of their declarations. It will not work on anything that uses non-source locations. - - - - - Binding info for expressions and statements that are part of a member declaration. - - - - - The member symbol - - - - - This overload exists for callers who - a) Already have a node in hand and don't want to search through the tree - b) May want to search from an indirect container (e.g. node containing node - containing position). - - - - - Get the bound node corresponding to the root. - - - - - Get the highest bound node in the tree associated with a particular syntax node. - - - - - Get the lowest bound node in the tree associated with a particular syntax node. Lowest is defined as last - in a pre-order traversal of the bound tree. - - - - - Returned binder doesn't need to have set - the caller will add it. - - - - - Performs the same function as GetEnclosingBinder, but is known to take place within a - specified lambda. Walks up the syntax hierarchy until a node with an associated binder - is found. - - - CONSIDER: can this share code with MemberSemanticModel.GetEnclosingBinder? - - Returned binder doesn't need to have set - the caller will add it. - - - - - Get all bounds nodes associated with a node, ordered from highest to lowest in the bound tree. - Strictly speaking, the order is that of a pre-order traversal of the bound tree. - - - - - If the node is an expression, return the nearest parent node - with semantic meaning. Otherwise return null. - - - - - The incremental binder is used when binding statements. Whenever a statement - is bound, it checks the bound node cache to see if that statement was bound, - and returns it instead of rebinding it. - - For example, we might have: - while (x > foo()) - { - y = y * x; - z = z + y; - } - - We might first get semantic info about "z", and thus bind just the statement - "z = z + y". Later, we might bind the entire While block. While binding the while - block, we can reuse the binding we did of "z = z + y". - - - NOTE: any member overridden by this binder should follow the BuckStopsHereBinder pattern. - Otherwise, a subsequent binder in the chain could suppress the caching behavior. - - - - - We override GetBinder so that the BindStatement override is still - in effect on nested binders. - - - - - Walks the bound tree and adds all non compiler generated bound nodes whose syntax matches the given one - to the cache. - - The root of the bound tree. - The cache. - The syntax node where to add bound nodes for. - - - - Decides whether to the add the bound node to the cache or not. - - The bound node. - - - - Allows asking semantic questions about a TypeSyntax (or its descendants) within a member, that did not appear in the original source code. - Typically, an instance is obtained by a call to SemanticModel.TryGetSpeculativeSemanticModel. - - - - - Creates a speculative SemanticModel for a TypeSyntax node at a position within an existing MemberSemanticModel. - - - - - Creates a SemanticModel that creates and owns the ExecutableCodeBinder for the method of which it is a model. - - - - - Creates a speculative SemanticModel for a method body that did not appear in the original source code. - - - - - Creates a speculative SemanticModel for an expression body that did not appear in the original source code. - - - - - Semantic information associated with a query clause in a C# query expression. - - - - - The .Cast<T>() operation generated from the query range variable's type restriction, - or null if the type restriction isn't specified. - - - The operation, when present is implemented via . - To access the type, when this is non-null use [0]. - If it is an extension method, it is returned in reduced form. - - - - - The operation (e.g. Select(), Where(), etc) that implements the given clause. - - - The clause can be implemented via , or - or that return a delegate. - If it is an extension method, it is returned in reduced form. - - - - - Allows asking semantic questions about a tree of syntax nodes that did not appear in the original source code. - Typically, an instance is obtained by a call to SemanticModel.TryGetSpeculativeSemanticModel. - - - - - Allows asking semantic questions about any node in a SyntaxTree within a Compilation. - - - Allows asking semantic questions about any node in a SyntaxTree within a Compilation. - - - - - The compilation this object was obtained from. - - - - - The root node of the syntax tree that this object is associated with. - - - - - The SyntaxTree that this object is associated with. - - - - - Returns true if this is a SemanticModel that ignores accessibility rules when answering semantic questions. - - - - - Gets the enclosing binder associated with the node - - - - - - - Given a namespace declaration syntax node, get the corresponding namespace symbol for the declaration - assembly. - - The syntax node that declares a namespace. - The cancellation token. - The namespace symbol that was declared by the namespace declaration. - - - - Given a type declaration, get the corresponding type symbol. - - The syntax node that declares a type. - The cancellation token. - The type symbol that was declared. - - NOTE: We have no GetDeclaredSymbol overloads for subtypes of BaseTypeDeclarationSyntax as all of them return a NamedTypeSymbol. - - - - - Given a delegate declaration, get the corresponding type symbol. - - The syntax node that declares a delegate. - The cancellation token. - The type symbol that was declared. - - - - Given an member declaration syntax, get the corresponding symbol. - - The syntax node that declares a member. - The cancellation token. - The symbol that was declared. - - NOTE: We have no GetDeclaredSymbol overloads for following subtypes of MemberDeclarationSyntax: - NOTE: (1) GlobalStatementSyntax as they don't declare any symbols. - NOTE: (2) IncompleteMemberSyntax as there are no symbols for incomplete members. - NOTE: (3) BaseFieldDeclarationSyntax or its subtypes as these declarations can contain multiple variable declarators. - NOTE: GetDeclaredSymbol should be called on the variable declarators directly. - - - - - Given a enum member declaration, get the corresponding field symbol. - - The syntax node that declares an enum member. - The cancellation token. - The symbol that was declared. - - - - Given a base method declaration syntax, get the corresponding method symbol. - - The syntax node that declares a method. - The cancellation token. - The symbol that was declared. - - NOTE: We have no GetDeclaredSymbol overloads for subtypes of BaseMethodDeclarationSyntax as all of them return a MethodSymbol. - - - - - Given a syntax node that declares a property, indexer or an event, get the corresponding declared symbol. - - The syntax node that declares a property, indexer or an event. - The cancellation token. - The symbol that was declared. - - - - Given a syntax node that declares a property, get the corresponding declared symbol. - - The syntax node that declares a property, indexer or an event. - The cancellation token. - The symbol that was declared. - - - - Given a syntax node that declares an indexer, get the corresponding declared symbol. - - The syntax node that declares an indexer. - The cancellation token. - The symbol that was declared. - - - - Given a syntax node that declares a (custom) event, get the corresponding event symbol. - - The syntax node that declares a event. - The cancellation token. - The symbol that was declared. - - - - Given an syntax node that declares a property or member accessor, get the corresponding symbol. - - The syntax node that declares an accessor. - The cancellation token. - The symbol that was declared. - - - - Finds the member in the containing symbol which is inside the given declaration span. - - - - - Given an variable declarator syntax, get the corresponding symbol. - - The syntax node that declares a variable. - The cancellation token. - The symbol that was declared. - - - - Given a labeled statement syntax, get the corresponding label symbol. - - The syntax node of the labeled statement. - The cancellation token. - The label symbol for that label. - - - - Given a switch label syntax, get the corresponding label symbol. - - The syntax node of the switch label. - The cancellation token. - The label symbol for that label. - - - - Given a using declaration get the corresponding symbol for the using alias that was introduced. - - - The cancellation token. - The alias symbol that was declared. - - If the using directive is an error because it attempts to introduce an alias for which an existing alias was - previously declared in the same scope, the result is a newly-constructed AliasSymbol (i.e. not one from the - symbol table). - - - - - Given an extern alias declaration get the corresponding symbol for the alias that was introduced. - - - The cancellation token. - The alias symbol that was declared, or null if a duplicate alias symbol was declared. - - - - Given a base field declaration syntax, get the corresponding symbols. - - The syntax node that declares one or more fields or events. - The cancellation token. - The field symbols that were declared. - - - - Given an parameter declaration syntax node, get the corresponding symbol. - - The syntax node that declares a parameter. - The cancellation token. - The parameter that was declared. - - - - Given a type parameter declaration (field or method), get the corresponding symbol - - - The cancellation token. - - - - - The type of the expression represented by the syntax node. For expressions that do not - have a type, null is returned. If the type could not be determined due to an error, than - an object derived from ErrorTypeSymbol is returned. - - - - - The type of the expression after it has undergone an implicit conversion. If the type - did not undergo an implicit conversion, returns the same as Type. - - - - - If the expression underwent an implicit conversion, return information about that - conversion. Otherwise, returns an identity conversion. - - - - - Manages anonymous types created in owning compilation. All requests for - anonymous type symbols go via the instance of this class. - - - Manages anonymous types created on module level. All requests for anonymous type symbols - go via the instance of this class, the symbol will be either created or returned from cache. - - - - - Represents an anonymous type constructor. - - - - - Represents a getter for anonymous type property. - - - - - Represents an anonymous type 'Equals' method. - - - - - Represents an anonymous type 'GetHashCode' method. - - - - - Represents an anonymous type 'ToString' method. - - - - - Current compilation - - - - - Given anonymous type descriptor provided constructs an anonymous type symbol. - - - - - Get a symbol of constructed anonymous type property by property index - - - - - Retrieves anonymous type properties types - - - - - Given an anonymous type and new field types construct a new anonymous type symbol; - a new type symbol will reuse type descriptor from the constructed type with new type arguments. - - - - - Logical equality on anonymous types that ignores custom modifiers and/or the object/dynamic distinction. - Differs from IsSameType for arrays, pointers, and generic instantiations. - - - - - Reports all use site errors in special or well known symbols required for anonymous types - - true if there was at least one error - - - - Cache of created anonymous type templates used as an implementation of anonymous - types in emit phase. - - - - - Maps delegate signature shape (number of parameters and their ref-ness) to a synthesized generic delegate symbol. - Unlike anonymous types synthesized delegates are not available through symbol APIs. They are only used in lowered bound trees. - Currently used for dynamic call-site sites whose signature doesn't match any of the well-known Func or Action types. - - - - - Produces name of the synthesized delegate symbol that encodes the parameter byref-ness and return type of the delegate. - The arity is appended via `N suffix since in MetadataName calculation since the delegate is generic. - - - - - Given anonymous type provided constructs an implementation type symbol to be used in emit phase; - if the anonymous type has at least one field the implementation type symbol will be created based on - a generic type template generated for each 'unique' anonymous type structure, otherwise the template - type will be non-generic. - - - - - Resets numbering in anonymous type names and compiles the - anonymous type methods. Also seals the collection of templates. - - - - - The set of anonymous type templates created by - this AnonymousTypeManager, in fixed order. - - - - - The set of synthesized delegates created by - this AnonymousTypeManager. - - - - - Returns all templates owned by this type manager - - - - - Returns true if the named type is an implementation template for an anonymous type - - - - - Retrieves methods of anonymous type template which are not placed to symbol table. - In current implementation those are overridden 'ToString', 'Equals' and 'GetHashCode' - - - - - Translates anonymous type public symbol into an implementation type symbol to be used in emit. - - - - - Translates anonymous type method symbol into an implementation method symbol to be used in emit. - - - - - Comparator being used for stable ordering in anonymous type indices. - - - - - Represents an anonymous type 'public' symbol which is used in binding and lowering. - In emit phase it is being substituted with implementation symbol. - - - - Properties defined in the type - - - Maps member names to symbol(s) - - - Anonymous type manager owning this template - - - Anonymous type descriptor - - - - Represents a baking field for an anonymous type template property symbol. - - - - - Represents an anonymous type template's property symbol. - - - - - Represents a base implementation for anonymous type synthesized methods. - - - - - Represents an anonymous type 'template' which is a generic type to be used for all - anonymous type having the same structure, i.e. the same number of fields and field names. - - - - Name to be used as metadata name during emit - - - This list consists of synthesized method symbols for ToString, - Equals and GetHashCode which are not part of symbol table - - - Properties defined in the template - - - Maps member names to symbol(s) - - - Anonymous type manager owning this template - - - Smallest location of the template, actually contains the smallest location - of all the anonymous type instances created using this template during EMIT - - - Key pf the anonymous type descriptor - - - - Smallest location of the template, actually contains the smallest location - of all the anonymous type instances created using this template during EMIT; - - NOTE: if this property is queried, smallest location must not be null. - - - - - In emit phase every time a created anonymous type is referenced we try to store the lowest - location of the template. It will be used for ordering templates and assigning emitted type names. - - - - - Returns a synthesized debugger display attribute or null if one - could not be synthesized. - - - - - Represents an anonymous type template's type parameter. - - - - - Represents a compiler generated synthesized method symbol - representing string switch hash function - - - - - Compute the hashcode of a sub string using FNV-1a - See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function - - - This method should be kept consistent with MethodBodySynthesizer.ConstructStringSwitchHashFunctionBody - The control flow in this method mimics lowered "for" loop. It is exactly what we want to emit - to ensure that JIT can do range check hoisting. - - - - - When C# interface implementation differs from CLR interface implementation, - we insert a synthesized explicit interface implementation that delegates - to the method that C# considers an implicit implementation. - There are two key scenarios for this: - 1) A single source method is implicitly implementing one or more interface - methods from metadata and the interface methods have different custom - modifiers. In this case, we explicitly implement the interface methods - and have (all) implementations delegate to the source method. - 2) A non-virtual, non-source method in a base type is implicitly implementing - an interface method. Since we can't change the "virtualness" of the - non-source method, we introduce an explicit implementation that delegates - to it instead. - - - - - Given a SynthesizedExplicitImplementationMethod (effectively a tuple (interface method, implementing method, implementing type)), - construct a BoundBlock body. Consider the tuple (Interface.Foo, Base.Foo, Derived). The generated method will look like: - - R Interface.Foo<T1, T2, ...>(A1 a1, A2 a2, ...) - { - //don't return the output if the return type is void - return this.Foo<T1, T2, ...>(a1, a2, ...); - } - - - - - If a sealed override property defines fewer accessors than the - original virtual property, it is necessary to synthesize a sealed - accessor so that the accessor will not be overridable from metadata. - - - - - Given a SynthesizedSealedPropertyAccessor (an accessor with a reference to the accessor it overrides), - construct a BoundBlock body. - - - - - a bound node rewriter that rewrites types properly (which in some cases the automatically-generated - base class does not). This is used in the lambda rewriter, the iterator rewriter, and the async rewriter. - - - - - A wrapper method that is created for non-virtually calling a base-class - virtual method from other classes (like those created for lambdas...). - - - - - Given a SynthesizedSealedPropertyAccessor (an accessor with a reference to the accessor it overrides), - construct a BoundBlock body. - - - - A not-null collection of synthesized methods generated for the current source type. - - - - Returns true if the specified local/parameter needs to be hoisted to a field. - Variable may be hoisted even if it is not captured, to improve debugging experience. - - - - - Contains methods related to synthesizing bound nodes in lowered form - that does not need any processing before passing to codegen - - - - - Construct a body for a method containing a call to a single other method with the same signature (modulo name). - - Bound node factory. - Method to invoke in constructed body. - True for "base.", false for "this.". - Body for implementedMethod. - - - - An ArrayTypeSymbol represents an array type, such as int[] or object[,]. - - - - - Gets the list of custom modifiers associated with the array. - Returns an empty list if there are no custom modifiers. - - - - - Gets the number of dimensions of the array. A regular single-dimensional array - has rank 1, a two-dimensional array has rank 2, etc. - - - - - Is this zero-based one-dimensional array, i.e. SZArray in CLR terms. - - - - - Specified sizes for dimensions, by position. The length can be less than , - meaning that some trailing dimensions don't have the size specified. - The most common case is none of the dimensions have the size specified - an empty array is returned. - - - - - Specified lower bounds for dimensions, by position. The length can be less than , - meaning that some trailing dimensions don't have the lower bound specified. - The most common case is all dimensions are zero bound - a null array is returned in this case. - - - - - Note, equality should be checked separately!!! - - - - - Normally C# arrays have default sizes and lower bounds - sizes are not specified and all dimensions are zero bound. - This property should return false for any deviations. - - - - - Gets the type of the elements stored in the array. - - - - - Represents SZARRAY - zero-based one-dimensional array - - - - - Represents MDARRAY - multi-dimensional array (possibly of rank 1) - - - - - Represents an attribute applied to a Symbol. - - - - - Gets the attribute class being applied. - - - - - Gets the constructor used in this application of the attribute. - - - - - Gets a reference to the source for this application of the attribute. Returns null for applications of attributes on metadata Symbols. - - - - - Gets the list of constructor arguments specified by this application of the attribute. This list contains both positional arguments - and named arguments that are formal parameters to the constructor. - - - - - Gets the list of named field or property value arguments specified by this application of the attribute. - - - - - Compares the namespace and type name with the attribute's namespace and type name. - Returns true if they are the same. - - - - - Checks if an applied attribute with the given attributeType matches the namespace name and type name of the given early attribute's description - and the attribute description has a signature with parameter count equal to the given attribute syntax's argument list count. - NOTE: We don't allow early decoded attributes to have optional parameters. - - - - - Returns the that represents the current AttributeData. - - A that represents the current AttributeData. - - - - Gets the attribute class being applied as an - - - - - Gets the constructor used in this application of the attribute as an . - - - - - Gets a reference to the source for this application of the attribute. Returns null for applications of attributes on metadata Symbols. - - - - - Decodes PermissionSetAttribute applied in source to determine if it needs any fixup during codegen. - - - PermissionSetAttribute needs fixup when it contains an assignment to the 'File' property as a single named attribute argument. - Fixup performed is ported from SecurityAttributes::FixUpPermissionSetAttribute. - It involves following steps: - 1) Verifying that the specified file name resolves to a valid path. - 2) Reading the contents of the file into a byte array. - 3) Convert each byte in the file content into two bytes containing hexadecimal characters. - 4) Replacing the 'File = fileName' named argument with 'Hex = hexFileContent' argument, where hexFileContent is the converted output from step 3) above. - - Step 1) is performed in this method, i.e. during binding. - Remaining steps are performed during serialization as we want to avoid retaining the entire file contents throughout the binding/codegen pass. - See for remaining fixup steps. - - String containing the resolved file path if PermissionSetAttribute needs fixup during codegen, null otherwise. - - - - This method determines if an applied attribute must be emitted. - Some attributes appear in symbol model to reflect the source code, - but should not be emitted. - - - - - Represents a custom modifier (modopt/modreq). - - - - - A type used as a tag that indicates which type of modification applies. - - - - - Represents an event. - - - - - The original definition of this symbol. If this symbol is constructed from another - symbol by type substitution then OriginalDefinition gets the original symbol as it was defined in - source or metadata. - - - - - The type of the event. - - - - - The 'add' accessor of the event. Null only in error scenarios. - - - - - The 'remove' accessor of the event. Null only in error scenarios. - - - - - True if this is a Windows Runtime-style event. - - A normal C# event, "event D E", has accessors - void add_E(D d) - void remove_E(D d) - - A Windows Runtime event, "event D E", has accessors - EventRegistrationToken add_E(D d) - void remove_E(EventRegistrationToken t) - - - - - True if this symbol has a special name (metadata flag SpecialName is set). - - - - - Gets the attributes on event's associated field, if any. - Returns an empty if - there are no attributes. - - - This publicly exposes the attributes of the internal backing field. - - - - - Returns the overridden event, or null. - - - - - Source: Was the member name qualified with a type name? - Metadata: Is the member an explicit implementation? - - - Will not always agree with ExplicitInterfaceImplementations.Any() - (e.g. if binding of the type part of the name fails). - - - - - Returns interface events explicitly implemented by this event. - - - Events imported from metadata can explicitly implement more than one event. - - - - - Gets the kind of this symbol. - - - - - Implements visitor pattern. - - - - - Represents a field in a class, struct or enum - - - - - The original definition of this symbol. If this symbol is constructed from another - symbol by type substitution then OriginalDefinition gets the original symbol as it was defined in - source or metadata. - - - - - Gets the type of this field. - - - - - Gets the list of custom modifiers, if any, associated with the field. - - - - - If this field serves as a backing variable for an automatically generated - property or a field-like event, returns that - property/event. Otherwise returns null. - Note, the set of possible associated symbols might be expanded in the future to - reflect changes in the languages. - - - - - Returns true if this field was declared as "readonly". - - - - - Returns true if this field was declared as "volatile". - - - - - Returns true if this field was declared as "fixed". - Note that for a fixed-size buffer declaration, this.Type will be a pointer type, of which - the pointed-to type will be the declared element type of the fixed-size buffer. - - - - - If IsFixed is true, the value between brackets in the fixed-size-buffer declaration. - If IsFixed is false FixedSize is 0. - Note that for fixed-a size buffer declaration, this.Type will be a pointer type, of which - the pointed-to type will be the declared element type of the fixed-size buffer. - - - - - If this.IsFixed is true, returns the underlying implementation type for the - fixed-size buffer when emitted. Otherwise returns null. - - - - - Returns true when field is a backing field for a captured frame pointer (typically "this"). - - - - - Returns true if this field was declared as "const" (i.e. is a constant declaration). - Also returns true for an enum member. - - - - - Returns false if the field wasn't declared as "const", or constant value was omitted or erroneous. - True otherwise. - - - - - If IsConst returns true, then returns the constant value of the field or enum member. If IsConst returns - false, then returns null. - - - - - Gets the kind of this symbol. - - - - - Returns false because field can't be abstract. - - - - - Returns false because field can't be defined externally. - - - - - Returns false because field can't be overridden. - - - - - Returns false because field can't be sealed. - - - - - Returns false because field can't be virtual. - - - - - True if this symbol has a special name (metadata flag SpecialName is set). - - - - - True if this symbol has a runtime-special name (metadata flag RuntimeSpecialName is set). - - - - - True if this field is not serialized (metadata flag NotSerialized is set). - - - - - True if this field has a pointer type. - - - By default we defer to this.Type.IsPointerType() - However in some cases this may cause circular dependency via binding a - pointer that points to the type that contains the current field. - Fortunately in those cases we do not need to force binding of the field's type - and can just check the declaration syntax if the field type is not yet known. - - - - - Describes how the field is marshalled when passed to native code. - Null if no specific marshalling information is available for the field. - - PE symbols don't provide this information and always return null. - - - - Returns the marshalling type of this field, or 0 if marshalling information isn't available. - - - By default this information is extracted from if available. - Since the compiler does only need to know the marshalling type of symbols that aren't emitted - PE symbols just decode the type from metadata and don't provide full marshalling information. - - - - - Offset assigned to the field when the containing type is laid out by the VM. - Null if unspecified. - - - - - Return error code that has highest priority while calculating use site error for this symbol. - - - - - Represents a method or method-like symbol (including constructor, - destructor, operator, or property/event accessor). - - - - - This method indicates whether or not the runtime will regard the method - as newslot (as indicated by the presence of the "newslot" modifier in the - signature). - WARN WARN WARN: We won't have a final value for this until declaration - diagnostics have been computed for all s, so pass - ignoringInterfaceImplementationChanges: true if you need a value sooner - and aren't concerned about tweaks made to satisfy interface implementation - requirements. - NOTE: Not ignoring changes can only result in a value that is more true. - - - - - This method indicates whether or not the runtime will regard the method - as virtual (as indicated by the presence of the "virtual" modifier in the - signature). - WARN WARN WARN: We won't have a final value for this until declaration - diagnostics have been computed for all s, so pass - ignoringInterfaceImplementationChanges: true if you need a value sooner - and aren't concerned about tweaks made to satisfy interface implementation - requirements. - NOTE: Not ignoring changes can only result in a value that is more true. - - - - - The original definition of this symbol. If this symbol is constructed from another - symbol by type substitution then OriginalDefinition gets the original symbol as it was defined in - source or metadata. - - - - - Gets what kind of method this is. There are several different kinds of things in the - C# language that are represented as methods. This property allow distinguishing those things - without having to decode the name of the method. - - - - - Returns the arity of this method, or the number of type parameters it takes. - A non-generic method has zero arity. - - - - - Returns whether this method is generic; i.e., does it have any type parameters? - - - - - Returns true if this method is an extension method. - - - - - True if this symbol has a special name (metadata flag SpecialName is set). - - - - - Misc implementation metadata flags (ImplFlags in metadata). - - - - - True if the type has declarative security information (HasSecurity flags). - - - - - Platform invoke information, or null if the method isn't a P/Invoke. - - - - - Declaration security information associated with this type, or null if there is none. - - - - - Marshalling information for return value (FieldMarshal in metadata). - - - - - True if the method calls another method containing security code (metadata flag RequiresSecurityObject is set). - - - A method can me marked as RequiresSecurityObject by applying the DynamicSecurityMethodAttribute in source. - DynamicSecurityMethodAttribute is a pseudo custom attribute defined as an internal class in System.Security namespace. - This attribute is set on certain security methods defined within mscorlib. - - - - - Returns true if this method hides base methods by name. This cannot be specified directly - in the C# language, but can be true for methods defined in other languages imported from - metadata. The equivalent of the "hidebyname" flag in metadata. - - - - - Returns whether this method is using CLI VARARG calling convention. This is used for C-style variable - argument lists. This is used extremely rarely in C# code and is represented using the undocumented "__arglist" keyword. - - Note that methods with "params" on the last parameter are indicated with the "IsParams" property on ParameterSymbol, and - are not represented with this property. - - - - - Returns whether this built-in operator checks for integer overflow. - - - - - Returns true if this method has no return type; i.e., returns "void". - - - - - Source: Returns whether this method is async; i.e., does it have the async modifier? - Metadata: Returns false; methods from metadata cannot be async. - - - - - Gets the return type of the method - - - - - Returns the type arguments that have been substituted for the type parameters. - If nothing has been substituted for a given type parameter, - then the type parameter itself is consider the type argument. - - - - - Get the type parameters on this method. If the method has not generic, - returns an empty list. - - - - - Call and throw if it returns false. - - - - - True if this type supports retrieving the this parameter - and false otherwise. Note that a return value of true does not guarantee a non-null - (e.g. fails for static methods). - - - - - Optimization: in many cases, the parameter count (fast) is sufficient and we - don't need the actual parameter symbols (slow). - - - The default implementation is always correct, but may be unnecessarily slow. - - - - - Gets the parameters of this method. If this method has no parameters, returns - an empty list. - - - - - Returns the method symbol that this method was constructed from. The resulting - method symbol - has the same containing type (if any), but has type arguments that are the same - as the type parameters (although its containing type might not). - - - - - Source: Was the member name qualified with a type name? - Metadata: Is the member an explicit implementation? - - - Will not always agree with ExplicitInterfaceImplementations.Any() - (e.g. if binding of the type part of the name fails). - - - - - Returns interface methods explicitly implemented by this method. - - - Methods imported from metadata can explicitly implement more than one method, - that is why return type is ImmutableArray. - - - - - Returns the list of custom modifiers, if any, associated with the returned value. - - - - - Gets the attributes on method's return type. - Returns an empty array if there are no attributes. - - - - - If this method has MethodKind of MethodKind.PropertyGet or MethodKind.PropertySet, - returns the property that this method is the getter or setter for. - If this method has MethodKind of MethodKind.EventAdd or MethodKind.EventRemove, - returns the event that this method is the adder or remover for. - Note, the set of possible associated symbols might be expanded in the future to - reflect changes in the languages. - - - - - Returns the original virtual or abstract method which a given method symbol overrides, - ignoring any other overriding methods in base classes. - - The search must respect accessibility from this type. - - - - Returns the original virtual or abstract method which a given method symbol overrides, - ignoring any other overriding methods in base classes. - Also, if the given method symbol is generic then the resulting virtual or abstract method is constructed with the - same type arguments as the given method. - - - - - If this method overrides another method (because it both had the override modifier - and there correctly was a method to override), returns the overridden method. - Note that if an overriding method D.M overrides C.M, which in turn overrides - virtual method A.M, the "overridden method" of D.M is C.M, not the original virtual - method A.M. Note also that constructed generic methods are not considered to - override anything. - - - - - Returns true if calls to this method are omitted in this syntax tree. Calls are omitted - when the called method is a partial method with no implementation part, or when the - called method is a conditional method whose condition is not true in the source file - corresponding to the given syntax tree. - - - - - Calls are conditionally omitted if both the following requirements are true: - (a) IsConditional == true, i.e. it has at least one applied/inherited conditional attribute AND - (b) None of conditional symbols corresponding to these conditional attributes are defined in the given syntaxTree. - - - Forces binding and decoding of attributes. - - - - - Returns a sequence of preprocessor symbols specified in applied on this symbol, or null if there are none. - - - - - Returns a flag indicating whether this symbol has at least one applied/inherited conditional attribute. - - - Forces binding and decoding of attributes. - - - - - Some method kinds do not participate in overriding/hiding (e.g. constructors). - - - - - Returns value 'Method' of the - - - - - Returns true if this symbol represents a constructor of a script class. - - - - - Returns if the method is implicit constructor (normal and static) - - - - - Returns if the method is implicit instance constructor - - - - - Returns true if this symbol represents a constructor of an interactive submission class. - - - - - Determines whether this method is a candidate for a default assembly entry point - (i.e. it is a static method called "Main"). - - - - - Checks if the method has an entry point compatible signature, i.e. - - the return type is either void or int - - has either no parameter or a single parameter of type string[] - - - - - If this is an extension method that can be applied to a receiver of the given type, - returns a reduced extension method symbol thus formed. Otherwise, returns null. - - - - - If this is an extension method, returns a reduced extension method - symbol representing the method. Otherwise, returns null. - - - - - If this method is a reduced extension method, returns the extension method that - should be used at call site during ILGen. Otherwise, returns null. - - - - - If this is a partial method declaration without a body, and the method also - has a part that implements it with a body, returns that implementing - definition. Otherwise null. - - - - - If this is a partial method with a body, returns the corresponding - definition part (without a body). Otherwise null. - - - - - If this method is a reduced extension method, gets the extension method definition that - this method was reduced from. Otherwise, returns null. - - - - - If this method can be applied to an object, returns the type of object it is applied to. - - - - - If this method is a reduced extension method, returns a type inferred during reduction process for the type parameter. - - Type parameter of the corresponding method. - Inferred type or Nothing if nothing was inferred. - If this is not a reduced extension method. - If is null. - If doesn't belong to the corresponding method. - - - - Apply type substitution to a generic method to create an method symbol with the given type parameters supplied. - - - - - - - Apply type substitution to a generic method to create an method symbol with the given type parameters supplied. - - - - - - - As a performance optimization, cache parameter types and refkinds - overload resolution uses them a lot. - - - - - Null if no parameter is ref/out. Otherwise the RefKind for each parameter. - - - - - Returns the map from type parameters to type arguments. - If this is not a generic method instantiation, returns null. - The map targets the original definition of the method. - - - - - Return error code that has highest priority while calculating use site error for this symbol. - - - - - If the method was written as an iterator method (i.e. with yield statements in its body) returns the - element type of the iterator. Otherwise returns null. - - - - - Generates bound block representing method's body for methods in lowered form and adds it to - a collection of method bodies of the current module. This method is supposed to only be - called for method symbols which return SynthesizesLoweredBoundBody == true. - - - - - Returns true for synthesized symbols which generate synthesized body in lowered form - - - - - Return true iff the method contains user code. - - - - - Calculates a syntax offset for a local (user-defined or long-lived synthesized) declared at . - Must be implemented by all methods that may contain user code. - - - Syntax offset is a unique identifier for the local within the emitted method body. - It's based on position of the local declarator. In single-part method bodies it's simply the distance - from the start of the method body syntax span. If a method body has multiple parts (such as a constructor - comprising of code for member initializers and constructor initializer calls) the offset is calculated - as if all source these parts were concatenated together and prepended to the constructor body. - The resulting syntax offset is then negative for locals defined outside of the constructor body. - - - - - Build and add synthesized return type attributes for this method symbol. - - - - - Represents a type other than an array, a pointer, a type parameter, and dynamic. - - - - - Gets the set of interfaces to emit on this type. This set can be different from the set returned by Interfaces property. - - - - - Add the type to the builder and then recurse on its interfaces. - - - Pre-order depth-first search. - - - - - To represent a gap in interface's v-table null value should be returned in the appropriate position, - unless the gap has a symbol (happens if it is declared in source, for example). - - - - - Returns the arity of this type, or the number of type parameters it takes. - A non-generic type has zero arity. - - - - - Returns the type parameters that this type has. If this is a non-generic type, - returns an empty ImmutableArray. - - - - - Returns the type arguments that have been substituted for the type parameters. - If nothing has been substituted for a give type parameters, - then the type parameter itself is consider the type argument. - - - - - Returns custom modifiers for the type arguments that have been substituted for the type parameters. - - - - - Returns the type symbol that this type was constructed from. This type symbol - has the same containing type (if any), but has type arguments that are the same - as the type parameters (although its containing type might not). - - - - - For enum types, gets the underlying type. Returns null on all other - kinds of types. - - - - - Returns true for a struct type containing a cycle. - This property is intended for flow analysis only - since it is only implemented for source types. - - - - - Is this a NoPia local type explicitly declared in source, i.e. - top level type with a TypeIdentifier attribute on it? - - - - - Returns true and a string from the first GuidAttribute on the type, - the string might be null or an invalid guid representation. False, - if there is no GuidAttribute with string argument. - - - - - For delegate types, gets the delegate's invoke method. Returns null on - all other kinds of types. Note that it is possible to have an ill-formed - delegate type imported from metadata which does not have an Invoke method. - Such a type will be classified as a delegate but its DelegateInvokeMethod - would be null. - - - - - Get the operators for this type by their metadata name - - - - - Get the instance constructors for this type. - - - - - Get the static constructors for this type. - - - - - Get the instance and static constructors for this type. - - - - - Get the indexers for this type. - - - Won't include indexers that are explicit interface implementations. - - - - - Returns true if this type might contain extension methods. If this property - returns false, there are no extension methods in this type. - - - This property allows the search for extension methods to be narrowed quickly. - - - - - Returns true if this type is known to be a reference type. It is never the case that - IsReferenceType and IsValueType both return true. However, for an unconstrained type - parameter, IsReferenceType and IsValueType will both return false. - - - - - Returns true if this type is known to be a value type. It is never the case that - IsReferenceType and IsValueType both return true. However, for an unconstrained type - parameter, IsReferenceType and IsValueType will both return false. - - - - - Gets the associated attribute usage info for an attribute type. - - - - - Returns true if the type is a Script class. - It might be an interactive submission class or a Script class in a csx file. - - - - - Returns true if the type is the implicit class that holds onto invalid global members (like methods or - statements in a non script file). - - - - - Gets the name of this symbol. Symbols without a name return the empty string; null is - never returned. - - - - - Return the name including the metadata arity suffix. - - - - - Should the name returned by Name property be mangled with [`arity] suffix in order to get metadata name. - Must return False for a type with Arity == 0. - - - - - Collection of names of members declared within this type. - - - - - Get all the members of this symbol. - - An ImmutableArray containing all the members of this symbol. If this symbol has no members, - returns an empty ImmutableArray. Never returns null. - - - - Get all the members of this symbol that have a particular name. - - An ImmutableArray containing all the members of this symbol with the given name. If there are - no members with this name, returns an empty ImmutableArray. Never returns null. - - - - Get all the members of this symbol that are types. - - An ImmutableArray containing all the types that are members of this symbol. If this symbol has no type members, - returns an empty ImmutableArray. Never returns null. - - - - Get all the members of this symbol that are types that have a particular name, of any arity. - - An ImmutableArray containing all the types that are members of this symbol with the given name. - If this symbol has no type members with this name, - returns an empty ImmutableArray. Never returns null. - - - - Get all the members of this symbol that are types that have a particular name and arity - - An ImmutableArray containing all the types that are members of this symbol with the given name and arity. - If this symbol has no type members with this name and arity, - returns an empty ImmutableArray. Never returns null. - - - - Get this accessibility that was declared on this symbol. For symbols that do not have - accessibility declared on them, returns NotApplicable. - - - - - Used to implement visitor pattern. - - - - - During early attribute decoding, we consider a safe subset of all members that will not - cause cyclic dependencies. Get all such members for this symbol. - - - Never returns null (empty instead). - Expected implementations: for source, return type and field members; for metadata, return all members. - - - - - During early attribute decoding, we consider a safe subset of all members that will not - cause cyclic dependencies. Get all such members for this symbol that have a particular name. - - - Never returns null (empty instead). - Expected implementations: for source, return type and field members; for metadata, return all members. - - - - - Gets the kind of this symbol. - - - - - Compares this type to another type. - - - - - Helper for more complicated cases of Equals like when we have generic instantiations or types nested within them. - - - - - Returns a constructed type given its type arguments. - - The immediate type arguments to be replaced for type - parameters in the type. - - - - Returns a constructed type given its type arguments. - - The immediate type arguments to be replaced for type - parameters in the type. - - - - Returns a constructed type given its type arguments. - - - - - - Returns an unbound generic type of this named type. - - - - - True if this type or some containing type has type parameters. - - - - - True if this is a reference to an unbound generic type. These occur only - within a typeof expression. A generic type is considered unbound - if all of the type argument lists in its fully qualified name are empty. - Note that the type arguments of an unbound generic type will be returned as error - types because they do not really have type arguments. An unbound generic type - yields null for its BaseType and an empty result for its Interfaces. - - - - - The original definition of this symbol. If this symbol is constructed from another - symbol by type substitution then OriginalDefinition gets the original symbol as it was defined in - source or metadata. - - - - - Returns the map from type parameters to type arguments. - If this is not a generic type instantiation, returns null. - The map targets the original definition of the type. - - - - - True if this symbol has a special name (metadata flag SpecialName is set). - - - - - Returns a flag indicating whether this symbol is ComImport. - - - A type can me marked as a ComImport type in source by applying the - - - - - True if the type is a Windows runtime type. - - - A type can me marked as a Windows runtime type in source by applying the WindowsRuntimeImportAttribute. - WindowsRuntimeImportAttribute is a pseudo custom attribute defined as an internal class in System.Runtime.InteropServices.WindowsRuntime namespace. - This is needed to mark Windows runtime types which are redefined in mscorlib.dll and System.Runtime.WindowsRuntime.dll. - These two assemblies are special as they implement the CLR's support for WinRT. - - - - - True if the type should have its WinRT interfaces projected onto .NET types and - have missing .NET interface members added to the type. - - - - - Returns a flag indicating whether this symbol has at least one applied/inherited conditional attribute. - - - Forces binding and decoding of attributes. - - - - - True if the type is serializable (has Serializable metadata flag). - - - - - Type layout information (ClassLayout metadata and layout kind flags). - - - - - The default charset used for type marshalling. - Can be changed via applied on the containing module. - - - - - Marshalling charset of string data fields within the type (string formatting flags in metadata). - - - - - True if the type has declarative security information (HasSecurity flags). - - - - - Declaration security information associated with this type, or null if there is none. - - - - - Returns a sequence of preprocessor symbols specified in applied on this symbol, or null if there are none. - - - - - If was applied to the type and the attribute argument is a valid named type argument, i.e. accessible class type, then it returns the type symbol for the argument. - Otherwise, returns null. - - - - This property invokes force completion of attributes. If you are accessing this property - from the binder, make sure that we are not binding within an Attribute context. - This could lead to a possible cycle in attribute binding. - We can avoid this cycle by first checking if we are within the context of an Attribute argument, - i.e. if(!binder.InAttributeArgument) { ... namedType.ComImportCoClass ... } - - - CONSIDER: We can remove the above restriction and possibility of cycle if we do an - early binding of some well known attributes. - - - - - - If class represents fixed buffer, this property returns the FixedElementField - - - - - Requires less computation than == . - - - Metadata types need to compute their base types in order to know their TypeKinds, and that can lead - to cycles if base types are already being computed. - - True if this is an interface type. - - - - Represents a namespace. - - - - - Get all the members of this symbol that are namespaces. - - An IEnumerable containing all the namespaces that are members of this symbol. - If this symbol has no namespace members, returns an empty IEnumerable. Never returns - null. - - - - Returns whether this namespace is the unnamed, global namespace that is - at the root of all namespaces. - - - - - The kind of namespace: Module, Assembly or Compilation. - Module namespaces contain only members from the containing module that share the same namespace name. - Assembly namespaces contain members for all modules in the containing assembly that share the same namespace name. - Compilation namespaces contain all members, from source or referenced metadata (assemblies and modules) that share the same namespace name. - - - - - The containing compilation for compilation namespaces. - - - - - If a namespace has Assembly or Compilation extent, it may be composed of multiple - namespaces that are merged together. If so, ConstituentNamespaces returns - all the namespaces that were merged. If this namespace was not merged, returns - an array containing only this namespace. - - - - - Containing assembly. - - - - - Gets the kind of this symbol. - - - - - Implements visitor pattern. - - - - - Get this accessibility that was declared on this symbol. For symbols that do not have - accessibility declared on them, returns NotApplicable. - - - - - Returns true if this symbol is "static"; i.e., declared with the "static" modifier or - implicitly static. - - - - - Returns true if this symbol was declared as requiring an override; i.e., declared with - the "abstract" modifier. Also returns true on a type declared as "abstract", all - interface types, and members of interface types. - - - - - Returns true if this symbol was declared to override a base class member and was also - sealed from further overriding; i.e., declared with the "sealed" modifier. Also set for - types that do not allow a derived class (declared with "sealed" or "static" or "struct" - or "enum" or "delegate"). - - - - - Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. - This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. - - - - - Returns an implicit type symbol for this namespace or null if there is none. This type - wraps misplaced global code. - - - - - Lookup a nested namespace. - - - Sequence of names for nested child namespaces. - - - Symbol for the most nested namespace, if found. Nothing - if namespace or any part of it can not be found. - - - - - Add all extension methods in this namespace to the given list. If name or arity - or both are provided, only those extension methods that match are included. - - Methods list - Optional method name - Method arity - Lookup options - - - - Represents a parameter of a method or indexer. - - - - - Gets constant value to be stored in metadata Constant table. - - - - - The original definition of this symbol. If this symbol is constructed from another - symbol by type substitution then OriginalDefinition gets the original symbol as it was defined in - source or metadata. - - - - - Gets the type of the parameter. - - - - - Determines if the parameter ref, out or neither. - - - - - The list of custom modifiers, if any, associated with the parameter. - - - - - Describes how the parameter is marshalled when passed to native code. - Null if no specific marshalling information is available for the parameter. - - PE symbols don't provide this information and always return null. - - - - Returns the marshalling type of this parameter, or 0 if marshalling information isn't available. - - - By default this information is extracted from if available. - Since the compiler does only need to know the marshalling type of symbols that aren't emitted - PE symbols just decode the type from metadata and don't provide full marshalling information. - - - - - Gets the ordinal position of the parameter. The first parameter has ordinal zero. - The "'this' parameter has ordinal -1. - - - - - Returns true if the parameter was declared as a parameter array. - - - - - Returns true if the parameter is semantically optional. - - - True iff the parameter has a default argument syntax, - or the parameter is not a params-array and Optional metadata flag is set. - - - - - True if Optional flag is set in metadata. - - - - - True if In flag is set in metadata. - - - - - True if Out flag is set in metadata. - - - - - Returns true if the parameter explicitly specifies a default value to be passed - when no value is provided as an argument to a call. - - - True if the parameter has a default argument syntax, - or the parameter is from source and is applied, - or the parameter is from metadata and HasDefault metadata flag is set. See - to determine if the parameter will be considered optional by - overload resolution. - - The default value can be obtained with property. - - - - - Returns the default value of the parameter. If - returns false then DefaultValue throws an InvalidOperationException. - - - If the parameter type is a struct and the default value of the parameter - is the default value of the struct type or of type parameter type which is - not known to be a referenced type, then this property will return null. - - The parameter has no default value. - - - - Returns the default value constant of the parameter, - or null if the parameter doesn't have a default value or - the parameter type is a struct and the default value of the parameter - is the default value of the struct type or of type parameter type which is - not known to be a referenced type. - - - This is used for emitting. It does not reflect the language semantics - (i.e. even non-optional parameters can have default values). - - - - - Gets the kind of this symbol. - - - - - Implements visitor pattern. - - - - - Get this accessibility that was declared on this symbol. For symbols that do not have - accessibility declared on them, returns NotApplicable. - - - - - Returns true if this symbol was declared as requiring an override; i.e., declared with - the "abstract" modifier. Also returns true on a type declared as "abstract", all - interface types, and members of interface types. - - - - - Returns true if this symbol was declared to override a base class member and was also - sealed from further overriding; i.e., declared with the "sealed" modifier. Also set for - types that do not allow a derived class (declared with "sealed" or "static" or "struct" - or "enum" or "delegate"). - - - - - Returns true if this symbol is "virtual", has an implementation, and does not override a - base class member; i.e., declared with the "virtual" modifier. Does not return true for - members declared as abstract or override. - - - - - Returns true if this symbol was declared to override a base class member; i.e., declared - with the "override" modifier. Still returns true if member was declared to override - something, but (erroneously) no member to override exists. - - - - - Returns true if this symbol is "static"; i.e., declared with the "static" modifier or - implicitly static. - - - - - Returns true if this symbol has external implementation; i.e., declared with the - "extern" modifier. - - - - - Returns true if the parameter is the hidden 'this' parameter. - - - - - Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. - This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. - - - - - The CLI spec says that custom modifiers must precede the ByRef type code in the encoding of a parameter. - Unfortunately, the managed C++ compiler emits them in the reverse order. In order to avoid breaking - interop scenarios, we need to support such signatures. - Should be 0 for non-ref parameters. - - - - - Represents a pointer type such as "int *". Pointer types - are used only in unsafe code. - - - - - Create a new PointerTypeSymbol. - - The type being pointed at. - - - - Create a new PointerTypeSymbol. - - The type being pointed at. - Custom modifiers for the element type of this array type. - - - - The list of custom modifiers, if any, associated with the pointer type. - - - - - Gets the type of the storage location that an instance of the pointer type points to. - - - - - Represents a property or indexer. - - - - - As a performance optimization, cache parameter types and refkinds - overload resolution uses them a lot. - - - - - The original definition of this symbol. If this symbol is constructed from another - symbol by type substitution then OriginalDefinition gets the original symbol as it was defined in - source or metadata. - - - - - The type of the property. - - - - - The list of custom modifiers, if any, associated with the type of the property. - - - - - The parameters of this property. If this property has no parameters, returns - an empty list. Parameters are only present on indexers, or on some properties - imported from a COM interface. - - - - - Optimization: in many cases, the parameter count (fast) is sufficient and we - don't need the actual parameter symbols (slow). - - - - - Returns whether the property is really an indexer. - - - In source, we regard a property as an indexer if it is declared with an IndexerDeclarationSyntax. - From metadata, we regard a property if it has parameters and is a default member of the containing - type. - CAVEAT: To ensure that this property (and indexer Names) roundtrip, source properties are not - indexers if they are explicit interface implementations (since they will not be marked as default - members in metadata). - - - - - True if this an indexed property; that is, a property with parameters - within a [ComImport] type. - - - - - True if this is a read-only property; that is, a property with no set accessor. - - - - - True if this is a write-only property; that is, a property with no get accessor. - - - - - True if this symbol has a special name (metadata flag SpecialName is set). - - - - - The 'get' accessor of the property, or null if the property is write-only. - - - - - The 'set' accessor of the property, or null if the property is read-only. - - - - - Returns the overridden property, or null. - - - - - Source: Was the member name qualified with a type name? - Metadata: Is the member an explicit implementation? - - - Will not always agree with ExplicitInterfaceImplementations.Any() - (e.g. if binding of the type part of the name fails). - - - - - Returns interface properties explicitly implemented by this property. - - - Properties imported from metadata can explicitly implement more than one property. - - - - - Gets the kind of this symbol. - - - - - Implements visitor pattern. - - - - - Return error code that has highest priority while calculating use site error for this symbol. - - - - - Represents a type parameter in a generic type or generic method. - - - - - The original definition of this symbol. If this symbol is constructed from another - symbol by type substitution then OriginalDefinition gets the original symbol as it was defined in - source or metadata. - - - - - If this is a type parameter of a reduced extension method, gets the type parameter definition that - this type parameter was reduced from. Otherwise, returns Nothing. - - - - - The ordinal position of the type parameter in the parameter list which declares - it. The first type parameter has ordinal zero. - - - - - The types that were directly specified as constraints on the type parameter. - Duplicates and cycles are removed, although the collection may include - redundant constraints where one constraint is a base type of another. - - - - - True if the parameterless constructor constraint was specified for the type parameter. - - - - - The type parameter kind of this type parameter. - - - - - The method that declared this type parameter, or null. - - - - - The type that declared this type parameter, or null. - - - - - The effective base class of the type parameter (spec 10.1.5). If the deduced - base type is a reference type, the effective base type will be the same as - the deduced base type. Otherwise if the deduced base type is a value type, - the effective base type will be the most derived reference type from which - deduced base type is derived. - - - - - The effective interface set (spec 10.1.5). - - - - - The most encompassed type (spec 6.4.2) from the constraints. - - - - - The effective interface set and any base interfaces of those - interfaces. This is AllInterfaces excluding interfaces that are - only implemented by the effective base type. - - - - - Called by , , , and . - to allow derived classes to ensure constraints within the containing - type or method are resolved in a consistent order, regardless of the - order the callers query individual type parameters. - - - - - Helper method to force type parameter constraints to be resolved. - - - - - Returns a bag of applied custom attributes and data decoded from well-known attributes. Returns null if there are no attributes applied on the symbol. - - - Forces binding and decoding of attributes. - - - - - State machine interface property implementation. - - - - - A base method symbol used as a base class for lambda method symbol and base method wrapper symbol. - - - - - Abstract base class for mutable and immutable type maps. - - - - - Substitute for a type declaration. May use alpha renaming if the container is substituted. - - - - - SubstType, but for NamedTypeSymbols only. This is used for concrete types, so no alpha substitution appears in the result. - - - - - Perform the substitution on the given type. Each occurrence of the type parameter is - replaced with its corresponding type argument from the map. - - The type to be rewritten. - The type with type parameters replaced with the type arguments. - - - - Substitute types, and return the results without duplicates, preserving the original order. - - - - - Like SubstTypes, but for NamedTypeSymbols. - - - - - Symbol representing a using alias appearing in a compilation unit or within a namespace - declaration. Generally speaking, these symbols do not appear in the set of symbols reachable - from the unnamed namespace declaration. In other words, when a using alias is used in a - program, it acts as a transparent alias, and the symbol to which it is an alias is used in - the symbol table. For example, in the source code -
-            namespace NS
-            {
-                using o = System.Object;
-                partial class C : o {}
-                partial class C : object {}
-                partial class C : System.Object {}
-            }
-            
- all three declarations for class C are equivalent and result in the same symbol table object - for C. However, these using alias symbols do appear in the results of certain SemanticModel - APIs. Specifically, for the base clause of the first of C's class declarations, the - following APIs may produce a result that contains an AliasSymbol: -
-                SemanticInfo SemanticModel.GetSemanticInfo(ExpressionSyntax expression);
-                SemanticInfo SemanticModel.BindExpression(CSharpSyntaxNode location, ExpressionSyntax expression);
-                SemanticInfo SemanticModel.BindType(CSharpSyntaxNode location, ExpressionSyntax type);
-                SemanticInfo SemanticModel.BindNamespaceOrType(CSharpSyntaxNode location, ExpressionSyntax type);
-            
- Also, the following are affected if container==null (and, for the latter, when arity==null - or arity==0): -
-                IList<string> SemanticModel.LookupNames(CSharpSyntaxNode location, NamespaceOrTypeSymbol container = null, LookupOptions options = LookupOptions.Default, List<string> result = null);
-                IList<Symbol> SemanticModel.LookupSymbols(CSharpSyntaxNode location, NamespaceOrTypeSymbol container = null, string name = null, int? arity = null, LookupOptions options = LookupOptions.Default, List<Symbol> results = null);
-            
-
-
- - - Gets the for the - namespace or type referenced by the alias. - - - - - Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. - This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. - - - - - Using aliases in C# are always contained within a namespace declaration, or at the top - level within a compilation unit, within the implicit unnamed namespace declaration. We - return that as the "containing" symbol, even though the alias isn't a member of the - namespace as such. - - - - - Describes anonymous type in terms of fields - - - - Anonymous type location - - - Anonymous type fields - - - - Anonymous type descriptor Key - - The key is to be used to separate anonymous type templates in an anonymous type symbol cache. - The type descriptors with the same keys are supposed to map to 'the same' anonymous type - template in terms of the same generic type being used for their implementation. - - - - - Compares two anonymous type descriptors, takes into account fields names and types, not locations. - - - - - Compares two anonymous type descriptors, takes into account fields names and types, not locations. - - - - - Creates a new anonymous type descriptor based on 'this' one, - but having field types passed as an argument. - - - - - Describes anonymous type field in terms of its name, type and other attributes - - - - Anonymous type field name, not nothing and not empty - - - Anonymous type field location - - - Anonymous type field type - - - - Represents a .NET assembly, consisting of one or more modules. - - - - - The system assembly, which provides primitive types like Object, String, etc., e.g. mscorlib.dll. - The value is provided by ReferenceManager and must not be modified. For SourceAssemblySymbol, non-missing - coreLibrary must match one of the referenced assemblies returned by GetReferencedAssemblySymbols() method of - the main module. If there is no existing assembly that can be used as a source for the primitive types, - the value is a Compilation.MissingCorLibrary. - - - - - The system assembly, which provides primitive types like Object, String, etc., e.g. mscorlib.dll. - The value is MissingAssemblySymbol if none of the referenced assemblies can be used as a source for the - primitive types and the owning assembly cannot be used as the source too. Otherwise, it is one of - the referenced assemblies returned by GetReferencedAssemblySymbols() method or the owning assembly. - - - - - A helper method for ReferenceManager to set the system assembly, which provides primitive - types like Object, String, etc., e.g. mscorlib.dll. - - - - - Simple name the assembly. - - - This is equivalent to ., but may be - much faster to retrieve for source code assemblies, since it does not require binding - the assembly-level attributes that contain the version number and other assembly - information. - - - - - Gets the identity of this assembly. - - - - - Target architecture of the machine. - - - - - Indicates that this PE file makes Win32 calls. See CorPEKind.pe32BitRequired for more information (http://msdn.microsoft.com/en-us/library/ms230275.aspx). - - - - - Gets the merged root namespace that contains all namespaces and types defined in the modules - of this assembly. If there is just one module in this assembly, this property just returns the - GlobalNamespace of that module. - - - - - Given a namespace symbol, returns the corresponding assembly specific namespace symbol - - - - - Gets a read-only list of all the modules in this assembly. (There must be at least one.) The first one is the main module - that holds the assembly manifest. - - - - - Does this symbol represent a missing assembly. - - - - - Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. - This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. - - - - - True if the assembly contains interactive code. - - - - - Lookup a top level type referenced from metadata, names should be - compared case-sensitively. - - - Full type name with generic name mangling. - - - Take forwarded types into account. - - - - - - Lookup a top level type referenced from metadata, names should be - compared case-sensitively. Detect cycles during lookup. - - - Full type name, possibly with generic name mangling. - - - List of assemblies lookup has already visited (since type forwarding can introduce cycles). - - - Take forwarded types into account. - - - - - Returns the type symbol for a forwarded type based its canonical CLR metadata name. - The name should refer to a non-nested type. If type with this name is not forwarded, - null is returned. - - - - - Look up the given metadata type, if it is forwarded. - - - - - Look up the given metadata type, if it is forwarded. - - - - - Lookup declaration for predefined CorLib type in this Assembly. - - The symbol for the pre-defined type or an error type if the type is not defined in the core library. - - - - Register declaration of predefined CorLib type in this Assembly. - - - - - - Continue looking for declaration of predefined CorLib type in this Assembly - while symbols for new type declarations are constructed. - - - - - Return an array of assemblies involved in canonical type resolution of - NoPia local types defined within this assembly. In other words, all - references used by previous compilation referencing this assembly. - - - - - - Return an array of assemblies referenced by this assembly, which are linked (/l-ed) by - each compilation that is using this AssemblySymbol as a reference. - If this AssemblySymbol is linked too, it will be in this array too. - - - - - Assembly is /l-ed by compilation that is using it as a reference. - - - - - Returns true and a string from the first GuidAttribute on the assembly, - the string might be null or an invalid guid representation. False, - if there is no GuidAttribute with string argument. - - - - - Gets the set of type identifiers from this assembly. - - - These names are the simple identifiers for the type, and do not include namespaces, - outer type names, or type parameters. - - This functionality can be used for features that want to quickly know if a name could be - a type for performance reasons. For example, classification does not want to incur an - expensive binding call cost if it knows that there is no type with the name that they - are looking at. - - - - - Gets the set of namespace names from this assembly. - - - - - Returns true if this assembly might contain extension methods. If this property - returns false, there are no extension methods in this assembly. - - - This property allows the search for extension methods to be narrowed quickly. - - - - - Gets the symbol for the pre-defined type from core library associated with this assembly. - - The symbol for the pre-defined type or an error type if the type is not defined in the core library. - - - - The NamedTypeSymbol for the .NET System.Object type, which could have a TypeKind of - Error if there was no COR Library in a compilation using the assembly. - - - - - Get symbol for predefined type from Cor Library used by this assembly. - - - - - - - Lookup a type within the assembly using the canonical CLR metadata name of the type. - - Type name. - Symbol for the type or null if type cannot be found or is ambiguous. - - - - Lookup a type within the assembly using its canonical CLR metadata name. - - - - If search within assembly fails, lookup in assemblies referenced by the primary module. - For source assembly, this is equivalent to all assembly references given to compilation. - - - Extra restrictions apply when searching for a well-known type. In particular, the type must be public. - - - While resolving the name, consider only types following CLS-compliant generic type names and arity encoding (ECMA-335, section 10.7.2). - I.e. arity is inferred from the name and matching type must have the same emitted name and arity. - - - A diagnostic bag to receive warnings if we should allow multiple definitions and pick one. - - Null if the type can't be found. - - - - Resolves to a available in this assembly - its referenced assemblies. - - The type to resolve. - Use referenced assemblies for resolution. - The resolved symbol if successful or null on failure. - - - - Lookup member declaration in predefined CorLib type in this Assembly. Only valid if this - assembly is the Cor Library - - - - - Lookup member declaration in predefined CorLib type used by this Assembly. - - - - - Represents a PE custom attribute - - - - - Matches an attribute by metadata namespace, metadata type name. Does not load the type symbol for - the attribute. - - - - True if the attribute data matches. - - - - Matches an attribute by metadata namespace, metadata type name and metadata signature. Does not load the - type symbol for the attribute. - - Target symbol. - Attribute to match. - - An index of the target constructor signature in - signatures array, -1 if - this is not the target attribute. - - - - - Decodes applied to a specified metadata symbol and - transforms the specified metadata type, using the decoded dynamic transforms attribute argument, - by replacing each occurrence of type with dynamic type. - - - This is a port of TypeManager::ImportDynamicTransformType from the native compiler. - Comments from the C# design document for Dynamic: - SPEC: To represent the dynamic type in metadata, any indexer, field or return value typed as dynamic or known to be a constructed type - SPEC: containing dynamic will have each occurrence of dynamic erased to object and will be annotated with a [DynamicAttribute]. - SPEC: If the relevant type is a constructed type, the attribute's constructor is passed a bool array. - SPEC: This array represents a preorder traversal of each "node" in the constructed type's "tree of types", - SPEC: with true set for each "node" that is dynamic, and false set for all other types. - SPEC: When dynamic occurs as part of the base type of a type, the applicable [DynamicAttribute] is applied to the type itself. - - - - - Should be accessed through , , and . - - - - - Decodes the attributes applied to the given from metadata and checks if is applied. - If so, it transforms the given , using the decoded dynamic transforms attribute argument, - by replacing each occurrence of type with dynamic type. - If no is applied or the decoded dynamic transforms attribute argument is erroneous, - returns the unchanged . - - This method is a port of TypeManager::ImportDynamicTransformType from the native compiler. - - - - This subclass of MetadataDecoder is specifically for finding - method symbols corresponding to method MemberRefs. The parent - implementation is unsuitable because it requires a PEMethodSymbol - for context when decoding method type parameters and no such - context is available because it is precisely what we are trying - to find. Since we know in advance that there will be no context - and that signatures decoded with this class will only be used - for comparison (when searching through the methods of a known - TypeSymbol), we can return indexed type parameters instead. - - - - - Type context for resolving generic type arguments. - - - - - We know that we'll never have a method context because that's what we're - trying to find. Instead, just return an indexed type parameter that will - make comparison easier. - - - - - - - This override changes two things: - 1) Return type arguments instead of type parameters. - 2) Handle non-PE types. - - - - - Search through the members of a given type symbol to find the method that matches a particular - signature. - - Type containing the desired method symbol. - A MemberRef handle that can be used to obtain the name and signature of the method - True to only return a method. - The matching method symbol, or null if the inputs do not correspond to a valid method. - - - - Helper class to resolve metadata tokens and signatures. - - - - - Type context for resolving generic type arguments. - - - - - Method context for resolving generic method type arguments. - - - - - Lookup a type defined in referenced assembly. - - - - - - - Lookup a type defined in a module of a multi-module assembly. - - - - - Lookup a type defined in this module. - This method will be called only if the type we are - looking for hasn't been loaded yet. Otherwise, MetadataDecoder - would have found the type in TypeDefRowIdToTypeMap based on its - TypeDef row id. - - - - - Perform a check whether the type or at least one of its generic arguments - is defined in the specified assemblies. The check is performed recursively. - - - - - Find canonical type for NoPia embedded type. - - - Symbol for the canonical type or an ErrorTypeSymbol. Never returns null. - - - - - Represents an assembly imported from a PE. - - - - - An Assembly object providing metadata for the assembly. - - - - - A DocumentationProvider that provides XML documentation comments for this assembly. - - - - - The list of contained PEModuleSymbol objects. - The list doesn't use type ReadOnlyCollection(Of PEModuleSymbol) so that we - can return it from Modules property as is. - - - - - An array of assemblies involved in canonical type resolution of - NoPia local types defined within this assembly. In other words, all - references used by a compilation referencing this assembly. - The array and its content is provided by ReferenceManager and must not be modified. - - - - - An array of assemblies referenced by this assembly, which are linked (/l-ed) by - each compilation that is using this AssemblySymbol as a reference. - If this AssemblySymbol is linked too, it will be in this array too. - The array and its content is provided by ReferenceManager and must not be modified. - - - - - Assembly is /l-ed by compilation that is using it as a reference. - - - - - Assembly's custom attributes - - - - - Look up the assembly to which the given metadata type is forwarded. - - - - The assembly to which the given type is forwarded or null, if there isn't one. - - - The returned assembly may also forward the type. - - - - - The class to represent all events imported from a PE/module. - - - - - Look for a field with the same name and an appropriate type (i.e. the same type, except in WinRT). - If one is found, the caller will assume that this event was originally field-like and associate - the two symbols. - - - Perf impact: If we find a field with the same name, we will eagerly evaluate its type. - - - - - Intended behavior: this event, E, explicitly implements an interface event, IE, - if E.add explicitly implements IE.add and E.remove explicitly implements IE.remove. - - - - - The class to represent all fields imported from a PE/module. - - - - - Mark this field as the backing field of a field-like event. - The caller will also ensure that it is excluded from the member list of - the containing type (as it would be in source). - - - - - The module containing the namespace. - - - - - - The class to represent all methods imported from a PE/module. - - - - - Holds infrequently accessed fields. See for an explanation. - - - - - A single field to hold optional auxiliary data. - In many scenarios it is possible to avoid allocating this, thus saving total space in . - Even for lazily-computed values, it may be possible to avoid allocating if - the computed value is a well-known "empty" value. In this case, bits in are used - to indicate that the lazy values have been computed and, if is null, then - the "empty" value should be inferred. - - - - - Associate the method with a particular property. Returns - false if the method is already associated with a property or event. - - - - - Associate the method with a particular event. Returns - false if the method is already associated with a property or event. - - - - - Represents a net-module imported from a PE. Can be a primary module of an assembly. - - - - - Owning AssemblySymbol. This can be a PEAssemblySymbol or a SourceAssemblySymbol. - - - - - A Module object providing metadata. - - - - - Global namespace. - - - - - Cache the symbol for well-known type System.Type because we use it frequently - (for attributes). - - - - - The same value as ConcurrentDictionary.DEFAULT_CAPACITY - - - - - This is a map from TypeDef handle to the target . - It is used by to speed up type reference resolution - for metadata coming from this module. The map is lazily populated - as we load types from the module. - - - - - This is a map from TypeRef row id to the target . - It is used by to speed up type reference resolution - for metadata coming from this module. The map is lazily populated - by as we resolve TypeRefs from the module. - - - - - Module's custom attributes - - - - - Module's assembly attributes - - - - - Returns a possibly ExtensionAttribute filtered roArray of attributes. If - filterExtensionAttributes is set to true, the method will remove all ExtensionAttributes - from the returned array. If it is false, the parameter foundExtension will always be set to - false and can be safely ignored. - - The paramArrayAttribute parameter is similar to the foundExtension parameter, but instead - of just indicating if the attribute was found, the parameter is set to the attribute handle - for the ParamArrayAttribute if any is found and is null otherwise. This allows NoPia to filter - the attribute out for the symbol but still cache it separately for emit. - - - - - Get the custom attributes, but filter out any ParamArrayAttributes. - - The parameter token handle. - Set to a ParamArrayAttribute - CustomAttributeHandle if any are found. Nil token otherwise. - - - - Filters extension attributes from the attribute results. - - - True if we found an extension method, false otherwise. - The attributes on the token, minus any ExtensionAttributes. - - - - If this module forwards the given type to another assembly, return that assembly; - otherwise, return null. - - Type to look up. - Assembly symbol or null. - - The returned assembly may also forward the type. - - - - - The class to represent all types imported from a PE/module. - - - - - A set of all the names of the members in this type. - We can get names without getting members (which is a more expensive operation) - - - - - We used to sort symbols on demand and relied on row ids to figure out the order between symbols of the same kind. - However, that was fragile because, when map tables are used in metadata, row ids in the map table define the order - and we don't have them. - Members are grouped by kind. First we store fields, then methods, then properties, then events and finally nested types. - Within groups, members are sorted based on declaration order. - - - - - A map of members immediately contained within this type - grouped by their name (case-sensitively). - - - - - A map of types immediately contained within this type - grouped by their name (case-sensitively). - - - - - Lazily initialized by TypeKind property. - - - - - Need to import them for an enum from a linked assembly, when we are embedding it. These symbols are not included into lazyMembersInDeclarationOrder. - - - - - Returns the index of the first member of the specific kind. - Returns the number of members if not found. - - - - - Returns all members of the specific kind, starting at the optional offset. - Members of the same kind are assumed to be contiguous. - - - - - Specialized PENamedTypeSymbol for types with no type parameters in - metadata (no type parameters on this type and all containing types). - - - - - Specialized PENamedTypeSymbol for types with type parameters in metadata. - NOTE: the type may have Arity == 0 if it has same metadata arity as the metadata arity of the containing type. - - - - - Return true if the type parameters specified on the nested type (this), - that represent the corresponding type parameters on the containing - types, in fact match the actual type parameters on the containing types. - - - - - The base class to represent a namespace imported from a PE/module. Namespaces that differ - only by casing in name are not merged. - - - - - A map of namespaces immediately contained within this namespace - mapped by their name (case-sensitively). - - - - - A map of types immediately contained within this namespace - grouped by their name (case-sensitively). - - - - - A map of NoPia local types immediately contained in this assembly. - Maps type name (non-qualified) to the row id. Note, for VB we should use - full name. - - - - - All type members in a flat array - - - - - Returns PEModuleSymbol containing the namespace. - - PEModuleSymbol containing the namespace. - - - - Initializes namespaces and types maps with information about - namespaces and types immediately contained within this namespace. - - - The sequence of groups of TypeDef row ids for types contained within the namespace, - recursively including those from nested namespaces. The row ids must be grouped by the - fully-qualified namespace name case-sensitively. There could be multiple groups - for each fully-qualified namespace name. The groups must be sorted by - their key in case-sensitive manner. Empty string must be used as namespace name for types - immediately contained within Global namespace. Therefore, all types in this namespace, if any, - must be in several first IGroupings. - - - - - Create symbols for nested namespaces and initialize namespaces map. - - - - - Create symbols for nested types and initialize types map. - - - - - The class to represent all, but Global, namespaces imported from a PE/module. - Namespaces that differ only by casing in name are not merged. - - - - - - The parent namespace. There is always one, Global namespace contains all - top level namespaces. - - - - - - The name of the namespace. - - - - - - The sequence of groups of TypeDef row ids for types contained within the namespace, - recursively including those from nested namespaces. The row ids are grouped by the - fully-qualified namespace name case-sensitively. There could be multiple groups - for each fully-qualified namespace name. The groups are sorted by their - key in case-sensitive manner. Empty string is used as namespace name for types - immediately contained within Global namespace. Therefore, all types in this namespace, if any, - will be in several first IGroupings. - - This member is initialized by constructor and is cleared in EnsureAllMembersLoaded - as soon as symbols for children are created. - - - - - - Constructor. - - - Name of the namespace, must be not empty. - - - Containing namespace. - - - The sequence of groups of TypeDef row ids for types contained within the namespace, - recursively including those from nested namespaces. The row ids are grouped by the - fully-qualified namespace name case-sensitively. There could be multiple groups - for each fully-qualified namespace name. The groups are sorted by their - key in case-sensitive manner. Empty string is used as namespace name for types - immediately contained within Global namespace. Therefore, all types in this namespace, if any, - will be in several first IGroupings. - - - - - The class to represent all method parameters imported from a PE/module. - - - - - Attributes filtered out from m_lazyCustomAttributes, ParamArray, etc. - - - - - Construct a parameter symbol for a property loaded from metadata. - - - - - The property parameter doesn't have a name in metadata, - so this is the handle of a corresponding accessor parameter, if there is one, - or of the ParamInfo passed in, otherwise). - - - - - - Internal for testing. Non-test code should use . - - - - - The class to represent all properties imported from a PE/module. - - - - - To facilitate lookup, all indexer symbols have the same name. - Check the MetadataName property to find the name we imported. - - - - - This property can return true for bogus indexers. - Rationale: If a type in metadata has a single, bogus indexer - and a source method tries to invoke it, then Dev10 reports a bogus - indexer rather than lack of an indexer. - - - - - Intended behavior: this property, P, explicitly implements an interface property, IP, - if any of the following is true: - - 1) P.get explicitly implements IP.get and P.set explicitly implements IP.set - 2) P.get explicitly implements IP.get and there is no IP.set - 3) P.set explicitly implements IP.set and there is no IP.get - - Extra or missing accessors will not result in errors, P will simply not report that - it explicitly implements IP. - - - - - The class to represent all generic type parameters imported from a PE/module. - - - - - - First error calculating bounds. - - - - - Represents a retargeting custom attribute - - - - - Gets the retargeted System.Type type symbol. - - Target symbol on which this attribute is applied. - Retargeted System.Type type symbol. - - - - Essentially this is a wrapper around another AssemblySymbol that is responsible for retargeting - symbols from one assembly to another. It can retarget symbols for multiple assemblies at the same time. - - For example, compilation C1 references v1 of Lib.dll and compilation C2 references C1 and v2 of Lib.dll. - In this case, in context of C2, all types from v1 of Lib.dll leaking through C1 (through method - signatures, etc.) must be retargeted to the types from v2 of Lib.dll. This is what - RetargetingAssemblySymbol is responsible for. In the example above, modules in C2 do not - reference C1.m_AssemblySymbol, but reference a special RetargetingAssemblySymbol created for - C1 by ReferenceManager. - - Here is how retargeting is implemented in general: - - Symbols from underlying assembly are substituted with retargeting symbols. - - Symbols from referenced assemblies that can be reused as is (i.e. doesn't have to be retargeted) are - used as is. - - Symbols from referenced assemblies that must be retargeted are substituted with result of retargeting. - - - - - The underlying AssemblySymbol, it leaks symbols that should be retargeted. - This cannot be an instance of RetargetingAssemblySymbol. - - - - - The list of contained ModuleSymbol objects. First item in the list - is RetargetingModuleSymbol that wraps corresponding SourceModuleSymbol - from underlyingAssembly.Modules list, the rest are PEModuleSymbols for - added modules. - - - - - An array of assemblies involved in canonical type resolution of - NoPia local types defined within this assembly. In other words, all - references used by a compilation referencing this assembly. - The array and its content is provided by ReferenceManager and must not be modified. - - - - - An array of assemblies referenced by this assembly, which are linked (/l-ed) by - each compilation that is using this AssemblySymbol as a reference. - If this AssemblySymbol is linked too, it will be in this array too. - The array and its content is provided by ReferenceManager and must not be modified. - - - - - Backing field for the map from a local NoPia type to corresponding canonical type. - - - - - A map from a local NoPia type to corresponding canonical type. - - - - - Assembly is /l-ed by compilation that is using it as a reference. - - - - - Retargeted custom attributes - - - - - Constructor. - - - The underlying AssemblySymbol, cannot be an instance of RetargetingAssemblySymbol. - - - Assembly is /l-ed by compilation that is using it as a reference. - - - - - The underlying AssemblySymbol. - This cannot be an instance of RetargetingAssemblySymbol. - - - - - Lookup declaration for FX type in this Assembly. - - - - - - - - Owning RetargetingModuleSymbol. - - - - - The underlying EventSymbol, cannot be another RetargetingEventSymbol. - - - - - Represents a field in a RetargetingModuleSymbol. Essentially this is a wrapper around - another FieldSymbol that is responsible for retargeting symbols from one assembly to another. - It can retarget symbols for multiple assemblies at the same time. - - - - - Owning RetargetingModuleSymbol. - - - - - The underlying FieldSymbol, cannot be another RetargetingFieldSymbol. - - - - - Retargeted custom attributes - - - - - Represents a method in a RetargetingModuleSymbol. Essentially this is a wrapper around - another MethodSymbol that is responsible for retargeting symbols from one assembly to another. - It can retarget symbols for multiple assemblies at the same time. - - - - - Owning RetargetingModuleSymbol. - - - - - The underlying MethodSymbol, cannot be another RetargetingMethodSymbol. - - - - - Retargeted custom attributes - - - - - Retargeted return type custom attributes - - - - - Represents a primary module of a . Essentially this is a wrapper around - another that is responsible for retargeting symbols from one assembly to another. - It can retarget symbols for multiple assemblies at the same time. - - Here is how retargeting is implemented in general: - - Symbols from underlying module are substituted with retargeting symbols. - - Symbols from referenced assemblies that can be reused as is (i.e. don't have to be retargeted) are - used as is. - - Symbols from referenced assemblies that must be retargeted are substituted with result of retargeting. - - - - - Owning . - - - - - The underlying , cannot be another . - - - - - The map that captures information about what assembly should be retargeted - to what assembly. Key is the referenced by the underlying module, - value is the corresponding referenced by this module, and corresponding - retargeting map for symbols. - - - - - Retargeted custom attributes - - - - - Constructor. - - - Owning assembly. - - - The underlying ModuleSymbol, cannot be another RetargetingModuleSymbol. - - - - - The underlying ModuleSymbol, cannot be another RetargetingModuleSymbol. - - - - - A helper method for ReferenceManager to set AssemblySymbols for assemblies - referenced by this module. - - - - - Retargeting map from underlying module to this one. - - - - - Retargeting map from underlying module to the retargeting module. - - - - - RetargetingAssemblySymbol owning retargetingModule. - - - - - The underlying ModuleSymbol for retargetingModule. - - - - - The map that captures information about what assembly should be retargeted - to what assembly. Key is the AssemblySymbol referenced by the underlying module, - value is the corresponding AssemblySymbol referenced by the retargeting module, and - corresponding retargeting map for symbols. - - - - - Perform a check whether the type or at least one of its generic arguments - is an explicitly defined local type. The check is performed recursively. - - - - - Represents a type of a RetargetingModuleSymbol. Essentially this is a wrapper around - another NamedTypeSymbol that is responsible for retargeting referenced symbols from one assembly to another. - It can retarget symbols for multiple assemblies at the same time. - - - - - Owning RetargetingModuleSymbol. - - - - - The underlying NamedTypeSymbol, cannot be another RetargetingNamedTypeSymbol. - - - - - Represents a namespace of a RetargetingModuleSymbol. Essentially this is a wrapper around - another NamespaceSymbol that is responsible for retargeting symbols from one assembly to another. - It can retarget symbols for multiple assemblies at the same time. - - - - - Owning RetargetingModuleSymbol. - - - - - The underlying NamespaceSymbol, cannot be another RetargetingNamespaceSymbol. - - - - - Represents a parameter of a RetargetingMethodSymbol. Essentially this is a wrapper around - another ParameterSymbol that is responsible for retargeting symbols from one assembly to another. - It can retarget symbols for multiple assemblies at the same time. - - - - - Retargeted custom attributes - - - - - Owning RetargetingMethodSymbol. - - - - - Owning RetargetingPropertySymbol. - - - - - Owning RetargetingModuleSymbol. - - - - - The underlying PropertySymbol, cannot be another RetargetingPropertySymbol. - - - - - Retargeted custom attributes - - - - - Represents a type parameter in a RetargetingModuleSymbol. Essentially this is a wrapper around - another TypeParameterSymbol that is responsible for retargeting symbols from one assembly to another. - It can retarget symbols for multiple assemblies at the same time. - - - - - Owning RetargetingModuleSymbol. - - - - - The underlying TypeParameterSymbol, cannot be another RetargetingTypeParameterSymbol. - - - - - Retargeted custom attributes - - - - - Represents a Source custom attribute specification - - - - - If the contains any named constructor arguments or default value arguments, - it returns an array representing each argument's source argument index. A value of -1 indicates default value argument. - Otherwise, returns null. - - - - - This method finds an attribute by metadata name and signature. The algorithm for signature matching is similar to the one - in Module.GetTargetAttributeSignatureIndex. Note, the signature matching is limited to primitive types - and System.Type. It will not match an arbitrary signature but it is sufficient to match the signatures of the current set of - well known attributes. - - The symbol which is the target of the attribute - The attribute to match. - - - - Gets the System.Type type symbol from targetSymbol's containing assembly. - - Target symbol on which this attribute is applied. - System.Type type symbol. - - - - Information early-decoded from well-known custom attributes applied on a parameter. - - - - - Information decoded from early well-known custom attributes applied on a property. - - - - - Information decoded from well-known custom attributes applied on a type. - - - - - IsManagedType is simple for most named types: - enums are not managed; - non-enum, non-struct named types are managed; - generic types and their nested types are managed; - type parameters are managed; - all special types have spec'd values (basically, (non-string) primitives) are not managed; - - Only structs are complicated, because the definition is recursive. A struct type is managed - if one of its instance fields is managed. Unfortunately, this can result in infinite recursion. - If the closure is finite, and we don't find anything definitely managed, then we return true. - If the closure is infinite, we disregard all but a representative of any expanding cycle. - - Intuitively, this will only return true if there's a specific type we can point to that is would - be managed even if it had no fields. e.g. struct S { S s; } is not managed, but struct S { S s; object o; } - is because we can point to object. - - - - - Returns a boolean value if we can determine whether the type is managed - without looking at its fields and Unset otherwise. - - - - - An error type, used to represent a byref return in a metadata signature. - - - If we ever decide to support by-ref returns, don't just make this a non-error - type. For consistency with parameters and locals, we should have a bit on the - signature (i.e. on the MethodSymbol). - - - - - This enum describes the types of components that could give - us diagnostics. We shouldn't read the list of diagnostics - until all of these types are accounted for. - - - PEParameterSymbol reserves all completion part bits and uses them to track the completion state and - presence of well known attributes. - - - - - A tuple of TypeParameterSymbol and DiagnosticInfo, created for errors - reported from ConstraintsHelper rather than creating Diagnostics directly. - This decouples constraints checking from syntax and Locations, and supports - callers that may want to create Location instances lazily or not at all. - - - - - Helper methods for generic type parameter constraints. There are two sets of methods: one - set for resolving constraint "bounds" (that is, determining the effective base type, interface set, - etc.), and another set for checking for constraint violations in type and method references. - - Bounds are resolved by calling one of the ResolveBounds overloads. Typically bounds are - resolved by each TypeParameterSymbol at, or before, one of the corresponding properties - (BaseType, Interfaces, etc.) is accessed. Resolving bounds may result in errors (cycles, - inconsistent constraints, etc.) and it is the responsibility of the caller to report any such - errors as declaration errors or use-site errors (depending on whether the type parameter - was from source or metadata) and to ensure bounds are resolved for source type parameters - even if the corresponding properties are never accessed directly. - - Constraints are checked by calling one of the CheckConstraints or CheckAllConstraints - overloads for any generic type or method reference from source. In some circumstances, - references are checked at the time the generic type or generic method is bound and constructed - by the Binder. In those case, it is sufficient to call one of the CheckConstraints overloads - since compound types (such as A<T>.B<U> or A<B<T>>) are checked - incrementally as each part is bound. In other cases however, constraint checking needs to be - delayed to prevent cycles where checking constraints requires binding the syntax that is currently - being bound (such as the constraint in class C<T> where T : C<T>). In those cases, - the caller must lazily check constraints, and since the types may be compound types, it is - necessary to call CheckAllConstraints. - - - - - Determine the effective base type, effective interface set, and set of type - parameters (excluding cycles) from the type parameter constraints. Conflicts - within the constraints and constraint types are returned as diagnostics. - 'inherited' should be true if the type parameters are from an overridden - generic method. In those cases, additional constraint checks are applied. - - - - - Check all generic constraints on the given type and any containing types - (such as A<T> in A<T>.B<U>). This includes checking constraints - on generic types within the type (such as B<T> in A<B<T>[]>). - - - - - Check type parameter constraints for the containing type or method symbol. - - The generic type or method. - Conversions instance. - The map from type parameters to type arguments. - Containing symbol type parameters. - Containing symbol type arguments. - Improves error message detail. - Diagnostics. - Parameters to skip. - - True if the constraints were satisfied, false otherwise. - - - - Return true if the class type has a public parameterless constructor. - - - - - Returns true if type a is encompassed by type b (spec 6.4.3), - and returns false otherwise. - - - - - A named type symbol that results from substituting a new owner for a type declaration. - - - - - A generic named type symbol that has been constructed with type arguments distinct from its own type parameters. - - - - - Substitutes all occurrences of dynamic type with Object type. - - - - - When indexer overload resolution fails, we have two options: - 1) Create a BoundBadExpression with the candidates as child nodes; - 2) Create a BoundIndexerAccess with the error flag set. - - Option 2 is preferable, because it retains information about the arguments - (names, ref kind, etc), and results in better output from flow analysis. - However, we can't create a BoundIndexerAccess with a null indexer symbol, - so we create an ErrorPropertySymbol to fill the gap. - - - - - An ErrorSymbol is used when the compiler cannot determine a symbol object to return because - of an error. For example, if a field is declared "Foo x;", and the type "Foo" cannot be - found, an ErrorSymbol is returned when asking the field "x" what it's type is. - - - - - The underlying error. - - - - - Summary of the reason why the type is bad. - - - - - Called by to perform substitution - on types with TypeKind ErrorType. The general pattern is to use the type map - to perform substitution on the wrapped type, if any, and then construct a new - error type symbol from the result (if there was a change). - - - - - When constructing this ErrorTypeSymbol, there may have been symbols that seemed to - be what the user intended, but were unsuitable. For example, a type might have been - inaccessible, or ambiguous. This property returns the possible symbols that the user - might have intended. It will return no symbols if no possible symbols were found. - See the CandidateReason property to understand why the symbols were unsuitable. - - - - - If CandidateSymbols returns one or more symbols, returns the reason that those - symbols were not chosen. Otherwise, returns None. - - - - - Returns true if this type is known to be a reference type. It is never the case that - IsReferenceType and IsValueType both return true. However, for an unconstrained type - parameter, IsReferenceType and IsValueType will both return false. - - - - - Returns true if this type is known to be a value type. It is never the case that - IsReferenceType and IsValueType both return true. However, for an unconstrained type - parameter, IsReferenceType and IsValueType will both return false. - - - - - Collection of names of members declared within this type. - - - - - Get all the members of this symbol. - - An ImmutableArray containing all the members of this symbol. If this symbol has no members, - returns an empty ImmutableArray. Never returns Null. - - - - Get all the members of this symbol that have a particular name. - - An ImmutableArray containing all the members of this symbol with the given name. If there are - no members with this name, returns an empty ImmutableArray. Never returns Null. - - - - Get all the members of this symbol that are types. - - An ImmutableArray containing all the types that are members of this symbol. If this symbol has no type members, - returns an empty ImmutableArray. Never returns null. - - - - Get all the members of this symbol that are types that have a particular name, of any arity. - - An ImmutableArray containing all the types that are members of this symbol with the given name. - If this symbol has no type members with this name, - returns an empty ImmutableArray. Never returns null. - - - - Get all the members of this symbol that are types that have a particular name and arity - - An ImmutableArray containing all the types that are members of this symbol with the given name and arity. - If this symbol has no type members with this name and arity, - returns an empty ImmutableArray. Never returns null. - - - - Gets the kind of this symbol. - - - - - Gets the kind of this type. - - - - - Get the symbol that logically contains this symbol. - - - - - Gets the locations where this symbol was originally defined, either in source or - metadata. Some symbols (for example, partial classes) may be defined in more than one - location. - - - - - Returns the arity of this type, or the number of type parameters it takes. - A non-generic type has zero arity. - - - - - Gets the name of this symbol. Symbols without a name return the empty string; null is - never returned. - - - - - Returns the type arguments that have been substituted for the type parameters. - If nothing has been substituted for a give type parameters, - then the type parameter itself is consider the type argument. - - - - - Returns the type parameters that this type has. If this is a non-generic type, - returns an empty ImmutableArray. - - - - - Returns the type symbol that this type was constructed from. This type symbol - has the same containing type (if any), but has type arguments that are the same - as the type parameters (although its containing type might not). - - - - - Implements visitor pattern. - - - - - Get this accessibility that was declared on this symbol. For symbols that do not have - accessibility declared on them, returns NotApplicable. - - - - - Returns true if this symbol is "static"; i.e., declared with the "static" modifier or - implicitly static. - - - - - Returns true if this symbol was declared as requiring an override; i.e., declared with - the "abstract" modifier. Also returns true on a type declared as "abstract", all - interface types, and members of interface types. - - - - - Returns true if this symbol was declared to override a base class member and was also - sealed from further overriding; i.e., declared with the "sealed" modifier. Also set for - types that do not allow a derived class (declared with "sealed" or "static" or "struct" - or "enum" or "delegate"). - - - - - An error type, used to represent the type of a type binding - operation when binding fails. - - - - - If (we believe) we know which symbol the user intended, then we should retain that information - in the corresponding error symbol - it can be useful for deciding how to handle the error. - For example, we might want to know whether (we believe) the error type was supposed to be an - interface, so that we can put it in a derived type's interface list, rather than in the base - type slot. - - Sometimes we will return the original definition of the intended symbol. For example, if we see - ]]> and we have an IFoo with a different arity or accessibility - (e.g. ]]> was constructed from an error symbol based on ]]>), - then we'll return ]]>, rather than trying to construct a corresponding closed - type (which may not be difficult/possible in the case of nested types or mismatched arities). - - NOTE: Any non-null type symbol returned is guaranteed not to be an error type. - - - TypeSymbolExtensions.GetNonErrorGuess is a more discoverable version of this functionality. - However, the real definition is in this class so that it can access the private field - nonErrorGuessType. - - - - - Represents a field initializer, a property initializer, or a global statement in script code. - - - - - The field being initialized (possibly a backing field of a property), or null if this is a top-level statement in script code. - - - - - A reference to or top-level in script code. - - - - - A sum of widths of spans of all preceding initializers - (instance and static initializers are summed separately, and trivias are not counted). - - - - - Represents a label in method body - - - - - Gets the name of this label - - - - - Returns false because label can't be defined externally. - - - - - Returns false because label can't be sealed. - - - - - Returns false because label can't be abstract. - - - - - Returns false because label can't be overridden. - - - - - Returns false because label can't be virtual. - - - - - Returns false because label can't be static. - - - - - Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. - This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. - - - - - Returns 'NotApplicable' because label can't be used outside the member body. - - - - - Gets the locations where the symbol was originally defined, either in source or - metadata. Some symbols (for example, partial classes) may be defined in more than one - location. - - - - - Gets the immediately containing symbol of the . - It should be the containing the label in its body. - - - - - Gets the immediately containing symbol of the . - It should be the containing the label in its body. - - - - - Returns value 'Label' of the - - - - - A structure used to lexically order symbols. For performance, it's important that this be - a STRUCTURE, and be able to be returned from a symbol without doing any additional allocations (even - if nothing is cached yet.) - - - - - Compare two lexical sort keys in a compilation. - - - - - Specifies the syntax that a user defined variable comes from. - - - - - The local is not user defined nor it is a copy of a user defined local (e.g. with a substituted type). - Check the value of for the kind of synthesized variable. - - - - - User defined local variable declared by . - - - - - User defined local constant declared by . - - - - - User defined local variable declared by in . - - - - - User defined local variable declared by in . - - - - - User defined local variable declared by . - - - - - User defined local variable declared by in . - - - - - User defined local variable declared by . - - - - - Represents a local variable in a method body. - - - - - Gets the type of this local. - - - - - WARN WARN WARN: If you access this via the semantic model, things will break (since the initializer may not have been bound). - - Whether or not this local is pinned (i.e. the type will be emitted with the "pinned" modifier). - - - Superficially, it seems as though this should always be the same as DeclarationKind == LocalDeclarationKind.Fixed. - Unfortunately, when we fix a string expression, it is not the declared local (e.g. char*) but a synthesized temp (string) - that is pinned. - - - - - Returns false because local variable can't be defined externally. - - - - - Returns false because local variable can't be sealed. - - - - - Returns false because local variable can't be abstract. - - - - - Returns false because local variable can't be overridden. - - - - - Returns false because local variable can't be virtual. - - - - - Returns false because local variable can't be declared as static in C#. - - - - - Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. - This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. - - - - - Returns 'NotApplicable' because local variable can't be used outside the member body.. - - - - - Returns value 'Local' of the - - - - - Returns true if this local variable was declared in a catch clause. - - - - - Returns true if this local variable was declared as "const" (i.e. is a constant declaration). - - - - - Returns true if the local variable is declared in resource-acquisition of a 'using statement'; - otherwise false - - - - using (var localVariable = new StreamReader("C:\\Temp\\MyFile.txt")) { ... } - - - - - - Returns true if the local variable is declared in fixed-pointer-initializer (in unsafe context) - - - - - Returns true if this local variable is declared in for-initializer - - - - - Returns true if this local variable is declared as iteration variable - - - - - Returns the syntax node that declares the variable. - - - All user-defined and long-lived synthesized variables must return a reference to a node that is - tracked by the EnC diffing algorithm. For example, for variable - the declarator is the node. - - The location of the declarator is used to calculate during emit. - - - - - Returns false if the field wasn't declared as "const", or constant value was omitted or erroneous. - True otherwise. - - - - - If IsConst returns true, then returns the constant value of the field or enum member. If IsConst returns - false, then returns null. - - - - - Returns true if the local symbol was compiler generated. - - - - - - C# 4.0 §10.6: The name, the type parameter list and the formal parameter list of a method define - the signature (§3.6) of the method. Specifically, the signature of a method consists of its - name, the number of type parameters and the number, modifiers, and types of its formal - parameters. For these purposes, any type parameter of the method that occurs in the type of - a formal parameter is identified not by its name, but by its ordinal position in the type - argument list of the method. The return type is not part of a method's signature, nor are - the names of the type parameters or the formal parameters. - - - C# 4.0 §3.6: For the purposes of signatures, the types object and dynamic are considered the - same. - - - C# 4.0 §3.6: We implement the rules for ref/out by mapping both to ref. The caller (i.e. - checking for proper overrides or partial methods, etc) should check that ref/out are - consistent. - - - - - - This instance is used when trying to determine if one member explicitly implements another, - according the C# definition. - The member signatures are compared without regard to name (including the interface part, if any) - and the return types must match. - - - - - This instance is used when trying to determine if one member implicitly implements another, - according to the C# definition. - The member names, parameters, and (return) types must match. Custom modifiers are ignored. - - - One would expect this comparer to have requireSourceMethod = true, but it doesn't because (for source types) - we allow inexact matching of custom modifiers when computing implicit member implementations. Consider the - following scenario: interface I has a method M with custom modifiers C1, source type ST includes I in its - interface list but has no method M, and metadata type MT has a method M with custom modifiers C2. - In this scenario, we want to compare I.M to MT.M without regard to custom modifiers, because if C1 != C2, - we can just synthesize an explicit implementation of I.M in ST that calls MT.M. - - - - - This instance is used as a fallback when it is determined that one member does not implicitly implement - another. It applies a looser check to determine whether the proposed implementation should be reported - as "close". - - - - - This instance is used to determine if two C# member declarations in source conflict with each other. - Names, arities, and parameter types are considered. - Return types, type parameter constraints, custom modifiers, and parameter ref kinds, etc are ignored. - - - This does the same comparison that MethodSignature used to do. - - - - - This instance is used to check whether one member overrides another, according to the C# definition. - - - - - This instance is used to check whether one property or event overrides another, according to the C# definition. - NOTE: C# ignores accessor member names. - CAVEAT: considers return types so that getters and setters will be treated the same. - - - - - Same as except that it pays attention to custom modifiers and return type. - Normally, the return type isn't considered during overriding, but this comparer is actually used to find - exact matches (i.e. before tie-breaking takes place amongst close matches). - - - - - If this returns false, then the real override comparer (whichever one is appropriate for the scenario) - will also return false. - - - - - This instance is intended to reflect the definition of signature equality used by the runtime - (ECMA-335, Partition I, §8.6.1.6 Signature Matching). - It considers return type, name, parameters, calling convention, and custom modifiers, but ignores - the difference between and . - - - - - Same as , but distinguishes between ref and out. During override resolution, - if we find two methods that match except for ref/out, we want to prefer the one that matches, even - if the runtime doesn't. - - - - - This instance is the same as RuntimeSignatureComparer. - CONSIDER: just use RuntimeSignatureComparer? - - - - - This instance is used to search for members that have the same name, parameters, (return) type, and constraints (if any) - according to the C# definition. Custom modifiers are ignored. - - - - - This instance is used to search for members that have identical signatures in every regard. - - - - - This instance is used for performing approximate overload resolution of documentation - comment cref attributes. It ignores the name, because the candidates were all found by lookup. - - - - - This instance is used as a key in the lambda return type inference. - We basically only interested in parameters since inference will set the return type to null. - - - - - Returns true if the first set of constraint types - is a subset of the second set. - - - - - SymbolExtensions for member symbols. - - - - - Get the parameters of a member symbol. Should be a method, property, or event. - - - - - Get the types of the parameters of a member symbol. Should be a method, property, or event. - - - - - Get the ref kinds of the parameters of a member symbol. Should be a method, property, or event. - - - - - Count the number of custom modifiers in/on the return type - and parameters of the specified method. - - - - - Count the number of custom modifiers in/on the type - and parameters (for indexers) of the specified property. - - - - - Return the arity of a member. - - - - - NOTE: every struct has a public parameterless constructor either used-defined or default one - - - - - default zero-init constructor symbol is added to a struct when it does not define - its own parameterless public constructor. - We do not emit this constructor and do not call it - - - - - If the event has a AddMethod, return that. Otherwise check the overridden - event, if any. Repeat for each overridden event. - - - This method exists to mimic the behavior of GetOwnOrInheritedGetMethod, but it - should only ever look at the overridden event in error scenarios. - - - - - If the event has a RemoveMethod, return that. Otherwise check the overridden - event, if any. Repeat for each overridden event. - - - This method exists to mimic the behavior of GetOwnOrInheritedSetMethod, but it - should only ever look at the overridden event in error scenarios. - - - - - Does the compilation this symbol belongs to output to a winmdobj? - - - - - - - Returns a constructed named type symbol if 'type' is generic, otherwise just returns 'type' - - - - - Returns true if the members of superType are accessible from subType due to inheritance. - - - - - The immediately containing namespace or named type, or null - if the containing symbol is neither a namespace or named type. - - - - - Returns true if all type parameter references within the given - type belong to containingSymbol or its containing types. - - - - - Returns true if all type parameter references within the given - types belong to containingSymbol or its containing types. - - - - - A MergedNamespaceSymbol represents a namespace that merges the contents of two or more other - namespaces. Any sub-namespaces with the same names are also merged if they have two or more - instances. - - Merged namespaces are used to merged the symbols from multiple metadata modules and the - source "module" into a single symbol tree that represents all the available symbols. The - compiler resolves names against this merged set of symbols. - - Typically there will not be very many merged namespaces in a Compilation: only the root - namespaces and namespaces that are used in multiple referenced modules. (Microsoft, System, - System.Xml, System.Diagnostics, System.Threading, ...) - - - - - Create a possibly merged namespace symbol. If only a single namespace is passed it, it - is just returned directly. If two or more namespaces are passed in, then a new merged - namespace is created with the given extent and container. - - The namespace extent to use, IF a merged namespace is created. - The containing namespace to used, IF a merged - namespace is created. - One or more namespaces to merged. If just one, then it - is returned. The merged namespace symbol may hold onto the array. - An optional name to give the resulting namespace. - A namespace symbol representing the merged namespace. - - - - Method that is called from the CachingLookup to lookup the children of a given name. - Looks in all the constituent namespaces. - - - - - Method that is called from the CachingLookup to get all child names. Looks in all - constituent namespaces. - - - - - Represents source or metadata assembly. - - - - - - An array of cached Cor types defined in this assembly. - Lazily filled by GetSpecialType method. - - - - - - How many Cor types have we cached so far. - - - - - Lookup declaration for predefined CorLib type in this Assembly. - - - - - - - - Register declaration of predefined CorLib type in this Assembly. - - - - - - Continue looking for declaration of predefined CorLib type in this Assembly - while symbols for new type declarations are constructed. - - - - - Not yet known value is represented by ErrorTypeSymbol.UnknownResultType - - - - - Lookup member declaration in predefined CorLib type in this Assembly. Only valid if this - assembly is the Cor Library - - - - - Determine whether this assembly has been granted access to . - Assumes that the public key has been determined. The result will be cached. - - - - - - - - If the extension method is applicable based on the "this" argument type, return - the method constructed with the inferred type arguments. If the method is not an - unconstructed generic method, type inference is skipped. If the method is not - applicable, or if constraints when inferring type parameters from the "this" type - are not satisfied, the return value is null. - - - - - The runtime considers a method to be a finalizer (i.e. a method that should be invoked - by the garbage collector) if it (directly or indirectly) overrides System.Object.Finalize. - - - As an optimization, return true immediately for metadata methods with MethodKind - Destructor - they are guaranteed to be finalizers. - - Method to inspect. - This method is used to determine the method kind of - a PEMethodSymbol, so we may need to avoid using MethodKind until we move on to a different - MethodSymbol. - - - - Returns a constructed method symbol if 'method' is generic, otherwise just returns 'method' - - - - - Some kinds of methods are not considered to be hideable by certain kinds of members. - Specifically, methods, properties, and types cannot hide constructors, destructors, - operators, conversions, or accessors. - - - - - Some kinds of methods are never considered hidden by methods, properties, or types - (constructors, destructors, operators, conversions, and accessors). - - - - - Returns whether this method is async and returns void. - - - - - Returns whether this method is async and returns a task. - - - - - Returns whether this method is async and returns a generic task. - - - - - A is a special kind of that represents - an assembly that couldn't be found. - - - - - AssemblySymbol to represent missing, for whatever reason, CorLibrary. - The symbol is created by ReferenceManager on as needed basis and is shared by all compilations - with missing CorLibraries. - - - - - An array of cached Cor types defined in this assembly. - Lazily filled by GetDeclaredSpecialType method. - - - - - - Lookup declaration for predefined CorLib type in this Assembly. Only should be - called if it is know that this is the Cor Library (mscorlib). - - - - - - A is a special kind of that represents - a type symbol that was attempted to be read from metadata, but couldn't be - found, because: - a) The metadata file it lives in wasn't referenced - b) The metadata file was referenced, but didn't contain the type - c) The metadata file was referenced, contained the correct outer type, but - didn't contains a nested type in that outer type. - - - - - Get the arity of the missing type. - - - - - Represents not nested missing type. - - - - - Either , , or -1 if not initialized. - - - - - This is the FULL namespace name (e.g., "System.Collections.Generic") - of the type that couldn't be found. - - - - - Represents nested missing type. - - - - - A is a special kind of that represents - a module that couldn't be found. - - - - - A is a special kind of that represents - a namespace that couldn't be found. - - - - - Represents a module within an assembly. Every assembly contains one or more modules. - - - - - Returns a NamespaceSymbol representing the global (root) namespace, with - module extent, that can be used to browse all of the symbols defined in this module. - - - - - Returns the containing assembly. Modules are always directly contained by an assembly, - so this property always returns the same as ContainingSymbol. - - - - - Returns value 'NetModule' of the - - - - - Module's ordinal within containing assembly's Modules array. - 0 - for a source module, etc. - -1 - for a module that doesn't have containing assembly, or has it, but is not part of Modules array. - - - - - Target architecture of the machine. - - - - - Indicates that this PE file makes Win32 calls. See CorPEKind.pe32BitRequired for more information (http://msdn.microsoft.com/en-us/library/ms230275.aspx). - - - - - Does this symbol represent a missing module. - - - - - Returns 'NotApplicable' - - - - - Returns false because module can't be declared as 'static'. - - - - - Returns false because module can't be virtual. - - - - - Returns false because module can't be overridden. - - - - - Returns false because module can't be abstract. - - - - - Returns false because module can't be sealed. - - - - - Returns false because module can't be defined externally. - - - - - Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. - This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. - - - - - Returns an array of assembly identities for assemblies referenced by this module. - Items at the same position from ReferencedAssemblies and from ReferencedAssemblySymbols - correspond to each other. - - - - - Returns an array of assembly identities for assemblies referenced by this module. - Items at the same position from GetReferencedAssemblies and from GetReferencedAssemblySymbols - should correspond to each other. - - The array and its content is provided by ReferenceManager and must not be modified. - - - - - - Returns an array of AssemblySymbol objects corresponding to assemblies referenced - by this module. Items at the same position from ReferencedAssemblies and - from ReferencedAssemblySymbols correspond to each other. - - - - - Returns an array of AssemblySymbol objects corresponding to assemblies referenced - by this module. Items at the same position from GetReferencedAssemblies and - from GetReferencedAssemblySymbols should correspond to each other. If reference is - not resolved by compiler, GetReferencedAssemblySymbols returns MissingAssemblySymbol in the - corresponding item. - - The array and its content is provided by ReferenceManager and must not be modified. - - - - - A helper method for ReferenceManager to set assembly identities for assemblies - referenced by this module and corresponding AssemblySymbols. - - A description of the assemblies referenced by this module. - - Source assembly that triggered creation of this module symbol. - For debug purposes only, this assembly symbol should not be persisted within - this module symbol because the module can be shared across multiple source - assemblies. This method will only be called for the first one. - - - - - True if this module has any unified references. - - - - - Returns a unification use-site error (if any) for a symbol contained in this module - that is referring to a specified . - - - If an assembly referenced by this module isn't exactly matching any reference given to compilation - the Assembly Manager might decide to use another reference if it matches except for version - (it unifies the version with the existing reference). - - - - - Lookup a top level type referenced from metadata, names should be - compared case-sensitively. - - - Full type name, possibly with generic name mangling. - - - Symbol for the type, or MissingMetadataSymbol if the type isn't found. - - - - - - Returns true if there is any applied CompilationRelaxationsAttribute assembly attribute for this module. - - - - - Returns true if there is any applied RuntimeCompatibilityAttribute assembly attribute for this module. - - - - - Default char set for contained types, or null if not specified. - - - - - Given a namespace symbol, returns the corresponding module specific namespace symbol - - - - - Utility class for substituting actual type arguments for formal generic type parameters. - - - - - A NamespaceExtent represents whether a namespace contains types and sub-namespaces from a - particular module, assembly, or merged across all modules (source and metadata) in a - particular compilation. - - - - - Returns what kind of extent: Module, Assembly, or Compilation. - - - - - If the Kind is ExtendKind.Module, returns the module symbol that this namespace - encompasses. Otherwise throws InvalidOperationException. - - - - - If the Kind is ExtendKind.Assembly, returns the assembly symbol that this namespace - encompasses. Otherwise throws InvalidOperationException. - - - - - If the Kind is ExtendKind.Compilation, returns the compilation symbol that this - namespace encompasses. Otherwise throws InvalidOperationException. - - - - - Create a NamespaceExtent that represents a given ModuleSymbol. - - - - - Create a NamespaceExtent that represents a given AssemblySymbol. - - - - - Create a NamespaceExtent that represents a given Compilation. - - - - - Represents either a namespace or a type. - - - - - Returns true if this symbol is a namespace. If it is not a namespace, it must be a type. - - - - - Returns true if this symbols is a type. Equivalent to !IsNamespace. - - - - - Returns true if this symbol is "virtual", has an implementation, and does not override a - base class member; i.e., declared with the "virtual" modifier. Does not return true for - members declared as abstract or override. - - - Always returns false. - - - - - Returns true if this symbol was declared to override a base class member; i.e., declared - with the "override" modifier. Still returns true if member was declared to override - something, but (erroneously) no member to override exists. - - - Always returns false. - - - - - Returns true if this symbol has external implementation; i.e., declared with the - "extern" modifier. - - - Always returns false. - - - - - Get all the members of this symbol. - - An ImmutableArray containing all the members of this symbol. If this symbol has no members, - returns an empty ImmutableArray. Never returns null. - - - - Get all the members of this symbol. The members may not be in a particular order, and the order - may not be stable from call-to-call. - - An ImmutableArray containing all the members of this symbol. If this symbol has no members, - returns an empty ImmutableArray. Never returns null. - - - - Get all the members of this symbol that have a particular name. - - An ImmutableArray containing all the members of this symbol with the given name. If there are - no members with this name, returns an empty ImmutableArray. Never returns null. - - - - Get all the members of this symbol that are types. The members may not be in a particular order, and the order - may not be stable from call-to-call. - - An ImmutableArray containing all the types that are members of this symbol. If this symbol has no type members, - returns an empty ImmutableArray. Never returns null. - - - - Get all the members of this symbol that are types. - - An ImmutableArray containing all the types that are members of this symbol. If this symbol has no type members, - returns an empty ImmutableArray. Never returns null. - - - - Get all the members of this symbol that are types that have a particular name, of any arity. - - An ImmutableArray containing all the types that are members of this symbol with the given name. - If this symbol has no type members with this name, - returns an empty ImmutableArray. Never returns null. - - - - Get all the members of this symbol that are types that have a particular name and arity - - An IEnumerable containing all the types that are members of this symbol with the given name and arity. - If this symbol has no type members with this name and arity, - returns an empty IEnumerable. Never returns null. - - - - Get a source type symbol for the given declaration syntax. - - Null if there is no matching declaration. - - - - Get a source type symbol for the given declaration syntax. - - Null if there is no matching declaration. - - - - Get a source type symbol of given name, arity and kind. If a tree and syntax are provided, restrict the results - to those that are declared within the given syntax. - - Null if there is no matching declaration. - - - - Lookup an immediately nested type referenced from metadata, names should be - compared case-sensitively. - - - Simple type name, possibly with generic name mangling. - - - Symbol for the type, or MissingMetadataSymbol if the type isn't found. - - - - - Finds types or namespaces described by a qualified name. - - Sequence of simple plain names. - - A set of namespace or type symbols with given qualified name (might comprise of types with multiple generic arities), - or an empty set if the member can't be found (the qualified name is ambiguous or the symbol doesn't exist). - - - "C.D" matches C.D, C{T}.D, C{S,T}.D{U}, etc. - - - - - A is a special kind of that represents - an assembly that is not missing, i.e. the "real" thing. - - - - - This is a cache similar to the one used by MetaImport::GetTypeByName - in native compiler. The difference is that native compiler pre-populates - the cache when it loads types. Here we are populating the cache only - with things we looked for, so that next time we are looking for the same - thing, the lookup is fast. This cache also takes care of TypeForwarders. - Gives about 8% win on subsequent lookups in some scenarios. - - - - - - Does this symbol represent a missing assembly. - - - - - Gets the merged root namespace that contains all namespaces and types defined in the modules - of this assembly. If there is just one module in this assembly, this property just returns the - GlobalNamespace of that module. - - - - - Lookup a top level type referenced from metadata, names should be - compared case-sensitively. Detect cycles during lookup. - - - Full type name, possibly with generic name mangling. - - - List of assemblies lookup has already visited (since type forwarding can introduce cycles). - - - Take forwarded types into account. - - - - - For test purposes only. - - - - - For test purposes only. - - - - - A is a special kind of that represents - a module that is not missing, i.e. the "real" thing. - - - - - An array of objects corresponding to assemblies directly referenced by this module. - - - The contents are provided by ReferenceManager and may not be modified. - - - - - Does this symbol represent a missing module. - - - - - Returns an array of assembly identities for assemblies referenced by this module. - Items at the same position from GetReferencedAssemblies and from GetReferencedAssemblySymbols - should correspond to each other. - - - - - Returns an array of AssemblySymbol objects corresponding to assemblies referenced - by this module. Items at the same position from GetReferencedAssemblies and - from GetReferencedAssemblySymbols should correspond to each other. If reference is - not resolved by compiler, GetReferencedAssemblySymbols returns MissingAssemblySymbol in the - corresponding item. - - - - - A helper method for ReferenceManager to set assembly identities for assemblies - referenced by this module and corresponding AssemblySymbols. - - - - - Lookup a top level type referenced from metadata, names should be - compared case-sensitively. - - - Full type name, possibly with generic name mangling. - - - Symbol for the type, or MissingMetadataSymbol if the type isn't found. - - - - - - A NoPiaAmbiguousCanonicalTypeSymbol is a special kind of ErrorSymbol that represents a NoPia - embedded type symbol that was attempted to be substituted with canonical type, but the - canonical type was ambiguous. - - - - - A NoPiaIllegalGenericInstantiationSymbol is a special kind of ErrorSymbol that represents a - generic type instantiation that cannot cross assembly boundaries according to NoPia rules. - - - - - A NoPiaMissingCanonicalTypeSymbol is a special kind of ErrorSymbol that represents a NoPia - embedded type symbol that was attempted to be substituted with canonical type, but the - canonical type couldn't be found. - - - - - Initialize the ObsoleteAttributeData by fetching attributes and decoding ObsoleteAttributeData. This can be - done for Metadata symbol easily whereas trying to do this for source symbols could result in cycles. - - - - - Get the ObsoleteAttributeData by fetching attributes and decoding ObsoleteAttributeData. This can be - done for Metadata symbol easily whereas trying to do this for source symbols could result in cycles. - - - - - This method checks to see if the given symbol is Obsolete or if any symbol in the parent hierarchy is Obsolete. - - - True if some symbol in the parent hierarchy is known to be Obsolete. Unknown if any - symbol's Obsoleteness is Unknown. False, if we are certain that no symbol in the parent - hierarchy is Obsolete. - - - - - Create a diagnostic for the given symbol. This could be an error or a warning based on - the ObsoleteAttribute's arguments. - - - - - Encapsulates the MakeOverriddenOrHiddenMembers functionality for methods, properties (including indexers), - and events. - - - - - Walk up the type hierarchy from ContainingType and list members that this - member either overrides (accessible members with the same signature, if this - member is declared "override") or hides (accessible members with the same name - but different kinds, plus members that would be in the overrides list if - this member were not declared "override"). - - Members in the overridden list may be non-virtual or may have different - accessibilities, types, accessors, etc. They are really candidates to be - overridden. - - Members in the hidden list are definitely hidden. - - Members in the runtime overridden list are indistinguishable from the members - in the overridden list from the point of view of the runtime (see - FindOtherOverriddenMethodsInContainingType for details). - - - In the presence of non-C# types, the meaning of "same signature" is rather - complicated. If this member isn't from source, then it refers to the runtime's - notion of signature (i.e. including return type, custom modifiers, etc). - If this member is from source, then the process is (conceptually) as follows. - - 1) Walk up the type hierarchy, recording all matching members with the same - signature, ignoring custom modifiers and return type. Stop if a hidden - member is encountered. - 2) Apply the following "tie-breaker" rules until you have at most one member, - a) Prefer members in more derived types. - b) Prefer an exact custom modifier match (i.e. none, for a source member). - c) Prefer fewer custom modifiers (values/positions don't matter, just count). - d) Prefer earlier in GetMembers order (within the same type). - 3) If a member remains, search its containing type for other members that - have the same C# signature (overridden members) or runtime signature - (runtime overridden members). - - In metadata, properties participate in overriding only through their accessors. - That is, property/event accessors may implicitly or explicitly override other methods - and a property/event can be considered to override another property/event if its accessors - override those of the other property/event. - This implementation (like Dev10) will not follow that approach. Instead, it is - based on spec section 10.7.5, which treats properties as entities in their own - right. If all property/event accessors have conventional names in metadata and nothing - "unusual" is done with explicit overriding, this approach should produce the same - results as an implementation based on accessor overriding. - - - - - In the CLI, accessors are just regular methods and their overriding/hiding rules are the same as for - regular methods. In C#, however, accessors are intimately connected with their corresponding properties. - Rather than walking up the type hierarchy from the containing type of this accessor, looking for members - with the same name, MakePropertyAccessorOverriddenOrHiddenMembers delegates to the associated property. - For an accessor to hide a member, the hidden member must be a corresponding accessor on a property hidden - by the associated property. For an accessor to override a member, the overridden member must be a - corresponding accessor on a property (directly or indirectly) overridden by the associated property. - - Example 1: - - public class A { public virtual int P { get; set; } } - public class B : A { public override int P { get { return 1; } } } //get only - public class C : B { public override int P { set { } } } // set only - - C.P.set overrides A.P.set because C.P.set is the setter of C.P, which overrides B.P, - which overrides A.P, which has A.P.set as a setter. - - Example 2: - - public class A { public virtual int P { get; set; } } - public class B : A { public new virtual int P { get { return 1; } } } //get only - public class C : B { public override int P { set { } } } // set only - - C.P.set does not override any method because C.P overrides B.P, which has no setter - and does not override a property. - - This accessor. - The property associated with this accessor. - Members overridden or hidden by this accessor. - - This method is intended to return values consistent with the definition of C#, which - may differ from the actual meaning at runtime. - - Note: we don't need a different path for interfaces - Property.OverriddenOrHiddenMembers handles that. - - - - - In the CLI, accessors are just regular methods and their overriding/hiding rules are the same as for - regular methods. In C#, however, accessors are intimately connected with their corresponding events. - Rather than walking up the type hierarchy from the containing type of this accessor, looking for members - with the same name, MakeEventAccessorOverriddenOrHiddenMembers delegates to the associated event. - For an accessor to hide a member, the hidden member must be a corresponding accessor on a event hidden - by the associated event. For an accessor to override a member, the overridden member must be a - corresponding accessor on a event (directly or indirectly) overridden by the associated event. - - This accessor. - The event associated with this accessor. - Members overridden or hidden by this accessor. - - This method is intended to return values consistent with the definition of C#, which - may differ from the actual meaning at runtime. - - Note: we don't need a different path for interfaces - Event.OverriddenOrHiddenMembers handles that. - - CONSIDER: It is an error for an event to have only one accessor. Currently, we mimic the behavior for - properties, for consistency, but an alternative approach would be to say that nothing is overridden. - - CONSIDER: is there a way to share code with MakePropertyAccessorOverriddenOrHiddenMembers? - - - - - There are two key reasons why interface overriding/hiding is different from class overriding/hiding: - 1) interface members never override other members; and - 2) interfaces can extend multiple interfaces. - The first difference doesn't require any special handling - as long as the members have IsOverride=false, - the code for class overriding/hiding does the right thing. - The second difference is more problematic. For one thing, an interface member can hide a different member in - each base interface. We only report the first one, but we need to expose all of them in the API. More importantly, - multiple inheritance raises the possibility of diamond inheritance. Spec section 13.2.5, Interface member access, - says: "The intuitive rule for hiding in multiple-inheritance interfaces is simply this: If a member is hidden in any - access path, it is hidden in all access paths." For example, consider the following interfaces: - - interface I0 { void M(); } - interface I1 : I0 { void M(); } - interface I2 : I0, I1 { void M(); } - - I2.M does not hide I0.M, because it is already hidden by I1.M. To make this work, we need to traverse the graph - of ancestor interfaces in topological order and flag ones later in the enumeration that are hidden along some path. - - - See SymbolPreparer::checkIfaceHiding. - - - - - Look for overridden or hidden members in a specific type. - - Member that is hiding or overriding. - True if member is from the current compilation. - The type that contains member (member.ContainingType). - The type to search. - - A member with the same signature if currTypeHasExactMatch is true, - a member with (a minimal number of) different custom modifiers if there is one, - and null otherwise. - True if there's a member with the same name and kind that is not a match. - Hidden members (same name, different kind) will be added to this builder. - - There is some similarity between this member and TypeSymbol.FindPotentialImplicitImplementationMethodDeclaredInType. - When making changes to this member, think about whether or not they should also be applied in TypeSymbol. - - In incorrect or imported code, it is possible that both currTypeBestMatch and hiddenBuilder will be populated. - - - - - If representative member is non-null and is contained in a constructed type, then find - other members in the same type with the same signature. If this is an override member, - add them to the overridden and runtime overridden lists. Otherwise, add them to the - hidden list. - - - - - Some kinds of methods are not considered to be hideable by certain kinds of members. - Specifically, methods, properties, and types cannot hide constructors, destructors, - operators, conversions, or accessors. - - - - - Having found the best member to override, we want to find members with the same signature on the - best member's containing type. - - - The member that we consider to be overridden (may have different custom modifiers from the overriding member). - Assumed to already be in the overridden and runtime overridden lists. - - - If the best match was based on the custom modifier count, rather than the custom modifiers themselves - (because the overriding member is in the current compilation), then we should use the count when determining - whether the override is ambiguous. - - - If the declaring type is constructed, it's possible that two (or more) members have the same signature - (including custom modifiers). Return a list of such members so that we can report the ambiguity. - - - If the declaring type is constructed, it's possible that two (or more) members have the same signature - (including custom modifiers) in metadata (no ref/out distinction). Return a list of such members so - that we can report the ambiguity. - - Even in a non-generic type, it's possible for two indexers to have the same signature. For example, - this would be the case if the default member of a type is "get_Item" and indexers "A" and "B", - with the same signature, both have an indexer called "get_Item". - - From: SymbolPreparer.cpp - DevDiv Bugs 115384: Both out and ref parameters are implemented as references. In addition, out parameters are - decorated with OutAttribute. In CLR when a signature is looked up in virtual dispatch, CLR does not distinguish - between these to parameter types. The choice is the last method in the vtable. Therefore we check and warn if - there would potentially be a mismatch in CLRs and C#s choice of the overridden method. Unfortunately we have no - way of communicating to CLR which method is the overridden one. We only run into this problem when the - parameters are generic. - - - - - Having found that we are hiding a method with exactly the same signature - (including custom modifiers), we want to find methods with the same signature - on the declaring type because they will also be hidden. - (If the declaring type is constructed, it's possible that two or more - methods have the same signature (including custom modifiers).) - (If the representative member is an indexer, it's possible that two or more - properties have the same signature (including custom modifiers, even in a - non-generic type). - - - This kind of the hiding member. - - - The member that we consider to be hidden (must have exactly the same custom modifiers as the hiding member). - Assumed to already be in hiddenBuilder. - - - Will have all other members with the same signature (including custom modifiers) as - representativeMember added. - - - - - Given a method, find a method that it overrides from the perspective of the CLI. - Key differences from C#: non-virtual methods are ignored, the RuntimeSignatureComparer - is used (i.e. consider return types, ignore ref/out distinction). - - - WARN: Must not check method.MethodKind - PEMethodSymbol.ComputeMethodKind uses this method. - NOTE: Does not check whether the given method will be marked "newslot" in metadata (which - would indicate that it does not override anything). - WARN: If the method may override a source method and declaration diagnostics have yet to - be computed, then it is important to pass ignoreInterfaceImplementationChanges: true - (see MethodSymbol.IsMetadataVirtual for details). - - - - - Note that the access check is done using the original definitions. This is because we want to avoid - reductions in accessibility that result from type argument substitution (e.g. if an inaccessible type - has been passed as a type argument). - See DevDiv #11967 for an example. - - - - - Groups the information computed by MakeOverriddenOrHiddenMembers. - - - - - It is not suitable to call this method on a object - associated with a member within substituted type, - should be used instead. - - - - - Represents a preprocessing conditional compilation symbol. - - - - - Helper methods that exist to share code between properties and events. - - - - - If the property has a GetMethod, return that. Otherwise check the overridden - property, if any. Repeat for each overridden property. - - - - - If the property has a SetMethod, return that. Otherwise check the overridden - property, if any. Repeat for each overridden property. - - - - - A RangeVariableSymbol represents an identifier introduced in a query expression as the - identifier of a "from" clause, an "into" query continuation, a "let" clause, or a "join" clause. - - - - - Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. - This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. - - - - - An extension method with the "this" parameter removed. - Used for the public binding API only, not for compilation. - - - - - Return the extension method in reduced form if the extension method - is applicable, and satisfies type parameter constraints, based on the - "this" argument type. Otherwise, returns null. - - - - - A representation of a method symbol that is intended only to be used for comparison purposes - (esp in MethodSignatureComparer). - - - - - Intended to be used to create ParameterSymbols for a SignatureOnlyMethodSymbol. - - - - - A representation of a property symbol that is intended only to be used for comparison purposes - (esp in PropertySignatureComparer). - - - - - Generate a list containing the given field and all dependencies - of that field that require evaluation. The list is ordered by - dependencies, with fields with no dependencies first. Cycles are - broken at the first field lexically in the cycle. If multiple threads - call this method with the same field, the order of the fields - returned should be the same, although some fields may be missing - from the lists in some threads as other threads evaluate fields. - - - - - The set of fields on which the field depends. - - - - - The set of fields that depend on the field. - - - - - Build a dependency graph (a map from - field to dependencies). - - - - - Return an ordering of the compilations referenced in the graph. - The actual ordering is not important, but we need some ordering - to compare source locations across different compilations. - - - - - Return one member from one cycle in the graph. - (There must be at least one cycle. In fact, there - shouldn't be any fields without dependencies.) - - - - - Type parameters in documentation comments are complicated since they sort of act as declarations, - rather than references. Consider the following example: - - See . - class B { void M(T t) { } } - ]]> - - We make some key observations: - 1) The type parameter name in the cref is not tied to the type parameter name in the type declaration. - 2) A relationship exists between the two occurrences of "U" in the cref: they both refer to (or define) - the same symbol. - - In Roslyn, we've decided on the following representation: within the (entire) scope of a cref, the names - of all type parameters "declared" in the cref are in scope and bind to the corresponding type parameters. - This representation has one major advantage: as long as the appropriate binder (i.e. the one that knows - about the implicitly-declared type parameters) is used, TypeSyntaxes within the cref can be bound by - calling BindType. In addition to eliminating the necessity for custom binding code in the batch case, - this reduces the problem of exposing such nodes in the SemanticModel to one of ensuring that the right - enclosing binder is chosen. That is, new code will have to be written to handle CrefSyntaxes, but the - existing code for TypeSyntaxes should just work! - - In the example above, this means that, between the cref quotation marks, the name "U" binds to an - implicitly declared type parameter, whether it is in "B{U}", "M{U}", or "M{List{U[]}}". - - Of course, it's not all gravy. One thing we're giving up by using this representation is the ability to - distinguish between "declared" type parameters with the same name. Consider the following example: - - See . - class A - { - void M(T t) { } - void M(U u) { } - } - ]]> - - - The native compiler interprets this in the same way as it would interpret A{T1, T2}.M(T2) and unambiguously - (i.e. without a warning) binds to A{T, U}.M(U). Since Roslyn does not distinguish between the T's, Roslyn - reports an ambiguity warning and picks the first method. Furthermore, renaming one 'T' will rename all of - them. - - This class represents such an implicitly declared type parameter. The declaring syntax is expected to be - an IdentifierNameSyntax in the type argument list of a QualifiedNameSyntax. - - - - Out params are updated by assignment. If you require thread-safety, pass temps and then - CompareExchange them back into shared memory. - - - - Type that already has custom modifiers. - Same as , but without custom modifiers. May differ in object/dynamic. - of the parameter of which this is the type (or for a return type. - The assembly containing the signature referring to the destination type. - with custom modifiers copied from . - - - - Given a member, look for other members contained in the same type with signatures that will - not be distinguishable by the runtime. - - - - - Implemented by symbols that can be targetted by an attribute declaration (i.e. source symbols). - - - - - Returns the owner of attributes that apply to this symbol. - - - Attributes for this symbol might be retrieved from attribute list of another (owning) symbol. - In that case this property returns that owning symbol, otherwise it returns "this". - - - - - Returns a bit set of attribute locations applicable to this symbol. - - - - - Attribute location corresponding to this symbol. - - - Location of an attribute if an explicit location is not specified via attribute target specification syntax. - - - - - Represents implicit, script and submission classes. - - - - - Indexed type parameters are used in place of type parameters for method signatures. There is - a unique mapping from index to a single IndexedTypeParameterSymbol. - - They don't have a containing symbol or locations. - - They do not have constraints, variance, or attributes. - - - - - Create a vector of n dummy type parameters. Always reuses the same type parameter symbol - for the same position. - - - - - - - Represents an assembly built by compiler. - - - - - A Compilation the assembly is created for. - - - - - Assembly's identity. - - - - - A list of modules the assembly consists of. - The first (index=0) module is a SourceModuleSymbol, which is a primary module, the rest are net-modules. - - - - - Bag of assembly's custom attributes and decoded well-known attribute data from source. - - - - - Bag of assembly's custom attributes and decoded well-known attribute data from added netmodules. - - - - - Indices of attributes that will not be emitted for one of two reasons: - - They are duplicates of another attribute (i.e. attributes that bind to the same constructor and have identical arguments) - - They are InternalsVisibleToAttributes with invalid assembly identities - - - These indices correspond to the merged assembly attributes from source and added net modules, i.e. attributes returned by method. - - - - - Map for storing effectively private or effectively internal fields declared in this assembly but never initialized nor assigned. - Each {symbol, bool} key-value pair in this map indicates the following: - (a) Key: Unassigned field symbol. - (b) Value: True if the unassigned field is effectively internal, false otherwise. - - - - - private fields declared in this assembly but never read - - - - - We imitate the native compiler's policy of not warning about unused fields - when the enclosing type is used by an extern method for a ref argument. - Here we keep track of those types. - - - - - The warnings for unused fields. - - - - - This override is essential - it's a base case of the recursive definition. - - - - - This represents what the user claimed in source through the AssemblyFlagsAttribute. - It may be modified as emitted due to presence or absence of the public key. - - - - - We're going to synthesize some well-known attributes for this assembly symbol. However, at synthesis time, it is - too late to report diagnostics or cancel the emit. Instead, we check for use site errors on the types and members - we know we'll need at synthesis time. - - - As in Dev10, we won't report anything if the attribute TYPES are missing (note: missing, not erroneous) because we won't - synthesize anything in that case. We'll only report diagnostics if the attribute TYPES are present and either they or - the attribute CONSTRUCTORS have errors. - - - - - If this compilation allows unsafe code (note: allows, not contains), then when we actually emit the assembly/module, - we're going to synthesize SecurityPermissionAttribute/UnverifiableCodeAttribute. However, at synthesis time, it is - too late to report diagnostics or cancel the emit. Instead, we check for use site errors on the types and members - we know we'll need at synthesis time. - - - As in Dev10, we won't report anything if the attribute TYPES are missing (note: missing, not erroneous) because we won't - synthesize anything in that case. We'll only report diagnostics if the attribute TYPES are present and either they or - the attribute CONSTRUCTORS have errors. - - - - - True if internals are exposed at all. - - - Forces binding and decoding of attributes. - This property shouldn't be accessed during binding as it can lead to attribute binding cycle. - - - - - Gets unique source assembly attributes that should be emitted, - i.e. filters out attributes with errors and duplicate attributes. - - - - - Returns a bag of applied custom attributes and data decoded from well-known attributes. Returns null if there are no attributes applied on the symbol. - - - Forces binding and decoding of attributes. - - - - - Gets the attributes applied on this symbol. - Returns an empty array if there are no attributes. - - - NOTE: This method should always be kept as a sealed override. - If you want to override attribute binding logic for a sub-class, then override method. - - - - - Returns true if the assembly attribute at the given index is a duplicate assembly attribute that must not be emitted. - Duplicate assembly attributes are attributes that bind to the same constructor and have identical arguments. - - - This method must be invoked only after all the assembly attributes have been bound. - - - - - Returns data decoded from source assembly attributes or null if there are none. - - - Forces binding and decoding of attributes. - TODO: We should replace methods GetSourceDecodedWellKnownAttributeData and GetNetModuleDecodedWellKnownAttributeData with - a single method GetDecodedWellKnownAttributeData, which merges DecodedWellKnownAttributeData from source and netmodule attributes. - - - - - Returns true if and only if at least one type within the assembly contains - extension methods. Note, this method is expensive since it potentially - inspects all types within the assembly. The expectation is that this method is - only called at emit time, when all types have been or will be traversed anyway. - - - - - Get the warnings for unused fields. This should only be fetched when all method bodies have been compiled. - - - - - Represents a source parameter cloned from another , when they must share attribute data and default constant value. - For example, parameters on a property symbol are cloned to generate parameters on accessors. - Similarly parameters on delegate invoke method are cloned to delegate begin/end invoke methods. - - - - - A source parameter, potentially with a default value, attributes, etc. - - - - - Symbol to copy bound attributes from, or null if the attributes are not shared among multiple source parameter symbols. - - - Used for parameters of partial implementation. We bind the attributes only on the definition - part and copy them over to the implementation. - - - - - Gets the syntax list of custom attributes that declares attributes for this parameter symbol. - - - - - Returns data decoded from well-known attributes applied to the symbol or null if there are no applied attributes. - - - Forces binding and decoding of attributes. - - - - - Returns data decoded from special early bound well-known attributes applied to the symbol or null if there are no applied attributes. - - - Forces binding and decoding of attributes. - - - - - Returns a bag of applied custom attributes and data decoded from well-known attributes. Returns null if there are no attributes applied on the symbol. - - - Forces binding and decoding of attributes. - - - - - Verify the default value matches the default value from any earlier attribute - (DefaultParameterValueAttribute, DateTimeConstantAttribute or DecimalConstantAttribute). - If not, report ERR_ParamDefaultValueDiffersFromAttribute. - - - - - Is the attribute syntax appearing on a parameter of a partial method implementation part? - Since attributes are merged between the parts of a partial, we need to look at the syntax where the - attribute appeared in the source to see if it corresponds to a partial method implementation part. - - - - - - - True if the parameter has default argument syntax. - - - - - True if the parameter is marked by . - - - - - This class represents an event accessor declared in source - (i.e. not one synthesized for a field-like event). - - - The accessors are associated with . - - - - - This class represents an event declared in source with explicit accessors - (i.e. not a field-like event). - - - - - Represents a constant field of an enum. - - - - - Base class for event accessors - synthesized and user defined. - - - - - A delegate field associated with a . - - - SourceFieldSymbol takes care of the initializer (plus "var" in the interactive case). - - - - - This class represents an event declared in source. It may be either - field-like (see ) or property-like (see - ). - - - - - Gets the syntax list of custom attributes applied on the event symbol. - - - - - Returns a bag of applied custom attributes and data decoded from well-known attributes. Returns null if there are no attributes applied on the symbol. - - - Forces binding and decoding of attributes. - - - - - Gets the attributes applied on this symbol. - Returns an empty array if there are no attributes. - - - NOTE: This method should always be kept as a sealed override. - If you want to override attribute binding logic for a sub-class, then override method. - - - - - Returns data decoded from well-known attributes applied to the symbol or null if there are no applied attributes. - - - Forces binding and decoding of attributes. - - - - - Returns data decoded from special early bound well-known attributes applied to the symbol or null if there are no applied attributes. - - - Forces binding and decoding of attributes. - - - - - Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. - This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. - - - - - This class represents an event declared in source without explicit accessors. - It implicitly has thread safe accessors and an associated field (of the same - name), unless it does not have an initializer and is either extern or inside - an interface, in which case it only has accessors. - - - - - Backing field for field-like event. Will be null if the event - has no initializer and is either extern or inside an interface. - - - - - Gets the syntax list of custom attributes applied on the symbol. - - - - - Returns a bag of applied custom attributes and data decoded from well-known attributes. Returns null if there are no attributes applied on the symbol. - - - Forces binding and decoding of attributes. - - - - - Gets the attributes applied on this symbol. - Returns an empty array if there are no attributes. - - - NOTE: This method should always be kept as a sealed override. - If you want to override attribute binding logic for a sub-class, then override method. - - - - - Returns data decoded from well-known attributes applied to the symbol or null if there are no applied attributes. - - - Forces binding and decoding of attributes. - - - - - Returns data decoded from special early bound well-known attributes applied to the symbol or null if there are no applied attributes. - - - Forces binding and decoding of attributes. - - - - - Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. - This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. - - - - - Verify the constant value matches the default value from any earlier attribute - (DateTimeConstantAttribute or DecimalConstantAttribute). - If not, report ERR_FieldHasMultipleDistinctConstantValues. - - - - - Return the constant value dependencies. Compute the dependencies - if necessary by evaluating the constant value but only persist the - constant value if there were no dependencies. (If there are dependencies, - the constant value will be re-evaluated after evaluating dependencies.) - - - - - Switch case labels have a constant expression associated with them. - - - - - If the label is a switch case label, returns the associated constant value with - case expression, otherwise returns null. - - - - - Represents a local variable in a method body. - - - - - Might not be a method symbol. - - - - - There are three ways to initialize a fixed statement local: - 1) with an address; - 2) with an array (or fixed-size buffer); or - 3) with a string. - - In the first two cases, the resulting local will be emitted with a "pinned" modifier. - In the third case, it is not the fixed statement local but a synthesized temp that is pinned. - Unfortunately, we can't distinguish these cases when the local is declared; we only know - once we have bound the initializer. - - - CompareExchange doesn't support bool, so use an int. First bit is true/false, second bit - is read/unread (debug-only). - - - - - Gets the name of the local variable. - - - - - Gets the locations where the local symbol was originally defined in source. - There should not be local symbols from metadata, and there should be only one local variable declared. - TODO: check if there are multiple same name local variables - error symbol or local symbol? - - - - - Store the constant value and the corresponding diagnostics together - to avoid having the former set by one thread and the latter set by - another. - - - - - Determine the constant value of this local and the corresponding diagnostics. - Set both to constantTuple in a single operation for thread safety. - - Null for the initial call, non-null if we are in the process of evaluating a constant. - If we already have the bound node for the initial value, pass it in to avoid recomputing it. - - - - Represents a named type symbol whose members are declared in source. - - - - - Compute the "effective accessibility" of the current class for the purpose of warnings about unused fields. - - - - - Encapsulates information about the non-type members of a (i.e. this) type. - 1) For non-initializers, symbols are created and stored in a list. - 2) For fields and properties, the symbols are stored in (1) and their initializers are - stored with other initialized fields and properties from the same syntax tree with - the same static-ness. - 3) For indexers, syntax (weak) references are stored for later binding. - - - CONSIDER: most types won't have indexers, so we could move the indexer list - into a subclass to spare most instances the space required for the field. - - - - - Calculates a syntax offset of a syntax position that is contained in a property or field initializer (if it is in fact contained in one). - - - - - During early attribute decoding, we consider a safe subset of all members that will not - cause cyclic dependencies. Get all such members for this symbol. - - In particular, this method will return nested types and fields (other than auto-property - backing fields). - - - - - During early attribute decoding, we consider a safe subset of all members that will not - cause cyclic dependencies. Get all such members for this symbol that have a particular name. - - In particular, this method will return nested types and fields (other than auto-property - backing fields). - - - - - Merge (already ordered) non-type, non-indexer members with (already ordered) indexer members. - - - - - Fix up a partial method by combining its defining and implementing declarations, updating the array of symbols (by name), - and returning the combined symbol. - - The symbols array containing both the latent and implementing declaration - One of the two declarations - The other declaration - An updated symbols array containing only one method symbol representing the two parts - - - - Report an error if a member (other than a method) exists with the same name - as the property accessor, or if a method exists with the same name and signature. - - - - - Report an error if a member (other than a method) exists with the same name - as the event accessor, or if a method exists with the same name and signature. - - - - - Return the location of the accessor, or if no accessor, the location of the property. - - - - - Return the location of the accessor, or if no accessor, the location of the event. - - - - - Return true if the method parameters match the parameters of the - property accessor, including the value parameter for the setter. - - - - - Return true if the method parameters match the parameters of the - event accessor, including the value parameter. - - - - - In some circumstances (e.g. implicit implementation of an interface method by a non-virtual method in a - base type from another assembly) it is necessary for the compiler to generate explicit implementations for - some interface methods. They don't go in the symbol table, but if we are emitting, then we should - generate code for them. - - - - - It's not interesting to report diagnostics on implementation of interface accessors - if the corresponding events or properties are not implemented (i.e. we want to suppress - cascading diagnostics). - Caveat: Indexed property accessors are always interesting. - Caveat: It's also uninteresting if a WinRT event is implemented by a non-WinRT event, - or vice versa. - - - - - If necessary, report a diagnostic for a hidden abstract member. - - True if a diagnostic was reported. - - - - It is invalid for a type to directly (vs through a base class) implement two interfaces that - unify (i.e. are the same for some substitution of type parameters). - - - CONSIDER: check this while building up InterfacesAndTheirBaseInterfaces (only in the SourceNamedTypeSymbol case). - - - - - Though there is a method that C# considers to be an implementation of the interface method, that - method may not be considered an implementation by the CLR. In particular, implicit implementation - methods that are non-virtual or that have different (usually fewer) custom modifiers than the - interface method, will not be considered CLR overrides. To address this problem, we either make - them virtual (in metadata, not in C#), or we introduce an explicit interface implementation that - delegates to the implicit implementation. - - Returned from FindImplementationForInterfaceMemberWithDiagnostics. - The interface method or property that is being implemented. - Synthesized implementation or null if not needed. - - - - The CLR will only look for an implementation of an interface method in a type that - 1) declares that it implements that interface; or - 2) is a base class of a type that declares that it implements the interface but not - a subtype of a class that declares that it implements the interface. - - For example, - - interface I - class A - class B : A, I - class C : B - class D : C, I - - Suppose the runtime is looking for D's implementation of a member of I. It will look in - D because of (1), will not look in C, will look in B because of (1), and will look in A - because of (2). - - The key point is that it does not look in C, which C# *does*. - - - - - If C# picks a different implementation than the CLR (see IsPossibleImplementationUnderClrRules), then we might - still be okay, but dynamic dispatch might result in C#'s choice getting called anyway. - - - This is based on SymbolPreparer::IsCLRMethodImplSame in the native compiler. - - ACASEY: What the native compiler actually does is compute the C# answer, compute the CLR answer, - and then confirm that they override the same method. What I've done here is check for the situations - where the answers could disagree. I believe the results will be equivalent. If in doubt, a more conservative - check would be implementingMethod.ContainingType.InterfacesAndTheirBaseInterfaces.Contains(@interface). - - - - - A collection of type parameter constraints, populated when - constraints for the first type parameter is requested. - - - - - If this symbol represents a partial method definition or implementation part, its other part (if any). - This should be set, if at all, before this symbol appears among the members of its owner. - The implementation part is not listed among the "members" of the enclosing type. - - - - - A binder to use for binding generic constraints. The field is only non-null while the .ctor - is executing, and allows constraints to be bound before the method is added to the - containing type. (Until the method symbol has been added to the container, we cannot - get a binder for the method without triggering a recursive attempt to bind the method.) - - - - - If this is a partial implementation part returns the definition part and vice versa. - - - - - Returns true if this symbol represents a partial method definition (the part that specifies a signature but no body). - - - - - Returns true if this symbol represents a partial method implementation (the part that specifies both signature and body). - - - - - True if this is a partial method that doesn't have an implementation part. - - - - - Returns the implementation part of a partial method definition, - or null if this is not a partial method or it is the definition part. - - - - - Returns the definition part of a partial method implementation, - or null if this is not a partial method or it is the implementation part. - - - - - Report differences between the defining and implementing - parts of a partial method. Diagnostics are reported on the - implementing part, matching Dev10 behavior. - - - - - Returns true if the two partial methods have the same constraints. - - - - - Implementers should assume that a lock has been taken on MethodChecksLockObject. - In particular, it should not (generally) be necessary to use CompareExchange to - protect assignments to fields. - - - - - We can usually lock on the syntax reference of this method, but it turns - out that some synthesized methods (e.g. field-like event accessors) also - need to do method checks. This property allows such methods to supply - their own lock objects, so that we don't have to add a new field to every - SourceMethodSymbol. - - - - - Overridden by , - which might return locations of partial methods. - - - - - Symbol to copy bound attributes from, or null if the attributes are not shared among multiple source method symbols. - - - Used for example for event accessors. The "remove" method delegates attribute binding to the "add" method. - The bound attribute data are then applied to both accessors. - - - - - Gets the syntax list of custom attributes that declares attributes for this method symbol. - - - - - Gets the syntax list of custom attributes that declares attributes for return type of this method. - - - - - Returns data decoded from special early bound well-known attributes applied to the symbol or null if there are no applied attributes. - - - Forces binding and decoding of attributes. - - - - - Returns data decoded from well-known attributes applied to the symbol or null if there are no applied attributes. - - - Forces binding and decoding of attributes. - - - - - Returns information retrieved from custom attributes on return type in source, or null if the symbol is not source symbol or there are none. - - - Forces binding and decoding of attributes. - - - - - Returns a bag of applied custom attributes and data decoded from well-known attributes. Returns null if there are no attributes applied on the symbol. - - - Forces binding and decoding of attributes. - - - - - Returns a bag of custom attributes applied on the method return value and data decoded from well-known attributes. Returns null if there are no attributes. - - - Forces binding and decoding of attributes. - - - - - Gets the attributes applied on this symbol. - Returns an empty array if there are no attributes. - - - - - Gets the attributes applied on the return value of this method symbol. - Returns an empty array if there are no attributes. - - - - - Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. - This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. - - - - - Checks to see if a body is legal given the current modifiers. - If it is not, a diagnostic is added with the current type. - - - - - Returns true if the method body is an expression, as expressed - by the syntax. False - otherwise. - - - If the method has both block body and an expression body - present, this is not treated as expression-bodied. - - - - - Represents the primary module of an assembly being built by compiler. - - - - - Owning assembly. - - - - - The declarations corresponding to the source files of this module. - - - - - The name (contains extension) - - - - - This override is essential - it's a base case of the recursive definition. - - - - - Returns a bag of applied custom attributes and data decoded from well-known attributes. Returns null if there are no attributes applied on the symbol. - - - Forces binding and decoding of attributes. - - - - - Gets the attributes applied on this symbol. - Returns an empty array if there are no attributes. - - - NOTE: This method should always be kept as a sealed override. - If you want to override attribute binding logic for a sub-class, then override method. - - - - - Returns data decoded from well-known attributes applied to the symbol or null if there are no applied attributes. - - - Forces binding and decoding of attributes. - - - - - A collection of type parameter constraints, populated when - constraints for the first type parameter are requested. - - - - - Returns a bag of applied custom attributes and data decoded from well-known attributes. Returns null if there are no attributes applied on the symbol. - - - Forces binding and decoding of attributes. - - - - - Gets the attributes applied on this symbol. - Returns an empty array if there are no attributes. - - - - - Returns data decoded from well-known attributes applied to the symbol or null if there are no applied attributes. - - - Forces binding and decoding of attributes. - - - - - Returns data decoded from special early bound well-known attributes applied to the symbol or null if there are no applied attributes. - - - Forces binding and decoding of attributes. - - - - - Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. - This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. - - - - - These won't be returned by GetAttributes on source methods, but they - will be returned by GetAttributes on metadata symbols. - - - - - Gets the BaseType of this type. If the base type could not be determined, then - an instance of ErrorType is returned. If this kind of type does not have a base type - (for example, interfaces), null is returned. Also the special class System.Object - always has a BaseType of null. - - - - - Gets the set of interfaces that this type directly implements. This set does not include - interfaces that are base interfaces of directly implemented interfaces. - - - - - Returns true if the type cannot be used as an explicit base class. - - - - - For enum types, gets the underlying type. Returns null on all other - kinds of types. - - - - - For enum types, returns the synthesized instance field used - for generating metadata. Returns null for non-enum types. - - - - - Register COR types declared in this namespace, if any, in the COR types cache. - - - - - Base class for parameters can be referred to from source code. - - - These parameters can potentially be targetted by an attribute specified in source code. - As an optimization we distinguish simple parameters (no attributes, no modifiers, etc.) and complex parameters. - - - - - True if the parameter is marked by . - - - - - True if the parameter has default argument syntax. - - - - - Gets the attributes applied on this symbol. - Returns an empty array if there are no attributes. - - - NOTE: This method should always be kept as a sealed override. - If you want to override attribute binding logic for a sub-class, then override method. - - - - - Base class for all parameters that are emitted. - - - - - Return Accessibility declared locally on the accessor, or - NotApplicable if no accessibility was declared explicitly. - - - - - If we are outputting a .winmdobj then the setter name is put_, not set_. - - - - - or - - - - - Set in constructor, might be changed while decoding . - - - - - To facilitate lookup, all indexer symbols have the same name. - Check the MetadataName property to find the name that will be - emitted (based on IndexerNameAttribute, or the default "Item"). - - - - - Even though it is declared with an IndexerDeclarationSyntax, an explicit - interface implementation is not an indexer because it will not cause the - containing type to be emitted with a DefaultMemberAttribute (and even if - there is another indexer, the name of the explicit implementation won't - match). This is important for round-tripping. - - - - - Backing field for automatically implemented property, or - for a property with an initializer. - - - - - Return true if the accessor accessibility is more restrictive - than the property accessibility, otherwise false. - - - - - If this property is sealed, then we have to emit both accessors - regardless of whether - they are present in the source - so that they can be marked final. (i.e. sealed). - - - - - Only non-null for sealed properties without both accessors. - - - - - Returns a bag of applied custom attributes and data decoded from well-known attributes. Returns null if there are no attributes applied on the symbol. - - - Forces binding and decoding of attributes. - - - - - Gets the attributes applied on this symbol. - Returns an empty array if there are no attributes. - - - NOTE: This method should always be kept as a sealed override. - If you want to override attribute binding logic for a sub-class, then override method. - - - - - Returns data decoded from well-known attributes applied to the symbol or null if there are no applied attributes. - - - Forces binding and decoding of attributes. - - - - - Returns data decoded from special early bound well-known attributes applied to the symbol or null if there are no applied attributes. - - - Forces binding and decoding of attributes. - - - - - Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. - This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. - - - - - A source parameter that has no default value, no attributes, - and is not params. - - - - - Base class for type and method type parameters. - - - - - Gets the attributes applied on this symbol. - Returns an empty array if there are no attributes. - - - NOTE: This method should always be kept as a sealed override. - If you want to override attribute binding logic for a sub-class, then override method. - - - - - Check constraints of generic types referenced in constraint types. For instance, - with "interface I<T> where T : I<T> {}", check T satisfies constraints - on I<T>. Those constraints are not checked when binding ConstraintTypes - since ConstraintTypes has not been set on I<T> at that point. - - - - - A map shared by all type parameters for an overriding method or a method - that explicitly implements an interface. The map caches the overridden method - and a type map from overridden type parameters to overriding type parameters. - - - - - A type parameter for a method that either overrides a base - type method or explicitly implements an interface method. - - - Exists to copy constraints from the corresponding type parameter of an overridden method. - - - - - The type parameter to use for determining constraints. If there is a base - method that the owner method is overriding, the corresponding type - parameter on that method is used. Otherwise, the result is null. - - - - - Class to represent a synthesized attribute - - - - - A context for binding type parameter symbols. - - - - - A simple representation of a type parameter constraint clause - as a set of constraint bits and a set of constraint types. - - - - - Checks if a type is considered a "built-in integral" by CLR. - - - - - The type is one of the simple types defined in Dev10 C#, see "predeftype.h"/simple - - - - - Either a SubstitutedNestedTypeSymbol or a ConstructedNamedTypeSymbol, which share in common that they - have type parameters substituted. - - - - - This field keeps track of the s for which we already retrieved - diagnostics. We shouldn't return from ForceComplete (i.e. indicate that diagnostics are - available) until this is equal to , except that when completing - with a given position, we might not complete .Member*. - - Since completeParts is used as a flag indicating completion of other assignments - it must be volatile to ensure the read is not reordered/optimized to happen - before the writes. - - - - - Used to force (source) symbols to a given state of completion. - - The owning source symbol. - - - - Since this formula is rather opaque, a demonstration of its correctness is - provided in Roslyn.Compilers.CSharp.UnitTests.CompletionTests.TestHasAtMostOneBitSet. - - - - - Represents the compiler generated value parameter for property/event accessor. - This parameter has no source location/syntax, but may have attributes. - Attributes with 'param' target specifier on the accessor must be applied to the this parameter. - - - - - Represents a compiler generated backing field for an automatically implemented property. - - - - - A container synthesized for a lambda, iterator method, async method, or dynamic-sites. - - - - - Represents an interactive code entry point that is inserted into the compilation if there is not an existing one. - - - - - Represents __value field of an enum. - - - - - Event accessor that has been synthesized for a field-like event declared in source. - - - Associated with . - - - - - Represents a compiler generated field. - - - Represents a compiler generated field of given type and name. - - - - - Represents a compiler generated field. - - - - - Represents a compiler generated synthesized method symbol - that must be emitted in the compiler generated - PrivateImplementationDetails class - - - - - Synthesized methods that must be emitted in the compiler generated - PrivateImplementationDetails class have null containing type symbol. - - - - - A base class for synthesized methods that want a this parameter. - - - - - Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. - This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. - - - - - A synthesized local variable. - - - - - Represents a simple compiler generated parameter of a given type. - - - - - For each parameter of a source method, construct a corresponding synthesized parameter - for a destination method. - - Has parameters. - Needs parameters. - Synthesized parameters to add to destination method. - - - - A type parameter for a synthesized class or method. - - - - - Utility class for substituting actual type arguments for formal generic type parameters. - - - - - The effective "bounds" of a type parameter: the constraint types, effective - interface set, and effective base type, determined from the declared - constraints, with any cycles removed. The fields are exposed by the - TypeParameterSymbol as ConstraintTypes, Interfaces, and BaseType. - - - - - The type parameters, classes, and interfaces explicitly declared as - constraint types on the containing type parameter, with cycles removed. - - - - - The set of interfaces explicitly declared on the containing type - parameter and any type parameters on which the containing - type parameter depends, with duplicates removed. - - - - - As defined in 10.1.5 of the specification. - - - - - The "exact" effective base type. - In the definition of effective base type we abstract some concrete types to their base classes: - * For each constraint of T that is a struct-type, R contains System.ValueType. - * For each constraint of T that is an enumeration type, R contains System.Enum. - * For each constraint of T that is a delegate type, R contains System.Delegate. - * For each constraint of T that is an array type, R contains System.Array. - * For each constraint of T that is a class-type C, R contains type C' which is constructed - from C by replacing all occurrences of dynamic with object. - The reason is that the CLR doesn't support operations on generic parameters that would be needed - to work with these types. For example, ldelem instruction requires the receiver to be a specific array, - not a type parameter constrained to be an array. - - When computing the deduced type we don't perform this abstraction. We keep the original constraint T. - Deduced base type is used to check that consistency rules are satisfied. - - - - - A TypeSymbol is a base class for all the symbols that represent a type - in C#. - - - - - A comparator that treats dynamic and object as "the same" types. - - - - - The original definition of this symbol. If this symbol is constructed from another - symbol by type substitution then OriginalDefinition gets the original symbol as it was defined in - source or metadata. - - - - - Gets the BaseType of this type. If the base type could not be determined, then - an instance of ErrorType is returned. If this kind of type does not have a base type - (for example, interfaces), null is returned. Also the special class System.Object - always has a BaseType of null. - - - - - Gets the set of interfaces that this type directly implements. This set does not include - interfaces that are base interfaces of directly implemented interfaces. - - - - - The list of all interfaces of which this type is a declared subtype, excluding this type - itself. This includes all declared base interfaces, all declared base interfaces of base - types, and all declared base interfaces of those results (recursively). Each result - appears exactly once in the list. This list is topologically sorted by the inheritance - relationship: if interface type A extends interface type B, then A precedes B in the - list. This is not quite the same as "all interfaces of which this type is a proper - subtype" because it does not take into account variance: AllInterfaces for - IEnumerable<string> will not include IEnumerable<object> - - - - - If this is a type parameter returns its effective base class, otherwise returns this type. - - - - - Returns true if this type derives from a given type. - - - - - Returns true if this type is equal or derives from a given type. - - - - - Determines if this type symbol represent the same type as another, according to the language - semantics. - - The other type. - True to compare without regard to custom modifiers, false by default. - True to ignore the distinction between object and dynamic, false by default. - True if the types are equivalent. - - - - We ignore custom modifiers, and the distinction between dynamic and object, when computing a type's hash code. - - - - - Produce all implemented interfaces in topologically sorted order. We use - TypeSymbol.Interfaces as the source of edge data, which has had cycles and infinitely - long dependency cycles removed. Consequently, it is possible (and we do) use the - simplest version of Tarjan's topological sorting algorithm. - - - - Gets the set of interfaces that this type directly implements, plus the base interfaces - of all such types. - - - CONSIDER: it probably isn't truly necessary to cache this. If space gets tight, consider - alternative approaches (recompute every time, cache on the side, only store on some types, - etc). - - - - - Returns the corresponding symbol in this type or a base type that implements - interfaceMember (either implicitly or explicitly), or null if no such symbol exists - (which might be either because this type doesn't implement the container of - interfaceMember, or this type doesn't supply a member that successfully implements - interfaceMember). - - - Must be a non-null interface property, method, or event. - - - - - Returns true if this type is known to be a reference type. It is never the case that - IsReferenceType and IsValueType both return true. However, for an unconstrained type - parameter, IsReferenceType and IsValueType will both return false. - - - - - Returns true if this type is known to be a value type. It is never the case that - IsReferenceType and IsValueType both return true. However, for an unconstrained type - parameter, IsReferenceType and IsValueType will both return false. - - - - - Gets the kind of this type. - - - - - Gets corresponding special TypeId of this type. - - - Not preserved in types constructed from this one. - - - - - Gets corresponding primitive type code for this type declaration. - - - - - Return error code that has highest priority while calculating use site error for this symbol. - - - - - Is this a symbol for an anonymous type (including delegate). - - - - - Is this type a managed type (false for everything but enum, pointer, and - some struct types). - - - See Type::computeManagedType. - - - - - Performs interface mapping (spec 13.4.4). - - - CONSIDER: we could probably do less work in the metadata and retargeting cases - we won't use the diagnostics. - - A non-null property on an interface type. - The type implementing the interface property (usually "this"). - Bag to which to add diagnostics. - The implementing property or null, if there isn't one. - - - - Since dev11 didn't expose a symbol API, it had the luxury of being able to accept a base class's claim that - it implements an interface. Roslyn, on the other hand, needs to be able to point to an implementing symbol - for each interface member. - - DevDiv #718115 was triggered by some unusual metadata in a Microsoft reference assembly (Silverlight System.Windows.dll). - The issue was that a type explicitly implemented the accessors of an interface event, but did not tie them together with - an event declaration. To make matters worse, it declared its own protected event with the same name as the interface - event (presumably to back the explicit implementation). As a result, when Roslyn was asked to find the implementing member - for the interface event, it found the protected event and reported an appropriate diagnostic. Would it should have done - (and does do now) is recognize that no event associated with the accessors explicitly implementing the interface accessors - and returned null. - - We resolved this issue by introducing a new step into the interface mapping algorithm: after failing to find an explicit - implementation in a type, but before searching for an implicit implementation in that type, check for an explicit implementation - of an associated accessor. If there is such an implementation, then immediately return the associated property or event, - even if it is null. That is, never attempt to find an implicit implementation for an interface property or event with an - explicitly implemented accessor. - - - - - If we were looking for an accessor, then look for an accessor on the implementation of the - corresponding interface property/event. If it is valid as an implementation (ignoring the name), - then prefer it to our current result if: - 1) our current result is null; or - 2) our current result is on the same type. - - If there is no corresponding accessor on the implementation of the corresponding interface - property/event and we found an accessor, then the accessor we found is invalid, so clear it. - - - - - These diagnostics are for members that do implicitly implement an interface member, but do so - in an undesirable way. - - - - - These diagnostics are for members that almost, but not actually, implicitly implement an interface member. - - - - - Search the declared members of a type for one that could be an implementation - of a given interface member (depending on interface declarations). - - The interface member being implemented. - True if the implementing type is from some compilation (i.e. not from metadata). - The type on which we are looking for a declared implementation of the interface member. - A member on currType that could implement the interface, or null. - A member on currType that could have been an attempt to implement the interface, or null. - - There is some similarity between this member and MemberSymbol.FindOverriddenOrHiddenMembersInType. - When making changes to this member, think about whether or not they should also be applied in MemberSymbol. - One key difference is that custom modifiers are considered when looking up overridden members, but - not when looking up implicit implementations. We're preserving this behavior from Dev10. - - - - - To implement an interface member, a candidate member must be public, non-static, and have - the same signature. "Have the same signature" has a looser definition if the type implementing - the interface is from source. - - - PROPERTIES: - NOTE: we're not checking whether this property has at least the accessors - declared in the interface. Dev10 considers it a match either way and, - reports failure to implement accessors separately. - - If the implementing type (i.e. the type with the interface in its interface - list) is in source, then we can ignore custom modifiers in/on the property - type because they will be copied into the bridge property that explicitly - implements the interface property (or they would be, if we created such - a bridge property). Bridge *methods* (not properties) are inserted in - SourceNamedTypeSymbol.ImplementInterfaceMember. - - CONSIDER: The spec for interface mapping (13.4.4) could be interpreted to mean that this - property is not an implementation unless it has an accessor for each accessor of the - interface property. For now, we prefer to represent that case as having an implemented - property and an unimplemented accessor because it makes finding accessor implementations - much easier. If we decide that we want the API to report the property as unimplemented, - then it might be appropriate to keep current result internally and just check the accessors - before returning the value from the public API (similar to the way MethodSymbol.OverriddenMethod - filters MethodSymbol.OverriddenOrHiddenMembers. - - - - - The set of abstract members in declared in this type or declared in a base type and not overridden. - - - - - Represents the method by which this type implements a given interface type - and/or the corresponding diagnostics. - - - - - Determines if the given type is a valid attribute parameter type. - - Type to validated - compilation - - - - - Gets the typed constant kind for the given attribute parameter type. - - Type to validated - compilation - TypedConstantKind for the attribute parameter type. - - - - return true if the type is constructed from System.Linq.Expressions.Expression`1 - - - - - return true if the type is constructed from a generic interface that - might be implemented by an array. - - - - - Return the default value constant for the given type, - or null if the default value is not a constant. - - - - - Visit the given type and, in the case of compound types, visit all "sub type" - (such as A in A[], or { A<T>, T, U } in A<T>.B<U>) invoking 'predicate' - with the type and 'arg' at each sub type. If the predicate returns true for any type, - traversal stops and that type is returned from this method. Otherwise if traversal - completes without the predicate returning true for any type, this method returns null. - - - - - (null TypeParameterSymbol "parameter"): Checks if the given type is a type parameter - or its referent type is a type parameter (array/pointer) or contains a type parameter (aggregate type) - (non-null TypeParameterSymbol "parameter"): above + also checks if the type parameter - is the same as "parameter" - - - - - Return true if the type contains any dynamic type reference. - - - - - Guess the non-error type that the given type was intended to represent. - If the type itself is not an error type, then it will be returned. - Otherwise, the underlying type (if any) of the error type will be - returned. - - - Any non-null type symbol returned is guaranteed not to be an error type. - - It is possible to pass in a constructed type and received back an - unconstructed type. This can occur when the type passed in was - constructed from an error type - the underlying definition will be - available, but there won't be a good way to "re-substitute" back up - to the level of the specified type. - - - - - Guess the non-error type kind that the given type was intended to represent, - if possible. If not, return TypeKind.Error. - - - - - Returns true if the type is a valid switch expression type. - - - - - Returns true if the type is one of the restricted types, namely: , - , or . - - - - - Add this instance to the set of checked types. Returns true - if this was added, false if the type was already in the set. - - - - - These special types are structs that contain fields of the same type - (e.g. contains an instance field of type ). - - - - - Compute a hash code for the constructed type. The return value will be - non-zero so callers can used zero to represent an uninitialized value. - - - - - If we are in a COM PIA with embedInteropTypes enabled we should turn properties and methods - that have the type and return type of object, respectively, into type dynamic. If the requisite conditions - are fulfilled, this method returns a dynamic type. If not, it returns the original type. - - A property type or method return type to be checked for dynamification. - Containing type. - - - - - Type variables are never considered reference types by the verifier. - - - - - Type variables are never considered value types by the verifier. - - - - - Return all of the type parameters in this type and enclosing types, - from outer-most to inner-most type. - - - - - Return all of the type parameters in this type and enclosing types, - from outer-most to inner-most type. - - - - - Return the nearest type parameter with the given name in - this type or any enclosing type. - - - - - Return true if the fully qualified name of the type's containing symbol - matches the given name. This method avoids string concatenations - in the common case where the type is a top-level type. - - - - - Count the custom modifiers within the specified TypeSymbol. - Potentially non-zero for arrays, pointers, and generic instantiations. - - - - - Check for custom modifiers within the specified TypeSymbol. - Potentially true for arrays, pointers, and generic instantiations. - - - A much less efficient implementation would be CustomModifierCount() == 0. - CONSIDER: Could share a backing method with CustomModifierCount. - - - - - Return true if this type can unify with the specified type - (i.e. is the same for some substitution of type parameters). - - - - - Used when iterating through base types in contexts in which the caller needs to avoid cycles and can't use BaseType - (perhaps because BaseType is in the process of being computed) - - - - - - - - - - Extract type under assumption that there should be no custom modifiers. - The method asserts otherwise. - - - - - This class groups together all of the functionality needed to check for error CS1961, ERR_UnexpectedVariance. - Its functionality is accessible through the NamedTypeSymbol extension method CheckInterfaceVarianceSafety and - the MethodSymbol extension method CheckMethodVarianceSafety (for checking delegate Invoke). - - - - - Accumulate diagnostics related to the variance safety of an interface. - - - - - Accumulate diagnostics related to the variance safety of a delegate. - - - - - Accumulate diagnostics related to the variance safety of an interface method. - - - - - Accumulate diagnostics related to the variance safety of an interface property. - - - - - Accumulate diagnostics related to the variance safety of an interface event. - - - - - Accumulate diagnostics related to the variance safety of an interface method/property parameter. - - - - - Accumulate diagnostics related to the variance safety of an interface method type parameters. - - - - - Returns true if the type is output-unsafe or input-unsafe, as defined in the C# spec. - Roughly, a type is output-unsafe if it could not be the return type of a method and - input-unsafe if it could not be a parameter type of a method. - - - This method is intended to match spec section 13.1.3.1 as closely as possible - (except that the output-unsafe and input-unsafe checks are merged). - - - - - 3) T is an interface, class, struct, enum, or delegate type ]]> constructed - from a generic type ]]> where for at least one A_i one - of the following holds: - a) X_i is covariant or invariant and A_i is output-unsafe [input-unsafe] - b) X_i is contravariant or invariant and A_i is input-unsafe [output-unsafe] (note: spec has "input-safe", but it's a typo) - - - Slight rewrite to make it more idiomatic for C#: - a) X_i is covariant and A_i is input-unsafe - b) X_i is contravariant and A_i is output-unsafe - c) X_i is invariant and A_i is input-unsafe or output-unsafe - - - - - Add an ERR_UnexpectedVariance diagnostic to the diagnostic bag. - - Diagnostic bag. - Type parameter that is not variance safe. - Context in which type is not variance safe (e.g. method). - Callback to provide location. - Callback argument. - Desired variance of type. - - - - Traverses the symbol table checking for CLS compliance. - - - - - Traverses the symbol table checking for CLS compliance. - - Compilation that owns the symbol table. - Will be supplemented with documentation comment diagnostics. - To stop traversing the symbol table early. - Only report diagnostics from this syntax tree, if non-null. - If and is non-null, report diagnostics within this span in the . - - - False if no further checks are required (because they would be cascading). - - - - BREAK: Dev11 reports WRN_CLS_ArrayArgumentToAttribute on all symbols, whereas roslyn reports it only - on accessible symbols. - - - - True if the symbol is okay (i.e. no warnings). - - - - NOTE: Dev11 behavior - First, it ignores arity, - which seems like a good way to disambiguate symbols (in particular, - CLS Rule 43 says that the name includes backtick-arity). Second, it - does not consider two members with identical names (i.e. not differing - in case) to collide. - - - - - This check (the only one that uses the "context" parameter is based on CLS Rule 46, - as implemented by LangCompiler::IsCLSAccessible. The idea is that C<int> and C<char> - are separate types in CLS, so they can't touch each other's protected members. - TODO: This should really have a separate error code - it's logically separate and requires explanation. - - Check the accessibility of this type (probably a parameter or return type). - Context for the accessibility check (e.g. containing type of method with as a parameter type. - - - - As in dev11, we ignore the fact that CLSCompliantAttribute is inherited (i.e. from the base type) - (see CSemanticChecker::CheckSymForCLS). This should only affect types where the syntactic parent - and the inheritance parent disagree. - - - - - Based on CompilationPass::CLSReduceSignature. - - - - - Traverses the symbol table processing XML documentation comments and optionally writing them to - a provided stream. - - - - - Traverses the symbol table processing XML documentation comments and optionally writing them to - a provided stream. - - Compilation that owns the symbol table. - Assembly name override, if specified. Otherwise the of the source assembly is used. - Stream to which XML will be written, if specified. - Will be supplemented with documentation comment diagnostics. - To stop traversing the symbol table early. - Only report diagnostics from this syntax tree, if non-null. - If and filterSpanWithinTree is non-null, report diagnostics within this span in the . - - - - Gets the XML that would be written to the documentation comment file for this assembly. - - The symbol for which to retrieve documentation comments. - True to treat includes as semantically meaningful (pull in contents from other files and bind crefs, etc). - To stop traversing the symbol table early. - - - - Write header, descend into members, and write footer. - - - - - Write own documentation comments and then descend into members. - - - - - Compile documentation comments on the symbol and write them to the stream if one is provided. - - - - - Loop over the DocumentationCommentTriviaSyntaxes. Gather - 1) concatenated XML, as a string; - 2) whether or not the XML is valid; - 3) set of type parameters covered by <typeparam> elements; - 4) set of parameters covered by <param> elements; - 5) list of <include> elements, as SyntaxNodes. - - True, if at least one documentation comment was processed; false, otherwise. - This was factored out for clarity, not because it's reusable. - - - - Similar to SymbolExtensions.GetParameters, but returns empty for unsupported symbols - and handles delegates. - - - - - Similar to SymbolExtensions.GetMemberTypeParameters, but returns empty for unsupported symbols. - - - - - A symbol requires a documentation comment if it was explicitly declared and - will be visible outside the current assembly (ignoring InternalsVisibleTo). - Exception: accessors do not require doc comments. - - - - - Get all of the DocumentationCommentTriviaSyntax associated with any declaring syntax of the - given symbol (except for partial methods, which only consider the part with the body). - - True if the nodes are all valid XML. - - - - Given the full text of a documentation comment, strip off the comment punctuation (///, /**, etc) - and add appropriate indentations. - - - - - Given a string, find the index of the first non-whitespace char. - - The string to search - The index of the first non-whitespace char in the string - - - - Find the first non-whitespace character in a given substring. - - The string to search - The start index - The last index (non-inclusive) - The index of the first non-whitespace char after index start in the string up to, but not including the end index - - - - Determine if the given string starts with the given prefix if whitespace - is first trimmed from the beginning. - - The string to search - The prefix - true if str.TrimStart().StartsWith(prefix) - - - - Given a string which may contain newline sequences, get the index of the first newline - sequence beginning at the given starting index. - - The string to split. - The starting index within the string. - The length of the newline sequence discovered. 0 if the end of the string was reached, otherwise either 1 or 2 chars - The index of the start of the first newline sequence following the start index - - - - Given the full text of a single-line style documentation comment, for each line, strip off - the comment punctuation (///) and add appropriate indentations. - - - - - Given the full text of a multi-line style documentation comment, broken into lines, strip off - the comment punctuation (/**, */, etc) and add appropriate indentations. - - - - - Remove "*/" and any following text, if it is present. - - - - - Return the longest prefix matching [whitespace]*[*][whitespace]*. - - - - - Return the longest common prefix of two strings - - - - - Bind a CrefSyntax and unwrap the result if it's an alias. - - - Does not respect DocumentationMode, so use a temporary bag if diagnostics are not desired. - - - - - Given a cref syntax that cannot be resolved, get the string that will be written to - the documentation file in place of a documentation comment ID. - - - - - Bind an XmlNameAttributeSyntax and update the sets of documented parameters and type parameters. - - - Does not respect DocumentationMode, so do not call unless diagnostics are desired. - - - - - WORKAROUND: - We're taking a dependency on the location and structure of a framework assembly resource. This is not a robust solution. - - Possible alternatives: - 1) Polish our XML parser until it matches MSXML. We don't want to reinvent the wheel. - 2) Build a map that lets us go from XML string positions back to source positions. - This is what the native compiler did, and it was a lot of work. We'd also still need to modify the message. - 3) Do not report a diagnostic. This is very unhelpful. - 4) Report a vague diagnostic (i.e. there's a problem somewhere in this doc comment). This is relatively unhelpful. - 5) Always report the message in English, so that we can pull it apart without needing to consume resource files. - This engenders a lot of ill will. - 6) Report the exception message without modification and (optionally) include the text with respect to which the - position is specified. This would not look sufficiently polished. - - - - - Walks a DocumentationCommentTriviaSyntax, binding the semantically meaningful parts - to produce diagnostics and to replace source crefs with documentation comment IDs. - - - - - Given a DocumentationCommentTriviaSyntax, return the full text, but with - documentation comment IDs substituted into crefs. - - - Still has all of the comment punctuation (///, /**, etc). - - - - - Rewrites nodes in , which is a snapshot of nodes from the original document. - We're mutating the tree as we rewrite, so it's important to grab a snapshot of the - nodes that we're going to reparent before we enumerate them. - - - - - This method boils down to Rewrite(XDocument.Load(fileAttrValue).XPathSelectElements(pathAttrValue)). - Everything else is error handling. - - - - - Respects the DocumentationMode at the source location. - - - - - Respects the DocumentationMode at the source location. - - - - - In some circumstances (e.g. implicit implementation of an interface method by a non-virtual method in a - base type from another assembly) it is necessary for the compiler to generate explicit implementations for - some interface methods. They don't go in the symbol table, but if we are emitting, then we should - generate code for them. - - - - - Synthesized parameterless constructors in structs chain to the "default" constructor - - - - - Bind the (implicit or explicit) constructor initializer of a constructor symbol. - - Constructor method. - Accumulates errors (e.g. access "this" in constructor initializer). - Used to retrieve binder. - A bound expression for the constructor initializer call. - - - - Returns true if the method is a constructor and has a this() constructor initializer. - - - - - Contains methods related to synthesizing bound nodes in initial binding - form that needs lowering, primarily method bodies for compiler-generated methods. - - - - - Generates a submission initialization part of a Script type constructor that represents an interactive submission. - - - The constructor takes a parameter of type Microsoft.CodeAnalysis.Scripting.Session - the session reference. - It adds the object being constructed into the session by calling Microsoft.CSharp.RuntimeHelpers.SessionHelpers.SetSubmission, - and retrieves strongly typed references on all previous submission script classes whose members are referenced by this submission. - The references are stored to fields of the submission (). - - - - - Construct a body for an auto-property accessor (updating or returning the backing field). - - - - - Generate an accessor for a field-like event. - - - - - Generate a thread-safe accessor for a WinRT field-like event. - - Add: - return EventRegistrationTokenTable<Event>.GetOrCreateEventRegistrationTokenTable(ref _tokenTable).AddEventHandler(value); - - Remove: - EventRegistrationTokenTable<Event>.GetOrCreateEventRegistrationTokenTable(ref _tokenTable).RemoveEventHandler(value); - - - - - Generate a thread-safe accessor for a regular field-like event. - - DelegateType tmp0 = _event; //backing field - DelegateType tmp1; - DelegateType tmp2; - do { - tmp1 = tmp0; - tmp2 = (DelegateType)Delegate.Combine(tmp1, value); //Remove for -= - tmp0 = Interlocked.CompareExchange<DelegateType>(ref _event, tmp2, tmp1); - } while ((object)tmp0 != (object)tmp1); - - Note, if System.Threading.Interlocked.CompareExchange<T> is not available, - we emit the following code and mark the method Synchronized (unless it is a struct). - - _event = (DelegateType)Delegate.Combine(_event, value); //Remove for -= - - - - - - Look for a base type method named "Finalize" that is protected (or protected internal), has no parameters, - and returns void. It doesn't need to be virtual or a destructor. - - - You may assume that this would share code and logic with PEMethodSymbol.OverridesRuntimeFinalizer, - but FUNCBRECCS::bindDestructor has its own loop that performs these checks (differently). - - - - - When compiling in metadata-only mode, is not run. This is problematic because - adds synthesized explicit implementations to the list of synthesized definitions. - In lieu of running , this class performs a quick - traversal of the symbol table and performs processing of synthesized symbols if necessary - - - - - Traverse the symbol table and call Module.AddSynthesizedDefinition for each - synthesized explicit implementation stub that has been generated (e.g. when the real - implementation doesn't have the appropriate custom modifiers). - - - - - Represents the state of compilation of one particular type. - This includes, for example, a collection of synthesized methods created during lowering. - - - WARNING: Note that the collection class is not thread-safe and will - need to be revised if emit phase is changed to support multithreading when - translating a particular type. - - - - Synthesized method info - - - Flat array of created methods, non-empty if not-null - - - - Map of wrapper methods created for base access of base type virtual methods from - other classes (like those created for lambdas...); actually each method symbol will - only need one wrapper to call it non-virtually. - - - - - Type symbol being compiled, or null if we compile a synthesized type that doesn't have a symbol (e.g. PrivateImplementationDetails). - - - - - The builder for generating code, or null if not in emit phase. - - - - - Any generated methods that don't suppress debug info will use this - list of debug imports. - - - - - A graph of method->method references for this(...) constructor initializers. - Used to detect and report initializer cycles. - - - - - The type for which this compilation state is being used. - - - - - The type passed to the runtime binder as context. - - - - - Add a 'regular' synthesized method. - - - - - Add a 'wrapper' synthesized method and map it to the original one so it can be reused. - - - Wrapper methods are created for base access of base type virtual methods from - other classes (like those created for lambdas...). - - - - The index of the next wrapped method to be used - - - - Get a 'wrapper' method for the original one. - - - Wrapper methods are created for base access of base type virtual methods from - other classes (like those created for lambdas...). - - - - Free resources allocated for this method collection - - - - Report an error if adding the edge (method1, method2) to the ctor-initializer - graph would add a new cycle to that graph. - - a calling ctor - the chained-to ctor - where to report a cyclic error if needed - a diagnostic bag for receiving the diagnostic - - - - Represents various options that affect compilation, such as - whether to emit an executable or a library, whether to optimize - generated code, and so on. - - - - - Allow unsafe regions (i.e. unsafe modifiers on members and unsafe blocks). - - - - - Global namespace usings. - - - - - Insert one or more tokens in the list at the specified index. - - A new list with the tokens inserted. - - - - Creates a new token with the specified old trivia replaced with computed new trivia. - - - The trivia to be replaced; descendants of the root token. - A function that computes a replacement trivia for - the argument trivia. The first argument is the original trivia. The second argument is - the same trivia rewritten with replaced structure. - - - - Creates a new token with the specified old trivia replaced with a new trivia. The old trivia may appear in - the token's leading or trailing trivia. - - - The trivia to be replaced. - The new trivia to use in the new tree in place of the old - trivia. - - - - Returns this list as a . - - The type of the list elements in the separated list. - - - - - Gets the first directive of the tree rooted by this node. - - - - - Gets the last directive of the tree rooted by this node. - - - - - Gets the semantic information for an ordering clause in an orderby query clause. - - - - - Gets the semantic information associated with a select or group clause. - - - - - Returns what symbol(s), if any, the given expression syntax bound to in the program. - - An AliasSymbol will never be returned by this method. What the alias refers to will be - returned instead. To get information about aliases, call GetAliasInfo. - - If binding the type name C in the expression "new C(...)" the actual constructor bound to - will be returned (or all constructor if overload resolution failed). This occurs as long as C - unambiguously binds to a single type that has a constructor. If C ambiguously binds to multiple - types, or C binds to a static class, then type(s) are returned. - - - - - Returns what 'Add' method symbol(s), if any, corresponds to the given expression syntax - within . - - - - - Returns what symbol(s), if any, the given constructor initializer syntax bound to in the program. - - - - - Returns what symbol(s), if any, the given attribute syntax bound to in the program. - - - - - Gets the semantic information associated with a documentation comment cref. - - - - - Binds the expression in the context of the specified location and gets symbol information. - This method is used to get symbol information about an expression that did not actually - appear in the source code. - - - - - Binds the CrefSyntax expression in the context of the specified location and gets symbol information. - This method is used to get symbol information about an expression that did not actually - appear in the source code. - - - - - Bind the attribute in the context of the specified location and get semantic information - such as type, symbols and diagnostics. This method is used to get semantic information about an attribute - that did not actually appear in the source code. - - - - - Bind the constructor initializer in the context of the specified location and get semantic information - such as type, symbols and diagnostics. This method is used to get semantic information about a constructor - initializer that did not actually appear in the source code. - - NOTE: This will only work in locations where there is already a constructor initializer. - - - - - Gets type information about a constructor initializer. - - - - - Gets type information about an expression. - - - - - Gets type information about an attribute. - - - - - Binds the expression in the context of the specified location and gets type information. - This method is used to get type information about an expression that did not actually - appear in the source code. - - - - - Returns the list of accessible, non-hidden indexers that could be invoked with the given expression as receiver. - - - - - Gets the semantic information associated with a query clause. - - - - - If resolves to an alias name, return the AliasSymbol corresponding - to A. Otherwise return null. - - - - - Binds the name in the context of the specified location and sees if it resolves to an - alias name. If it does, return the AliasSymbol corresponding to it. Otherwise, return null. - - - - - Analyze control-flow within a part of a method body. - - - - - Analyze control-flow within a part of a method body. - - - - - Analyze data-flow within an expression. - - - - - Analyze data-flow within a part of a method body. - - - - - Analyze data-flow within a part of a method body. - - - - - Get a SemanticModel object that is associated with a method body that did not appear in this source code. - Given must lie within an existing method body of the Root syntax node for this SemanticModel. - Locals and labels declared within this existing method body are not considered to be in scope of the speculated method body. - - - - - Get a SemanticModel object that is associated with a method body that did not appear in this source code. - Given must lie within an existing method body of the Root syntax node for this SemanticModel. - Locals and labels declared within this existing method body are not considered to be in scope of the speculated method body. - - - - - Get a SemanticModel object that is associated with a type syntax node that did not appear in - this source code. This can be used to get detailed semantic information about sub-parts - of a type syntax that did not appear in source code. - - - - - Get a SemanticModel object that is associated with a cref syntax node that did not appear in - this source code. This can be used to get detailed semantic information about sub-parts - of a cref syntax that did not appear in source code. - - - - - Get a SemanticModel object that is associated with a statement that did not appear in - this source code. This can be used to get detailed semantic information about sub-parts - of a statement that did not appear in source code. - - - - - Get a SemanticModel object that is associated with an initializer that did not appear in - this source code. This can be used to get detailed semantic information about sub-parts - of a field initializer or default parameter value that did not appear in source code. - - - - - Get a SemanticModel object that is associated with an expression body that did not appear in - this source code. This can be used to get detailed semantic information about sub-parts - of an expression body that did not appear in source code. - - - - - Get a SemanticModel object that is associated with a constructor initializer that did not appear in - this source code. This can be used to get detailed semantic information about sub-parts - of a constructor initializer that did not appear in source code. - - NOTE: This will only work in locations where there is already a constructor initializer. - - - - - Get a SemanticModel object that is associated with an attribute that did not appear in - this source code. This can be used to get detailed semantic information about sub-parts - of an attribute that did not appear in source code. - - - - - Determines what type of conversion, if any, would be used if a given expression was - converted to a given type. If isExplicitInSource is true, the conversion produced is - that which would be used if the conversion were done for a cast expression. - - - - - Determines what type of conversion, if any, would be used if a given expression was - converted to a given type. If isExplicitInSource is true, the conversion produced is - that which would be used if the conversion were done for a cast expression. - - - - - Given a member declaration syntax, get the corresponding symbol. - - - - - Given a namespace declaration syntax node, get the corresponding namespace symbol for - the declaration assembly. - - - - - Given a type declaration, get the corresponding type symbol. - - - - - Given a delegate declaration, get the corresponding type symbol. - - - - - Given a enum member declaration, get the corresponding field symbol. - - - - - Given a base method declaration syntax, get the corresponding method symbol. - - - - - Given a syntax node that declares a property, indexer or an event, get the corresponding declared symbol. - - - - - Given a syntax node that declares a property, get the corresponding declared symbol. - - - - - Given a syntax node that declares an indexer, get the corresponding declared symbol. - - - - - Given a syntax node that declares a (custom) event, get the corresponding event symbol. - - - - - Given a syntax node of anonymous object creation initializer, get the anonymous object property symbol. - - - - - Given a syntax node of anonymous object creation expression, get the anonymous object type symbol. - - - - - Given a syntax node that declares a property or member accessor, get the corresponding symbol. - - - - - Given a variable declarator syntax, get the corresponding symbol. - - - - - Given a labeled statement syntax, get the corresponding label symbol. - - - - - Given a switch label syntax, get the corresponding label symbol. - - - - - Given a using declaration get the corresponding symbol for the using alias that was introduced. - - - - - Given an extern alias declaration get the corresponding symbol for the alias that was introduced. - - - - - Given a parameter declaration syntax node, get the corresponding symbol. - - - - - Given a type parameter declaration (field or method), get the corresponding symbol - - - - - Given a foreach statement, get the symbol for the iteration variable - - - - - Given a catch declaration, get the symbol for the exception variable - - - - - Get the query range variable declared in a join into clause. - - - - - Get the query range variable declared in a query continuation clause. - - - - - Emit the IL for the compilation into the specified stream. - - Compilation. - Path of the file to which the PE image will be written. - Path of the file to which the compilation's debug info will be written. - Also embedded in the output file. Null to forego PDB generation. - - Path of the file to which the compilation's XML documentation will be written. Null to forego XML generation. - Path of the file from which the compilation's Win32 resources will be read (in RES format). - Null to indicate that there are none. - List of the compilation's managed resources. Null to indicate that there are none. - To cancel the emit process. - Compilation or path is null. - Path is empty or invalid. - An error occurred while reading or writing a file. - - - - This class stores several source parsing related options and offers access to their values. - - - - - The default parse options. - - - - - Gets the language version. - - - - - Gets the names of defined preprocessor symbols. - - - - - Enable some experimental language features for testing. - - - - - A strongly-typed resource class, for looking up localized strings, etc. - - - - - Returns the cached ResourceManager instance used by this class. - - - - - Overrides the current thread's CurrentUICulture property for all - resource lookups using this strongly typed resource class. - - - - - Looks up a localized string similar to Can't reference compilation of type '{0}' from {1} compilation.. - - - - - Looks up a localized string similar to Chaining speculative semantic model is not supported. You should create a speculative model from the non-speculative ParentModel.. - - - - - Looks up a localized string similar to Compilation (C#): . - - - - - Looks up a localized string similar to Could not find file.. - - - - - Looks up a localized string similar to element is expected. - - - - - Looks up a localized string similar to Elements cannot be null.. - - - - - Looks up a localized string similar to '{0}' cannot be both extern and abstract. - - - - - Looks up a localized string similar to '{0}' cannot be both abstract and sealed. - - - - - Looks up a localized string similar to Cannot apply attribute class '{0}' because it is abstract. - - - - - Looks up a localized string similar to Cannot call an abstract base member: '{0}'. - - - - - Looks up a localized string similar to '{0}': abstract event cannot have initializer. - - - - - Looks up a localized string similar to The modifier 'abstract' is not valid on fields. Try using a property instead.. - - - - - Looks up a localized string similar to '{0}' cannot declare a body because it is marked abstract. - - - - - Looks up a localized string similar to '{0}' is abstract but it is contained in non-abstract class '{1}'. - - - - - Looks up a localized string similar to The abstract method '{0}' cannot be marked virtual. - - - - - Looks up a localized string similar to '{0}': an abstract class cannot be sealed or static. - - - - - Looks up a localized string similar to '{0}': accessibility modifiers on accessors may only be used if the property or indexer has both a get and a set accessor. - - - - - Looks up a localized string similar to Accessor '{0}' cannot implement interface member '{1}' for type '{2}'. Use an explicit interface implementation.. - - - - - Looks up a localized string similar to Properties cannot combine accessor lists with expression bodies.. - - - - - Looks up a localized string similar to '{0}' cannot be added to this assembly because it already is an assembly. - - - - - Looks up a localized string similar to An add or remove accessor expected. - - - - - Looks up a localized string similar to An add or remove accessor must have a body. - - - - - Looks up a localized string similar to Cannot take the address of a read-only local variable. - - - - - Looks up a localized string similar to Agnostic assembly cannot have a processor specific module '{0}'.. - - - - - Looks up a localized string similar to Invalid reference alias option: '{0}=' -- missing filename. - - - - - Looks up a localized string similar to Alias '{0}' not found. - - - - - Looks up a localized string similar to The namespace alias qualifier '::' always resolves to a type or namespace so is illegal here. Consider using '.' instead.. - - - - - Looks up a localized string similar to An alias-qualified name is not an expression.. - - - - - Looks up a localized string similar to Operator '{0}' is ambiguous on operands of type '{1}' and '{2}'. - - - - - Looks up a localized string similar to The call is ambiguous between the following methods or properties: '{0}' and '{1}'. - - - - - Looks up a localized string similar to '{0}' is an ambiguous reference between '{1}' and '{2}'. - - - - - Looks up a localized string similar to Ambiguity between '{0}' and '{1}'. - - - - - Looks up a localized string similar to The inherited members '{0}' and '{1}' have the same signature in type '{2}', so they cannot be overridden. - - - - - Looks up a localized string similar to Type of conditional expression cannot be determined because '{0}' and '{1}' implicitly convert to one another. - - - - - Looks up a localized string similar to Ambiguous user defined conversions '{0}' and '{1}' when converting from '{2}' to '{3}'. - - - - - Looks up a localized string similar to Operator '{0}' is ambiguous on an operand of type '{1}'. - - - - - Looks up a localized string similar to '{0}' is ambiguous between '{1}' and '{2}'; use either '@{0}' or '{0}Attribute'. - - - - - Looks up a localized string similar to Cannot use ref or out parameter '{0}' inside an anonymous method, lambda expression, or query expression. - - - - - Looks up a localized string similar to Foreach cannot operate on a '{0}'. Did you intend to invoke the '{0}'?. - - - - - Looks up a localized string similar to Cannot convert {0} to type '{1}' because it is not a delegate type. - - - - - Looks up a localized string similar to An anonymous method expression cannot be converted to an expression tree. - - - - - Looks up a localized string similar to Not all code paths return a value in {0} of type '{1}'. - - - - - Looks up a localized string similar to An anonymous type cannot have multiple properties with the same name. - - - - - Looks up a localized string similar to Cannot use anonymous type in a constant expression. - - - - - Looks up a localized string similar to Cannot assign {0} to anonymous type property. - - - - - Looks up a localized string similar to The __arglist construct is valid only within a variable argument method. - - - - - Looks up a localized string similar to Array elements cannot be of type '{0}'. - - - - - Looks up a localized string similar to A nested array initializer is expected. - - - - - Looks up a localized string similar to An array initializer of length '{0}' is expected. - - - - - Looks up a localized string similar to Array initializers can only be used in a variable or field initializer. Try using a new expression instead.. - - - - - Looks up a localized string similar to Can only use array initializer expressions to assign to array types. Try using a new expression instead.. - - - - - Looks up a localized string similar to '{0}': array elements cannot be of static type. - - - - - Looks up a localized string similar to Array size cannot be specified in a variable declaration (try initializing with a 'new' expression). - - - - - Looks up a localized string similar to The as operator must be used with a reference type or nullable type ('{0}' is a non-nullable value type). - - - - - Looks up a localized string similar to Assembly '{0}' with identity '{1}' uses '{2}' which has a higher version than referenced assembly '{3}' with identity '{4}'. - - - - - Looks up a localized string similar to The /moduleassemblyname option may only be specified when building a target type of 'module'. - - - - - Looks up a localized string similar to Assemblies '{0}' and '{1}' refer to the same metadata but only one is a linked reference (specified using /link option); consider removing one of the references.. - - - - - Looks up a localized string similar to The left-hand side of an assignment must be a variable, property or indexer. - - - - - Looks up a localized string similar to A readonly field cannot be assigned to (except in a constructor or a variable initializer). - - - - - Looks up a localized string similar to Members of readonly field '{0}' cannot be modified (except in a constructor or a variable initializer). - - - - - Looks up a localized string similar to Cannot assign to '{0}' because it is read-only. - - - - - Looks up a localized string similar to Cannot modify members of '{0}' because it is a '{1}'. - - - - - Looks up a localized string similar to Cannot assign to '{0}' because it is a '{1}'. - - - - - Looks up a localized string similar to Property or indexer '{0}' cannot be assigned to -- it is read only. - - - - - Looks up a localized string similar to A static readonly field cannot be assigned to (except in a static constructor or a variable initializer). - - - - - Looks up a localized string similar to Fields of static readonly field '{0}' cannot be assigned to (except in a static constructor or a variable initializer). - - - - - Looks up a localized string similar to The type parameter '{0}' cannot be used with the 'as' operator because it does not have a class type constraint nor a 'class' constraint. - - - - - Looks up a localized string similar to '{0}': an attribute argument cannot use type parameters. - - - - - Looks up a localized string similar to Cannot apply attribute class '{0}' because it is generic. - - - - - Looks up a localized string similar to Attribute '{0}' is not valid on property or event accessors. It is only valid on '{1}' declarations.. - - - - - Looks up a localized string similar to Attribute '{0}' is not valid on this declaration type. It is only valid on '{1}' declarations.. - - - - - Looks up a localized string similar to Attribute parameter '{0}' must be specified.. - - - - - Looks up a localized string similar to Attribute parameter '{0}' or '{1}' must be specified.. - - - - - Looks up a localized string similar to Attributes are not valid in this context.. - - - - - Looks up a localized string similar to Attribute '{0}' is only valid on classes derived from System.Attribute. - - - - - Looks up a localized string similar to Auto-implemented properties inside interfaces cannot have initializers.. - - - - - Looks up a localized string similar to Auto-implemented properties must have get accessors.. - - - - - Looks up a localized string similar to Auto-implemented properties must override all accessors of the overridden property.. - - - - - Looks up a localized string similar to Cannot await in an unsafe context. - - - - - Looks up a localized string similar to '{0}' is inaccessible due to its protection level. - - - - - Looks up a localized string similar to AppConfigPath must be absolute.. - - - - - Looks up a localized string similar to No overload for method '{0}' takes {1} arguments. - - - - - Looks up a localized string similar to Argument {0} should not be passed with the '{1}' keyword. - - - - - Looks up a localized string similar to Argument {0} must be passed with the '{1}' keyword. - - - - - Looks up a localized string similar to Argument {0}: cannot convert from '{1}' to '{2}'. - - - - - Looks up a localized string similar to '{0}' has no applicable method named '{1}' but appears to have an extension method by that name. Extension methods cannot be dynamically dispatched. Consider casting the dynamic arguments or calling the extension method without the extension method syntax.. - - - - - Looks up a localized string similar to The best overloaded Add method '{0}' for the collection initializer has some invalid arguments. - - - - - Looks up a localized string similar to The argument to the '{0}' attribute must be a valid identifier. - - - - - Looks up a localized string similar to Using the generic {1} '{0}' requires {2} type arguments. - - - - - Looks up a localized string similar to Array type specifier, [], must appear before parameter name. - - - - - Looks up a localized string similar to Async methods cannot have ref or out parameters. - - - - - Looks up a localized string similar to Async lambda expressions cannot be converted to expression trees. - - - - - Looks up a localized string similar to The 'async' modifier can only be used in methods that have a body.. - - - - - Looks up a localized string similar to The return type of an async method must be void, Task or Task<T>. - - - - - Looks up a localized string similar to Since this is an async method, the return expression must be of type '{0}' rather than 'Task<{0}>'. - - - - - Looks up a localized string similar to An attribute argument must be a constant expression, typeof expression or array creation expression of an attribute parameter type. - - - - - Looks up a localized string similar to Attribute constructor parameter '{0}' is optional, but no default parameter value was specified.. - - - - - Looks up a localized string similar to Attribute constructor parameter '{0}' has type '{1}', which is not a valid attribute parameter type. - - - - - Looks up a localized string similar to 'await' requires that the type {0} have a suitable GetAwaiter method. - - - - - Looks up a localized string similar to 'await' requires that the type '{0}' have a suitable GetAwaiter method. Are you missing a using directive for 'System'?. - - - - - Looks up a localized string similar to Cannot await '{0}'. - - - - - Looks up a localized string similar to Cannot await 'void'. - - - - - Looks up a localized string similar to 'await' cannot be used as an identifier within an async method or lambda expression. - - - - - Looks up a localized string similar to 'await' requires that the return type '{0}' of '{1}.GetAwaiter()' have suitable IsCompleted, OnCompleted, and GetResult members, and implement INotifyCompletion or ICriticalNotifyCompletion. - - - - - Looks up a localized string similar to Cannot await in a catch clause. - - - - - Looks up a localized string similar to Cannot await in the filter expression of a catch clause. - - - - - Looks up a localized string similar to Cannot await in the body of a finally clause. - - - - - Looks up a localized string similar to Cannot await in the body of a lock statement. - - - - - Looks up a localized string similar to The 'await' operator may only be used in a query expression within the first collection expression of the initial 'from' clause or within the collection expression of a 'join' clause. - - - - - Looks up a localized string similar to The 'await' operator cannot be used in a static script variable initializer.. - - - - - Looks up a localized string similar to The 'await' operator can only be used when contained within a method or lambda expression marked with the 'async' modifier. - - - - - Looks up a localized string similar to The 'await' operator can only be used within an async {0}. Consider marking this {0} with the 'async' modifier.. - - - - - Looks up a localized string similar to The 'await' operator can only be used within an async method. Consider marking this method with the 'async' modifier and changing its return type to 'Task<{0}>'.. - - - - - Looks up a localized string similar to The 'await' operator can only be used within an async method. Consider marking this method with the 'async' modifier and changing its return type to 'Task'.. - - - - - Looks up a localized string similar to Invalid image base number '{0}'. - - - - - Looks up a localized string similar to Invalid base type. - - - - - Looks up a localized string similar to One of the parameters of a binary operator must be the containing type. - - - - - Looks up a localized string similar to Operator '{0}' cannot be applied to operands of type '{1}' and '{2}'. - - - - - Looks up a localized string similar to Overloaded binary operator '{0}' takes two parameters. - - - - - Looks up a localized string similar to In order to be applicable as a short circuit operator a user-defined logical operator ('{0}') must have the same return type and parameter types. - - - - - Looks up a localized string similar to '{0}' is not a valid constraint. A type used as a constraint must be an interface, a non-sealed class or a type parameter.. - - - - - Looks up a localized string similar to The CallerFilePathAttribute may only be applied to parameters with default values. - - - - - Looks up a localized string similar to The CallerLineNumberAttribute may only be applied to parameters with default values. - - - - - Looks up a localized string similar to The CallerMemberNameAttribute may only be applied to parameters with default values. - - - - - Looks up a localized string similar to The right hand side of a fixed statement assignment may not be a cast expression. - - - - - Looks up a localized string similar to The managed coclass wrapper class signature '{0}' for interface '{1}' is not a valid class name signature. - - - - - Looks up a localized string similar to Invalid option '{0}' for /langversion; must be ISO-1, ISO-2, Default or an integer in range 1 to 6.. - - - - - Looks up a localized string similar to {0}. - - - - - Looks up a localized string similar to Invalid '{0}' value: '{1}'.. - - - - - Looks up a localized string similar to Invalid constraint type. A type used as a constraint must be an interface, a non-sealed class or a type parameter.. - - - - - Looks up a localized string similar to The type '{0}' cannot be declared const. - - - - - Looks up a localized string similar to '{0}' does not contain a constructor that takes {1} arguments. - - - - - Looks up a localized string similar to Invalid option '{0}' for /debug; must be full or pdbonly. - - - - - Looks up a localized string similar to Delegate '{0}' does not take {1} arguments. - - - - - Looks up a localized string similar to The delegate '{0}' does not have a valid constructor. - - - - - Looks up a localized string similar to Control cannot leave the body of an anonymous method or lambda expression. - - - - - Looks up a localized string similar to Name of destructor must match name of class. - - - - - Looks up a localized string similar to Preprocessor directives must appear as the first non-whitespace character on a line. - - - - - Looks up a localized string similar to '{0}': user-defined conversions to or from the dynamic type are not allowed. - - - - - Looks up a localized string similar to Cannot use an expression of type '{0}' as an argument to a dynamically dispatched operation.. - - - - - Looks up a localized string similar to Cannot use a lambda expression as an argument to a dynamically dispatched operation without first casting it to a delegate or expression tree type.. - - - - - Looks up a localized string similar to Cannot use a method group as an argument to a dynamically dispatched operation. Did you intend to invoke the method?. - - - - - Looks up a localized string similar to Query expressions over source type 'dynamic' or with a join sequence of type 'dynamic' are not allowed. - - - - - Looks up a localized string similar to The typeof operator cannot be used on the dynamic type. - - - - - Looks up a localized string similar to Embedded statement cannot be a declaration or labeled statement. - - - - - Looks up a localized string similar to A throw statement with no arguments is not allowed outside of a catch clause. - - - - - Looks up a localized string similar to A throw statement with no arguments is not allowed in a finally clause that is nested inside the nearest enclosing catch clause. - - - - - Looks up a localized string similar to The event '{0}' can only appear on the left hand side of += or -= (except when used from within the type '{1}'). - - - - - Looks up a localized string similar to The event '{0}' can only appear on the left hand side of += or -=. - - - - - Looks up a localized string similar to The type caught or thrown must be derived from System.Exception. - - - - - Looks up a localized string similar to Extension method must be defined in a non-generic static class. - - - - - Looks up a localized string similar to '{0}' does not contain a definition for '{1}' and the best extension method overload '{2}' has some invalid arguments. - - - - - Looks up a localized string similar to Extension method must be static. - - - - - Looks up a localized string similar to The extern alias '{0}' was not specified in a /reference option. - - - - - Looks up a localized string similar to Invalid extern alias for '/reference'; '{0}' is not a valid identifier. - - - - - Looks up a localized string similar to Control cannot leave the body of a finally clause. - - - - - Looks up a localized string similar to The type of a local declared in a fixed statement must be a pointer type. - - - - - Looks up a localized string similar to Type and identifier are both required in a foreach statement. - - - - - Looks up a localized string similar to foreach requires that the return type '{0}' of '{1}' must have a suitable public MoveNext method and public Current property. - - - - - Looks up a localized string similar to The return type for ++ or -- operator must match the parameter type or be derived from the parameter type. - - - - - Looks up a localized string similar to The parameter type for ++ or -- operator must be the containing type. - - - - - Looks up a localized string similar to Wrong number of indices inside []; expected {0}. - - - - - Looks up a localized string similar to The '{0}' attribute is valid only on an indexer that is not an explicit interface member declaration. - - - - - Looks up a localized string similar to Cannot apply indexing with [] to an expression of type '{0}'. - - - - - Looks up a localized string similar to '{0}' does not contain a definition for '{1}' and the best extension method overload '{2}' requires a receiver of type '{3}'. - - - - - Looks up a localized string similar to Iterators cannot have ref or out parameters. - - - - - Looks up a localized string similar to The body of '{0}' cannot be an iterator block because '{1}' is not an iterator interface type. - - - - - Looks up a localized string similar to The modifier '{0}' is not valid for this item. - - - - - Looks up a localized string similar to More than one protection modifier. - - - - - Looks up a localized string similar to Member modifier '{0}' must precede the member type and name. - - - - - Looks up a localized string similar to A namespace declaration cannot have modifiers or attributes. - - - - - Looks up a localized string similar to The best overload for '{0}' does not have a parameter named '{1}'. - - - - - Looks up a localized string similar to The delegate '{0}' does not have a parameter named '{1}'. - - - - - Looks up a localized string similar to '{0}' is not a valid named attribute argument. Named attribute arguments must be fields which are not readonly, static, or const, or read-write properties which are public and not static.. - - - - - Looks up a localized string similar to '{0}' is not a valid named attribute argument because it is not a valid attribute parameter type. - - - - - Looks up a localized string similar to A new expression requires (), [], or {} after type. - - - - - Looks up a localized string similar to Declaration is not valid; use '{0} operator <dest-type> (...' instead. - - - - - Looks up a localized string similar to The parameter modifier 'out' cannot be used with 'this' . - - - - - Looks up a localized string similar to Parameter {0} should not be declared with the '{1}' keyword. - - - - - Looks up a localized string similar to A parameter array cannot be used with 'this' modifier on an extension method. - - - - - Looks up a localized string similar to Parameter {0} must be declared with the '{1}' keyword. - - - - - Looks up a localized string similar to Parameter {0} is declared as type '{1}{2}' but should be '{3}{4}'. - - - - - Looks up a localized string similar to Error reading debug information for '{0}'. - - - - - Looks up a localized string similar to Invalid option '{0}' for /platform; must be anycpu, x86, Itanium or x64. - - - - - Looks up a localized string similar to /platform:anycpu32bitpreferred can only be used with /t:exe, /t:winexe and /t:appcontainerexe. - - - - - Looks up a localized string similar to Cannot access protected member '{0}' via a qualifier of type '{1}'; the qualifier must be of type '{2}' (or derived from it). - - - - - Looks up a localized string similar to The parameter modifier 'ref' cannot be used with 'this' . - - - - - Looks up a localized string similar to Invalid option '{0}'; Resource visibility must be either 'public' or 'private'. - - - - - Looks up a localized string similar to '{1} {0}' has the wrong return type. - - - - - Looks up a localized string similar to The first operand of an overloaded shift operator must have the same type as the containing type, and the type of the second operand must be int. - - - - - Looks up a localized string similar to '{0}' is a {1} but is used like a {2}. - - - - - Looks up a localized string similar to '{0}' is a {1}, which is not valid in the given context. - - - - - Looks up a localized string similar to Parameters or locals of type '{0}' cannot be declared in async methods or lambda expressions.. - - - - - Looks up a localized string similar to A stackalloc expression requires [] after type. - - - - - Looks up a localized string similar to Unrecognized option: '{0}'. - - - - - Looks up a localized string similar to Method '{0}' has a parameter modifier 'this' which is not on the first parameter. - - - - - Looks up a localized string similar to The type '{0}' may not be used as a type argument. - - - - - Looks up a localized string similar to The first parameter of an extension method cannot be of type '{0}'. - - - - - Looks up a localized string similar to '{0}': cannot reference a type through an expression; try '{1}' instead. - - - - - Looks up a localized string similar to Operator '{0}' cannot be applied to operand of type '{1}'. - - - - - Looks up a localized string similar to The parameter of a unary operator must be the containing type. - - - - - Looks up a localized string similar to Overloaded unary operator '{0}' takes one parameter. - - - - - Looks up a localized string similar to A 'using namespace' directive can only be applied to namespaces; '{0}' is a type not a namespace. Consider a 'using static' directive instead. - - - - - Looks up a localized string similar to A 'using static' directive can only be applied to types; '{0}' is a namespace not a type. Consider a 'using namespace' directive instead. - - - - - Looks up a localized string similar to A method with vararg cannot be generic, be in a generic type, or have a params parameter. - - - - - Looks up a localized string similar to Expected ; or = (cannot specify constructor arguments in declaration). - - - - - Looks up a localized string similar to Inconsistent accessibility: base class '{1}' is less accessible than class '{0}'. - - - - - Looks up a localized string similar to Inconsistent accessibility: base interface '{1}' is less accessible than interface '{0}'. - - - - - Looks up a localized string similar to Inconsistent accessibility: constraint type '{1}' is less accessible than '{0}'. - - - - - Looks up a localized string similar to Inconsistent accessibility: parameter type '{1}' is less accessible than delegate '{0}'. - - - - - Looks up a localized string similar to Inconsistent accessibility: return type '{1}' is less accessible than delegate '{0}'. - - - - - Looks up a localized string similar to Inconsistent accessibility: event type '{1}' is less accessible than event '{0}'. - - - - - Looks up a localized string similar to Inconsistent accessibility: field type '{1}' is less accessible than field '{0}'. - - - - - Looks up a localized string similar to Inconsistent accessibility: parameter type '{1}' is less accessible than indexer '{0}'. - - - - - Looks up a localized string similar to Inconsistent accessibility: indexer return type '{1}' is less accessible than indexer '{0}'. - - - - - Looks up a localized string similar to Inconsistent accessibility: parameter type '{1}' is less accessible than operator '{0}'. - - - - - Looks up a localized string similar to Inconsistent accessibility: return type '{1}' is less accessible than operator '{0}'. - - - - - Looks up a localized string similar to Inconsistent accessibility: parameter type '{1}' is less accessible than method '{0}'. - - - - - Looks up a localized string similar to Inconsistent accessibility: property type '{1}' is less accessible than property '{0}'. - - - - - Looks up a localized string similar to Inconsistent accessibility: return type '{1}' is less accessible than method '{0}'. - - - - - Looks up a localized string similar to Warning level must be in the range 0-4. - - - - - Looks up a localized string similar to Error reading Win32 resources -- {0}. - - - - - Looks up a localized string similar to Cannot yield a value in the body of a catch clause. - - - - - Looks up a localized string similar to Cannot yield in the body of a finally clause. - - - - - Looks up a localized string similar to Cannot yield a value in the body of a try block with a catch clause. - - - - - Looks up a localized string similar to Base class '{0}' must come before any interfaces. - - - - - Looks up a localized string similar to Type parameter '{0}' inherits conflicting constraints '{1}' and '{2}'. - - - - - Looks up a localized string similar to Use of keyword 'base' is not valid in this context. - - - - - Looks up a localized string similar to Keyword 'base' is not available in the current context. - - - - - Looks up a localized string similar to Keyword 'base' is not available in a static method. - - - - - Looks up a localized string similar to '{0}' is a binary file instead of a text file. - - - - - Looks up a localized string similar to '{0}' is not supported by the language. - - - - - Looks up a localized string similar to Property, indexer, or event '{0}' is not supported by the language; try directly calling accessor method '{1}'. - - - - - Looks up a localized string similar to Property, indexer, or event '{0}' is not supported by the language; try directly calling accessor methods '{1}' or '{2}'. - - - - - Looks up a localized string similar to Methods cannot combine block bodies with expression bodies.. - - - - - Looks up a localized string similar to '{0}' cannot implement '{1}' because it is not supported by the language. - - - - - Looks up a localized string similar to '{0}' is a type not supported by the language. - - - - - Looks up a localized string similar to An expression tree lambda may not contain an out or ref parameter. - - - - - Looks up a localized string similar to By-reference return type 'ref {0}' is not supported.. - - - - - Looks up a localized string similar to 'await' cannot be used in an expression containing the type '{0}'. - - - - - Looks up a localized string similar to Do not directly call your base class Finalize method. It is called automatically from your destructor.. - - - - - Looks up a localized string similar to Destructors and object.Finalize cannot be called directly. Consider calling IDisposable.Dispose if available.. - - - - - Looks up a localized string similar to Cannot pass null for friend assembly name. - - - - - Looks up a localized string similar to '{0}': cannot explicitly call operator or accessor. - - - - - Looks up a localized string similar to '{0}': cannot change access modifiers when overriding '{1}' inherited member '{2}'. - - - - - Looks up a localized string similar to '{0}': return type must be '{2}' to match overridden member '{1}'. - - - - - Looks up a localized string similar to '{0}': type must be '{2}' to match overridden member '{1}'. - - - - - Looks up a localized string similar to Cannot convert anonymous method block without a parameter list to delegate type '{0}' because it has one or more out parameters. - - - - - Looks up a localized string similar to Cannot convert {0} to delegate type '{1}' because the parameter types do not match the delegate parameter types. - - - - - Looks up a localized string similar to Cannot convert {0} to intended delegate type because some of the return types in the block are not implicitly convertible to the delegate return type. - - - - - Looks up a localized string similar to Cannot convert async {0} to delegate type '{1}'. An async {0} may return void, Task or Task<T>, none of which are convertible to '{1}'.. - - - - - Looks up a localized string similar to '{0}': cannot derive from sealed type '{1}'. - - - - - Looks up a localized string similar to Conflicting options specified: Win32 resource file; Win32 icon. - - - - - Looks up a localized string similar to Conflicting options specified: Win32 resource file; Win32 manifest. - - - - - Looks up a localized string similar to The type arguments for method '{0}' cannot be inferred from the usage. Try specifying the type arguments explicitly.. - - - - - Looks up a localized string similar to Cannot create temporary file -- {0}. - - - - - Looks up a localized string similar to Cannot open '{0}' for writing -- '{1}'. - - - - - Looks up a localized string similar to Error opening icon file {0} -- {1}. - - - - - Looks up a localized string similar to Error opening Win32 manifest file {0} -- {1}. - - - - - Looks up a localized string similar to Error opening Win32 resource file '{0}' -- '{1}'. - - - - - Looks up a localized string similar to '{0}': cannot override '{1}' because it is not supported by the language. - - - - - Looks up a localized string similar to '{0}': cannot override; '{1}' is not an event. - - - - - Looks up a localized string similar to '{0}': cannot override because '{1}' is not a function. - - - - - Looks up a localized string similar to '{0}': cannot override because '{1}' is not a property. - - - - - Looks up a localized string similar to '{0}': cannot override inherited member '{1}' because it is not marked virtual, abstract, or override. - - - - - Looks up a localized string similar to '{0}': cannot override inherited member '{1}' because it is sealed. - - - - - Looks up a localized string similar to Cannot read config file '{0}' -- '{1}'. - - - - - Looks up a localized string similar to Error reading resource '{0}' -- '{1}'. - - - - - Looks up a localized string similar to Error reading ruleset file {0} - {1}. - - - - - Looks up a localized string similar to Cannot link resource files when building a module. - - - - - Looks up a localized string similar to Cannot return an expression of type 'void'. - - - - - Looks up a localized string similar to Error reading Win32 manifest file '{0}' -- '{1}'. - - - - - Looks up a localized string similar to The RequiredAttribute attribute is not permitted on C# types. - - - - - Looks up a localized string similar to The operation overflows at compile time in checked mode. - - - - - Looks up a localized string similar to The evaluation of the constant value for '{0}' involves a circular definition. - - - - - Looks up a localized string similar to Circular base class dependency involving '{0}' and '{1}'. - - - - - Looks up a localized string similar to Circular constraint dependency involving '{0}' and '{1}'. - - - - - Looks up a localized string similar to The class type constraint '{0}' must come before any other constraints. - - - - - Looks up a localized string similar to '{0}': containing type does not implement interface '{1}'. - - - - - Looks up a localized string similar to An object, string, or class type expected. - - - - - Looks up a localized string similar to ) expected. - - - - - Looks up a localized string similar to '{0}' does not implement interface member '{1}'. '{2}' cannot implement an interface member because it is not public.. - - - - - Looks up a localized string similar to '{0}' does not implement interface member '{1}'. '{2}' cannot implement an interface member because it is static.. - - - - - Looks up a localized string similar to '{0}' does not implement interface member '{1}'. '{2}' cannot implement '{1}' because it does not have the matching return type of '{3}'.. - - - - - Looks up a localized string similar to Attribute '{0}' given in a source file conflicts with option '{1}'.. - - - - - Looks up a localized string similar to Cannot use alias '{0}' with '::' since the alias references a type. Use '.' instead.. - - - - - Looks up a localized string similar to Cannot initialize type '{0}' with a collection initializer because it does not implement 'System.Collections.IEnumerable'. - - - - - Looks up a localized string similar to '{0}': a class with the ComImport attribute cannot specify a base class. - - - - - Looks up a localized string similar to Since '{1}' has the ComImport attribute, '{0}' must be extern or abstract. - - - - - Looks up a localized string similar to '{0}': a class with the ComImport attribute cannot specify field initializers.. - - - - - Looks up a localized string similar to The Guid attribute must be specified with the ComImport attribute. - - - - - Looks up a localized string similar to A class with the ComImport attribute cannot have a user-defined constructor. - - - - - Looks up a localized string similar to Compilation cancelled by user. - - - - - Looks up a localized string similar to An expression tree lambda may not contain a COM call with ref omitted on arguments. - - - - - Looks up a localized string similar to '{0}' must declare a body because it is not marked abstract, extern, or partial. - - - - - Looks up a localized string similar to The Conditional attribute is not valid on '{0}' because its return type is not void. - - - - - Looks up a localized string similar to The Conditional attribute is not valid on interface members. - - - - - Looks up a localized string similar to Attribute '{0}' is only valid on methods or attribute classes. - - - - - Looks up a localized string similar to The Conditional attribute is not valid on '{0}' because it is an override method. - - - - - Looks up a localized string similar to The Conditional attribute is not valid on '{0}' because it is a constructor, destructor, operator, or explicit interface implementation. - - - - - Looks up a localized string similar to Conditional member '{0}' cannot have an out parameter. - - - - - Looks up a localized string similar to Namespace '{1}' contains a definition conflicting with alias '{0}'. - - - - - Looks up a localized string similar to Alias '{0}' conflicts with {1} definition. - - - - - Looks up a localized string similar to Assembly and module '{0}' cannot target different processors.. - - - - - Looks up a localized string similar to A constant value is expected. - - - - - Looks up a localized string similar to Length of String constant exceeds current memory limit. Try splitting the string into multiple constants.. - - - - - Looks up a localized string similar to Constant value '{0}' cannot be converted to a '{1}'. - - - - - Looks up a localized string similar to Constant value '{0}' cannot be converted to a '{1}' (use 'unchecked' syntax to override). - - - - - Looks up a localized string similar to '{0}': static classes cannot be used as constraints. - - - - - Looks up a localized string similar to Constraints are not allowed on non-generic declarations. - - - - - Looks up a localized string similar to Constraint cannot be a dynamic type '{0}'. - - - - - Looks up a localized string similar to Static classes cannot have instance constructors. - - - - - Looks up a localized string similar to A const field requires a value to be provided. - - - - - Looks up a localized string similar to User-defined conversion must convert to or from the enclosing type. - - - - - Looks up a localized string similar to '{0}': user-defined conversions to or from a base class are not allowed. - - - - - Looks up a localized string similar to '{0}': user-defined conversions to or from a derived class are not allowed. - - - - - Looks up a localized string similar to '{0}': user-defined conversions to or from an interface are not allowed. - - - - - Looks up a localized string similar to Cannot convert to static type '{0}'. - - - - - Looks up a localized string similar to Type parameter '{1}' has the 'struct' constraint so '{1}' cannot be used as a constraint for '{0}'. - - - - - Looks up a localized string similar to Cryptographic failure while creating hashes.. - - - - - Looks up a localized string similar to Bad array declarator: To declare a managed array the rank specifier precedes the variable's identifier. To declare a fixed size buffer field, use the fixed keyword before the field type.. - - - - - Looks up a localized string similar to Inherited interface '{1}' causes a cycle in the interface hierarchy of '{0}'. - - - - - Looks up a localized string similar to The type forwarder for type '{0}' in assembly '{1}' causes a cycle. - - - - - Looks up a localized string similar to Debug entry point must be a definition of a method declared in the current compilation.. - - - - - Looks up a localized string similar to Evaluation of the decimal constant expression failed. - - - - - Looks up a localized string similar to Cannot specify the DefaultMember attribute on a type containing an indexer. - - - - - Looks up a localized string similar to Argument of type '{0}' is not applicable for the DefaultParameterValue attribute. - - - - - Looks up a localized string similar to Optional parameters must appear after all required parameters. - - - - - Looks up a localized string similar to Cannot specify a default value for the 'this' parameter. - - - - - Looks up a localized string similar to Cannot specify a default value for a parameter array. - - - - - Looks up a localized string similar to Default parameter value for '{0}' must be a compile-time constant. - - - - - Looks up a localized string similar to Default values are not valid in this context.. - - - - - Looks up a localized string similar to The type of the argument to the DefaultParameterValue attribute must match the parameter type. - - - - - Looks up a localized string similar to Cannot specify default parameter value in conjunction with DefaultParameterAttribute or OptionalAttribute. - - - - - Looks up a localized string similar to Cannot create delegate with '{0}' because it or a method it overrides has a Conditional attribute. - - - - - Looks up a localized string similar to Cannot bind delegate to '{0}' because it is a member of 'System.Nullable<T>'. - - - - - Looks up a localized string similar to The best overloaded Add method '{0}' for the collection initializer element is obsolete. {1}. - - - - - Looks up a localized string similar to '{0}' is obsolete: '{1}'. - - - - - Looks up a localized string similar to '{0}': cannot implement a dynamic interface '{1}'. - - - - - Looks up a localized string similar to '{0}': cannot derive from the dynamic type. - - - - - Looks up a localized string similar to '{0}' cannot derive from special class '{1}'. - - - - - Looks up a localized string similar to Cannot derive from '{0}' because it is a type parameter. - - - - - Looks up a localized string similar to Static classes cannot contain destructors. - - - - - Looks up a localized string similar to An expression tree lambda may not contain a dictionary initializer.. - - - - - Looks up a localized string similar to The DllImport attribute cannot be applied to a method that is generic or contained in a generic type.. - - - - - Looks up a localized string similar to The DllImport attribute must be specified on a method marked 'static' and 'extern'. - - - - - Looks up a localized string similar to '{0}' does not implement '{1}'. - - - - - Looks up a localized string similar to Do not use 'System.Runtime.CompilerServices.FixedBuffer' attribute. Use the 'fixed' field modifier instead.. - - - - - Looks up a localized string similar to The type name '{0}' does not exist in the type '{1}'. - - - - - Looks up a localized string similar to The type or namespace name '{0}' does not exist in the namespace '{1}' (are you missing an assembly reference?). - - - - - Looks up a localized string similar to The type name '{0}' could not be found in the namespace '{1}'. This type has been forwarded to assembly '{2}' Consider adding a reference to that assembly.. - - - - - Looks up a localized string similar to Property accessor already defined. - - - - - Looks up a localized string similar to The using alias '{0}' appeared previously in this namespace. - - - - - Looks up a localized string similar to Duplicate '{0}' attribute. - - - - - Looks up a localized string similar to Duplicate '{0}' attribute in '{1}'. - - - - - Looks up a localized string similar to Duplicate constraint '{0}' for type parameter '{1}'. - - - - - Looks up a localized string similar to The switch statement contains multiple cases with the label value '{0}'. - - - - - Looks up a localized string similar to A constraint clause has already been specified for type parameter '{0}'. All of the constraints for a type parameter must be specified in a single where clause.. - - - - - Looks up a localized string similar to Duplicate user-defined conversion in type '{0}'. - - - - - Looks up a localized string similar to The parameter name '{0}' conflicts with an automatically-generated parameter name. - - - - - Looks up a localized string similar to Multiple assemblies with equivalent identity have been imported: '{0}' and '{1}'. Remove one of the duplicate references.. - - - - - Looks up a localized string similar to An assembly with the same simple name '{0}' has already been imported. Try removing one of the references (e.g. '{1}') or sign them to enable side-by-side.. - - - - - Looks up a localized string similar to '{0}' is already listed in interface list. - - - - - Looks up a localized string similar to The label '{0}' is a duplicate. - - - - - Looks up a localized string similar to Duplicate '{0}' modifier. - - - - - Looks up a localized string similar to Named argument '{0}' cannot be specified multiple times. - - - - - Looks up a localized string similar to '{0}' duplicate named attribute argument. - - - - - Looks up a localized string similar to The type '{0}' already contains a definition for '{1}'. - - - - - Looks up a localized string similar to The namespace '{1}' already contains a definition for '{0}'. - - - - - Looks up a localized string similar to The parameter name '{0}' is a duplicate. - - - - - Looks up a localized string similar to Cannot specify accessibility modifiers for both accessors of the property or indexer '{0}'. - - - - - Looks up a localized string similar to '{0}' duplicate TypeForwardedToAttribute. - - - - - Looks up a localized string similar to Duplicate type parameter '{0}'. - - - - - Looks up a localized string similar to A parameter can only have one '{0}' modifier. - - - - - Looks up a localized string similar to Cannot define a class or member that utilizes 'dynamic' because the compiler required type '{0}' cannot be found. Are you missing a reference?. - - - - - Looks up a localized string similar to One or more types required to compile a dynamic expression cannot be found. Are you missing a reference?. - - - - - Looks up a localized string similar to Constraint cannot be the dynamic type. - - - - - Looks up a localized string similar to Empty character literal. - - - - - Looks up a localized string similar to Element initializer cannot be empty. - - - - - Looks up a localized string similar to Empty format specifier.. - - - - - Looks up a localized string similar to Expression expected after yield return. - - - - - Looks up a localized string similar to Cannot continue since the edit includes a reference to an embedded type: '{0}'.. - - - - - Looks up a localized string similar to Cannot emit debug information for a source text without encoding.. - - - - - Looks up a localized string similar to Member '{0}' added during the current debug session can only be accessed from within its declaring assembly '{1}'.. - - - - - Looks up a localized string similar to #endif directive expected. - - - - - Looks up a localized string similar to Single-line comment or end-of-line expected. - - - - - Looks up a localized string similar to #endregion directive expected. - - - - - Looks up a localized string similar to '{0}': the enumerator value is too large to fit in its type. - - - - - Looks up a localized string similar to Enums cannot contain explicit parameterless constructors. - - - - - Looks up a localized string similar to Type or namespace definition, or end-of-file expected. - - - - - Looks up a localized string similar to Error building Win32 resources -- {0}. - - - - - Looks up a localized string similar to #error: '{0}'. - - - - - Looks up a localized string similar to There is an error in a referenced assembly '{0}'.. - - - - - Looks up a localized string similar to A '{0}' character may only be escaped by doubling '{0}{0}' in an interpolated string.. - - - - - Looks up a localized string similar to '{0}': event property must have both add and remove accessors. - - - - - Looks up a localized string similar to '{0}': event must be of a delegate type. - - - - - Looks up a localized string similar to An event in an interface cannot have add or remove accessors. - - - - - Looks up a localized string similar to Expected contextual keyword 'by'. - - - - - Looks up a localized string similar to Expected contextual keyword 'equals'. - - - - - Looks up a localized string similar to Expected contextual keyword 'on'. - - - - - Looks up a localized string similar to Expected catch or finally. - - - - - Looks up a localized string similar to Quoted file name expected. - - - - - Looks up a localized string similar to A query body must end with a select clause or a group clause. - - - - - Looks up a localized string similar to Expected a script (.csx file) but none specified. - - - - - Looks up a localized string similar to Keyword, identifier, or string expected after verbatim specifier: @. - - - - - Looks up a localized string similar to Do not use 'System.Runtime.CompilerServices.DynamicAttribute'. Use the 'dynamic' keyword instead.. - - - - - Looks up a localized string similar to An explicit interface implementation of an event must use event accessor syntax. - - - - - Looks up a localized string similar to Do not use 'System.Runtime.CompilerServices.ExtensionAttribute'. Use the 'this' keyword instead.. - - - - - Looks up a localized string similar to Cannot inherit interface '{0}' with the specified type parameters because it causes method '{1}' to contain overloads which differ only on ref and out. - - - - - Looks up a localized string similar to '{0}' should not have a params parameter since '{1}' does not. - - - - - Looks up a localized string similar to '{0}': explicit interface declaration can only be declared in a class or struct. - - - - - Looks up a localized string similar to '{0}' in explicit interface declaration is not an interface. - - - - - Looks up a localized string similar to '{0}': Auto-implemented properties cannot be used inside a type marked with StructLayout(LayoutKind.Explicit). - - - - - Looks up a localized string similar to '{0}' explicit method implementation cannot implement '{1}' because it is an accessor. - - - - - Looks up a localized string similar to Do not use 'System.ParamArrayAttribute'. Use the 'params' keyword instead.. - - - - - Looks up a localized string similar to '{0}' adds an accessor not found in interface member '{1}'. - - - - - Looks up a localized string similar to Explicit interface implementation '{0}' is missing accessor '{1}'. - - - - - Looks up a localized string similar to Type '{0}' exported from module '{1}' conflicts with type declared in primary module of this assembly.. - - - - - Looks up a localized string similar to Type '{0}' exported from module '{1}' conflicts with type '{2}' exported from module '{3}'.. - - - - - Looks up a localized string similar to Expected expression. - - - - - Looks up a localized string similar to Expression does not have a name.. - - - - - Looks up a localized string similar to Expression or declaration statement expected.. - - - - - Looks up a localized string similar to An expression tree may not contain an anonymous method expression. - - - - - Looks up a localized string similar to An expression tree may not contain an assignment operator. - - - - - Looks up a localized string similar to An expression tree lambda may not contain a coalescing operator with a null literal left-hand side. - - - - - Looks up a localized string similar to An expression tree may not contain a base access. - - - - - Looks up a localized string similar to An expression tree may not contain a dynamic operation. - - - - - Looks up a localized string similar to An expression tree may not contain an indexed property. - - - - - Looks up a localized string similar to An expression tree may not contain a multidimensional array initializer. - - - - - Looks up a localized string similar to An expression tree may not contain a named argument specification. - - - - - Looks up a localized string similar to An expression tree may not contain a call or invocation that uses optional arguments. - - - - - Looks up a localized string similar to An expression tree may not contain an unsafe pointer operation. - - - - - Looks up a localized string similar to Cannot convert lambda to an expression tree whose type argument '{0}' is not a delegate type. - - - - - Looks up a localized string similar to Cannot define a new extension method because the compiler required type '{0}' cannot be found. Are you missing a reference to System.Core.dll?. - - - - - Looks up a localized string similar to An extension Add method is not supported for a collection initializer in an expression lambda.. - - - - - Looks up a localized string similar to Extension methods must be defined in a top level static class; {0} is a nested class. - - - - - Looks up a localized string similar to An extern alias declaration must precede all other elements defined in the namespace. - - - - - Looks up a localized string similar to 'extern alias' is not valid in this context. - - - - - Looks up a localized string similar to '{0}' cannot be extern and declare a body. - - - - - Looks up a localized string similar to '{0}' cannot be extern and have a constructor initializer. - - - - - Looks up a localized string similar to Feature '{0}' is only available in 'experimental' language version.. - - - - - Looks up a localized string similar to Feature '{0}' is not available in C# 1. Please use language version {1} or greater.. - - - - - Looks up a localized string similar to Feature '{0}' is not available in C# 2. Please use language version {1} or greater.. - - - - - Looks up a localized string similar to Feature '{0}' is not available in C# 3. Please use language version {1} or greater.. - - - - - Looks up a localized string similar to Feature '{0}' is not available in C# 4. Please use language version {1} or greater.. - - - - - Looks up a localized string similar to Feature '{0}' is not available in C# 5. Please use language version {1} or greater.. - - - - - Looks up a localized string similar to Feature '{0}' is not available in C# 6. Please use language version {1} or greater.. - - - - - Looks up a localized string similar to An expression tree may not contain '{0}'. - - - - - Looks up a localized string similar to Field or property cannot be of type '{0}'. - - - - - Looks up a localized string similar to Field cannot have void type. - - - - - Looks up a localized string similar to The field has multiple distinct constant values.. - - - - - Looks up a localized string similar to '{0}': cannot have instance property or field initializers in structs. - - - - - Looks up a localized string similar to A field initializer cannot reference the non-static field, method, or property '{0}'. - - - - - Looks up a localized string similar to Source file '{0}' could not be found.. - - - - - Looks up a localized string similar to You cannot use fixed size buffers contained in unfixed expressions. Try using the fixed statement.. - - - - - Looks up a localized string similar to A fixed buffer may only have one dimension.. - - - - - Looks up a localized string similar to A fixed size buffer field must have the array size specifier after the field name. - - - - - Looks up a localized string similar to Cannot use fixed local '{0}' inside an anonymous method, lambda expression, or query expression. - - - - - Looks up a localized string similar to You must provide an initializer in a fixed or using statement declaration. - - - - - Looks up a localized string similar to You can only take the address of an unfixed expression inside of a fixed statement initializer. - - - - - Looks up a localized string similar to Fixed size buffers can only be accessed through locals or fields. - - - - - Looks up a localized string similar to Fixed size buffer fields may only be members of structs. - - - - - Looks up a localized string similar to You cannot use the fixed statement to take the address of an already fixed expression. - - - - - Looks up a localized string similar to Fixed size buffer of length {0} and type '{1}' is too big. - - - - - Looks up a localized string similar to Floating-point constant is outside the range of type '{0}'. - - - - - Looks up a localized string similar to foreach statement cannot operate on variables of type '{0}' because '{0}' does not contain a public definition for '{1}'. - - - - - Looks up a localized string similar to Forwarded type '{0}' conflicts with type declared in primary module of this assembly.. - - - - - Looks up a localized string similar to Type '{0}' forwarded to assembly '{1}' conflicts with type '{2}' exported from module '{3}'.. - - - - - Looks up a localized string similar to Type '{0}' is defined in this assembly, but a type forwarder is specified for it. - - - - - Looks up a localized string similar to Cannot forward type '{0}' because it is a nested type of '{1}'. - - - - - Looks up a localized string similar to Type '{0}' forwarded to assembly '{1}' conflicts with type '{2}' forwarded to assembly '{3}'.. - - - - - Looks up a localized string similar to Friend assembly reference '{0}' is invalid. InternalsVisibleTo declarations cannot have a version, culture, public key token, or processor architecture specified.. - - - - - Looks up a localized string similar to Friend assembly reference '{0}' is invalid. Strong-name signed assemblies must specify a public key in their InternalsVisibleTo declarations.. - - - - - Looks up a localized string similar to Friend access was granted by '{0}', but the public key of the output assembly does not match that specified by the attribute in the granting assembly.. - - - - - Looks up a localized string similar to Friend access was granted by '{0}', but the strong name signing state of the output assembly does not match that of the granting assembly.. - - - - - Looks up a localized string similar to '{0}': static types cannot be used as type arguments. - - - - - Looks up a localized string similar to The type '{3}' cannot be used as type parameter '{2}' in the generic type or method '{0}'. The nullable type '{3}' does not satisfy the constraint of '{1}'.. - - - - - Looks up a localized string similar to The type '{3}' cannot be used as type parameter '{2}' in the generic type or method '{0}'. The nullable type '{3}' does not satisfy the constraint of '{1}'. Nullable types can not satisfy any interface constraints.. - - - - - Looks up a localized string similar to The type '{3}' cannot be used as type parameter '{2}' in the generic type or method '{0}'. There is no implicit reference conversion from '{3}' to '{1}'.. - - - - - Looks up a localized string similar to The type '{3}' cannot be used as type parameter '{2}' in the generic type or method '{0}'. There is no boxing conversion or type parameter conversion from '{3}' to '{1}'.. - - - - - Looks up a localized string similar to The type '{3}' cannot be used as type parameter '{2}' in the generic type or method '{0}'. There is no boxing conversion from '{3}' to '{1}'.. - - - - - Looks up a localized string similar to A generic type cannot derive from '{0}' because it is an attribute class. - - - - - Looks up a localized string similar to Type '{0}' from assembly '{1}' cannot be used across assembly boundaries because it has a generic type parameter that is an embedded interop type.. - - - - - Looks up a localized string similar to Type '{0}' cannot be embedded because it has a generic argument. Consider setting the 'Embed Interop Types' property to false.. - - - - - Looks up a localized string similar to A get or set accessor expected. - - - - - Looks up a localized string similar to Assembly and module attributes are not allowed in this context. - - - - - Looks up a localized string similar to Assembly and module attributes must precede all other elements defined in a file except using clauses and extern alias declarations. - - - - - Looks up a localized string similar to Member definition, statement, or end-of-file expected. - - - - - Looks up a localized string similar to You cannot redefine the global extern alias. - - - - - Looks up a localized string similar to The type or namespace name '{0}' could not be found in the global namespace (are you missing an assembly reference?). - - - - - Looks up a localized string similar to The type name '{0}' could not be found in the global namespace. This type has been forwarded to assembly '{1}' Consider adding a reference to that assembly.. - - - - - Looks up a localized string similar to Expressions and statements can only occur in a method body. - - - - - Looks up a localized string similar to The non-generic {1} '{0}' cannot be used with type arguments. - - - - - Looks up a localized string similar to '{0}' hides inherited abstract member '{1}'. - - - - - Looks up a localized string similar to Identifier expected. - - - - - Looks up a localized string similar to Identifier expected; '{1}' is a keyword. - - - - - Looks up a localized string similar to User-defined operator cannot take an object of the enclosing type and convert to an object of the enclosing type. - - - - - Looks up a localized string similar to An __arglist expression may only appear inside of a call or new expression. - - - - - Looks up a localized string similar to Unrecognized escape sequence. - - - - - Looks up a localized string similar to Fixed size buffer type must be one of the following: bool, byte, short, int, long, char, sbyte, ushort, uint, ulong, float or double. - - - - - Looks up a localized string similar to Unsafe code may not appear in iterators. - - - - - Looks up a localized string similar to params is not valid in this context. - - - - - Looks up a localized string similar to ref and out are not valid in this context. - - - - - Looks up a localized string similar to Only assignment, call, increment, decrement, and new object expressions can be used as a statement. - - - - - Looks up a localized string similar to Unsafe code may only appear if compiling with /unsafe. - - - - - Looks up a localized string similar to __arglist is not valid in this context. - - - - - Looks up a localized string similar to Invalid variance modifier. Only interface and delegate type parameters can be specified as variant.. - - - - - Looks up a localized string similar to The constraints for type parameter '{0}' of method '{1}' must match the constraints for type parameter '{2}' of interface method '{3}'. Consider using an explicit interface implementation instead.. - - - - - Looks up a localized string similar to No best type found for implicitly-typed array. - - - - - Looks up a localized string similar to Implicitly-typed local variables cannot be fixed. - - - - - Looks up a localized string similar to Cannot initialize an implicitly-typed variable with an array initializer. - - - - - Looks up a localized string similar to Cannot assign {0} to an implicitly-typed variable. - - - - - Looks up a localized string similar to Implicitly-typed variables cannot be constant. - - - - - Looks up a localized string similar to Implicitly-typed variables cannot have multiple declarators. - - - - - Looks up a localized string similar to Implicitly-typed variables must be initialized. - - - - - Looks up a localized string similar to Imported type '{0}' is invalid. It contains a circular base class dependency.. - - - - - Looks up a localized string similar to The referenced file '{0}' is not an assembly. - - - - - Looks up a localized string similar to The property or indexer '{0}' cannot be used in this context because the get accessor is inaccessible. - - - - - Looks up a localized string similar to The property or indexer '{0}' cannot be used in this context because the set accessor is inaccessible. - - - - - Looks up a localized string similar to An out parameter cannot have the In attribute. - - - - - Looks up a localized string similar to Two indexers have different names; the IndexerName attribute must be used with the same name on every indexer within a type. - - - - - Looks up a localized string similar to Inconsistent lambda parameter usage; parameter types must be all explicit or all implicit. - - - - - Looks up a localized string similar to The operand of an increment or decrement operator must be a variable, property or indexer. - - - - - Looks up a localized string similar to Indexed property '{0}' must have all arguments optional. - - - - - Looks up a localized string similar to Indexed property '{0}' has non-optional arguments which must be provided. - - - - - Looks up a localized string similar to Indexers cannot have void type. - - - - - Looks up a localized string similar to '{0}': cannot declare indexers in a static class. - - - - - Looks up a localized string similar to Indexers must have at least one parameter. - - - - - Looks up a localized string similar to Constructor '{0}' cannot call itself through another constructor. - - - - - Looks up a localized string similar to 'in' expected. - - - - - Looks up a localized string similar to The best overloaded method match '{0}' for the collection initializer element cannot be used. Collection initializer 'Add' methods cannot have ref or out parameters.. - - - - - Looks up a localized string similar to The best overloaded method match for '{0}' has wrong signature for the initializer element. The initializable Add must be an accessible instance method.. - - - - - Looks up a localized string similar to Structs without explicit constructors cannot contain members with initializers.. - - - - - Looks up a localized string similar to Only auto-implemented properties can have initializers.. - - - - - Looks up a localized string similar to '{0}': cannot declare instance members in a static class. - - - - - Looks up a localized string similar to Cannot create an instance of the static class '{0}'. - - - - - Looks up a localized string similar to An expression is too long or complex to compile. - - - - - Looks up a localized string similar to Division by constant zero. - - - - - Looks up a localized string similar to Type byte, sbyte, short, ushort, int, uint, long, or ulong expected. - - - - - Looks up a localized string similar to A value of an integral type expected. - - - - - Looks up a localized string similar to '{0}': event in interface cannot have initializer. - - - - - Looks up a localized string similar to Conditional member '{0}' cannot implement interface member '{1}' in type '{2}'. - - - - - Looks up a localized string similar to '{0}': interface members cannot have a definition. - - - - - Looks up a localized string similar to '{0}' in explicit interface declaration is not a member of interface. - - - - - Looks up a localized string similar to '{0}': interfaces cannot declare types. - - - - - Looks up a localized string similar to Interfaces cannot contain constructors. - - - - - Looks up a localized string similar to Interfaces cannot contain fields. - - - - - Looks up a localized string similar to Interfaces cannot contain operators. - - - - - Looks up a localized string similar to Embedded interop method '{0}' contains a body.. - - - - - Looks up a localized string similar to Embedded interop struct '{0}' can contain only public instance fields.. - - - - - Looks up a localized string similar to Interop type '{0}' cannot be embedded because it is missing the required '{1}' attribute.. - - - - - Looks up a localized string similar to Cannot embed interop type '{0}' found in both assembly '{1}' and '{2}'. Consider setting the 'Embed Interop Types' property to false.. - - - - - Looks up a localized string similar to Integral constant is too large. - - - - - Looks up a localized string similar to Cannot take the address of the given expression. - - - - - Looks up a localized string similar to Invalid anonymous type member declarator. Anonymous type members must be declared with a member assignment, simple name or member access.. - - - - - Looks up a localized string similar to Invalid rank specifier: expected ',' or ']'. - - - - - Looks up a localized string similar to Assembly culture strings may not contain embedded NUL characters.. - - - - - Looks up a localized string similar to Executables cannot be satellite assemblies; culture should always be empty. - - - - - Looks up a localized string similar to Assembly reference '{0}' is invalid and cannot be resolved. - - - - - Looks up a localized string similar to Invalid value for argument to '{0}' attribute. - - - - - Looks up a localized string similar to '{0}' is of type '{1}'. The type specified in a constant declaration must be sbyte, byte, short, ushort, int, uint, long, ulong, char, float, double, decimal, bool, string, an enum-type, or a reference-type.. - - - - - Looks up a localized string similar to Invalid debug information format: {0}. - - - - - Looks up a localized string similar to Delegate '{0}' has no invoke method or an invoke method with a return type or parameter types that are not supported.. - - - - - Looks up a localized string similar to Expression must be implicitly convertible to Boolean or its type '{0}' must define operator '{1}'.. - - - - - Looks up a localized string similar to Invalid expression term '{0}'. - - - - - Looks up a localized string similar to Invalid file section alignment '{0}'. - - - - - Looks up a localized string similar to Fixed size buffers must have a length greater than zero. - - - - - Looks up a localized string similar to Command-line syntax error: Invalid Guid format '{0}' for option '{1}'. - - - - - Looks up a localized string similar to Invalid type specified as an argument for TypeForwardedTo attribute. - - - - - Looks up a localized string similar to A goto case is only valid inside a switch statement. - - - - - Looks up a localized string similar to Invalid initializer member declarator. - - - - - Looks up a localized string similar to The line number specified for #line directive is missing or invalid. - - - - - Looks up a localized string similar to Invalid token '{0}' in class, struct, or interface member declaration. - - - - - Looks up a localized string similar to Invalid value for named attribute argument '{0}'. - - - - - Looks up a localized string similar to Invalid number. - - - - - Looks up a localized string similar to Invalid output name: {0}. - - - - - Looks up a localized string similar to The pathmap option was incorrectly formatted. - - - - - Looks up a localized string similar to Invalid preprocessor expression. - - - - - Looks up a localized string similar to The accessibility modifier of the '{0}' accessor must be more restrictive than the property or indexer '{1}'. - - - - - Looks up a localized string similar to Type of conditional expression cannot be determined because there is no implicit conversion between '{0}' and '{1}'. - - - - - Looks up a localized string similar to Invalid signature public key specified in AssemblySignatureKeyAttribute.. - - - - - Looks up a localized string similar to '{0}' is not a valid format specifier. - - - - - Looks up a localized string similar to Invalid version {0} for /subsystemversion. The version must be 6.02 or greater for ARM or AppContainerExe, and 4.00 or greater otherwise. - - - - - Looks up a localized string similar to The specified version string does not conform to the required format - major[.minor[.build[.revision]]]. - - - - - Looks up a localized string similar to The specified version string does not conform to the required format - major.minor.build.revision. - - - - - Looks up a localized string similar to Yield statements may not appear at the top level in interactive code.. - - - - - Looks up a localized string similar to No such label '{0}' within the scope of the goto statement. - - - - - Looks up a localized string similar to The label '{0}' shadows another label by the same name in a contained scope. - - - - - Looks up a localized string similar to The first operand of an 'is' or 'as' operator may not be a lambda expression, anonymous method, or method group.. - - - - - Looks up a localized string similar to { expected. - - - - - Looks up a localized string similar to 'id#' syntax is no longer supported. Use '$id' instead.. - - - - - Looks up a localized string similar to Linked netmodule metadata must provide a full PE image: '{0}'.. - - - - - Looks up a localized string similar to Literal of type double cannot be implicitly converted to type '{1}'; use an '{0}' suffix to create a literal of this type. - - - - - Looks up a localized string similar to #load is only allowed in scripts. - - - - - Looks up a localized string similar to Local '{0}' or its members cannot have their address taken and be used inside an anonymous method or lambda expression. - - - - - Looks up a localized string similar to A local variable named '{0}' is already defined in this scope. - - - - - Looks up a localized string similar to A local or parameter named '{0}' cannot be declared in this scope because that name is used in an enclosing local scope to define a local or parameter. - - - - - Looks up a localized string similar to '{0}': a parameter or local variable cannot have the same name as a method type parameter. - - - - - Looks up a localized string similar to Embedding the interop type '{0}' from assembly '{1}' causes a name clash in the current assembly. Consider setting the 'Embed Interop Types' property to false.. - - - - - Looks up a localized string similar to '{0}' is not a reference type as required by the lock statement. - - - - - Looks up a localized string similar to Cannot do member lookup in '{0}' because it is a type parameter. - - - - - Looks up a localized string similar to '{0}': an entry point cannot be marked with the 'async' modifier. - - - - - Looks up a localized string similar to Cannot use '{0}' for Main method because it is imported. - - - - - Looks up a localized string similar to '{0}' specified for Main method must be a valid non-generic class or struct. - - - - - Looks up a localized string similar to Could not find '{0}' specified for Main method. - - - - - Looks up a localized string similar to Cannot take the address of, get the size of, or declare a pointer to a managed type ('{0}'). - - - - - Looks up a localized string similar to Unmanaged type '{0}' not valid for fields.. - - - - - Looks up a localized string similar to Unmanaged type '{0}' is only valid for fields.. - - - - - Looks up a localized string similar to Type '{1}' already defines a member called '{0}' with the same parameter types. - - - - - Looks up a localized string similar to Duplicate initialization of member '{0}'. - - - - - Looks up a localized string similar to Member '{0}' cannot be initialized. It is not a field or property.. - - - - - Looks up a localized string similar to '{0}': member names cannot be the same as their enclosing type. - - - - - Looks up a localized string similar to Method must have a return type. - - - - - Looks up a localized string similar to Type '{1}' already reserves a member called '{0}' with the same parameter types. - - - - - Looks up a localized string similar to An expression tree lambda may not contain a method group. - - - - - Looks up a localized string similar to Name '{0}' exceeds the maximum length allowed in metadata.. - - - - - Looks up a localized string similar to Metadata references are not supported.. - - - - - Looks up a localized string similar to No overload for '{0}' matches delegate '{1}'. - - - - - Looks up a localized string similar to Cannot convert method group '{0}' to non-delegate type '{1}'. Did you intend to invoke the method?. - - - - - Looks up a localized string similar to Cannot make reference to variable of type '{0}'. - - - - - Looks up a localized string similar to Method '{0}' cannot implement interface accessor '{1}' for type '{2}'. Use an explicit interface implementation.. - - - - - Looks up a localized string similar to Method name expected. - - - - - Looks up a localized string similar to Method or delegate cannot return type '{0}'. - - - - - Looks up a localized string similar to Argument missing. - - - - - Looks up a localized string similar to Array creation must have array size or array initializer. - - - - - Looks up a localized string similar to The managed coclass wrapper class '{0}' for interface '{1}' cannot be found (are you missing an assembly reference?). - - - - - Looks up a localized string similar to The /pdb option requires that the /debug option also be used. - - - - - Looks up a localized string similar to Command-line syntax error: Missing Guid for option '{1}'. - - - - - Looks up a localized string similar to Source interface '{0}' is missing method '{1}' which is required to embed event '{2}'.. - - - - - Looks up a localized string similar to Reference to '{0}' netmodule missing.. - - - - - Looks up a localized string similar to Missing partial modifier on declaration of type '{0}'; another partial declaration of this type exists. - - - - - Looks up a localized string similar to Quoted file name, single-line comment or end-of-line expected. - - - - - Looks up a localized string similar to Missing compiler required member '{0}.{1}'. - - - - - Looks up a localized string similar to Interface '{0}' has an invalid source interface which is required to embed event '{1}'.. - - - - - Looks up a localized string similar to '{0}': instance field types marked with StructLayout(LayoutKind.Explicit) must have a FieldOffset attribute. - - - - - Looks up a localized string similar to Reference to type '{0}' claims it is defined in '{1}', but it could not be found. - - - - - Looks up a localized string similar to Reference to type '{0}' claims it is defined in this assembly, but it is not defined in source or any added modules. - - - - - Looks up a localized string similar to '{0}' cannot implement '{1}' because '{2}' is a Windows Runtime event and '{3}' is a regular .NET event.. - - - - - Looks up a localized string similar to Failed to emit module '{0}'.. - - - - - Looks up a localized string similar to A parameter cannot have all the specified modifiers; there are too many modifiers on the parameter. - - - - - Looks up a localized string similar to Program has more than one entry point defined. Compile with /main to specify the type that contains the entry point.. - - - - - Looks up a localized string similar to foreach statement cannot operate on variables of type '{0}' because it implements multiple instantiations of '{1}'; try casting to a specific interface instantiation. - - - - - Looks up a localized string similar to Cannot use more than one type in a for, using, fixed, or declaration statement. - - - - - Looks up a localized string similar to In order for '{0}' to be applicable as a short circuit operator, its declaring type '{1}' must define operator true and operator false. - - - - - Looks up a localized string similar to Compilation options '{0}' and '{1}' can't both be specified at the same time.. - - - - - Looks up a localized string similar to Named attribute argument expected. - - - - - Looks up a localized string similar to An array access may not have a named argument specifier. - - - - - Looks up a localized string similar to Named argument specifications must appear after all fixed arguments have been specified. - - - - - Looks up a localized string similar to Named argument '{0}' specifies a parameter for which a positional argument has already been given. - - - - - Looks up a localized string similar to The name '{0}' does not exist in the current context. - - - - - Looks up a localized string similar to The name '{0}' does not exist in the current context (are you missing a reference to assembly '{1}'?). - - - - - Looks up a localized string similar to Extension method groups are not allowed as an argument to 'nameof'.. - - - - - Looks up a localized string similar to Type parameters are not allowed on a method group as an argument to 'nameof'.. - - - - - Looks up a localized string similar to Cannot declare namespace in script code. - - - - - Looks up a localized string similar to A namespace cannot directly contain members such as fields or methods. - - - - - Looks up a localized string similar to Cannot create an array with a negative size. - - - - - Looks up a localized string similar to Cannot use a negative size with stackalloc. - - - - - Looks up a localized string similar to Module name '{0}' stored in '{1}' must match its filename.. - - - - - Looks up a localized string similar to Module '{0}' is already defined in this assembly. Each module must have a unique filename.. - - - - - Looks up a localized string similar to The new() constraint must be the last constraint specified. - - - - - Looks up a localized string similar to The 'new()' constraint cannot be used with the 'struct' constraint. - - - - - Looks up a localized string similar to Interop type '{0}' cannot be embedded. Use the applicable interface instead.. - - - - - Looks up a localized string similar to '{2}' must be a non-abstract type with a public parameterless constructor in order to use it as parameter '{1}' in the generic type or method '{0}'. - - - - - Looks up a localized string similar to Newline in constant. - - - - - Looks up a localized string similar to '{0}': cannot provide arguments when creating an instance of a variable type. - - - - - Looks up a localized string similar to '{0}' is a new virtual member in sealed class '{1}'. - - - - - Looks up a localized string similar to A 'using static' directive cannot be used to declare an alias. - - - - - Looks up a localized string similar to A base class is required for a 'base' reference. - - - - - Looks up a localized string similar to No enclosing loop out of which to break or continue. - - - - - Looks up a localized string similar to Cannot find the interop type that matches the embedded interop type '{0}'. Are you missing an assembly reference?. - - - - - Looks up a localized string similar to The type '{0}' has no constructors defined. - - - - - Looks up a localized string similar to CallerFilePathAttribute cannot be applied because there are no standard conversions from type '{0}' to type '{1}'. - - - - - Looks up a localized string similar to CallerLineNumberAttribute cannot be applied because there are no standard conversions from type '{0}' to type '{1}'. - - - - - Looks up a localized string similar to CallerMemberNameAttribute cannot be applied because there are no standard conversions from type '{0}' to type '{1}'. - - - - - Looks up a localized string similar to A value of type '{0}' cannot be used as a default parameter because there are no standard conversions to type '{1}'. - - - - - Looks up a localized string similar to A value of type '{0}' cannot be used as default parameter for nullable parameter '{1}' because '{0}' is not a simple type. - - - - - Looks up a localized string similar to '{0}': type used in a using statement must be implicitly convertible to 'System.IDisposable'. - - - - - Looks up a localized string similar to There is no argument given that corresponds to the required formal parameter '{0}' of '{1}'. - - - - - Looks up a localized string similar to The call to method '{0}' needs to be dynamically dispatched, but cannot be because it is part of a base access expression. Consider casting the dynamic arguments or eliminating the base access.. - - - - - Looks up a localized string similar to The constructor call needs to be dynamically dispatched, but cannot be because it is part of a constructor initializer. Consider casting the dynamic arguments.. - - - - - Looks up a localized string similar to The indexer access needs to be dynamically dispatched, but cannot be because it is part of a base access expression. Consider casting the dynamic arguments or eliminating the base access.. - - - - - Looks up a localized string similar to Program does not contain a static 'Main' method suitable for an entry point. - - - - - Looks up a localized string similar to Cannot convert type '{0}' to '{1}' via a reference conversion, boxing conversion, unboxing conversion, wrapping conversion, or null type conversion. - - - - - Looks up a localized string similar to Cannot convert type '{0}' to '{1}'. - - - - - Looks up a localized string similar to Missing file specification for '{0}' option. - - - - - Looks up a localized string similar to '{0}': cannot override because '{1}' does not have an overridable get accessor. - - - - - Looks up a localized string similar to Cannot implicitly convert type '{0}' to '{1}'. - - - - - Looks up a localized string similar to Cannot implicitly convert type '{0}' to '{1}'. An explicit conversion exists (are you missing a cast?). - - - - - Looks up a localized string similar to '{0}' does not have a suitable static Main method. - - - - - Looks up a localized string similar to Cannot specify /main if building a module or library. - - - - - Looks up a localized string similar to Metadata file '{0}' could not be found. - - - - - Looks up a localized string similar to Modifiers cannot be placed on event accessor declarations. - - - - - Looks up a localized string similar to Class '{0}' cannot have multiple base classes: '{1}' and '{2}'. - - - - - Looks up a localized string similar to Elements defined in a namespace cannot be explicitly declared as private, protected, or protected internal. - - - - - Looks up a localized string similar to Cannot create an instance of the abstract class or interface '{0}'. - - - - - Looks up a localized string similar to Cannot create an instance of the variable type '{0}' because it does not have the new() constraint. - - - - - Looks up a localized string similar to Type '{0}' in interface list is not an interface. - - - - - Looks up a localized string similar to Non-invocable member '{0}' cannot be used like a method.. - - - - - Looks up a localized string similar to Cannot embed interop types from assembly '{0}' because it is missing the '{1}' attribute.. - - - - - Looks up a localized string similar to Cannot embed interop types from assembly '{0}' because it is missing either the '{1}' attribute or the '{2}' attribute.. - - - - - Looks up a localized string similar to Type '{0}' cannot be embedded because it is a nested type. Consider setting the 'Embed Interop Types' property to false.. - - - - - Looks up a localized string similar to '{0}': cannot override because '{1}' does not have an overridable set accessor. - - - - - Looks up a localized string similar to Source file '{0}' could not be opened -- {1}. - - - - - Looks up a localized string similar to '{0}' does not contain a definition for '{1}'. - - - - - Looks up a localized string similar to '{0}' does not contain a definition for '{1}' and no extension method '{1}' accepting a first argument of type '{0}' could be found (are you missing a using directive or an assembly reference?). - - - - - Looks up a localized string similar to '{0}' does not contain a definition for '{1}' and no extension method '{1}' accepting a first argument of type '{0}' could be found (are you missing a using directive for '{2}'?). - - - - - Looks up a localized string similar to '{0}' is not an attribute class. - - - - - Looks up a localized string similar to The expression being assigned to '{0}' must be constant. - - - - - Looks up a localized string similar to '{0}' is of type '{1}'. A const field of a reference type other than string can only be initialized with null.. - - - - - Looks up a localized string similar to '{0}' is of type '{1}'. A default parameter value of a reference type other than string can only be initialized with null. - - - - - Looks up a localized string similar to This language feature ('{0}') is not yet implemented.. - - - - - Looks up a localized string similar to The type '{0}' is defined in an assembly that is not referenced. You must add a reference to assembly '{1}'.. - - - - - Looks up a localized string similar to The type '{0}' is defined in a module that has not been added. You must add the module '{1}'.. - - - - - Looks up a localized string similar to Keyword 'void' cannot be used in this context. - - - - - Looks up a localized string similar to Invalid parameter type 'void'. - - - - - Looks up a localized string similar to Use of null is not valid in this context. - - - - - Looks up a localized string similar to An expression tree lambda may not contain a null propagating operator.. - - - - - Looks up a localized string similar to '{0}' has no base class and cannot call a base constructor. - - - - - Looks up a localized string similar to The class System.Object cannot have a base class or implement an interface. - - - - - Looks up a localized string similar to Object and collection initializer expressions may not be applied to a delegate creation expression. - - - - - Looks up a localized string similar to Member '{0}' cannot be accessed with an instance reference; qualify it with a type name instead. - - - - - Looks up a localized string similar to An object reference is required for the non-static field, method, or property '{0}'. - - - - - Looks up a localized string similar to A /reference option that declares an extern alias can only have one filename. To specify multiple aliases or filenames, use multiple /reference options.. - - - - - Looks up a localized string similar to Only class types can contain destructors. - - - - - Looks up a localized string similar to End-of-file found, '*/' expected. - - - - - Looks up a localized string similar to Error opening response file '{0}'. - - - - - Looks up a localized string similar to User-defined operators cannot return void. - - - - - Looks up a localized string similar to '{0}': static classes cannot contain user-defined operators. - - - - - Looks up a localized string similar to The operator '{0}' requires a matching operator '{1}' to also be defined. - - - - - Looks up a localized string similar to User-defined operator '{0}' must be declared static and public. - - - - - Looks up a localized string similar to The return type of operator True or False must be bool. - - - - - Looks up a localized string similar to Cannot specify only Out attribute on a ref parameter. Use both In and Out attributes, or neither.. - - - - - Looks up a localized string similar to Outputs without source must have the /out option specified. - - - - - Looks up a localized string similar to Could not write to output file '{0}' -- '{1}'. - - - - - Looks up a localized string similar to '{0}' cannot define overloaded methods that differ only on ref and out. - - - - - Looks up a localized string similar to Cannot define overloaded constructor '{0}' because it differs from another constructor only on ref and out. - - - - - Looks up a localized string similar to Do not override object.Finalize. Instead, provide a destructor.. - - - - - Looks up a localized string similar to '{0}': no suitable method found to override. - - - - - Looks up a localized string similar to A member '{0}' marked as override cannot be marked as new or virtual. - - - - - Looks up a localized string similar to Constraints for override and explicit interface implementation methods are inherited from the base method, so they cannot be specified directly. - - - - - Looks up a localized string similar to Overloadable binary operator expected. - - - - - Looks up a localized string similar to Overloadable operator expected. - - - - - Looks up a localized string similar to Overloadable unary operator expected. - - - - - Looks up a localized string similar to The parameter has multiple distinct default values.. - - - - - Looks up a localized string similar to '{0}': static types cannot be used as parameters. - - - - - Looks up a localized string similar to Parameter not valid for the specified unmanaged type.. - - - - - Looks up a localized string similar to The params parameter cannot be declared as ref or out. - - - - - Looks up a localized string similar to A params parameter must be the last parameter in a formal parameter list. - - - - - Looks up a localized string similar to The params parameter must be a single dimensional array. - - - - - Looks up a localized string similar to The out parameter '{0}' must be assigned to before control leaves the current method. - - - - - Looks up a localized string similar to A partial method cannot have out parameters. - - - - - Looks up a localized string similar to Both partial method declarations must be extension methods or neither may be an extension method. - - - - - Looks up a localized string similar to Partial method declarations of '{0}' have inconsistent type parameter constraints. - - - - - Looks up a localized string similar to Partial methods with only a defining declaration or removed conditional methods cannot be used in expression trees. - - - - - Looks up a localized string similar to A partial method cannot have access modifiers or the virtual, abstract, override, new, sealed, or extern modifiers. - - - - - Looks up a localized string similar to No defining declaration found for implementing declaration of partial method '{0}'. - - - - - Looks up a localized string similar to Partial methods must have a void return type. - - - - - Looks up a localized string similar to A partial method may not explicitly implement an interface method. - - - - - Looks up a localized string similar to A partial method must be declared within a partial class or partial struct. - - - - - Looks up a localized string similar to Only methods, classes, structs, or interfaces may be partial. - - - - - Looks up a localized string similar to A partial method may not have multiple implementing declarations. - - - - - Looks up a localized string similar to A partial method may not have multiple defining declarations. - - - - - Looks up a localized string similar to Both partial method declarations must use a params parameter or neither may use a params parameter. - - - - - Looks up a localized string similar to Both partial method declarations must be static or neither may be static. - - - - - Looks up a localized string similar to Cannot create delegate from method '{0}' because it is a partial method without an implementing declaration. - - - - - Looks up a localized string similar to Both partial method declarations must be unsafe or neither may be unsafe. - - - - - Looks up a localized string similar to The 'partial' modifier can only appear immediately before 'class', 'struct', 'interface', or 'void'. - - - - - Looks up a localized string similar to Partial declarations of '{0}' have conflicting accessibility modifiers. - - - - - Looks up a localized string similar to Partial declarations of '{0}' must not specify different base classes. - - - - - Looks up a localized string similar to Partial declarations of '{0}' must be all classes, all structs, or all interfaces. - - - - - Looks up a localized string similar to Partial declarations of '{0}' have inconsistent constraints for type parameter '{1}'. - - - - - Looks up a localized string similar to Partial declarations of '{0}' must have the same type parameter names in the same order. - - - - - Looks up a localized string similar to Partial declarations of '{0}' must have the same type parameter names and variance modifiers in the same order. - - - - - Looks up a localized string similar to Error reading file '{0}' specified for the named argument '{1}' for PermissionSet attribute: '{2}'. - - - - - Looks up a localized string similar to Unable to resolve file path '{0}' specified for the named argument '{1}' for PermissionSet attribute. - - - - - Looks up a localized string similar to Neither 'is' nor 'as' is valid on pointer types. - - - - - Looks up a localized string similar to Cannot define/undefine preprocessor symbols after first token in file. - - - - - Looks up a localized string similar to Preprocessor directive expected. - - - - - Looks up a localized string similar to Cannot use #load after first token in file. - - - - - Looks up a localized string similar to Cannot use #r after first token in file. - - - - - Looks up a localized string similar to Predefined type '{0}' is not defined or imported. - - - - - Looks up a localized string similar to SecurityAction value '{0}' is invalid for PrincipalPermission attribute. - - - - - Looks up a localized string similar to '{0}': abstract properties cannot have private accessors. - - - - - Looks up a localized string similar to '{0}': accessibility modifiers may not be used on accessors in an interface. - - - - - Looks up a localized string similar to '{0}': property or indexer cannot have void type. - - - - - Looks up a localized string similar to The property or indexer '{0}' cannot be used in this context because it lacks the get accessor. - - - - - Looks up a localized string similar to '{0}': property or indexer must have at least one accessor. - - - - - Looks up a localized string similar to '{0}': static classes cannot contain protected members. - - - - - Looks up a localized string similar to '{0}': new protected member declared in struct. - - - - - Looks up a localized string similar to The * or -> operator must be applied to a pointer. - - - - - Looks up a localized string similar to A pointer must be indexed by only one value. - - - - - Looks up a localized string similar to Error signing output with public key from container '{0}' -- {1}. - - - - - Looks up a localized string similar to Error signing output with public key from file '{0}' -- {1}. - - - - - Looks up a localized string similar to The range variable '{0}' has already been declared. - - - - - Looks up a localized string similar to The name '{0}' is not in scope on the right side of 'equals'. Consider swapping the expressions on either side of 'equals'.. - - - - - Looks up a localized string similar to Multiple implementations of the query pattern were found for source type '{0}'. Ambiguous call to '{1}'.. - - - - - Looks up a localized string similar to Could not find an implementation of the query pattern for source type '{0}'. '{1}' not found.. - - - - - Looks up a localized string similar to Could not find an implementation of the query pattern for source type '{0}'. '{1}' not found. Consider explicitly specifying the type of the range variable '{2}'.. - - - - - Looks up a localized string similar to Could not find an implementation of the query pattern for source type '{0}'. '{1}' not found. Are you missing a reference to 'System.Core.dll' or a using directive for 'System.Linq'?. - - - - - Looks up a localized string similar to The name '{0}' is not in scope on the left side of 'equals'. Consider swapping the expressions on either side of 'equals'.. - - - - - Looks up a localized string similar to Cannot pass the range variable '{0}' as an out or ref parameter. - - - - - Looks up a localized string similar to Cannot assign {0} to a range variable. - - - - - Looks up a localized string similar to The range variable '{0}' conflicts with a previous declaration of '{0}'. - - - - - Looks up a localized string similar to Range variable '{0}' cannot be assigned to -- it is read only. - - - - - Looks up a localized string similar to The range variable '{0}' cannot have the same name as a method type parameter. - - - - - Looks up a localized string similar to The type of the expression in the {0} clause is incorrect. Type inference failed in the call to '{1}'.. - - - - - Looks up a localized string similar to The type of one of the expressions in the {0} clause is incorrect. Type inference failed in the call to '{1}'.. - - - - - Looks up a localized string similar to An expression of type '{0}' is not allowed in a subsequent from clause in a query expression with source type '{1}'. Type inference failed in the call to '{2}'.. - - - - - Looks up a localized string similar to } expected. - - - - - Looks up a localized string similar to Members of readonly field '{0}' of type '{1}' cannot be assigned with an object initializer because it is of a value type. - - - - - Looks up a localized string similar to Constructor '{0}' cannot call itself. - - - - - Looks up a localized string similar to Type of '{0}' cannot be inferred since its initializer directly or indirectly refers to the definition.. - - - - - Looks up a localized string similar to The type '{2}' must be a reference type in order to use it as parameter '{1}' in the generic type or method '{0}'. - - - - - Looks up a localized string similar to #r is only allowed in scripts. - - - - - Looks up a localized string similar to A ref or out argument must be an assignable variable. - - - - - Looks up a localized string similar to A ref or out parameter cannot have a default value. - - - - - Looks up a localized string similar to A property or indexer may not be passed as an out or ref parameter. - - - - - Looks up a localized string similar to A readonly field cannot be passed ref or out (except in a constructor). - - - - - Looks up a localized string similar to Members of readonly field '{0}' cannot be passed ref or out (except in a constructor). - - - - - Looks up a localized string similar to Cannot pass '{0}' as a ref or out argument because it is read-only. - - - - - Looks up a localized string similar to Cannot pass fields of '{0}' as a ref or out argument because it is a '{1}'. - - - - - Looks up a localized string similar to Cannot pass '{0}' as a ref or out argument because it is a '{1}'. - - - - - Looks up a localized string similar to A static readonly field cannot be passed ref or out (except in a static constructor). - - - - - Looks up a localized string similar to Fields of static readonly field '{0}' cannot be passed ref or out (except in a static constructor). - - - - - Looks up a localized string similar to The 'class' or 'struct' constraint must come before any other constraints. - - - - - Looks up a localized string similar to '{0}': cannot specify both a constraint class and the 'class' or 'struct' constraint. - - - - - Looks up a localized string similar to The assembly name '{0}' is reserved and cannot be used as a reference in an interactive session. - - - - - Looks up a localized string similar to The enumerator name '{0}' is reserved and cannot be used. - - - - - Looks up a localized string similar to Each linked resource and module must have a unique filename. Filename '{0}' is specified more than once in this assembly. - - - - - Looks up a localized string similar to Resource identifier '{0}' has already been used in this assembly. - - - - - Looks up a localized string similar to Since '{0}' returns void, a return keyword must not be followed by an object expression. - - - - - Looks up a localized string similar to Anonymous function converted to a void returning delegate cannot return a value. - - - - - Looks up a localized string similar to An object of a type convertible to '{0}' is required. - - - - - Looks up a localized string similar to '{0}': not all code paths return a value. - - - - - Looks up a localized string similar to Cannot return a value from an iterator. Use the yield return statement to return a value, or yield break to end the iteration.. - - - - - Looks up a localized string similar to Cannot modify the return value of '{0}' because it is not a variable. - - - - - Looks up a localized string similar to '{0}': static types cannot be used as return types. - - - - - Looks up a localized string similar to The type '{1}' exists in both '{0}' and '{2}'. - - - - - Looks up a localized string similar to The namespace '{1}' in '{0}' conflicts with the type '{3}' in '{2}'. - - - - - Looks up a localized string similar to The type '{1}' in '{0}' conflicts with the namespace '{3}' in '{2}'. - - - - - Looks up a localized string similar to '{0}' cannot be sealed because it is not an override. - - - - - Looks up a localized string similar to '{0}': a class cannot be both static and sealed. - - - - - Looks up a localized string similar to Security attribute '{0}' has an invalid SecurityAction value '{1}'. - - - - - Looks up a localized string similar to SecurityAction value '{0}' is invalid for security attributes applied to an assembly. - - - - - Looks up a localized string similar to SecurityAction value '{0}' is invalid for security attributes applied to a type or a method. - - - - - Looks up a localized string similar to Security attribute '{0}' is not valid on this declaration type. Security attributes are only valid on assembly, type and method declarations.. - - - - - Looks up a localized string similar to First argument to a security attribute must be a valid SecurityAction. - - - - - Looks up a localized string similar to Security attribute '{0}' cannot be applied to an Async method.. - - - - - Looks up a localized string similar to Async methods are not allowed in an Interface, Class, or Structure which has the 'SecurityCritical' or 'SecuritySafeCritical' attribute.. - - - - - Looks up a localized string similar to ; expected. - - - - - Looks up a localized string similar to { or ; expected. - - - - - Looks up a localized string similar to Key file '{0}' is missing the private key needed for signing. - - - - - Looks up a localized string similar to A single-line comment may not be used in an interpolated string.. - - - - - Looks up a localized string similar to The type or namespace name '{0}' could not be found (are you missing a using directive or an assembly reference?). - - - - - Looks up a localized string similar to The type name '{0}' could not be found. This type has been forwarded to assembly '{1}'. Consider adding a reference to that assembly.. - - - - - Looks up a localized string similar to '{0}' does not have a predefined size, therefore sizeof can only be used in an unsafe context (consider using System.Runtime.InteropServices.Marshal.SizeOf). - - - - - Looks up a localized string similar to Source file references are not supported.. - - - - - Looks up a localized string similar to Instance of type '{0}' cannot be used inside an anonymous function, query expression, iterator block or async method. - - - - - Looks up a localized string similar to Constraint cannot be special class '{0}'. - - - - - Looks up a localized string similar to stackalloc may not be used in a catch or finally block. - - - - - Looks up a localized string similar to A lambda expression with a statement body cannot be converted to an expression tree. - - - - - Looks up a localized string similar to '{1}': cannot derive from static class '{0}'. - - - - - Looks up a localized string similar to '{0}': static classes cannot implement interfaces. - - - - - Looks up a localized string similar to The constant '{0}' cannot be marked static. - - - - - Looks up a localized string similar to '{0}': a static constructor must be parameterless. - - - - - Looks up a localized string similar to '{0}': access modifiers are not allowed on static constructors. - - - - - Looks up a localized string similar to '{0}': static constructor cannot have an explicit 'this' or 'base' constructor call. - - - - - Looks up a localized string similar to Static class '{0}' cannot derive from type '{1}'. Static classes must derive from object.. - - - - - Looks up a localized string similar to The second operand of an 'is' or 'as' operator may not be static type '{0}'. - - - - - Looks up a localized string similar to Static field or property '{0}' cannot be assigned in an object initializer. - - - - - Looks up a localized string similar to A static member '{0}' cannot be marked as override, virtual, or abstract. - - - - - Looks up a localized string similar to Struct member '{0}' of type '{1}' causes a cycle in the struct layout. - - - - - Looks up a localized string similar to The FieldOffset attribute is not allowed on static or const fields. - - - - - Looks up a localized string similar to The FieldOffset attribute can only be placed on members of types marked with the StructLayout(LayoutKind.Explicit). - - - - - Looks up a localized string similar to Structs cannot contain explicit parameterless constructors. - - - - - Looks up a localized string similar to '{0}': structs cannot call base class constructors. - - - - - Looks up a localized string similar to Sub-expression cannot be used in an argument to nameof.. - - - - - Looks up a localized string similar to Control cannot fall out of switch from final case label ('{0}'). - - - - - Looks up a localized string similar to Control cannot fall through from one case label ('{0}') to another. - - - - - Looks up a localized string similar to A switch expression or case label must be a bool, char, string, integral, enum, or corresponding nullable type. - - - - - Looks up a localized string similar to Command-line syntax error: Missing ':<number>' for '{0}' option. - - - - - Looks up a localized string similar to Command-line syntax error: Missing '{0}' for '{1}' option. - - - - - Looks up a localized string similar to 'MethodImplOptions.Synchronized' cannot be applied to an async method. - - - - - Looks up a localized string similar to Syntax error, '{0}' expected. - - - - - Looks up a localized string similar to System.Void cannot be used from C# -- use typeof(void) to get the void type object. - - - - - Looks up a localized string similar to Since '{0}' is an async method that returns 'Task', a return keyword must not be followed by an object expression. Did you intend to return 'Task<T>'?. - - - - - Looks up a localized string similar to Async lambda expression converted to a 'Task' returning delegate cannot return a value. Did you intend to return 'Task<T>'?. - - - - - Looks up a localized string similar to Keyword 'this' is not available in the current context. - - - - - Looks up a localized string similar to Keyword 'this' is not valid in a static property, static method, or static field initializer. - - - - - Looks up a localized string similar to Keyword 'this' or 'base' expected. - - - - - Looks up a localized string similar to Anonymous methods, lambda expressions, and query expressions inside structs cannot access instance members of 'this'. Consider copying 'this' to a local variable outside the anonymous method, lambda expression or query expression and using the local instead.. - - - - - Looks up a localized string similar to Catch clauses cannot follow the general catch clause of a try statement. - - - - - Looks up a localized string similar to Too many characters in character literal. - - - - - Looks up a localized string similar to Only 65534 locals, including those generated by the compiler, are allowed. - - - - - Looks up a localized string similar to A format specifier may not contain trailing whitespace.. - - - - - Looks up a localized string similar to The {1} '{0}' cannot be used with type arguments. - - - - - Looks up a localized string similar to Type expected. - - - - - Looks up a localized string similar to Type parameter declaration must be an identifier not a type. - - - - - Looks up a localized string similar to Cannot convert null to type parameter '{0}' because it could be a non-nullable value type. Consider using 'default({0})' instead.. - - - - - Looks up a localized string similar to Type parameter '{0}' has the same name as the containing type, or method. - - - - - Looks up a localized string similar to The contextual keyword 'var' may only appear within a local variable declaration or in script code. - - - - - Looks up a localized string similar to The contextual keyword 'var' cannot be used in a range variable declaration. - - - - - Looks up a localized string similar to '{1}' does not define type parameter '{0}'. - - - - - Looks up a localized string similar to Field '{0}' must be fully assigned before control is returned to the caller. - - - - - Looks up a localized string similar to Auto-implemented property '{0}' must be fully assigned before control is returned to the caller.. - - - - - Looks up a localized string similar to Cannot modify the result of an unboxing conversion. - - - - - Looks up a localized string similar to Missing close delimiter '}' for interpolated expression started with '{'.. - - - - - Looks up a localized string similar to A '{0}' character must be escaped (by doubling) in an interpolated string.. - - - - - Looks up a localized string similar to Unexpected use of an aliased name. - - - - - Looks up a localized string similar to Type arguments are not allowed in the nameof operator.. - - - - - Looks up a localized string similar to Unexpected character '{0}'. - - - - - Looks up a localized string similar to Unexpected preprocessor directive. - - - - - Looks up a localized string similar to Unexpected use of a generic name. - - - - - Looks up a localized string similar to Semicolon after method or accessor block is not valid. - - - - - Looks up a localized string similar to Unexpected token '{0}'. - - - - - Looks up a localized string similar to Unexpected use of an unbound generic name. - - - - - Looks up a localized string similar to Invalid variance: The type parameter '{1}' must be {3} valid on '{0}'. '{1}' is {2}.. - - - - - Looks up a localized string similar to '{0}' cannot implement both '{1}' and '{2}' because they may unify for some type parameter substitutions. - - - - - Looks up a localized string similar to '{0}' does not implement inherited abstract member '{1}'. - - - - - Looks up a localized string similar to '{0}' does not implement interface member '{1}'. '{2}' is not public.. - - - - - Looks up a localized string similar to '{0}' does not implement interface member '{1}'. - - - - - Looks up a localized string similar to A previous catch clause already catches all exceptions of this or of a super type ('{0}'). - - - - - Looks up a localized string similar to Async methods cannot have unsafe parameters or return types. - - - - - Looks up a localized string similar to Iterators cannot have unsafe parameters or yield types. - - - - - Looks up a localized string similar to Pointers and fixed size buffers may only be used in an unsafe context. - - - - - Looks up a localized string similar to Unsafe type '{0}' cannot be used in object creation. - - - - - Looks up a localized string similar to Transparent identifier member access failed for field '{0}' of '{1}'. Does the data being queried implement the query pattern?. - - - - - Looks up a localized string similar to Unterminated string literal. - - - - - Looks up a localized string similar to Use of unassigned local variable '{0}'. - - - - - Looks up a localized string similar to Use of possibly unassigned field '{0}'. - - - - - Looks up a localized string similar to Use of unassigned out parameter '{0}'. - - - - - Looks up a localized string similar to Use of possibly unassigned auto-implemented property '{0}'. - - - - - Looks up a localized string similar to The 'this' object cannot be used before all of its fields are assigned to. - - - - - Looks up a localized string similar to A using clause must precede all other elements defined in the namespace except extern alias declarations. - - - - - Looks up a localized string similar to The type '{2}' must be a non-nullable value type in order to use it as parameter '{1}' in the generic type or method '{0}'. - - - - - Looks up a localized string similar to Cannot convert null to '{0}' because it is a non-nullable value type. - - - - - Looks up a localized string similar to Syntax error; value expected. - - - - - Looks up a localized string similar to Extension method '{0}' defined on value type '{1}' cannot be used to create delegates. - - - - - Looks up a localized string similar to Members of property '{0}' of type '{1}' cannot be assigned with an object initializer because it is of a value type. - - - - - Looks up a localized string similar to __arglist is not allowed in the parameter list of async methods. - - - - - Looks up a localized string similar to An expression tree lambda may not contain a method with variable arguments. - - - - - Looks up a localized string similar to __arglist is not allowed in the parameter list of iterators. - - - - - Looks up a localized string similar to An __arglist parameter must be the last parameter in a formal parameter list. - - - - - Looks up a localized string similar to Cannot declare a variable of static type '{0}'. - - - - - Looks up a localized string similar to Cannot use local variable '{0}' before it is declared. - - - - - Looks up a localized string similar to Cannot use local variable '{0}' before it is declared. The declaration of the local variable hides the field '{1}'.. - - - - - Looks up a localized string similar to '{0}': virtual or abstract members cannot be private. - - - - - Looks up a localized string similar to The operation in question is undefined on void pointers. - - - - - Looks up a localized string similar to '{0}': a field cannot be both volatile and readonly. - - - - - Looks up a localized string similar to '{0}': a volatile field cannot be of the type '{1}'. - - - - - Looks up a localized string similar to A Windows Runtime event may not be passed as an out or ref parameter.. - - - - - Looks up a localized string similar to The yield statement cannot be used inside an anonymous method or lambda expression. - - - - - Looks up a localized string similar to Cannot use 'yield' in top-level script code. - - - - - Looks up a localized string similar to Algorithm '{0}' is not supported. - - - - - Looks up a localized string similar to Code page '{0}' is invalid or not installed. - - - - - Looks up a localized string similar to Unexpected error writing debug information -- '{0}'. - - - - - Looks up a localized string similar to File name '{0}' is empty, contains invalid characters, has a drive specification without an absolute path, or is too long. - - - - - Looks up a localized string similar to Invalid target type for /target: must specify 'exe', 'winexe', 'library', or 'module'. - - - - - Looks up a localized string similar to Metadata file '{0}' could not be opened -- {1}. - - - - - Looks up a localized string similar to Cannot create short filename '{0}' when a long filename with the same short filename already exists. - - - - - Looks up a localized string similar to Generic parameter is definition when expected to be reference {0}. - - - - - Looks up a localized string similar to Unused extern alias.. - - - - - Looks up a localized string similar to Unused extern alias. - - - - - Looks up a localized string similar to Unnecessary using directive.. - - - - - Looks up a localized string similar to Unnecessary using directive. - - - - - Looks up a localized string similar to anonymous method. - - - - - Looks up a localized string similar to await in catch blocks and finally blocks. - - - - - Looks up a localized string similar to collection. - - - - - Looks up a localized string similar to contravariant. - - - - - Looks up a localized string similar to contravariantly. - - - - - Looks up a localized string similar to covariant. - - - - - Looks up a localized string similar to covariantly. - - - - - Looks up a localized string similar to - Visual C# Compiler Options - - - OUTPUT FILES - - /out:<file> Specify output file name (default: base name of - file with main class or first file) - /target:exe Build a console executable (default) (Short - form: /t:exe) - /target:winexe Build a Windows executable (Short form: - /t:winexe) - /target:library [rest of string was truncated]";. - - - - - Looks up a localized string similar to directory does not exist. - - - - - Looks up a localized string similar to path is too long or invalid. - - - - - Looks up a localized string similar to anonymous methods. - - - - - Looks up a localized string similar to anonymous types. - - - - - Looks up a localized string similar to async function. - - - - - Looks up a localized string similar to automatically implemented properties. - - - - - Looks up a localized string similar to auto property initializer. - - - - - Looks up a localized string similar to collection initializer. - - - - - Looks up a localized string similar to declaration expression. - - - - - Looks up a localized string similar to default operator. - - - - - Looks up a localized string similar to dictionary initializer. - - - - - Looks up a localized string similar to dynamic. - - - - - Looks up a localized string similar to exception filter. - - - - - Looks up a localized string similar to expression-bodied indexer. - - - - - Looks up a localized string similar to expression-bodied method. - - - - - Looks up a localized string similar to expression-bodied property. - - - - - Looks up a localized string similar to extension method. - - - - - Looks up a localized string similar to extern alias. - - - - - Looks up a localized string similar to fixed size buffers. - - - - - Looks up a localized string similar to generics. - - - - - Looks up a localized string similar to namespace alias qualifier. - - - - - Looks up a localized string similar to implicitly typed array. - - - - - Looks up a localized string similar to implicitly typed local variable. - - - - - Looks up a localized string similar to interpolated strings. - - - - - Looks up a localized string similar to iterators. - - - - - Looks up a localized string similar to lambda expression. - - - - - Looks up a localized string similar to module as an attribute target specifier. - - - - - Looks up a localized string similar to named argument. - - - - - Looks up a localized string similar to nameof operator. - - - - - Looks up a localized string similar to nullable types. - - - - - Looks up a localized string similar to null propagating operator. - - - - - Looks up a localized string similar to object initializer. - - - - - Looks up a localized string similar to optional parameter. - - - - - Looks up a localized string similar to partial method. - - - - - Looks up a localized string similar to partial types. - - - - - Looks up a localized string similar to #pragma. - - - - - Looks up a localized string similar to access modifiers on properties. - - - - - Looks up a localized string similar to query expression. - - - - - Looks up a localized string similar to readonly automatically implemented properties. - - - - - Looks up a localized string similar to static classes. - - - - - Looks up a localized string similar to switch on boolean type. - - - - - Looks up a localized string similar to type variance. - - - - - Looks up a localized string similar to using static. - - - - - Looks up a localized string similar to fixed variable. - - - - - Looks up a localized string similar to foreach iteration variable. - - - - - Looks up a localized string similar to <global namespace>. - - - - - Looks up a localized string similar to invariantly. - - - - - Looks up a localized string similar to lambda expression. - - - - - Looks up a localized string similar to LIB environment variable. - - - - - Looks up a localized string similar to /LIB option. - - - - - Looks up a localized string similar to {0} version {1}. - - - - - Looks up a localized string similar to Copyright (C) Microsoft Corporation. All rights reserved.. - - - - - Looks up a localized string similar to method group. - - - - - Looks up a localized string similar to <namespace>. - - - - - Looks up a localized string similar to <null>. - - - - - Looks up a localized string similar to Operation caused a stack overflow.. - - - - - Looks up a localized string similar to <path list>. - - - - - Looks up a localized string similar to /REFERENCEPATH option. - - - - - Looks up a localized string similar to (Location of symbol related to previous error). - - - - - Looks up a localized string similar to (Location of symbol related to previous warning). - - - - - Looks up a localized string similar to using alias. - - - - - Looks up a localized string similar to event. - - - - - Looks up a localized string similar to extern alias. - - - - - Looks up a localized string similar to field. - - - - - Looks up a localized string similar to label. - - - - - Looks up a localized string similar to method. - - - - - Looks up a localized string similar to namespace. - - - - - Looks up a localized string similar to property. - - - - - Looks up a localized string similar to type. - - - - - Looks up a localized string similar to type parameter. - - - - - Looks up a localized string similar to element. - - - - - Looks up a localized string similar to variable. - - - - - Looks up a localized string similar to <text>. - - - - - Looks up a localized string similar to Microsoft (R) Visual C# Compiler. - - - - - Looks up a localized string similar to using variable. - - - - - Looks up a localized string similar to 'experimental'. - - - - - Looks up a localized string similar to Include tag is invalid . - - - - - Looks up a localized string similar to Failed to insert some or all of included XML . - - - - - Looks up a localized string similar to <!-- Badly formed XML comment ignored for member "{0}" -->. - - - - - Looks up a localized string similar to Badly formed XML file "{0}" cannot be included . - - - - - Looks up a localized string similar to Missing file attribute. - - - - - Looks up a localized string similar to Missing path attribute. - - - - - Looks up a localized string similar to No matching elements were found for the following include tag . - - - - - Looks up a localized string similar to Skipping some types in analyzer assembly {0} due to a ReflectionTypeLoadException : {1}.. - - - - - Looks up a localized string similar to Skip loading types in analyzer assembly that fail due to a ReflectionTypeLoadException. - - - - - Looks up a localized string similar to Called GetDeclarationName for a declaration node that can possibly contain multiple variable declarators.. - - - - - Looks up a localized string similar to items: must be non-empty. - - - - - Looks up a localized string similar to Location must be provided in order to provide minimal type qualification.. - - - - - Looks up a localized string similar to LookupOptions has an invalid combination of options. - - - - - Looks up a localized string similar to Must call SetMethodTestData(ConcurrentDictionary) before calling SetMethodTestData(MethodSymbol, ILBuilder). - - - - - Looks up a localized string similar to Name conflict for name {0}. - - - - - Looks up a localized string similar to SearchCriteria is expected.. - - - - - Looks up a localized string similar to Not a C# symbol.. - - - - - Looks up a localized string similar to Position is not within syntax tree with full span {0}. - - - - - Looks up a localized string similar to Position must be within span of the syntax tree.. - - - - - Looks up a localized string similar to separator is expected. - - - - - Looks up a localized string similar to Syntax node to be speculated cannot belong to a syntax tree from the current compilation.. - - - - - Looks up a localized string similar to Submission can have at most one syntax tree.. - - - - - Looks up a localized string similar to Submission can only include script code.. - - - - - Looks up a localized string similar to Syntax node is not within syntax tree. - - - - - Looks up a localized string similar to Syntax tree already present. - - - - - Looks up a localized string similar to SyntaxTree '{0}' resulted from a #load directive and cannot be removed or replaced directly.. - - - - - Looks up a localized string similar to SyntaxTree '{0}' not found to remove. - - - - - Looks up a localized string similar to SyntaxTreeSemanticModel must be provided in order to provide minimal type qualification.. - - - - - Looks up a localized string similar to The stream cannot be read from.. - - - - - Looks up a localized string similar to The stream cannot be written to.. - - - - - Looks up a localized string similar to This method can only be used to create tokens - {0} is not a token kind.. - - - - - Looks up a localized string similar to tree must have a root node with SyntaxKind.CompilationUnit. - - - - - Looks up a localized string similar to tree not part of compilation. - - - - - Looks up a localized string similar to Type argument cannot be null. - - - - - Looks up a localized string similar to Use Roslyn.Compilers.CSharp.Syntax.Literal to create numeric literal tokens.. - - - - - Looks up a localized string similar to Use Roslyn.Compilers.CSharp.Syntax.Literal to create character literal tokens.. - - - - - Looks up a localized string similar to Use Roslyn.Compilers.CSharp.Syntax.Identifier or Roslyn.Compilers.CSharp.Syntax.VerbatimIdentifier to create identifier tokens.. - - - - - Looks up a localized string similar to Alignment value {0} has a magnitude greater than {1} and may result in a large formatted string.. - - - - - Looks up a localized string similar to Alignment value has a magnitude that may result in a large formatted string. - - - - - Looks up a localized string similar to The result of the expression is always 'null' of type '{0}'. - - - - - Looks up a localized string similar to The result of the expression is always 'null'. - - - - - Looks up a localized string similar to Ambiguous reference in cref attribute: '{0}'. Assuming '{1}', but could have also matched other overloads including '{2}'.. - - - - - Looks up a localized string similar to Ambiguous reference in cref attribute. - - - - - Looks up a localized string similar to An instance of analyzer {0} cannot be created from {1} : {2}.. - - - - - Looks up a localized string similar to An analyzer instance cannot be created. - - - - - Looks up a localized string similar to Attribute '{0}' from module '{1}' will be ignored in favor of the instance appearing in source. - - - - - Looks up a localized string similar to Attribute will be ignored in favor of the instance appearing in source. - - - - - Looks up a localized string similar to Possibly incorrect assignment to local '{0}' which is the argument to a using or lock statement. The Dispose call or unlocking will happen on the original value of the local.. - - - - - Looks up a localized string similar to Possibly incorrect assignment to local which is the argument to a using or lock statement. - - - - - Looks up a localized string similar to Assignment made to same variable; did you mean to assign something else?. - - - - - Looks up a localized string similar to Assignment made to same variable. - - - - - Looks up a localized string similar to This async method lacks 'await' operators and will run synchronously. Consider using the 'await' operator to await non-blocking API calls, or 'await Task.Run(...)' to do CPU-bound work on a background thread.. - - - - - Looks up a localized string similar to Async method lacks 'await' operators and will run synchronously. - - - - - Looks up a localized string similar to '{0}' is not a valid attribute location for this declaration. Valid attribute locations for this declaration are '{1}'. All attributes in this block will be ignored.. - - - - - Looks up a localized string similar to Not a valid attribute location for this declaration. - - - - - Looks up a localized string similar to Possible unintended reference comparison; to get a value comparison, cast the left hand side to type '{0}'. - - - - - Looks up a localized string similar to Possible unintended reference comparison; left hand side needs cast. - - - - - Looks up a localized string similar to Possible unintended reference comparison; to get a value comparison, cast the right hand side to type '{0}'. - - - - - Looks up a localized string similar to Possible unintended reference comparison; right hand side needs cast. - - - - - Looks up a localized string similar to Cannot restore warning 'CS{0}' because it was disabled globally. - - - - - Looks up a localized string similar to Cannot restore warning because it was disabled globally. - - - - - Looks up a localized string similar to The language name '{0}' is invalid.. - - - - - Looks up a localized string similar to The language name is invalid. - - - - - Looks up a localized string similar to '{0}' is not a valid warning number. - - - - - Looks up a localized string similar to A number that was passed to the #pragma warning preprocessor directive was not a valid warning number. Verify that the number represents a warning, not an error.. - - - - - Looks up a localized string similar to Not a valid warning number. - - - - - Looks up a localized string similar to XML comment has cref attribute '{0}' that could not be resolved. - - - - - Looks up a localized string similar to XML comment has cref attribute that could not be resolved. - - - - - Looks up a localized string similar to Invalid type for parameter {0} in XML comment cref attribute: '{1}'. - - - - - Looks up a localized string similar to Invalid type for parameter in XML comment cref attribute. - - - - - Looks up a localized string similar to Invalid return type in XML comment cref attribute. - - - - - Looks up a localized string similar to Invalid return type in XML comment cref attribute. - - - - - Looks up a localized string similar to XML comment has syntactically incorrect cref attribute '{0}'. - - - - - Looks up a localized string similar to XML comment has syntactically incorrect cref attribute. - - - - - Looks up a localized string similar to XML comment has cref attribute '{0}' that refers to a type parameter. - - - - - Looks up a localized string similar to XML comment has cref attribute that refers to a type parameter. - - - - - Looks up a localized string similar to Bitwise-or operator used on a sign-extended operand; consider casting to a smaller unsigned type first. - - - - - Looks up a localized string similar to The compiler implicitly widened and sign-extended a variable, and then used the resulting value in a bitwise OR operation. This can result in unexpected behavior.. - - - - - Looks up a localized string similar to Bitwise-or operator used on a sign-extended operand. - - - - - Looks up a localized string similar to Passing '{0}' as ref or out or taking its address may cause a runtime exception because it is a field of a marshal-by-reference class. - - - - - Looks up a localized string similar to Passing a field of a marshal-by-reference class as ref or out or taking its address may cause a runtime exception. - - - - - Looks up a localized string similar to Call System.IDisposable.Dispose() on allocated instance of {0} before all references to it are out of scope.. - - - - - Looks up a localized string similar to Call System.IDisposable.Dispose() on allocated instance before all references to it are out of scope. - - - - - Looks up a localized string similar to Allocated instance of {0} is not disposed along all exception paths. Call System.IDisposable.Dispose() before all references to it are out of scope.. - - - - - Looks up a localized string similar to Allocated instance is not disposed along all exception paths. - - - - - Looks up a localized string similar to Object '{0}' can be disposed more than once.. - - - - - Looks up a localized string similar to Object can be disposed more than once. - - - - - Looks up a localized string similar to The CallerFilePathAttribute applied to parameter '{0}' will have no effect because it applies to a member that is used in contexts that do not allow optional arguments. - - - - - Looks up a localized string similar to The CallerFilePathAttribute will have no effect because it applies to a member that is used in contexts that do not allow optional arguments. - - - - - Looks up a localized string similar to The CallerMemberNameAttribute applied to parameter '{0}' will have no effect. It is overridden by the CallerFilePathAttribute.. - - - - - Looks up a localized string similar to The CallerMemberNameAttribute will have no effect; it is overridden by the CallerFilePathAttribute. - - - - - Looks up a localized string similar to The CallerLineNumberAttribute applied to parameter '{0}' will have no effect because it applies to a member that is used in contexts that do not allow optional arguments. - - - - - Looks up a localized string similar to The CallerLineNumberAttribute will have no effect because it applies to a member that is used in contexts that do not allow optional arguments. - - - - - Looks up a localized string similar to The CallerFilePathAttribute applied to parameter '{0}' will have no effect. It is overridden by the CallerLineNumberAttribute.. - - - - - Looks up a localized string similar to The CallerFilePathAttribute will have no effect; it is overridden by the CallerLineNumberAttribute. - - - - - Looks up a localized string similar to The CallerMemberNameAttribute applied to parameter '{0}' will have no effect. It is overridden by the CallerLineNumberAttribute.. - - - - - Looks up a localized string similar to The CallerMemberNameAttribute will have no effect; it is overridden by the CallerLineNumberAttribute. - - - - - Looks up a localized string similar to The CallerMemberNameAttribute applied to parameter '{0}' will have no effect because it applies to a member that is used in contexts that do not allow optional arguments. - - - - - Looks up a localized string similar to The CallerMemberNameAttribute will have no effect because it applies to a member that is used in contexts that do not allow optional arguments. - - - - - Looks up a localized string similar to Accessing a member on '{0}' may cause a runtime exception because it is a field of a marshal-by-reference class. - - - - - Looks up a localized string similar to This warning occurs when you try to call a method, property, or indexer on a member of a class that derives from MarshalByRefObject, and the member is a value type. Objects that inherit from MarshalByRefObject are typically intended to be marshaled by reference across an application domain. If any code ever attempts to directly access the value-type member of such an object across an application domain, a runtime exception will occur. To resolve the warning, first copy the member into a local variable and c [rest of string was truncated]";. - - - - - Looks up a localized string similar to Accessing a member on a field of a marshal-by-reference class may cause a runtime exception. - - - - - Looks up a localized string similar to Ignoring /win32manifest for module because it only applies to assemblies. - - - - - Looks up a localized string similar to Ignoring /win32manifest for module because it only applies to assemblies. - - - - - Looks up a localized string similar to Arrays as attribute arguments is not CLS-compliant. - - - - - Looks up a localized string similar to Arrays as attribute arguments is not CLS-compliant. - - - - - Looks up a localized string similar to '{0}' cannot be marked as CLS-compliant because the assembly does not have a CLSCompliant attribute. - - - - - Looks up a localized string similar to Type or member cannot be marked as CLS-compliant because the assembly does not have a CLSCompliant attribute. - - - - - Looks up a localized string similar to '{0}' does not need a CLSCompliant attribute because the assembly does not have a CLSCompliant attribute. - - - - - Looks up a localized string similar to Type or member does not need a CLSCompliant attribute because the assembly does not have a CLSCompliant attribute. - - - - - Looks up a localized string similar to Argument type '{0}' is not CLS-compliant. - - - - - Looks up a localized string similar to Argument type is not CLS-compliant. - - - - - Looks up a localized string similar to '{0}' has no accessible constructors which use only CLS-compliant types. - - - - - Looks up a localized string similar to Type has no accessible constructors which use only CLS-compliant types. - - - - - Looks up a localized string similar to '{0}': base type '{1}' is not CLS-compliant. - - - - - Looks up a localized string similar to A base type was marked as not having to be compliant with the Common Language Specification (CLS) in an assembly that was marked as being CLS compliant. Either remove the attribute that specifies the assembly is CLS compliant or remove the attribute that indicates the type is not CLS compliant.. - - - - - Looks up a localized string similar to Base type is not CLS-compliant. - - - - - Looks up a localized string similar to Type of '{0}' is not CLS-compliant. - - - - - Looks up a localized string similar to A public, protected, or protected internal variable must be of a type that is compliant with the Common Language Specification (CLS).. - - - - - Looks up a localized string similar to Type is not CLS-compliant. - - - - - Looks up a localized string similar to Identifier '{0}' is not CLS-compliant. - - - - - Looks up a localized string similar to Identifier is not CLS-compliant. - - - - - Looks up a localized string similar to Identifier '{0}' differing only in case is not CLS-compliant. - - - - - Looks up a localized string similar to Identifier differing only in case is not CLS-compliant. - - - - - Looks up a localized string similar to '{0}' is not CLS-compliant because base interface '{1}' is not CLS-compliant. - - - - - Looks up a localized string similar to Type is not CLS-compliant because base interface is not CLS-compliant. - - - - - Looks up a localized string similar to '{0}': CLS-compliant interfaces must have only CLS-compliant members. - - - - - Looks up a localized string similar to CLS-compliant interfaces must have only CLS-compliant members. - - - - - Looks up a localized string similar to Return type of '{0}' is not CLS-compliant. - - - - - Looks up a localized string similar to Return type is not CLS-compliant. - - - - - Looks up a localized string similar to Constraint type '{0}' is not CLS-compliant. - - - - - Looks up a localized string similar to Constraint type is not CLS-compliant. - - - - - Looks up a localized string similar to '{0}' cannot be marked as CLS-compliant because it is a member of non-CLS-compliant type '{1}'. - - - - - Looks up a localized string similar to Type cannot be marked as CLS-compliant because it is a member of non-CLS-compliant type. - - - - - Looks up a localized string similar to CLSCompliant attribute has no meaning when applied to parameters. Try putting it on the method instead.. - - - - - Looks up a localized string similar to CLSCompliant attribute has no meaning when applied to parameters. - - - - - Looks up a localized string similar to CLS compliance checking will not be performed on '{0}' because it is not visible from outside this assembly. - - - - - Looks up a localized string similar to CLS compliance checking will not be performed because it is not visible from outside this assembly. - - - - - Looks up a localized string similar to CLSCompliant attribute has no meaning when applied to return types. Try putting it on the method instead.. - - - - - Looks up a localized string similar to CLSCompliant attribute has no meaning when applied to return types. - - - - - Looks up a localized string similar to Added modules must be marked with the CLSCompliant attribute to match the assembly. - - - - - Looks up a localized string similar to Added modules must be marked with the CLSCompliant attribute to match the assembly. - - - - - Looks up a localized string similar to '{0}': only CLS-compliant members can be abstract. - - - - - Looks up a localized string similar to Only CLS-compliant members can be abstract. - - - - - Looks up a localized string similar to You must specify the CLSCompliant attribute on the assembly, not the module, to enable CLS compliance checking. - - - - - Looks up a localized string similar to You must specify the CLSCompliant attribute on the assembly, not the module, to enable CLS compliance checking. - - - - - Looks up a localized string similar to You cannot specify the CLSCompliant attribute on a module that differs from the CLSCompliant attribute on the assembly. - - - - - Looks up a localized string similar to You cannot specify the CLSCompliant attribute on a module that differs from the CLSCompliant attribute on the assembly. - - - - - Looks up a localized string similar to Methods with variable arguments are not CLS-compliant. - - - - - Looks up a localized string similar to Methods with variable arguments are not CLS-compliant. - - - - - Looks up a localized string similar to Overloaded method '{0}' differing only in ref or out, or in array rank, is not CLS-compliant. - - - - - Looks up a localized string similar to Overloaded method differing only in ref or out, or in array rank, is not CLS-compliant. - - - - - Looks up a localized string similar to Overloaded method '{0}' differing only by unnamed array types is not CLS-compliant. - - - - - Looks up a localized string similar to This error occurs if you have an overloaded method that takes a jagged array and the only difference between the method signatures is the element type of the array. To avoid this error, consider using a rectangular array rather than a jagged array; use an additional parameter to disambiguate the function call; rename one or more of the overloaded methods; or, if CLS Compliance is not needed, remove the CLSCompliantAttribute attribute.. - - - - - Looks up a localized string similar to Overloaded method differing only by unnamed array types is not CLS-compliant. - - - - - Looks up a localized string similar to CLS-compliant field '{0}' cannot be volatile. - - - - - Looks up a localized string similar to CLS-compliant field cannot be volatile. - - - - - Looks up a localized string similar to Option '{0}' overrides attribute '{1}' given in a source file or added module. - - - - - Looks up a localized string similar to This warning occurs if the assembly attributes AssemblyKeyFileAttribute or AssemblyKeyNameAttribute found in source conflict with the /keyfile or /keycontainer command line option or key file name or key container specified in the Project Properties.. - - - - - Looks up a localized string similar to Option overrides attribute given in a source file or added module. - - - - - Looks up a localized string similar to Comparing with null of type '{0}' always produces 'false'. - - - - - Looks up a localized string similar to Comparing with null of struct type always produces 'false'. - - - - - Looks up a localized string similar to '{0}' interface marked with 'CoClassAttribute' not marked with 'ComImportAttribute'. - - - - - Looks up a localized string similar to Interface marked with 'CoClassAttribute' not marked with 'ComImportAttribute'. - - - - - Looks up a localized string similar to Comparison made to same variable; did you mean to compare something else?. - - - - - Looks up a localized string similar to Comparison made to same variable. - - - - - Looks up a localized string similar to Different checksum values given for '{0}'. - - - - - Looks up a localized string similar to Different #pragma checksum values given. - - - - - Looks up a localized string similar to Referenced assembly '{0}' targets a different processor.. - - - - - Looks up a localized string similar to Referenced assembly targets a different processor. - - - - - Looks up a localized string similar to The fully qualified name for '{0}' is too long for debug information. Compile without '/debug' option.. - - - - - Looks up a localized string similar to Fully qualified name is too long for debug information. - - - - - Looks up a localized string similar to The default value specified for parameter '{0}' will have no effect because it applies to a member that is used in contexts that do not allow optional arguments. - - - - - Looks up a localized string similar to The default value specified will have no effect because it applies to a member that is used in contexts that do not allow optional arguments. - - - - - Looks up a localized string similar to Invalid value for '/define'; '{0}' is not a valid identifier. - - - - - Looks up a localized string similar to Invalid value for '/define'; not a valid identifier. - - - - - Looks up a localized string similar to Delay signing was specified and requires a public key, but no public key was specified. - - - - - Looks up a localized string similar to Delay signing was specified and requires a public key, but no public key was specified. - - - - - Looks up a localized string similar to The best overloaded Add method '{0}' for the collection initializer element is obsolete.. - - - - - Looks up a localized string similar to The best overloaded Add method for the collection initializer element is obsolete. - - - - - Looks up a localized string similar to The best overloaded Add method '{0}' for the collection initializer element is obsolete. {1}. - - - - - Looks up a localized string similar to The best overloaded Add method for the collection initializer element is obsolete. - - - - - Looks up a localized string similar to '{0}' is obsolete. - - - - - Looks up a localized string similar to Type or member is obsolete. - - - - - Looks up a localized string similar to '{0}' is obsolete: '{1}'. - - - - - Looks up a localized string similar to Type or member is obsolete. - - - - - Looks up a localized string similar to Expression will always cause a System.NullReferenceException because the default value of '{0}' is null. - - - - - Looks up a localized string similar to Expression will always cause a System.NullReferenceException because the type's default value is null. - - - - - Looks up a localized string similar to XML comment has a duplicate param tag for '{0}'. - - - - - Looks up a localized string similar to XML comment has a duplicate param tag. - - - - - Looks up a localized string similar to XML comment has a duplicate typeparam tag for '{0}'. - - - - - Looks up a localized string similar to XML comment has a duplicate typeparam tag. - - - - - Looks up a localized string similar to The using directive for '{0}' appeared previously in this namespace. - - - - - Looks up a localized string similar to Using directive appeared previously in this namespace. - - - - - Looks up a localized string similar to The dynamically dispatched call to method '{0}' may fail at runtime because one or more applicable overloads are conditional methods.. - - - - - Looks up a localized string similar to Dynamically dispatched call may fail at runtime because one or more applicable overloads are conditional methods. - - - - - Looks up a localized string similar to Empty switch block. - - - - - Looks up a localized string similar to Empty switch block. - - - - - Looks up a localized string similar to Single-line comment or end-of-line expected. - - - - - Looks up a localized string similar to Single-line comment or end-of-line expected after #pragma directive. - - - - - Looks up a localized string similar to '{0}' defines operator == or operator != but does not override Object.Equals(object o). - - - - - Looks up a localized string similar to Type defines operator == or operator != but does not override Object.Equals(object o). - - - - - Looks up a localized string similar to '{0}' defines operator == or operator != but does not override Object.GetHashCode(). - - - - - Looks up a localized string similar to Type defines operator == or operator != but does not override Object.GetHashCode(). - - - - - Looks up a localized string similar to '{0}' overrides Object.Equals(object o) but does not override Object.GetHashCode(). - - - - - Looks up a localized string similar to Type overrides Object.Equals(object o) but does not override Object.GetHashCode(). - - - - - Looks up a localized string similar to {0}. See also error CS{1}.. - - - - - Looks up a localized string similar to The compiler emits this warning when it overrides an error with a warning. For information about the problem, search for the error code mentioned.. - - - - - Looks up a localized string similar to Warning is overriding an error. - - - - - Looks up a localized string similar to Explicit interface implementation '{0}' matches more than one interface member. Which interface member is actually chosen is implementation-dependent. Consider using a non-explicit implementation instead.. - - - - - Looks up a localized string similar to Explicit interface implementation matches more than one interface member. - - - - - Looks up a localized string similar to Constructor '{0}' is marked external. - - - - - Looks up a localized string similar to Constructor is marked external. - - - - - Looks up a localized string similar to Method, operator, or accessor '{0}' is marked external and has no attributes on it. Consider adding a DllImport attribute to specify the external implementation.. - - - - - Looks up a localized string similar to Method, operator, or accessor is marked external and has no attributes on it. - - - - - Looks up a localized string similar to Unable to include XML fragment '{1}' of file '{0}' -- {2}. - - - - - Looks up a localized string similar to Unable to include XML fragment. - - - - - Looks up a localized string similar to Source file '{0}' specified multiple times. - - - - - Looks up a localized string similar to Source file specified multiple times. - - - - - Looks up a localized string similar to Invalid filename specified for preprocessor directive. Filename is too long or not a valid filename.. - - - - - Looks up a localized string similar to Invalid filename specified for preprocessor directive. - - - - - Looks up a localized string similar to Filter expression is a constant, consider removing the filter. - - - - - Looks up a localized string similar to Filter expression is a constant. - - - - - Looks up a localized string similar to Introducing a 'Finalize' method can interfere with destructor invocation. Did you intend to declare a destructor?. - - - - - Looks up a localized string similar to This warning occurs when you create a class with a method whose signature is public virtual void Finalize. - - If such a class is used as a base class and if the deriving class defines a destructor, the destructor will override the base class Finalize method, not Finalize.. - - - - - Looks up a localized string similar to Introducing a 'Finalize' method can interfere with destructor invocation. - - - - - Looks up a localized string similar to Defining an alias named 'global' is ill-advised since 'global::' always references the global namespace and not an alias. - - - - - Looks up a localized string similar to Defining an alias named 'global' is ill-advised. - - - - - Looks up a localized string similar to The 'goto case' value is not implicitly convertible to type '{0}'. - - - - - Looks up a localized string similar to The 'goto case' value is not implicitly convertible to the switch type. - - - - - Looks up a localized string similar to Expected identifier or numeric literal.. - - - - - Looks up a localized string similar to Expected identifier or numeric literal. - - - - - Looks up a localized string similar to Invalid #pragma checksum syntax; should be #pragma checksum "filename" "{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}" "XXXX...". - - - - - Looks up a localized string similar to Invalid #pragma checksum syntax. - - - - - Looks up a localized string similar to Expected disable or restore. - - - - - Looks up a localized string similar to Expected disable or restore after #pragma warning. - - - - - Looks up a localized string similar to Unrecognized #pragma directive. - - - - - Looks up a localized string similar to Unrecognized #pragma directive. - - - - - Looks up a localized string similar to Assignment in conditional expression is always constant; did you mean to use == instead of = ?. - - - - - Looks up a localized string similar to Assignment in conditional expression is always constant. - - - - - Looks up a localized string similar to Assembly reference '{0}' is invalid and cannot be resolved. - - - - - Looks up a localized string similar to This warning indicates that an attribute, such as InternalsVisibleToAttribute, was not specified correctly.. - - - - - Looks up a localized string similar to Assembly reference is invalid and cannot be resolved. - - - - - Looks up a localized string similar to '{0}' is not a recognized attribute location. All attributes in this block will be ignored.. - - - - - Looks up a localized string similar to Not a recognized attribute location. - - - - - Looks up a localized string similar to Invalid XML include element -- {0}. - - - - - Looks up a localized string similar to Invalid XML include element. - - - - - Looks up a localized string similar to '{0}' has the wrong signature to be an entry point. - - - - - Looks up a localized string similar to Method has the wrong signature to be an entry point. - - - - - Looks up a localized string similar to Invalid number. - - - - - Looks up a localized string similar to Invalid number. - - - - - Looks up a localized string similar to Invalid search path '{0}' specified in '{1}' -- '{2}'. - - - - - Looks up a localized string similar to Invalid search path specified. - - - - - Looks up a localized string similar to The specified version string does not conform to the recommended format - major.minor.build.revision. - - - - - Looks up a localized string similar to The specified version string does not conform to the recommended format - major.minor.build.revision. - - - - - Looks up a localized string similar to The given expression is never of the provided ('{0}') type. - - - - - Looks up a localized string similar to 'is' expression's given expression is never of the provided type. - - - - - Looks up a localized string similar to The given expression is always of the provided ('{0}') type. - - - - - Looks up a localized string similar to 'is' expression's given expression is always of the provided type. - - - - - Looks up a localized string similar to Using '{0}' to test compatibility with '{1}' is essentially identical to testing compatibility with '{2}' and will succeed for all non-null values. - - - - - Looks up a localized string similar to Using 'is' to test compatibility with 'dynamic' is essentially identical to testing compatibility with 'Object'. - - - - - Looks up a localized string similar to The 'l' suffix is easily confused with the digit '1' -- use 'L' for clarity. - - - - - Looks up a localized string similar to The 'l' suffix is easily confused with the digit '1'. - - - - - Looks up a localized string similar to '{0}': an entry point cannot be generic or in a generic type. - - - - - Looks up a localized string similar to An entry point cannot be generic or in a generic type. - - - - - Looks up a localized string similar to The entry point of the program is global script code; ignoring '{0}' entry point.. - - - - - Looks up a localized string similar to The entry point of the program is global script code; ignoring entry point. - - - - - Looks up a localized string similar to Parameter '{0}' has no matching param tag in the XML comment for '{1}' (but other parameters do). - - - - - Looks up a localized string similar to Parameter has no matching param tag in the XML comment (but other parameters do). - - - - - Looks up a localized string similar to Type parameter '{0}' has no matching typeparam tag in the XML comment on '{1}' (but other type parameters do). - - - - - Looks up a localized string similar to Type parameter has no matching typeparam tag in the XML comment (but other type parameters do). - - - - - Looks up a localized string similar to Missing XML comment for publicly visible type or member '{0}'. - - - - - Looks up a localized string similar to The /doc compiler option was specified, but one or more constructs did not have comments.. - - - - - Looks up a localized string similar to Missing XML comment for publicly visible type or member. - - - - - Looks up a localized string similar to The predefined type '{0}' is defined in multiple assemblies in the global alias; using definition from '{1}'. - - - - - Looks up a localized string similar to This error occurs when a predefined system type such as System.Int32 is found in two assemblies. One way this can happen is if you are referencing mscorlib or System.Runtime.dll from two different places, such as trying to run two versions of the .NET Framework side-by-side.. - - - - - Looks up a localized string similar to Predefined type is defined in multiple assemblies in the global alias. - - - - - Looks up a localized string similar to Member '{0}' implements interface member '{1}' in type '{2}'. There are multiple matches for the interface member at run-time. It is implementation dependent which method will be called.. - - - - - Looks up a localized string similar to This warning can be generated when two interface methods are differentiated only by whether a particular parameter is marked with ref or with out. It is best to change your code to avoid this warning because it is not obvious or guaranteed which method is called at runtime. - - Although C# distinguishes between out and ref, the CLR sees them as the same. When deciding which method implements the interface, the CLR just picks one. - - Give the compiler some way to differentiate the methods. For example, you ca [rest of string was truncated]";. - - - - - Looks up a localized string similar to Member implements interface member with multiple matches at run-time. - - - - - Looks up a localized string similar to Member '{1}' overrides '{0}'. There are multiple override candidates at run-time. It is implementation dependent which method will be called.. - - - - - Looks up a localized string similar to Member overrides base member with multiple override candidates at run-time. - - - - - Looks up a localized string similar to Indexing an array with a negative index (array indices always start at zero). - - - - - Looks up a localized string similar to Indexing an array with a negative index. - - - - - Looks up a localized string similar to The member '{0}' does not hide an inherited member. The new keyword is not required.. - - - - - Looks up a localized string similar to Member does not hide an inherited member; new keyword is not required. - - - - - Looks up a localized string similar to '{0}' hides inherited member '{1}'. To make the current member override that implementation, add the override keyword. Otherwise add the new keyword.. - - - - - Looks up a localized string similar to Member hides inherited member; missing override keyword. - - - - - Looks up a localized string similar to '{0}' hides inherited member '{1}'. Use the new keyword if hiding was intended.. - - - - - Looks up a localized string similar to A variable was declared with the same name as a variable in a base class. However, the new keyword was not used. This warning informs you that you should use new; the variable is declared as if new had been used in the declaration.. - - - - - Looks up a localized string similar to Member hides inherited member; missing new keyword. - - - - - Looks up a localized string similar to The assembly {0} does not contain any analyzers.. - - - - - Looks up a localized string similar to Assembly does not contain any analyzers. - - - - - Looks up a localized string similar to Ignoring /noconfig option because it was specified in a response file. - - - - - Looks up a localized string similar to Ignoring /noconfig option because it was specified in a response file. - - - - - Looks up a localized string similar to Feature '{0}' is not part of the standardized ISO C# language specification, and may not be accepted by other compilers. - - - - - Looks up a localized string similar to Feature is not part of the standardized ISO C# language specification, and may not be accepted by other compilers. - - - - - Looks up a localized string similar to Member '{0}' overrides obsolete member '{1}'. Add the Obsolete attribute to '{0}'.. - - - - - Looks up a localized string similar to Member overrides obsolete member. - - - - - Looks up a localized string similar to No value for RuntimeMetadataVersion found. No assembly containing System.Object was found nor was a value for RuntimeMetadataVersion specified through options.. - - - - - Looks up a localized string similar to No value for RuntimeMetadataVersion found. - - - - - Looks up a localized string similar to No source files specified.. - - - - - Looks up a localized string similar to No source files specified. - - - - - Looks up a localized string similar to The result of the expression is always '{0}' since a value of type '{1}' is never equal to 'null' of type '{2}'. - - - - - Looks up a localized string similar to The result of the expression is always the same since a value of this type is never equal to 'null'. - - - - - Looks up a localized string similar to The result of the expression is always '{0}' since a value of type '{1}' is never equal to 'null' of type '{2}'. - - - - - Looks up a localized string similar to The result of the expression is always the same since a value of this type is never equal to 'null'. - - - - - Looks up a localized string similar to Obsolete member '{0}' overrides non-obsolete member '{1}'. - - - - - Looks up a localized string similar to Obsolete member overrides non-obsolete member. - - - - - Looks up a localized string similar to '{0}' does not implement the '{1}' pattern. '{2}' has the wrong signature.. - - - - - Looks up a localized string similar to Type does not implement the collection pattern; member has the wrong signature. - - - - - Looks up a localized string similar to '{0}' does not implement the '{1}' pattern. '{2}' is ambiguous with '{3}'.. - - - - - Looks up a localized string similar to Type does not implement the collection pattern; members are ambiguous. - - - - - Looks up a localized string similar to '{0}' does not implement the '{1}' pattern. '{2}' is either static or not public.. - - - - - Looks up a localized string similar to Type does not implement the collection pattern; member is either static or not public. - - - - - Looks up a localized string similar to Local name '{0}' is too long for PDB. Consider shortening or compiling without /debug.. - - - - - Looks up a localized string similar to Local name is too long for PDB. - - - - - Looks up a localized string similar to Possible mistaken empty statement. - - - - - Looks up a localized string similar to Possible mistaken empty statement. - - - - - Looks up a localized string similar to '{0}': new protected member declared in sealed class. - - - - - Looks up a localized string similar to New protected member declared in sealed class. - - - - - Looks up a localized string similar to Referenced assembly '{0}' has different culture setting of '{1}'.. - - - - - Looks up a localized string similar to Referenced assembly has different culture setting. - - - - - Looks up a localized string similar to Referenced assembly '{0}' does not have a strong name.. - - - - - Looks up a localized string similar to Referenced assembly does not have a strong name. - - - - - Looks up a localized string similar to A reference was created to embedded interop assembly '{0}' because of an indirect reference to that assembly created by assembly '{1}'. Consider changing the 'Embed Interop Types' property on either assembly.. - - - - - Looks up a localized string similar to You have added a reference to an assembly using /link (Embed Interop Types property set to True). This instructs the compiler to embed interop type information from that assembly. However, the compiler cannot embed interop type information from that assembly because another assembly that you have referenced also references that assembly using /reference (Embed Interop Types property set to False). - - To embed interop type information for both assemblies, use /link for references to each assembly (set the Em [rest of string was truncated]";. - - - - - Looks up a localized string similar to A reference was created to embedded interop assembly because of an indirect assembly reference. - - - - - Looks up a localized string similar to The type '{1}' in '{0}' conflicts with the imported type '{3}' in '{2}'. Using the type defined in '{0}'.. - - - - - Looks up a localized string similar to Type conflicts with imported type. - - - - - Looks up a localized string similar to The type '{1}' in '{0}' conflicts with the imported namespace '{3}' in '{2}'. Using the type defined in '{0}'.. - - - - - Looks up a localized string similar to Type conflicts with imported namespace. - - - - - Looks up a localized string similar to The namespace '{1}' in '{0}' conflicts with the imported type '{3}' in '{2}'. Using the namespace defined in '{0}'.. - - - - - Looks up a localized string similar to Namespace conflicts with imported type. - - - - - Looks up a localized string similar to There is no defined ordering between fields in multiple declarations of partial struct '{0}'. To specify an ordering, all instance fields must be in the same declaration.. - - - - - Looks up a localized string similar to There is no defined ordering between fields in multiple declarations of partial struct. - - - - - Looks up a localized string similar to Source file has exceeded the limit of 16,707,565 lines representable in the PDB; debug information will be incorrect. - - - - - Looks up a localized string similar to Source file has exceeded the limit of 16,707,565 lines representable in the PDB; debug information will be incorrect. - - - - - Looks up a localized string similar to Type parameter '{0}' has the same name as the type parameter from outer type '{1}'. - - - - - Looks up a localized string similar to Type parameter has the same name as the type parameter from outer type. - - - - - Looks up a localized string similar to Unable to load Analyzer assembly {0} : {1}. - - - - - Looks up a localized string similar to Unable to load Analyzer assembly. - - - - - Looks up a localized string similar to Field '{0}' is never assigned to, and will always have its default value {1}. - - - - - Looks up a localized string similar to Field is never assigned to, and will always have its default value. - - - - - Looks up a localized string similar to Assuming assembly reference '{0}' used by '{1}' matches identity '{2}' of '{3}', you may need to supply runtime policy. - - - - - Looks up a localized string similar to The two assemblies differ in release and/or version number. For unification to occur, you must specify directives in the application's .config file, and you must provide the correct strong name of an assembly.. - - - - - Looks up a localized string similar to Assuming assembly reference matches identity. - - - - - Looks up a localized string similar to Assuming assembly reference '{0}' used by '{1}' matches identity '{2}' of '{3}', you may need to supply runtime policy. - - - - - Looks up a localized string similar to The two assemblies differ in release and/or version number. For unification to occur, you must specify directives in the application's .config file, and you must provide the correct strong name of an assembly.. - - - - - Looks up a localized string similar to Assuming assembly reference matches identity. - - - - - Looks up a localized string similar to The command line switch '{0}' is not yet implemented and was ignored.. - - - - - Looks up a localized string similar to Command line switch is not yet implemented. - - - - - Looks up a localized string similar to XML comment on '{1}' has a paramref tag for '{0}', but there is no parameter by that name. - - - - - Looks up a localized string similar to XML comment has a paramref tag, but there is no parameter by that name. - - - - - Looks up a localized string similar to XML comment has a param tag for '{0}', but there is no parameter by that name. - - - - - Looks up a localized string similar to XML comment has a param tag, but there is no parameter by that name. - - - - - Looks up a localized string similar to XML comment on '{1}' has a typeparamref tag for '{0}', but there is no type parameter by that name. - - - - - Looks up a localized string similar to XML comment has a typeparamref tag, but there is no type parameter by that name. - - - - - Looks up a localized string similar to XML comment has a typeparam tag for '{0}', but there is no type parameter by that name. - - - - - Looks up a localized string similar to XML comment has a typeparam tag, but there is no type parameter by that name. - - - - - Looks up a localized string similar to Because this call is not awaited, execution of the current method continues before the call is completed. Consider applying the 'await' operator to the result of the call.. - - - - - Looks up a localized string similar to The current method calls an async method that returns a Task or a Task<TResult> and doesn't apply the await operator to the result. The call to the async method starts an asynchronous task. However, because no await operator is applied, the program continues without waiting for the task to complete. In most cases, that behavior isn't what you expect. Usually other aspects of the calling method depend on the results of the call or, minimally, the called method is expected to complete before you return from t [rest of string was truncated]";. - - - - - Looks up a localized string similar to Because this call is not awaited, execution of the current method continues before the call is completed. - - - - - Looks up a localized string similar to XML comment is not placed on a valid language element. - - - - - Looks up a localized string similar to XML comment is not placed on a valid language element. - - - - - Looks up a localized string similar to Within cref attributes, nested types of generic types should be qualified.. - - - - - Looks up a localized string similar to Within cref attributes, nested types of generic types should be qualified. - - - - - Looks up a localized string similar to Unreachable code detected. - - - - - Looks up a localized string similar to Unreachable code detected. - - - - - Looks up a localized string similar to A previous catch clause already catches all exceptions. All non-exceptions thrown will be wrapped in a System.Runtime.CompilerServices.RuntimeWrappedException.. - - - - - Looks up a localized string similar to This warning is caused when a catch() block has no specified exception type after a catch (System.Exception e) block. The warning advises that the catch() block will not catch any exceptions. - - A catch() block after a catch (System.Exception e) block can catch non-CLS exceptions if the RuntimeCompatibilityAttribute is set to false in the AssemblyInfo.cs file: [assembly: RuntimeCompatibilityAttribute(WrapNonExceptionThrows = false)]. If this attribute is not set explicitly to false, all thrown non-CLS excep [rest of string was truncated]";. - - - - - Looks up a localized string similar to A previous catch clause already catches all exceptions. - - - - - Looks up a localized string similar to The event '{0}' is never used. - - - - - Looks up a localized string similar to Event is never used. - - - - - Looks up a localized string similar to The field '{0}' is never used. - - - - - Looks up a localized string similar to Field is never used. - - - - - Looks up a localized string similar to The field '{0}' is assigned but its value is never used. - - - - - Looks up a localized string similar to Field is assigned but its value is never used. - - - - - Looks up a localized string similar to This label has not been referenced. - - - - - Looks up a localized string similar to This label has not been referenced. - - - - - Looks up a localized string similar to The variable '{0}' is declared but never used. - - - - - Looks up a localized string similar to Variable is declared but never used. - - - - - Looks up a localized string similar to The variable '{0}' is assigned but its value is never used. - - - - - Looks up a localized string similar to Variable is assigned but its value is never used. - - - - - Looks up a localized string similar to Comparison to integral constant is useless; the constant is outside the range of type '{0}'. - - - - - Looks up a localized string similar to Comparison to integral constant is useless; the constant is outside the range of the type. - - - - - Looks up a localized string similar to '{0}': a reference to a volatile field will not be treated as volatile. - - - - - Looks up a localized string similar to A volatile field should not normally be passed using a ref or out parameter, since it will not be treated as volatile within the scope of the function. There are exceptions to this, such as when calling an interlocked API.. - - - - - Looks up a localized string similar to A reference to a volatile field will not be treated as volatile. - - - - - Looks up a localized string similar to #warning: '{0}'. - - - - - Looks up a localized string similar to #warning directive. - - - - - Looks up a localized string similar to XML comment has badly formed XML -- '{0}'. - - - - - Looks up a localized string similar to XML comment has badly formed XML. - - - - - Looks up a localized string similar to Badly formed XML in included comments file -- '{0}'. - - - - - Looks up a localized string similar to Badly formed XML in included comments file. - - - - - Looks up a localized string similar to Wrong number of type arguments. - - - - - Looks up a localized string similar to Expected a {0} SemanticModel.. - - - - - Looks up a localized string similar to The literal string ']]>' is not allowed in element content.. - - - - - Looks up a localized string similar to Duplicate '{0}' attribute. - - - - - Looks up a localized string similar to End tag '{0}' does not match the start tag '{1}'.. - - - - - Looks up a localized string similar to Expected an end tag for element '{0}'.. - - - - - Looks up a localized string similar to End tag was not expected at this location.. - - - - - Looks up a localized string similar to Expected '>' or '/>' to close tag '{0}'.. - - - - - Looks up a localized string similar to Unexpected character at this location.. - - - - - Looks up a localized string similar to An identifier was expected.. - - - - - Looks up a localized string similar to Incorrect syntax was used in a comment.. - - - - - Looks up a localized string similar to An invalid character was found inside an entity reference.. - - - - - Looks up a localized string similar to The character(s) '{0}' cannot be used at this location.. - - - - - Looks up a localized string similar to Invalid unicode character.. - - - - - Looks up a localized string similar to Whitespace is not allowed at this location.. - - - - - Looks up a localized string similar to The character '<' cannot be used in an attribute value.. - - - - - Looks up a localized string similar to Missing equals sign between attribute and attribute value.. - - - - - Looks up a localized string similar to Reference to undefined entity '{0}'.. - - - - - Looks up a localized string similar to Missing closing quotation mark for string literal.. - - - - - Looks up a localized string similar to Non-ASCII quotations marks may not be used around string literals.. - - - - - Looks up a localized string similar to A string literal was expected, but no opening quotation mark was found.. - - - - - Looks up a localized string similar to Required white space was missing.. - - - - - A Declaration summarizes the declaration structure of a source file. Each entity declaration - in the program that is a container (specifically namespaces, classes, interfaces, structs, - and delegate declarations) is represented by a node in this tree. At the top level, the - compilation unit is treated as a declaration of the unnamed namespace. - - Special treatment is required for namespace declarations, because a single namespace - declaration can declare more than one namespace. For example, in the declaration - - namespace A.B.C {} - - we see that namespaces A and B and C are declared. This declaration is represented as three - declarations. All three of these ContainerDeclaration objects contain a reference to the - syntax tree for the declaration. - - A "single" declaration represents a specific namespace or type declaration at a point in - source code. A "root" declaration is a special single declaration which summarizes the - contents of an entire file's types and namespaces. Each source file is represented as a tree - of single declarations. - - A "merged" declaration merges together one or more declarations for the same symbol. For - example, the root namespace has multiple single declarations (one in each source file) but - there is a single merged declaration for them all. Similarly partial classes may have - multiple declarations, grouped together under the umbrella of a merged declaration. In the - common trivial case, a merged declaration for a single declaration contains only that single - declaration. The whole program, consisting of the set of all declarations in all of the - source files, is represented by a tree of merged declarations. - - - - - A declaration table is a device which keeps track of type and namespace declarations from - parse trees. It is optimized for the case where there is one set of declarations that stays - constant, and a specific root namespace declaration corresponding to the currently edited - file which is being added and removed repeatedly. It maintains a cache of information for - "merging" the root declarations into one big summary declaration; this cache is efficiently - re-used provided that the pattern of adds and removes is as we expect. - - - - - Creates a root declaration that contains a Script class declaration (possibly in a namespace) and namespace declarations. - Top-level declarations in script code are nested in Script class. - - - - - A visitor that generates the part of the documentation comment after the initial type - and colon. - - - - - Matches symbols from an assembly in one compilation to - the corresponding assembly in another. Assumes that only - one assembly has changed between the two compilations. - - - - - Match local declarations to names to generate a map from - declaration to local slot. The names are indexed by slot and the - assumption is that declarations are in the same order as slots. - - - - - Return a version of the baseline with all definitions mapped to this compilation. - Definitions from the initial generation, from metadata, are not mapped since - the initial generation is always included as metadata. That is, the symbols from - types, methods, ... in the TypesAdded, MethodsAdded, ... collections are replaced - by the corresponding symbols from the current compilation. - - - - - Represents a reference to a generic method instantiation, closed over type parameters, - e.g. MyNamespace.Class.Method{T}() - - - - - Represents a reference to a generic type instantiation that is not nested. - e.g. MyNamespace.A{int} - - - - - Represents a reference to a generic type instantiation that is nested in a non-generic type. - e.g. A.B{int} - - - - - Represents a reference to a generic type instantiation. - Subclasses represent nested and namespace types. - - - - - The behavior of the C# command-line compiler is as follows: - 1) If the /out switch is specified, then the explicit assembly name is used. - 2) Otherwise, - a) if the assembly is executable, then the assembly name is derived from - the name of the file containing the entrypoint; - b) otherwise, the assembly name is derived from the name of the first input - file. - - Since we don't know which method is the entrypoint until well after the - SourceAssemblySymbol is created, in case 2a, its name will not reflect the - name of the file containing the entrypoint. We leave it to our caller to - provide that name explicitly. - - - In cases 1 and 2b, we expect (metadataName == sourceAssembly.MetadataName). - - - - - The compiler-generated implementation type for each fixed-size buffer. - - - - - Ignore accessibility when resolving well-known type - members, in particular for generic type arguments - (e.g.: binding to internal types in the EE). - - - - - Override the dynamic operation context type for all dynamic calls in the module. - - - - - True if this module is an ENC update. - - - - - Set the underlying implementation type for a given fixed-size buffer field. - - - - - Represents a reference to a field of a generic type instantiation. - e.g. - A{int}.Field - A{int}.B{string}.C.Field - - - - - Represents a generic method of a generic type instantiation, closed over type parameters. - e.g. - A{T}.M{S}() - A.B{T}.C.M{S}() - - - - - Represents a reference to an instantiation of a generic type nested in an instantiation of another generic type. - e.g. - A{int}.B{string} - A.B{int}.C.D{string} - - - - - Represents a method of a generic type instantiation. - e.g. - A{int}.M() - A.B{int}.C.M() - - - - - Represents a reference to a type nested in an instantiation of a generic type. - e.g. - A{int}.B - A.B{int}.C.D - - - - - Used only for testing. - - - - - Returns true if the type can be embedded. If the type is defined in a linked (/l-ed) - assembly, but doesn't meet embeddable type requirements, this function returns false - and reports appropriate diagnostics. - - - - - A diagnostic, along with the location where it occurred. - - - - - Add a diagnostic to the bag. - - - - - - - - - Add a diagnostic to the bag. - - - - - - - - - - Adds diagnostics from useSiteDiagnostics into diagnostics and returns True if there were any errors. - - - - Don't call this during a parse--it loads resources - - - Don't call this during a parse--it loads resources - - - Don't call this during a parse--it loads resources - - - - When converting an anonymous function to a delegate type, there are some diagnostics - that will occur regardless of the delegate type - particularly those that do not - depend on the substituted types (e.g. name uniqueness). Even though we need to - produce a diagnostic in such cases, we do not need to abandon overload resolution - - we can choose the overload that is best without regard to such diagnostics. - - True if seeing the ErrorCode should prevent a delegate conversion - from completing successfully. - - - - WARNING: will resolve lazy diagnostics - do not call this before the member lists are completed - or you could trigger infinite recursion. - - - - - An abstract flow pass that takes some shortcuts in analyzing finally blocks, in order to enable - the analysis to take place without tracking exceptions or repeating the analysis of a finally block - for each exit from a try statement. The shortcut results in a slightly less precise - (but still conservative) analysis, but that less precise analysis is all that is required for - the language specification. The most significant shortcut is that we do not track the state - where exceptions can arise. That does not affect the soundness for most analyses, but for those - analyses whose soundness would be affected (e.g. "data flows out"), we track "unassignments" to keep - the analysis sound. - - - - - To scan the whole body, we start outside (before) the region. - - - - - A region analysis walker that computes the set of variables that are always assigned a value - in the region. A variable is "always assigned" in a region if an analysis of the region that - starts with the variable unassigned ends with the variable assigned. - - - - - This class implements the region control flow analysis operations. Region control flow - analysis provides information about statements which enter and leave a region. The analysis - is done lazily. When created, it performs no analysis, but simply caches the arguments. - Then, the first time one of the analysis results is used it computes that one result and - caches it. Each result is computed using a custom algorithm. - - - - - A collection of statements outside the region that jump into the region. - - - - - A collection of statements inside the region that jump to locations outside the region. - - - - - Returns true if and only if the endpoint of the last statement in the region is reachable or the region contains no - statements. - - - - - A collection of return (or yield break) statements found within the region that return from the enclosing method or lambda. - - - - - Returns true iff analysis was successful. Analysis can fail if the region does not properly span a single expression, - a single statement, or a contiguous series of statements within the enclosing block. - - - - - Produce a duplicate of this flow analysis state. - - - - - - Perform control flow analysis, reporting all necessary diagnostics. Returns true if the end of - the body might be reachable... - - - - - Analyze the body, reporting all necessary diagnostics. Returns true if the end of the - body might be reachable. - - - - - - This class implements the region data flow analysis operations. Region data flow analysis - provides information how data flows into and out of a region. The analysis is done lazily. - When created, it performs no analysis, but simply caches the arguments. Then, the first time - one of the analysis results is used it computes that one result and caches it. Each result - is computed using a custom algorithm. - - - - - A collection of the local variables that are declared within the region. Note that the region must be - bounded by a method's body or a field's initializer, so method parameter symbols are never included - in the result, but lambda parameters might appear in the result. - - - - - A collection of the local variables for which a value assigned outside the region may be used inside the region. - - - - - A collection of the local variables for which a value assigned inside the region may be used outside the region. - Note that every reachable assignment to a ref or out variable will be included in the results. - - - - - A collection of the local variables for which a value is always assigned inside the region. - - - - - A collection of the local variables that are read inside the region. - - - - - A collection of local variables that are written inside the region. - - - - - A collection of the local variables that are read outside the region. - - - - - A collection of local variables that are written outside the region. - - - - - A collection of the non-constant local variables and parameters that have been referenced in anonymous functions - and therefore must be moved to a field of a frame class. - - - - - A collection of the non-constant local variables and parameters that have had their address (or the address of one - of their fields) taken using the '&' operator. - - - If there are any of these in the region, then a method should not be extracted. - - - - - Returns true iff analysis was successful. Analysis can fail if the region does not properly span a single expression, - a single statement, or a contiguous series of statements within the enclosing block. - - - - - Some variables that should be considered initially assigned. Used for region analysis. - - - - - Variables that were used anywhere, in the sense required to suppress warnings about - unused variables. - - - - - Variables that were initialized or written anywhere. - - - - - Map from variables that had their addresses taken, to the location of the first corresponding - address-of expression. - - - Doesn't include fixed statement address-of operands. - - - - - Variables that were captured by anonymous functions. - - - - - The current source assembly. - - - - - A mapping from local variables to the index of their slot in a flow analysis local state. - - - - - A set of address-of expressions for which the operand is not definitely assigned. - - - - - A mapping from the local variable slot to the symbol for the local variable itself. This - is used in the implementation of region analysis (support for extract method) to compute - the set of variables "always assigned" in a region of code. - - - - - Variable slots are allocated to local variables sequentially and never reused. This is - the index of the next slot number to use. - - - - - Tracks variables for which we have already reported a definite assignment error. This - allows us to report at most one such error per variable. - - - - - Reflects the enclosing method or lambda at the current location (in the bound tree). - - - - - A cache for remember which structs are empty. - - - - - true if we should check to ensure that out parameters are assigned on every exit point. - - - - - The topmost method of this analysis. - - - - - Constructor to be used for region analysis, for which a struct type should never be considered empty. - - - - - Perform data flow analysis, reporting all necessary diagnostics. - - - - - Analyze the body, reporting all necessary diagnostics. - - - - - Check if the variable is captured and, if so, add it to this._capturedVariables. - - The variable to be checked - If variable.Kind is RangeVariable, its underlying lambda parameter. Else null. - - - - Add the variable to the captured set. For range variables we only add it if inside the region. - - - - - - This reflects the Dev10 compiler's rules for when a variable initialization is considered a "use" - for the purpose of suppressing the warning about unused variables. - - - - - Locals are given slots when their declarations are encountered. We only need give slots - to local variables, out parameters, and the "this" variable of a struct constructs. - Other variables are not given slots, and are therefore not tracked by the analysis. This - returns -1 for a variable that is not tracked, for fields of structs that have the same - assigned status as the container, and for structs that (recursively) contain no data members. - We do not need to track references to - variables that occur before the variable is declared, as those are reported in an - earlier phase as "use before declaration". That allows us to avoid giving slots to local - variables before processing their declarations. - - - - - Force a variable to have a slot. Returns -1 if the variable has an empty struct type. - - - - - Return the slot for a variable, or -1 if it is not tracked (because, for example, it is an empty struct). - - - - - - - Check that the given variable is definitely assigned. If not, produce an error. - - - - - - - Report a given variable as not definitely assigned. Once a variable has been so - reported, we suppress further reports of that variable. - - - - - - - Mark a variable as assigned (or unassigned). - - Node being assigned to. - The value being assigned. - True if target location is considered written to. - Target kind (by-ref or not). - True if target location is considered read from. - - - - Does the struct variable at the given slot have all of its instance fields assigned? - - - - - Variables declared in a using statement are always considered used, so this is just an assert. - - - - - Produce a duplicate of this flow analysis state. - - - - - - A region analysis walker that computes the set of variables whose values flow into (are used - in) the region. A variable assigned outside is used inside if an analysis that leaves the - variable unassigned on entry to the region would cause the generation of "unassigned" errors - within the region. - - - - - A region analysis walker that computes the set of variables for - which their assigned values flow out of the region. - A variable assigned inside is used outside if an analysis that - treats assignments in the region as unassigning the variable would - cause "unassigned" errors outside the region. - - - - - A small cache for remembering empty struct types for flow analysis. - - - - - When set, we ignore private reference fields of structs loaded from metadata. - - - - - Create a cache for computing whether or not a struct type is "empty". - - Enable compatibility with the native compiler, which - ignores inaccessible fields of reference type for structs loaded from metadata. - if is true, set to the compilation from - which to check accessibility. - - - - Determine if the given type is an empty struct type. - - - - - Determine if the given type is an empty struct type,. "typesWithMembersOfThisType" contains - a list of types that have members (directly or indirectly) of this type. - to remove circularity. - - - - - Get all instance fields of a struct. They are not necessarily returned in order. - - - - - Get all instance fields of a struct. They are not necessarily returned in order. - - - - - - When deciding what struct fields to drop on the floor, the native compiler looks - through arrays, and does not ignore value types or type parameters. - - - - - Is it possible that the given symbol can be accessed somewhere in the given assembly? - For the purposes of this test, we assume that code in the given assembly might derive from - any type. So protected members are considered potentially accessible. - - - - - Specialized EmptyStructTypeCache that reports all structs as not empty - - - - - A region analysis walker that records jumps into the region. Works by overriding NoteBranch, which is - invoked by a superclass when the two endpoints of a jump have been identified. - - - - - A region analysis walker that records jumps out of the region. - - - - - The flow analysis pass. This pass reports required diagnostics for unreachable - statements and uninitialized variables (through the call to FlowAnalysisWalker.Analyze), - and inserts a final return statement if the end of a void-returning method is reachable. - - the method to be analyzed - the method's body - the receiver of the reported diagnostics - indicates whether this Script had a trailing expression - the rewritten block for the method (with a return statement possibly inserted) - - - - Produce a duplicate of this flow analysis state. - - - - - - Is the code reachable? - - - - - The compilation in which the analysis is taking place. This is needed to determine which - conditional methods will be compiled and which will be omitted. - - - - - The method whose body is being analyzed, or the field whose initializer is being analyzed. - It is used for - references to method parameters. Thus, 'member' should not be used directly, but - 'MethodParameters', 'MethodThisParameter' and 'AnalyzeOutParameters(...)' should be used - instead. - - - - - The bound node of the method or initializer being analyzed. - - - - - The flow analysis state at each label, computed by merging the state from branches to - that label with the state when we fall into the label. Entries are created when the - label is encountered. One case deserves special attention: when the destination of the - branch is a label earlier in the code, it is possible (though rarely occurs in practice) - that we are changing the state at a label that we've already analyzed. In that case we - run another pass of the analysis to allow those changes to propagate. This repeats until - no further changes to the state of these labels occurs. This can result in quadratic - performance in unlikely but possible code such as this: "int x; if (cond) goto l1; x = - 3; l5: print x; l4: goto l5; l3: goto l4; l2: goto l3; l1: goto l2;" - - - - - Set to true after an analysis scan if the analysis was incomplete due to a backward - "goto" branch changing some analysis result. In this case the caller scans again (until - this is false). Since the analysis proceeds by monotonically changing the state computed - at each label, this must terminate. - - - - - See property PendingBranches - - - - - All of the labels seen so far in this forward scan of the body - - - - - If we are tracking exceptions, then by convention the first entry in the pending branches - buffer contains a summary of the states that can arise from exceptions. - - - - - Pending escapes generated in the current scope (or more deeply nested scopes). When jump - statements (goto, break, continue, return) are processed, they are placed in the - pendingBranches buffer to be processed later by the code handling the destination - statement. As a special case, the processing of try-finally statements might modify the - contents of the pendingBranches buffer to take into account the behavior of - "intervening" finally clauses. - - - - - The definite assignment and/or reachability state at the point currently being analyzed. - - - - - Where all diagnostics are deposited. - - - - - A cache of the state at the backward branch point of each loop. This is not needed - during normal flow analysis, but is needed for DataFlowsOut region analysis. - - - - - Subclasses may override EnterRegion to perform any actions at the entry to the region. - - - - - Subclasses may override LeaveRegion to perform any action at the end of the region. - - - - - A pending branch. There are created for a return, break, continue, goto statement, - yield return, yield break, await expression, and if PreciseAbstractFlowPass.trackExceptions - is true for other - constructs that can cause an exception to be raised such as a throw statement or method - invocation. - The idea is that we don't know if the branch will eventually reach its destination - because of an intervening finally block that cannot complete normally. So we store them - up and handle them as we complete processing each construct. At the end of a block, if - there are any pending branches to a label in that block we process the branch. Otherwise - we relay it up to the enclosing construct as a pending branch of the enclosing - construct. - - - - - Perform a single pass of flow analysis. Note that after this pass, - this.backwardBranchChanged indicates if a further pass is required. - - - - - If a method is currently being analyzed returns its parameters, returns an empty array - otherwise. - - - - - If a method is currently being analyzed returns its 'this' parameter, returns null - otherwise. - - - - - Specifies whether or not method's out parameters should be analyzed. If there's more - than one location in the method being analyzed, then the method is partial and we prefer - to report an out parameter in partial method error. - - location to be used - true if the out parameters of the method should be analyzed - - - - Return the flow analysis state associated with a label. - - - - - - - Return to the caller the set of pending return statements. - - - - - - Set the current state to one that indicates that it is unreachable. - - - - - Visit a boolean condition expression. - - - - - - Visit a general expression, where we will only need to determine if variables are - assigned (or not). That is, we will not be needing AssignedWhenTrue and - AssignedWhenFalse. - - - - - - Visit a statement. - - - - - Called at the point in a loop where the backwards branch would go to. - - - - - Called at the point in a loop where the backward branch is placed. - - - - - Used to resolve break statements in each statement form that has a break statement - (loops, switch). - - - - - Used to resolve continue statements in each statement form that supports it. - - - - - Subclasses override this if they want to take special actions on processing a goto - statement, when both the jump and the label have been located. - - - - - To handle a label, we resolve all branches to that label. Returns true if the state of - the label changes as a result. - - Target label - Statement containing the target label - - - - Since branches cannot branch into constructs, only out, we save the pending branches - when visiting more nested constructs. When tracking exceptions, we store the current - state as the exception state for the following code. - - - - - We use this to restore the old set of pending branches after visiting a construct that contains nested statements. - - The old pending branches, which are to be merged with the current ones - - - - Since each language construct must be handled according to the rules of the language specification, - the default visitor reports that the construct for the node is not implemented in the compiler. - - - - - Certain (struct) types are known by the compiler to be immutable. In these cases calling a method on - the type is known (by flow analysis) not to write the receiver. - - - - - - - If the operand is definitely assigned, we may want to perform a read (in addition to - a write) so that the operand can show up as ReadInside/DataFlowsIn. - - - - - A region analysis walker that records reads and writes of all variables, both inside and outside the region. - - - - - Note that a variable is read. - - The variable - If variable.Kind is RangeVariable, its underlying lambda parameter. Else null. - - - - When we read a field from a struct, the receiver isn't seen as being read until we get to the - end of the field access expression, because we only read the relevant piece of the struct. - But we want the receiver to be considered to be read in the region in that case. - For example, if an rvalue expression is x.y.z and the region is x.y, we want x to be included - in the ReadInside set. That is implemented here. - - - - - Compute the underlying lambda parameter symbol for a range variable, if any. - - The bound node for the expansion of the range variable - - - - Represents region analysis context attributes such as compilation, region, etc... - - - - Compilation to use - - - Containing symbol if available, null otherwise - - - Bound node, not null - - - Region to be used - - - Region to be used - - - True if the input was bad, such as no first and last nodes - - - - Construct context - - - - - A region analysis walker that computes whether or not the region completes normally. It does this by determining - if the point at which the region ends is reachable. - - - - - An analysis that computes the set of variables that may be used - before being assigned anywhere within a method. - - - - - An analysis that computes the set of variables that may be used - before being assigned anywhere within a method. - - - - - A region analysis walker that records declared variables. - - - - - Specifies the language version. - - - - - C# language version 1.0. - - - - - C# language version 2.0. - - - - - C# language version 3.0. - - - Features: LINQ. - - - - - C# language version 4.0. - - - Features: dynamic. - - - - - C# language version 5.0. - - - Features: async. - - - - - C# language version 6.0. - - - Features: - - Using of a static class - Auto-property initializers - Expression-bodied methods and properties - Null-propagating operator ?. - Exception filters - - - - - - The purpose of this rewriter is to replace await-containing catch and finally handlers - with surrogate replacements that keep actual handler code in regular code blocks. - That allows these constructs to be further lowered at the async lowering pass. - - - - - Lower a block of code by performing local rewritings. - The goal is to not have exception handlers that contain awaits in them. - - 1) Await containing finally blocks: - The general strategy is to rewrite await containing handlers into synthetic handlers. - Synthetic handlers are not handlers in IL sense so it is ok to have awaits in them. - Since synthetic handlers are just blocks, we have to deal with pending exception/branch/return manually - (this is the hard part of the rewrite). - - try{ - code; - }finally{ - handler; - } - - Into ===> - - Exception ex = null; - int pendingBranch = 0; - - try{ - code; // any gotos/returns are rewritten to code that pends the necessary info and goes to finallyLabel - goto finallyLabel; - }catch (ex){ // essentially pend the currently active exception - }; - - finallyLabel: - { - handler; - if (ex != null) throw ex; // unpend the exception - unpend branches/return - } - - 2) Await containing catches: - try{ - code; - }catch (Exception ex){ - handler; - throw; - } - - - Into ===> - - Object pendingException; - int pendingCatch = 0; - - try{ - code; - }catch (Exception temp){ // essentially pend the currently active exception - pendingException = temp; - pendingCatch = 1; - }; - - switch(pendingCatch): - { - case 1: - { - Exception ex = (Exception)pendingException; - handler; - throw pendingException - } - } - - - - - Rewrites Try/Catch part of the Try/Catch/Finally - - - - - Analyses method body for try blocks with awaits in finally blocks - Also collects labels that such blocks contain. - - - - - Returns true if a finally of the given try contains awaits - - - - - Returns true if a catch contains awaits - - - - - Returns true if body contains await in a finally block. - - - - - Labels reachable from within this frame without invoking its finally. - null if there are no such labels. - - - - - Async methods have both a return type (void, Task, or Task<T>) and a 'result' type, which is the - operand type of any return expressions in the async method. The result type is void in the case of - Task-returning and void-returning async methods, and T in the case of Task<T>-returning async - methods. - - System.Runtime.CompilerServices provides a collection of async method builders that are used in the - generated code of async methods to create and manipulate the async method's task. There are three - distinct async method builder types, one of each async return type: AsyncVoidMethodBuilder, - AsyncTaskMethodBuilder, and AsyncTaskMethodBuilder<T>. - - AsyncMethodBuilderMemberCollection provides a common mechanism for accessing the well-known members of - each async method builder type. This avoids having to inspect the return style of the current async method - to pick the right async method builder member during async rewriting. - - - - - The builder's constructed type. - - - - - The result type of the constructed task: T for Task<T>, void otherwise. - - - - - Binds an exception to the method builder. - - - - - Marks the method builder as successfully completed, and sets the result if method is Task<T>-returning. - - - - - Schedules the state machine to proceed to the next action when the specified awaiter completes. - - - - - Schedules the state machine to proceed to the next action when the specified awaiter completes. This method can be called from partially trusted code. - - - - - Begins running the builder with the associated state machine. - - - - - Associates the builder with the specified state machine. - - - - - Get the constructed task for a Task-returning or Task<T>-returning async method. - - - - - The method being rewritten. - - - - - The field of the generated async class used to store the async method builder: an instance of - , , or depending on the - return type of the async method. - - - - - A collection of well-known members for the current async method builder. - - - - - The exprReturnLabel is used to label the return handling code at the end of the async state-machine - method. Return expressions are rewritten as unconditional branches to exprReturnLabel. - - - - - The label containing a return from the method when the async method has not completed. - - - - - The field of the generated async class used in generic task returning async methods to store the value - of rewritten return expressions. The return-handling code then uses SetResult on the async method builder - to make the result available to the caller. - - - - - Generate the body for MoveNext(). - - - - - Rewrite an async method into a state machine type. - - - - - The class that represents a translated async method. - - - - - If an expression node that declares synthesized short-lived locals (currently only sequence) contains an await, these locals become long-lived since their - values may be read by code that follows the await. We promote these variables to long-lived of kind . - - - - - This pass detects and reports diagnostics that do not affect lambda convertibility. - This part of the partial class focuses on features that cannot be used in expression trees. - CAVEAT: Errors may be produced for ObsoleteAttribute, but such errors don't affect lambda convertibility. - - - This pass detects and reports diagnostics that do not affect lambda convertibility. - This part of the partial class focuses on expression and operator warnings. - - - - - This is for when we are taking the address of a field. - Distinguish from . - - - - - This is for when we are dotting into a field. - Distinguish from . - - NOTE: dev11 also calls this on string initializers in fixed statements, - but never accomplishes anything since string is a reference type. This - is probably a bug, but fixing it would be a breaking change. - - - - - Based on OutputContext::IsNonAgileField. - - - - - Returns the expression if the statement is actually an expression (ExpressionStatementSyntax with no trailing semicolon). - - - - - The constructor of the class that is the translation of an iterator method. - - - - - A synthesized Finally method containing finalization code for a resumable try statement. - Finalization code for such try may run when: - 1) control flow goes out of try scope by dropping through - 2) control flow goes out of try scope by conditionally or unconditionally branching outside of one ore more try/finally frames. - 3) enumerator is disposed by the owner. - 4) enumerator is being disposed after an exception. - - It is easier to manage partial or complete finalization when every finally is factored out as a separate method. - - NOTE: Finally is a private void nonvirtual instance method with no parameters. - It is a valid JIT inlining target as long as JIT may consider inlining profitable. - - - - - The field of the generated iterator class that underlies the Current property. - - - - - Tells us if a particular try contains yield returns - - - - - When this is more that 0, returns are emitted as "methodValue = value; goto exitLabel;" - - - - - The current iterator finally frame in the tree of finally frames. - By default there is a root finally frame. - Root frame does not have a handler, but may contain nested frames. - - - - - Finally state of the next Finally frame if such created. - Finally state is a negative decreasing number starting with -3. (-2 is used for something else). - Root frame has finally state -1. - - The Finally state is the state that we are in when "between states". - Regular states are positive and are the only states that can be resumed to. - The purpose of distinct finally states is to have enough information about - which finally handlers must run when we need to finalize iterator after a fault. - - - - - Produces a Try/Finally if frame has a handler (otherwise a regular block). - Handler goes into the Finally. - If there are nested frames, they are emitted into the try block. - This way the handler for the current frame is guaranteed to run even if - nested handlers throw exceptions. - - { - switch(state) - { - case state1: - case state2: - case state3: - case state4: - try - { - switch(state) - { - case state3: - case state4: - try - { - ... more nested state dispatches if any .... - } - finally - { - // handler for a try where state3 and state4 can be observed - handler_3_4() - } - break; - } - } - finally - { - // handler for a try where state1 and state2 can be observed - handler_1_2() - } - break; - - case state5: - ... another dispatch of nested states to their finally blocks ... - break; - } - } - - - - - - Analyses method body for yields in try blocks and labels that they contain. - - - - - Returns true if given try or any of its nested try blocks contain yields - - - - - Returns true if body contains yield returns within try blocks. - - - - - Labels reachable from within this frame without invoking its finally. - null if there are none such labels. - - - - - Rewrite an iterator method into a state machine class. - - - - - The class that represents a translated iterator method. - - - - - Analyses method body for labels. - - - - - The closure doesn't declare any variables. - Display class is a singleton and may be shared with other top-level methods. - - - - - The closure only contains a reference to the containing class instance ("this"). - We don't emit a display class, lambdas are emitted directly to the containing class as its instance methods. - - - - - General closure. - Display class may only contain lambdas defined in the same top-level method. - - - - - Visit the expression, but do so in a way that ensures that its type is precise. That means that any - sometimes-unnecessary conversions (such as an implicit reference conversion) are retained. - - - - - A field of a frame class that represents a variable that has been captured in a lambda. - - - - - The rewriter for removing lambda expressions from method bodies and introducing closure classes - as containers for captured variables along the lines of the example in section 6.5.3 of the - C# language specification. - - The entry point is the public method . It operates as follows: - - First, an analysis of the whole method body is performed that determines which variables are - captured, what their scopes are, and what the nesting relationship is between scopes that - have captured variables. The result of this analysis is left in . - - Then we make a frame, or compiler-generated class, represented by an instance of - for each scope with captured variables. The generated frames are kept - in . Each frame is given a single field for each captured - variable in the corresponding scope. These are maintained in . - - Finally, we walk and rewrite the input bound tree, keeping track of the following: - (1) The current set of active frame pointers, in - (2) The current method being processed (this changes within a lambda's body), in - (3) The "this" symbol for the current method in , and - (4) The symbol that is used to access the innermost frame pointer (it could be a local variable or "this" parameter) - - There are a few key transformations done in the rewriting. - (1) Lambda expressions are turned into delegate creation expressions, and the body of the lambda is - moved into a new, compiler-generated method of a selected frame class. - (2) On entry to a scope with captured variables, we create a frame object and store it in a local variable. - (3) References to captured variables are transformed into references to fields of a frame class. - - In addition, the rewriting deposits into a (, ) - pair for each generated method. - - produces its output in two forms. First, it returns a new bound statement - for the caller to use for the body of the original method. Second, it returns a collection of - (, ) pairs for additional methods that the lambda rewriter produced. - These additional methods contain the bodies of the lambdas moved into ordinary methods of their - respective frame classes, and the caller is responsible for processing them just as it does with - the returned bound node. For example, the caller will typically perform iterator method and - asynchronous method transformations, and emit IL instructions into an assembly. - - - - - Perform a first analysis pass in preparation for removing all lambdas from a method body. The entry point is Analyze. - The results of analysis are placed in the fields seenLambda, blockParent, variableBlock, captured, and captures. - - - - - Set to true while we are analyzing the interior of an expression lambda. - - - - - Set to true of any lambda expressions were seen in the analyzed method body. - - - - - For each scope that defines variables, identifies the nearest enclosing scope that defines variables. - - - - - For each captured variable, identifies the scope in which it will be moved to a frame class. This is - normally the node where the variable is introduced, but method parameters are moved - to a frame class within the body of the method. - - - - - The syntax nodes associated with each captured variable. - - - - - For each lambda in the code, the set of variables that it captures. - - - - - Blocks that are positioned between a block declaring some lifted variables - and a block that contains the lambda that lifts said variables. - If such block itself requires a closure, then it must lift parent frame pointer into the closure - in addition to whatever else needs to be lifted. - - NOTE: This information is computed in addition to the regular analysis of the tree and only needed for rewriting. - If someone only needs diagnostics or information about captures, this information is not necessary. - needs to be called to compute this. - - - - - Optimized locations of lambdas. - - Lambda does not need to be placed in a frame that corresponds to its lexical scope if lambda does not reference any local state in that scope. - It is advantageous to place lambdas higher in the scope tree, ideally in the innermost scope of all scopes that contain variables captured by a given lambda. - Doing so reduces indirections needed when captured locals are accessed. For example locals from the innermost scope can be accessed with no indirection at all. - - NOTE: This information is computed in addition to the regular analysis of the tree and only needed for rewriting. - If someone only needs diagnostics or information about captures, this information is not necessary. - needs to be called to compute this. - - - - - Create the optimized plan for the location of lambda methods and whether scopes need access to parent scopes - - - - - Compute the nesting depth of a given block. - Top-most block (where method locals and parameters are defined) are at the depth 0. - - - - - Rewrite the given node to eliminate lambda expressions. Also returned are the method symbols and their - bound bodies for the extracted lambda bodies. These would typically be emitted by the caller such as - MethodBodyCompiler. See this class' documentation - for a more thorough explanation of the algorithm and its use by clients. - - The bound node to be rewritten - The type of the top-most frame - The "this" parameter in the top-most frame, or null if static method - The containing method of the node to be rewritten - Index of the method symbol in its containing type member list. - Information on lambdas defined in needed for debugging. - Information on closures defined in needed for debugging. - Slot allocator. - The caller's buffer into which we produce additional methods to be emitted by the caller - Diagnostic bag for diagnostics - The rewritten tree should include assignments of the original locals to the lifted proxies - - - - Create the frame types. - - - - - Produce a bound expression representing a pointer to a frame of a particular frame type. - - The syntax to attach to the bound nodes produced - The type of frame to be returned - A bound node that computes the pointer to the required frame - - - - Produce a bound expression representing a pointer to a frame of a particular frame class. - Note that for generic frames, the frameClass parameter is the generic definition, but - the resulting expression will be constructed with the current type parameters. - - The syntax to attach to the bound nodes produced - The class type of frame to be returned - A bound node that computes the pointer to the required frame - - - - Introduce a frame around the translation of the given node. - - The node whose translation should be translated to contain a frame - The frame for the translated node - A function that computes the translation of the node. It receives lists of added statements and added symbols - The translated statement, as returned from F - - - - A class that represents the set of variables in a scope that have been - captured by lambdas within that scope. - - - - - A method that results from the translation of a single lambda expression. - - - - - Lower a block of code by performing local rewritings. - - - - - Returns true if the initializer is a field initializer which should be optimized out - - - - - Generates a lowered form of the assignment operator for the given left and right sub-expressions. - Left and right sub-expressions must be in lowered form. - - - - - Generates a lowered form of the assignment operator for the given left and right sub-expressions. - Left and right sub-expressions must be in lowered form. - - - - - Spec section 7.9: if the left operand is int or uint, mask the right operand with 0x1F; - if the left operand is long or ulong, mask the right operand with 0x3F. - - - - - This rather confusing method tries to reproduce the functionality of ExpressionBinder::bindPtrAddMul and - ExpressionBinder::bindPtrMul. The basic idea is that we have a numeric expression, x, and a pointer type, - T*, and we want to multiply x by sizeof(T). Unfortunately, we need to stick in some conversions to make - everything work. - - 1) If x is an int, then convert it to an IntPtr (i.e. a native int). Dev10 offers no explanation (ExpressionBinder::bindPtrMul). - 2) Do overload resolution based on the (possibly converted) type of X and int (the type of sizeof(T)). - 3) If the result type of the chosen multiplication operator is signed, convert the product to IntPtr; - otherwise, convert the product to UIntPtr. - - - - - Rewrites arguments of an invocation according to the receiving method or indexer. - It is assumed that each argument has already been lowered, but we may need - additional rewriting for the arguments, such as generating a params array, re-ordering - arguments based on map, inserting arguments for optional parameters, etc. - is the method used for values of any optional parameters. - For indexers, this method must be an accessor, and for methods it must be the method - itself. is needed for indexers since getter and setter - may have distinct optional parameter values. - - - - - Process tempStores and add them as side-effects to arguments where needed. The return - value tells how many temps are actually needed. For unnecessary temps the corresponding - temp store will be cleared. - - - - - Gets the default value for the . - - - A syntax node corresponding to the invocation. - - - A parameter to get the default value for. - - - Indicates if caller info is to be enabled when processing this optional parameter. - The value means the decision is to be made based on the shape of the node. - - - DELIBERATE SPEC VIOLATION: When processing an implicit invocation of an Add method generated - for an element-initializer in a collection-initializer, the parameter - is set to . It means that if the optional parameter is annotated with , - or , and there is no explicit argument corresponding to it, - we will provide caller information as a value of this parameter. - This is done to match the native compiler behavior and user requests (see http://roslyn.codeplex.com/workitem/171). This behavior - does not match the C# spec that currently requires to provide caller information only in explicit invocations and query expressions. - - - - - In the expanded form of a compound assignment (or increment/decrement), the LHS appears multiple times. - If we aren't careful, this can result in repeated side-effects. This creates (ordered) temps for all of the - subexpressions that could result in side-effects and returns a side-effect-free expression that can be used - in place of the LHS in the expanded form. - - The LHS sub-expression of the compound assignment (or increment/decrement). - Populated with a list of assignment expressions that initialize the temporary locals. - Populated with a list of temporary local symbols. - True if the compound assignment is a dynamic operation. - - A side-effect-free expression representing the LHS. - The returned node needs to be lowered but its children are already lowered. - - - - - Variables local to current frame do not need temps when re-read multiple times - as long as there is no code that may write to locals in between accesses and they - are not captured. - - Example: - l += foo(ref l); - - even though l is a local, we must access it via a temp since "foo(ref l)" may change it - on between accesses. - - - - - If the condition has a constant value, then just use the selected branch. - e.g. "true ? x : y" becomes "x". - - - - - Helper method to generate a lowered conversion. - - - - - Helper method to generate a lowered conversion from the given to the given . - - - If we're converting a default parameter value to the parameter type, then the conversion can actually fail - (e.g. if the default value was specified by an attribute and was, therefore, not checked by the compiler). - Set acceptFailingConversion if you want to see default(rewrittenType) in such cases. - The error will be suppressed only for conversions from or . - - - - - Helper method to generate a lowered conversion from the given to the given . - - - If we're converting a default parameter value to the parameter type, then the conversion can actually fail - (e.g. if the default value was specified by an attribute and was, therefore, not checked by the compiler). - Set acceptFailingConversion if you want to see default(rewrittenType) in such cases. - The error will be suppressed only for conversions from or . - - - - - Helper method to generate a lowered conversion from the given rewrittenOperand to the given rewrittenType with the given conversion kind. - - - Conversion kind must not be a user defined conversion, use the other overload which takes a 'Conversion' parameter for generating synthesized user defined conversions. - - - - - If we have a WinRT type event, we need to encapsulate the adder call - (which returns an EventRegistrationToken) with a call to - WindowsRuntimeMarshal.AddEventHandler or RemoveEventHandler, but these - require us to create a new Func representing the adder and another - Action representing the Remover. - - The rewritten call looks something like: - - WindowsRuntimeMarshal.AddEventHandler<EventHandler> - (new Func<EventHandler, EventRegistrationToken>(@object.add), - new Action<EventRegistrationToken>(@object.remove), handler); - - Where @object is a compiler-generated local temp if needed. - - - TODO: use or delete isDynamic. - - - - - Basically, what we need to know is, if an exception occurred within the fixed statement, would - additional code in the current method be executed before its stack frame was popped? - - - - - If two (or more) fixed statements are nested, then we want to avoid having the outer - fixed statement re-traverse the lowered bound tree of the inner one. We accomplish - this by having each fixed statement cache a set of unmatched gotos that can be - reused by any containing fixed statements. - - - - - Look for gotos without corresponding labels in the lowered body of a fixed statement. - - - Assumes continue, break, etc have already been rewritten to gotos. - - - - - This is the entry point for foreach-loop lowering. It delegates to - RewriteEnumeratorForEachStatement - RewriteSingleDimensionalArrayForEachStatement - RewriteMultiDimensionalArrayForEachStatement - RewriteStringForEachStatement - - - We are diverging from the C# 4 spec (and Dev10) to follow the C# 5 spec. - The iteration variable will be declared *inside* each loop iteration, - rather than outside the loop. - - - - - Lower a foreach loop that will enumerate a collection using an enumerator. - - E e = ((C)(x)).GetEnumerator() - try { - while (e.MoveNext()) { - V v = (V)(T)e.Current; - // body - } - } - finally { - // clean up e - } - - - - - Synthesize a no-argument call to a given method, possibly applying a conversion to the receiver. - - If the receiver is of struct type and the method is an interface method, then skip the conversion - and just call the interface method directly - the code generator will detect this and generate a - constrained virtual call. - - A syntax node to attach to the synthesized bound node. - Receiver of method call. - Method to invoke. - Conversion to be applied to the receiver if not calling an interface method on a struct. - Type of the receiver after applying the conversion. - A BoundExpression representing the call. - - - - Lower a foreach loop that will enumerate the characters of a string. - - string s = x; - for (int p = 0; p < s.Length; p = p + 1) { - V v = (V)s.Chars[p]; - // body - } - - - We will follow Dev10 in diverging from the C# 4 spec by ignoring string's - implementation of IEnumerable and just indexing into its characters. - - NOTE: We're assuming that sequence points have already been generated. - Otherwise, lowering to for-loops would generated spurious ones. - - - - - Lower a foreach loop that will enumerate a single-dimensional array. - - A[] a = x; - for (int p = 0; p < a.Length; p = p + 1) { - V v = (V)a[p]; - // body - } - - - We will follow Dev10 in diverging from the C# 4 spec by ignoring Array's - implementation of IEnumerable and just indexing into its elements. - - NOTE: We're assuming that sequence points have already been generated. - Otherwise, lowering to for-loops would generated spurious ones. - - - - - Lower a foreach loop that will enumerate a multi-dimensional array. - - A[...] a = x; - int q_0 = a.GetUpperBound(0), q_1 = a.GetUpperBound(1), ...; - for (int p_0 = a.GetLowerBound(0); p_0 <= q_0; p_0 = p_0 + 1) - for (int p_1 = a.GetLowerBound(1); p_1 <= q_1; p_1 = p_1 + 1) - ... - { V v = (V)a[p_0, p_1, ...]; /* body */ } - - - We will follow Dev10 in diverging from the C# 4 spec by ignoring Array's - implementation of IEnumerable and just indexing into its elements. - - NOTE: We're assuming that sequence points have already been generated. - Otherwise, lowering to nested for-loops would generated spurious ones. - - - - - So that the binding info can return an appropriate SemanticInfo.Converted type for the collection - expression of a foreach node, it is wrapped in a BoundConversion to the collection type in the - initial bound tree. However, we may be able to optimize away (or entirely disregard) the conversion - so we pull out the bound node for the underlying expression. - - - - - Add sequence point |here|: - - foreach (Type var in |expr|) { } - - - Hit once, before looping begins. - - - - - Add sequence point |here|: - - foreach (|Type var| in expr) { } - - - Hit every iteration. - - - - - Add sequence point |here|: - - |foreach| (Type var in expr) { } - - - Hit once, before looping begins. - - - - - Lowers a lock statement to a try-finally block that calls Monitor.Enter and Monitor.Exit - before and after the body, respectively. - - - - - The strategy of this rewrite is to do rewrite "locally". - We analyze arguments of the concat in a shallow fashion assuming that - lowering and optimizations (including this one) is already done for the arguments. - Based on the arguments we select the most appropriate pattern for the current node. - - NOTE: it is not guaranteed that the node that we chose will be the most optimal since we have only - local information - i.e. we look at the arguments, but we do not know about siblings. - When we move to the parent, the node may be rewritten by this or some another optimization. - - Example: - result = ( "abc" + "def" + null ?? expr1 + "moo" + "baz" ) + expr2 - - Will rewrite into: - result = Concat("abcdef", expr2) - - However there will be transient nodes like Concat(expr1 + "moo") that will not be present in the - resulting tree. - - - - - - digs into known concat operators and unwraps their arguments - otherwise returns the expression as-is - - Generally we only need to recognize same node patterns that we create as a result of concatenation rewrite. - - - - - folds two concat operands into one expression if possible - otherwise returns null - - - - - folds two concat constants into one if possible - otherwise returns null. - It is generally always possible to concat constants, unless resulting string would be too large. - - - - - Strangely enough there is such a thing as unary concatenation and it must be rewritten. - - - - - Most of the above optimizations are not applicable in expression trees as the operator - must stay a binary operator. We cannot do much beyond constant folding which is done in binder. - - - - - Checks whether the expression represents a boxing conversion of a special value type. - If it does, it tries to return a string-based representation instead in order - to avoid allocations. If it can't, the original expression is returned. - - - - - Gets whether the type of an argument used in string concatenation can - be optimized by first calling ToString on it before passing the argument - to the String.Concat function. - - The type symbol of the argument. - - true if ToString may be used; false if using ToString could lead to observable differences in behavior. - - - - - Is there any code to execute in the given statement that could have side-effects, - such as throwing an exception? This implementation is conservative, in the sense - that it may return true when the statement actually may have no side effects. - - - - - This rewriter lowers pre-/post- increment/decrement operations (initially represented as - unary operators). We use BoundSequenceExpressions because we need to capture the RHS of the - assignment in a temp variable. - - - This rewriter assumes that it will be run before decimal rewriting (so that it does not have - to lower decimal constants and operations) and call rewriting (so that it does not have to - lower property accesses). - - - - - The rewrites are as follows: suppose the operand x is a variable of type X. The - chosen increment/decrement operator is modelled as a static method on a type T, - which takes a value of type T and returns the result of incrementing or decrementing - that value. - - x++ - X temp = x - x = (X)(T.Increment((T)temp)) - return temp - x-- - X temp = x - x = (X)(T.Decrement((T)temp)) - return temp - ++x - X temp = (X)(T.Increment((T)x)) - x = temp - return temp - --x - X temp = (X)(T.Decrement((T)x)) - x = temp - return temp - - Note: - Dev11 implements dynamic prefix operators incorrectly. - - result = ++x.P is emitted as result = SetMember{"P"}(t, UnaryOperation{Inc}(GetMember{"P"}(x))) - - The difference is that Dev11 relies on SetMember returning the same value as it was given as an argument. - Failing to do so changes the semantics of ++/-- operator which is undesirable. We emit the same pattern for - both dynamic and static operators. - - For example, we might have a class X with user-defined implicit conversions - to and from short, but no user-defined increment or decrement operators. We - would bind x++ as "X temp = x; x = (X)(short)((int)(short)temp + 1); return temp;" - - The unary operator expression representing the increment/decrement. - A bound sequence that uses a temp to achieve the correct side effects and return value. - - - - Transform an expression from a form suitable as an lvalue to a form suitable as an rvalue. - - The children of this node must already be lowered. - Fully lowered node. - - - - Rewrite a using statement into a try finally statement. Two forms are possible: - 1) using (expr) stmt - 2) using (C c = expr) stmt - - The former is handled by RewriteExpressionUsingStatement and the latter is handled by - RewriteDeclarationUsingStatement (called in a loop, once for each local declared). - - - It would be more in line with our usual pattern to rewrite using to try-finally - in the ControlFlowRewriter, but if we don't do it here the BoundMultipleLocalDeclarations - will be rewritten into a form that makes them harder to separate. - - - - - Lower "using (expression) statement" to a try-finally block. - - - - - Lower "using (ResourceType resource = expression) statement" to a try-finally block. - - - Assumes that the local symbol will be declared (i.e. in the LocalsOpt array) of an enclosing block. - Assumes that using statements with multiple locals have already been split up into multiple using statements. - - - - - The dynamic operation factories below return this struct so that the caller - have the option of separating the call-site initialization from its invocation. - - Most callers just call to get the combo but some (object and array initializers) - hoist all call-site initialization code and emit multiple invocations of the same site. - - - - - Corresponds to . - - - - - Corresponds to . - - - - - Rewrite the replacement expression for the hoisted local so all synthesized field are accessed as members - of the appropriate frame. - - - - - A walker that computes the set of local variables of an iterator/async - method that must be hoisted to the state machine. - - - Data flow analysis is used to calculate the locals. At yield/await we mark all variables as "unassigned". - When a read from an unassigned variables is reported we add the variable to the captured set. - "this" parameter is captured if a reference to "this", "base" or an instance field is encountered. - Variables used in finally also need to be captured if there is a yield in the corresponding try block. - - - - - True if we need to generate the code to do the bookkeeping so we can "finalize" the state machine - by executing code from its current state through the enclosing finally blocks. This is true for - iterators and false for async. - - - - - Generate return statements from the state machine method body. - - - - - The "state" of the state machine that is the translation of the iterator method. - - - - - Cached "state" of the state machine within the MoveNext method. We work with a copy of - the state to avoid shared mutable state between threads. (Two threads can be executing - in a Task's MoveNext method because an awaited task may complete after the awaiter has - tested whether the subtask is complete but before the awaiter has returned) - - - - - For each distinct label, the set of states that need to be dispatched to that label. - Note that there is a dispatch occurring at every try-finally statement, so this - variable takes on a new set of values inside each try block. - - - - - A mapping from each state of the state machine to the new state that will be used to execute - finally blocks in case the state machine is disposed. The Dispose method computes the new state - and then runs MoveNext. Not used if !this.useFinalizerBookkeeping. - - - - - A try block might have no state (transitions) within it, in which case it does not need - to have a state to represent finalization. This flag tells us whether the current try - block that we are within has a finalizer state. Initially true as we have the (trivial) - finalizer state of -1 at the top level. Not used if !this.useFinalizerBookkeeping. - - - - - If hasFinalizerState is true, this is the state for finalization from anywhere in this - try block. Initially set to -1, representing the no-op finalization required at the top - level. Not used if !this.useFinalizerBookkeeping. - - - - - A pool of fields used to hoist locals. They appear in this set when not in scope, - so that members of this set may be allocated to locals when the locals come into scope. - - - - - Fields allocated for temporary variables are given unique names distinguished by a number at the end. - This counter ensures they are unique within a given translated method. - - - - - Used to enumerate the instance fields of a struct. - - - - - The set of local variables and parameters that were hoisted and need a proxy. - - - - - Translate a statement that declares a given set of locals. Also allocates and frees hoisted temps as - required for the translation. - - The set of locals declared in the original version of this statement - A delegate to return the translation of the body of this statement - - - - Must remain in sync with . - - - - - Must remain in sync with . - - - - - Might the given type be, or contain, managed references? This is used to determine which - fields allocated to temporaries should be cleared when the underlying variable goes out of scope, so - that they do not cause unnecessary object retention. - - - - - The try statement is the most complex part of the state machine transformation. - Since the CLR will not allow a 'goto' into the scope of a try statement, we must - generate the dispatch to the state's label stepwise. That is done by translating - the try statements from the inside to the outside. Within a try statement, we - start with an empty dispatch table (representing the mapping from state numbers - to labels). During translation of the try statement's body, the dispatch table - will be filled in with the data necessary to dispatch once we're inside the try - block. We generate that at the head of the translated try statement. Then, we - copy all of the states from that table into the table for the enclosing construct, - but associate them with a label just before the translated try block. That way - the enclosing construct will generate the code necessary to get control into the - try block for all of those states. - - - - - Represents a synthesized state machine field. - - - - - True if the initial values of locals in the rewritten method need to be preserved. (e.g. enumerable iterator methods) - - - - - Add fields to the state machine class that control the state machine. - - - - - Initialize the state machine class. - - - - - Generate implementation-specific state machine initialization for the kickoff method body. - - - - - Generate implementation-specific state machine member method implementations. - - - - - State machine interface method implementation. - - - - - Represents a state machine MoveNext method. - Handles special behavior around inheriting some attributes from the original async/iterator method. - - - - - Represents a state machine method other than a MoveNext method. - All such methods are considered debugger hidden. - - - - - Tracks synthesized fields that are needed in a submission being compiled. - - - For every other submission referenced by this submission we add a field, so that we can access members of the target submission. - A field is also needed for the host object, if provided. - - - - - A helper class for synthesizing quantities of code. - - - - - Thrown by the bound node factory when there is a failure to synthesize code. - An appropriate diagnostic is included that should be reported. Currently - the only diagnostic handled through this mechanism is a missing special/well-known - member. - - - - - A binder suitable for performing overload resolution to synthesize a call to a helper method. - - - - - A binder used only for performing overload resolution of runtime helper methods. - - - - - Create a bound node factory. Note that the use of the factory to get special or well-known members - that do not exist will result in an exception of type being thrown. - - The top-level method that will contain the code - The syntax node to which generated code should be attributed - The state of compilation of the enclosing type - A bag where any diagnostics should be output - - - The top-level method that will contain the code - The enclosing class - The syntax node to which generated code should be attributed - The state of compilation of the enclosing type - A bag where any diagnostics should be output - - - - Get the symbol for a well-known member. The use of this method to get a well-known member - that does not exist will result in an exception of type MissingPredefinedMember being thrown - containing an appropriate diagnostic for the caller to report. - - The desired well-known member - If true, the method may return null for a missing member without an exception - A symbol for the well-known member, or null if it is missing and isOptions == true - - - - Get the symbol for a special member. The use of this method to get a special member - that does not exist will result in an exception of type MissingPredefinedMember being thrown - containing an appropriate diagnostic for the caller to report. - - The desired special member - A symbol for the special member. - - - - Check for (and assert that there are no) duplicate case labels in the switch. - - - - - - Takes an expression and returns the bound local expression "temp" - and the bound assignment expression "temp = expr". - - - - - Compiles a list of all labels that are targeted by gotos within a - node, but are not declared within the node. - - - - - newPosition represents the position we are in the final SourceText. As we consume and reuse - nodes from the old tree we will update our position in the new text accordingly. - Likewise, when we must lex tokens out of the new tree we will update as well. - - NOTE(cyrusn): We do not need an oldPosition because it is redundant given the - oldTreeCursor. The oldPosition is implicitly defined by the position of the cursor. - - - - - Affected range of a change is the range within which nodes can be affected by a change - and cannot be reused. Because of lookahead effective range of a change is larger than - the change itself. - - - - - THe cursor represents a location in the tree that we can move around to indicate where - we are in the original tree as we're incrementally parsing. When it is at a node or - token, it can either move forward to that entity's next sibling. It can also move down - to a node's first child or first token. - - Once the cursor hits the end of file, it's done. Note: the cursor will skip any other - zero length nodes in the tree. - - - - - An error/warning directive tells the compiler to indicate a syntactic error/warning - at the current location. - - Format: #error Error message string - Resulting message: from the first non-whitespace character after the directive - keyword until the end of the directive (aka EOD) at the line break or EOF. - Resulting span: [first non-whitespace char, EOD) - - Examples (pipes indicate span): - #error |foo| - #error |foo| - #error |foo | - #error |foo baz| - #error |//foo| - #error |/*foo*/| - #error |/*foo| - - The '#' token. - The 'error' or 'warning' token. - True if the error/warning should be recorded. - An ErrorDirective or WarningDirective node. - - - - These aren't acceptable in place of ASCII quotation marks in XML, - but we want to consume them (and produce an appropriate error) if - they occur in a place where a quotation mark is legal. - - - - - ACASEY: This grammar is derived from the behavior and sources of the native compiler. - Tokens start with underscores (I've cheated for _PredefinedTypeToken, which is not actually a - SyntaxKind), "*" indicates "0 or more", "?" indicates "0 or 1", and parentheses are for grouping. - - Cref = CrefType _DotToken CrefMember - | CrefType - | CrefMember - | CrefFirstType _OpenParenToken CrefParameterList? _CloseParenToken - CrefName = _IdentifierToken (_LessThanToken _IdentifierToken (_CommaToken _IdentifierToken)* _GreaterThanToken)? - CrefFirstType = ((_IdentifierToken _ColonColonToken)? CrefName) - | _PredefinedTypeToken - CrefType = CrefFirstType (_DotToken CrefName)* - CrefMember = CrefName (_OpenParenToken CrefParameterList? _CloseParenToken)? - | _ThisKeyword (_OpenBracketToken CrefParameterList _CloseBracketToken)? - | _OperatorKeyword _OperatorToken (_OpenParenToken CrefParameterList? _CloseParenToken)? - | (_ImplicitKeyword | _ExplicitKeyword) _OperatorKeyword CrefParameterType (_OpenParenToken CrefParameterList? _CloseParenToken)? - CrefParameterList = CrefParameter (_CommaToken CrefParameter)* - CrefParameter = (_RefKeyword | _OutKeyword)? CrefParameterType - CrefParameterType = CrefParameterType2 _QuestionToken? _AsteriskToken* (_OpenBracketToken _CommaToken* _CloseBracketToken)* - CrefParameterType2 = (((_IdentifierToken _ColonColonToken)? CrefParameterType3) | _PredefinedTypeToken) (_DotToken CrefParameterType3)* - CrefParameterType3 = _IdentifierToken (_LessThanToken CrefParameterType (_CommaToken CrefParameterType)* _GreaterThanToken)? - - NOTE: type parameters, not type arguments - NOTE: the first production of Cref is preferred to the other two - NOTE: pointer, array, and nullable types only work in parameters - NOTE: CrefParameterType2 and CrefParameterType3 correspond to CrefType and CrefName, respectively. - Since the only difference is that they accept non-identifier type arguments, this is accomplished - using parameters on the parsing methods (rather than whole new methods). - - - - - Parse the custom cref syntax for a named member (method, property, etc), - an indexer, an overloadable operator, or a user-defined conversion. - - - - - Parse a named member (method, property, etc), with optional type - parameters and regular parameters. - - - - - Parse an indexer member, with optional parameters. - - - - - Parse an overloadable operator, with optional parameters. - - - - - Parse a user-defined conversion, with optional parameters. - - - - - Parse a parenthesized parameter list. - - - - - Parse a bracketed parameter list. - - - - - Parse the parameter list (if any) of a cref member (name, indexer, operator, or conversion). - - - - - True if the current token could be the beginning of a cref parameter. - - - - - Parse an element of a cref parameter list. - - - "ref" and "out" work, but "params", "this", and "__arglist" don't. - - - - - Parse an identifier, optionally followed by an angle-bracketed list of type parameters. - - True to give an error when a non-identifier - type argument is seen, false to accept. No change in the shape of the tree. - - - - Parse a type. May include an alias, a predefined type, and/or a qualified name. - - - Pointer, nullable, or array types are only allowed if is false. - Leaves a dot and a name unconsumed if the name is not followed by another dot - and checkForMember is true. - - True to give an error when a non-identifier - type argument is seen, false to accept. No change in the shape of the tree. - True means that the last name should not be consumed - if it is followed by a parameter list. - - - - Parse a type. May include an alias, a predefined type, and/or a qualified name. - - - No pointer, nullable, or array types. - Leaves a dot and a name unconsumed if the name is not followed by another dot - and checkForMember is true. - - True to give an error when a non-identifier - type argument is seen, false to accept. No change in the shape of the tree. - True means that the last name should not be consumed - if it is followed by a parameter list. - - - - Once the name part of a type (including type parameter/argument lists) is parsed, - we need to consume ?, *, and rank specifiers. - - - - - Ends at appropriate quotation mark, EOF, or EndOfDocumentationComment. - - - - - Convenience method for checking the mode. - - - - - Ends at appropriate quotation mark, EOF, or EndOfDocumentationComment. - - - - - Set of well-known SyntaxTokens commonly found within XML doc comments. - - - - - Look up a well known SyntaxToken for a given XML element tag or attribute. - This is a performance optimization to avoid creating duplicate tokens for the same content. - - The text of the tag or attribute. - The leading trivia of the token. - The SyntaxToken representing the well-known tag or attribute or null if it's not well-known. - - - - Returns true if the lookahead tokens compose extern alias directive. - - - - - Parses any block or expression bodies that are present. Also parses - the trailing semicolon if one is present. - - - - - WARNING: it is possible that "list" is really the underlying builder of a SeparateSyntaxListBuilder, - so it is important that we not add anything to the list. - - - - - True if current identifier token is not really some contextual keyword - - - - - - Definitely not a type name. - - - - - Definitely a type name: either a predefined type (int, string, etc.) or an array type name (ending with a bracket). - - - - - Might be a generic (qualified) type name or a method name. - - - - - Might be a generic (qualified) type name or an expression or a method name. - - - - - Might be a non-generic (qualified) type name or an expression. - - - - - A type name with alias prefix (Alias::Name) - - - - - Nullable type (ending with ?). - - - - - Might be a pointer type or a multiplication. - - - - - Parses any statement but a declaration statement. Returns null if the lookahead looks like a declaration. - - - Variable declarations in global code are parsed as field declarations so we need to fallback if we encounter a declaration statement. - - - - - true if the current token can be the first token of a typed identifier (a type name followed by an identifier), - false if it definitely can't be, - null if we need to scan further to find out. - - - - - "Safe" substring using start and end positions rather than start and length. - If things are out of bounds just returns the empty string. That should only - be used by clients to assist in error recovery. - original string - index of first character to be included - index of last character to be included - - - - - Take the given text and treat it as the contents of a string literal, returning a token for that. - - The text for the full string literal, including the quotes and contents - The text for the string literal's contents, excluding surrounding quotes - True if the string contents should be scanned using the rules for verbatim strings - The token kind to be assigned to the resulting token - - - - This method is essentially the same as ScanIdentifier_SlowPath, - except that it can handle XML entities. Since ScanIdentifier - is hot code and since this method does extra work, it seem - worthwhile to separate it from the common case. - - - - - - - Scans a new-line sequence (either a single new-line character or a CR-LF combo). - - A trivia node with the new-line text - - - - Scans all of the whitespace (not new-lines) into a trivia node until it runs out. - - A trivia node with the whitespace text - - - - Lexer entry point for LexMode.XmlDocComment - - - - - Lexer entry point for LexMode.XmlElementTag - - - - - Determines whether this Unicode character can start a XMLName. - - The Unicode character. - - - - Determines if this Unicode character can be part of an XML Name. - - The Unicode character. - - - - Lexer entry point for LexMode.XmlAttributeText - - - - - Lexer entry point for LexerMode.XmlCharacter. - - - - - Scan a single XML character (or entity). Assumes that leading trivia has already - been consumed. - - - - - Lexer entry point for LexerMode.XmlCrefQuote, LexerMode.XmlCrefDoubleQuote, - LexerMode.XmlNameQuote, and LexerMode.XmlNameDoubleQuote. - - - - - Scan a single cref attribute token. Assumes that leading trivia has already - been consumed. - - - Within this method, characters that are not XML meta-characters can be seamlessly - replaced with the corresponding XML entities. - - - - - Given a character, advance the input if either the character or the - corresponding XML entity appears next in the text window. - - - - - - - Convenience property for determining whether we are currently lexing the - value of a cref or name attribute. - - - - - Convenience property for determining whether we are currently lexing the - value of a name attribute. - - - - - Diagnostics that occur within cref attributes need to be - wrapped with ErrorCode.WRN_ErrorOverride. - - - - - Diagnostics that occur within cref attributes need to be - wrapped with ErrorCode.WRN_ErrorOverride. - - - - - Lexer entry point for LexMode.XmlCDataSectionText - - - - - Lexer entry point for LexMode.XmlCommentText - - - - - Lexer entry point for LexMode.XmlProcessingInstructionText - - - - - Collects XML doc comment exterior trivia, and therefore is a no op unless we are in the Start or Exterior of an XML doc comment. - - List in which to collect the trivia - - - - Collects whitespace and new line trivia for XML doc comments. Does not see XML doc comment exterior trivia, and is a no op unless we are in the interior. - - List in which to collect the trivia - - - - Turn a (parsed) interpolated string nonterminal into an interpolated string token. - - - - - - Scan past the hole inside an interpolated string literal, leaving the current character on the '}' (if any) - - - - - Keeps a sliding buffer over the SourceText of a file for the lexer. Also - provides the lexer with the ability to keep track of a current "lexeme" - by leaving a marker and advancing ahead the offset. The lexer can then - decide to "keep" the lexeme by erasing the marker, or abandon the current - lexeme by moving the offset back to the marker. - - - - - In many cases, e.g. PeekChar, we need the ability to indicate that there are - no characters left and we have reached the end of the stream, or some other - invalid or not present character was asked for. Due to perf concerns, things - like nullable or out variables are not viable. Instead we need to choose a - char value which can never be legal. - - In .NET, all characters are represented in 16 bits using the UTF-16 encoding. - Fortunately for us, there are a variety of different bit patterns which - are *not* legal UTF-16 characters. 0xffff (char.MaxValue) is one of these - characters -- a legal Unicode code point, but not a legal UTF-16 bit pattern. - - - - - The current absolute position in the text file. - - - - - The current offset inside the window (relative to the window start). - - - - - The buffer backing the current window. - - - - - Returns the start of the current lexeme relative to the window start. - - - - - Number of characters in the character window. - - - - - The absolute position of the start of the current lexeme in the given - SourceText. - - - - - The number of characters in the current lexeme. - - - - - Start parsing a new lexeme. - - - - - After reading , a consumer can determine - if the InvalidCharacter was in the user's source or a sentinel. - - Comments and string literals are allowed to contain any Unicode character. - - - - - - Advance the current position by one. No guarantee that this - position is valid. - - - - - Advance the current position by n. No guarantee that this position - is valid. - - - - - Grab the next character and advance the position. - - - The next character, if there were no characters - remaining. - - - - - Gets the next character if there are any characters in the - SourceText. May advance the window if we are at the end. - - - The next character if any are available. InvalidCharacter otherwise. - - - - - Gets the character at the given offset to the current position if - the position is valid within the SourceText. - - - The next character if any are available. InvalidCharacter otherwise. - - - - - Given that the next character is an ampersand ('&'), attempt to interpret the - following characters as an XML entity. On success, populate the out parameters - with the low and high UTF-16 surrogates for the character represented by the - entity. - - e.g. '<' for &lt;. - e.g. '\uDC00' for &#x10000; (ch == '\uD800'). - True if a valid XML entity was consumed. - - NOTE: Always advances, even on failure. - - - - - If the next characters in the window match the given string, - then advance past those characters. Otherwise, do nothing. - - - - - Because syntax nodes need to be constructed with context information - to allow us to - determine whether or not they can be reused during incremental parsing - the syntax - factory needs a view of some internal parser state. - - - Read-only outside SyntaxParser (not enforced for perf reasons). - Reference type so that the factory stays up-to-date. - - - - - If a method goes from async to non-async, or vice versa, then every occurrence of "await" - within the method (but not within a lambda) needs to be reinterpreted, to determine whether - it is a keyword or an identifier. - - - - - If the end of a query expression statement is commented out, then the following statement may - appear to be part of the query. When this occurs, identifiers within the following statement - may need to be reinterpreted as query keywords. - - - - - Converts skippedSyntax node into tokens and adds these as trivia on the target token. - Also adds the first error (in depth-first preorder) found in the skipped syntax tree to the target token. - - - - - This function searches for the given location node within the subtree rooted at root node. - If it finds it, the function computes the offset span of that child node within the root and returns true, - otherwise it returns false. - - Root node - Node to search in the subtree rooted at root node - Offset of the location node within the subtree rooted at child - - - - - NOTE: we are specifically diverging from dev11 to improve the user experience. - Since treating the "async" keyword as an identifier in older language - versions can never result in a correct program, we instead accept it as a - keyword regardless of the language version and produce an error if the version - is insufficient. - - - - Class which represents an expression that has a binary operator. - - - ExpressionSyntax node representing the expression on the left of the binary operator. - - - SyntaxToken representing the operator of the binary expression. - - - ExpressionSyntax node representing the expression on the right of the binary operator. - - - Class which represents the syntax node for identifier name. - - - SyntaxToken representing the keyword for the kind of the identifier name. - - - - Gets the separator at the given index in this list. - - The index. - - - - - WARN WARN WARN: This should be used with extreme caution - the underlying builder does - not give any indication that it is from a separated syntax list but the constraints - (node, token, node, token, ...) should still be maintained. - - - In order to avoid creating a separate pool of SeparatedSyntaxListBuilders, we expose - our underlying SyntaxListBuilder to SyntaxListPool. - - - - - Find the slot that contains the given offset. - - The target offset. Must be between 0 and . - The slot index of the slot containing the given offset. - - This implementation uses a binary search to find the first slot that contains - the given offset. - - - - - Enumerates all nodes of the tree rooted by this node (including this node). - - - - - Should only be called during construction. - - - This should probably be an extra constructor parameter, but we don't need more constructor overloads. - - - - - Gets the syntax node represented the structure of this trivia, if any. The HasStructure property can be used to - determine if this trivia has structure. - - - A CSharpSyntaxNode derived from StructuredTriviaSyntax, with the structured view of this trivia node. - If this trivia node does not have structure, returns null. - - - Some types of trivia have structure that can be accessed as additional syntax nodes. - These forms of trivia include: - directives, where the structure describes the structure of the directive. - documentation comments, where the structure describes the XML structure of the comment. - skipped tokens, where the structure describes the tokens that were skipped by the parser. - - - - - Provides caching functionality for green nonterminals with up to 3 children. - Example: - When constructing a node with given kind, flags, child1 and child2, we can look up - in the cache whether we already have a node that contains same kind, flags, - child1 and child2 and use that. - - For the purpose of children comparison, reference equality is used as a much cheaper - alternative to the structural/recursive equality. This implies that in order to de-duplicate - a node to a cache node, the children of two nodes must be already de-duplicated. - When adding a node to the cache we verify that cache does contain node's children, - since otherwise there is no reason for the node to be used. - Tokens/nulls are for this purpose considered deduplicated. Indeed most of the tokens - are deduplicated via quick-scanner caching, so we just assume they all are. - - As a result of above, "fat" nodes with 4 or more children or their recursive parents - will never be in the cache. This naturally limits the typical single cache item to be - a relatively simple expression. We do not want the cache to be completely unbounded - on the item size. - While it still may be possible to store a gigantic nested binary expression, - it should be a rare occurrence. - - We only consider "normal" nodes to be cacheable. - Nodes with diagnostics/annotations/directives/skipped, etc... have more complicated identity - and are not likely to be repetitive. - - - - - - Returns the string representation of this token, not including its leading and trailing trivia. - - The string representation of this token, not including its leading and trailing trivia. - The length of the returned string is always the same as Span.Length - - - Provides the base class from which the classes that represent name syntax nodes are derived. This is an abstract class. - - - Provides the base class from which the classes that represent simple name syntax nodes are derived. This is an abstract class. - - - SyntaxToken representing the identifier of the simple name. - - - Class which represents the syntax node for qualified name. - - - NameSyntax node representing the name on the left side of the dot token of the qualified name. - - - SyntaxToken representing the dot. - - - SimpleNameSyntax node representing the name on the right side of the dot token of the qualified name. - - - Class which represents the syntax node for generic name. - - - SyntaxToken representing the name of the identifier of the generic name. - - - TypeArgumentListSyntax node representing the list of type arguments of the generic name. - - - Class which represents the syntax node for type argument list. - - - SyntaxToken representing less than. - - - SeparatedSyntaxList of TypeSyntax node representing the type arguments. - - - SyntaxToken representing greater than. - - - Class which represents the syntax node for alias qualified name. - - - IdentifierNameSyntax node representing the name of the alias - - - SyntaxToken representing colon colon. - - - SimpleNameSyntax node representing the name that is being alias qualified. - - - Provides the base class from which the classes that represent type syntax nodes are derived. This is an abstract class. - - - Class which represents the syntax node for predefined types. - - - SyntaxToken which represents the keyword corresponding to the predefined type. - - - Class which represents the syntax node for the array type. - - - TypeSyntax node representing the type of the element of the array. - - - SyntaxList of ArrayRankSpecifierSyntax nodes representing the list of rank specifiers for the array. - - - Class which represents the syntax node for pointer type. - - - TypeSyntax node that represents the element type of the pointer. - - - SyntaxToken representing the asterisk. - - - Class which represents the syntax node for a nullable type. - - - TypeSyntax node representing the type of the element. - - - SyntaxToken representing the question mark. - - - Class which represents a placeholder in the type argument list of an unbound generic type. - - - SyntaxToken representing the omitted type argument. - - - Provides the base class from which the classes that represent expression syntax nodes are derived. This is an abstract class. - - - Class which represents the syntax node for parenthesized expression. - - - SyntaxToken representing the open parenthesis. - - - ExpressionSyntax node representing the expression enclosed within the parenthesis. - - - SyntaxToken representing the close parenthesis. - - - Class which represents the syntax node for prefix unary expression. - - - SyntaxToken representing the kind of the operator of the prefix unary expression. - - - ExpressionSyntax representing the operand of the prefix unary expression. - - - Class which represents the syntax node for an "await" expression. - - - SyntaxToken representing the kind "await" keyword. - - - ExpressionSyntax representing the operand of the "await" operator. - - - Class which represents the syntax node for postfix unary expression. - - - ExpressionSyntax representing the operand of the postfix unary expression. - - - SyntaxToken representing the kind of the operator of the postfix unary expression. - - - Class which represents the syntax node for member access expression. - - - ExpressionSyntax node representing the object that the member belongs to. - - - SyntaxToken representing the kind of the operator in the member access expression. - - - SimpleNameSyntax node representing the member being accessed. - - - Class which represents the syntax node for conditional access expression. - - - ExpressionSyntax node representing the object conditionally accessed. - - - SyntaxToken representing the question mark. - - - ExpressionSyntax node representing the access expression to be executed when the object is not null. - - - Class which represents the syntax node for member binding expression. - - - SyntaxToken representing dot. - - - SimpleNameSyntax node representing the member being bound to. - - - Class which represents the syntax node for element binding expression. - - - BracketedArgumentListSyntax node representing the list of arguments of the element binding expression. - - - Class which represents the syntax node for implicit element access expression. - - - BracketedArgumentListSyntax node representing the list of arguments of the implicit element access expression. - - - Class which represents an expression that has an assignment operator. - - - ExpressionSyntax node representing the expression on the left of the assignment operator. - - - SyntaxToken representing the operator of the assignment expression. - - - ExpressionSyntax node representing the expression on the right of the assignment operator. - - - Class which represents the syntax node for conditional expression. - - - ExpressionSyntax node representing the condition of the conditional expression. - - - SyntaxToken representing the question mark. - - - ExpressionSyntax node representing the expression to be executed when the condition is true. - - - ExpressionSyntax node representing the expression to be executed when the condition is false. - - - Provides the base class from which the classes that represent instance expression syntax nodes are derived. This is an abstract class. - - - Class which represents the syntax node for a this expression. - - - SyntaxToken representing the this keyword. - - - Class which represents the syntax node for a base expression. - - - SyntaxToken representing the base keyword. - - - Class which represents the syntax node for a literal expression. - - - SyntaxToken representing the keyword corresponding to the kind of the literal expression. - - - Class which represents the syntax node for MakeRef expression. - - - SyntaxToken representing the MakeRefKeyword. - - - SyntaxToken representing open parenthesis. - - - Argument of the primary function. - - - SyntaxToken representing close parenthesis. - - - Class which represents the syntax node for RefType expression. - - - SyntaxToken representing the RefTypeKeyword. - - - SyntaxToken representing open parenthesis. - - - Argument of the primary function. - - - SyntaxToken representing close parenthesis. - - - Class which represents the syntax node for RefValue expression. - - - SyntaxToken representing the RefValueKeyword. - - - SyntaxToken representing open parenthesis. - - - Typed reference expression. - - - Comma separating the arguments. - - - The type of the value. - - - SyntaxToken representing close parenthesis. - - - Class which represents the syntax node for Checked or Unchecked expression. - - - SyntaxToken representing the checked or unchecked keyword. - - - SyntaxToken representing open parenthesis. - - - Argument of the primary function. - - - SyntaxToken representing close parenthesis. - - - Class which represents the syntax node for Default expression. - - - SyntaxToken representing the DefaultKeyword. - - - SyntaxToken representing open parenthesis. - - - Argument of the primary function. - - - SyntaxToken representing close parenthesis. - - - Class which represents the syntax node for TypeOf expression. - - - SyntaxToken representing the TypeOfKeyword. - - - SyntaxToken representing open parenthesis. - - - The expression to return type of. - - - SyntaxToken representing close parenthesis. - - - Class which represents the syntax node for SizeOf expression. - - - SyntaxToken representing the SizeOfKeyword. - - - SyntaxToken representing open parenthesis. - - - Argument of the primary function. - - - SyntaxToken representing close parenthesis. - - - Class which represents the syntax node for invocation expression. - - - ExpressionSyntax node representing the expression part of the invocation. - - - ArgumentListSyntax node representing the list of arguments of the invocation expression. - - - Class which represents the syntax node for element access expression. - - - ExpressionSyntax node representing the expression which is accessing the element. - - - BracketedArgumentListSyntax node representing the list of arguments of the element access expression. - - - Provides the base class from which the classes that represent argument list syntax nodes are derived. This is an abstract class. - - - SeparatedSyntaxList of ArgumentSyntax nodes representing the list of arguments. - - - Class which represents the syntax node for the list of arguments. - - - SyntaxToken representing open parenthesis. - - - SeparatedSyntaxList of ArgumentSyntax representing the list of arguments. - - - SyntaxToken representing close parenthesis. - - - Class which represents the syntax node for bracketed argument list. - - - SyntaxToken representing open bracket. - - - SeparatedSyntaxList of ArgumentSyntax representing the list of arguments. - - - SyntaxToken representing close bracket. - - - Class which represents the syntax node for argument. - - - NameColonSyntax node representing the optional name arguments. - - - SyntaxToken representing the optional ref or out keyword. - - - ExpressionSyntax node representing the argument. - - - Class which represents the syntax node for name colon syntax. - - - IdentifierNameSyntax representing the identifier name. - - - SyntaxToken representing colon. - - - Class which represents the syntax node for cast expression. - - - SyntaxToken representing the open parenthesis. - - - TypeSyntax node representing the type the expression is being casted to. - - - SyntaxToken representing the close parenthesis. - - - ExpressionSyntax node representing the expression that is being casted. - - - Provides the base class from which the classes that represent anonymous function expressions are derived. - - - Gets the "async" token. - - - ExpressionSyntax or BlockSyntax representing the body of the lambda expression. - - - Class which represents the syntax node for anonymous method expression. - - - Gets the "async" token. - - - SyntaxToken representing the delegate keyword. - - - List of parameters of the anonymous method expression, or null if there no parameters are specified. - - - BlockSyntax node representing the body of the anonymous method. - - - Provides the base class from which the classes that represent lambda expressions are derived. - - - SyntaxToken representing equals greater than. - - - Class which represents the syntax node for a simple lambda expression. - - - Gets the "async" token. - - - ParameterSyntax node representing the parameter of the lambda expression. - - - SyntaxToken representing equals greater than. - - - SyntaxNode representing the body of the lambda expression. - - - Class which represents the syntax node for parenthesized lambda expression. - - - Gets the "async" token. - - - ParameterListSyntax node representing the list of parameters for the lambda expression. - - - SyntaxToken representing equals greater than. - - - SyntaxNode representing the body of the lambda expression. - - - Class which represents the syntax node for initializer expression. - - - SyntaxToken representing the open brace. - - - SeparatedSyntaxList of ExpressionSyntax representing the list of expressions in the initializer expression. - - - SyntaxToken representing the close brace. - - - Class which represents the syntax node for object creation expression. - - - SyntaxToken representing the new keyword. - - - TypeSyntax representing the type of the object being created. - - - ArgumentListSyntax representing the list of arguments passed as part of the object creation expression. - - - InitializerExpressionSyntax representing the initializer expression for the object being created. - - - NameEqualsSyntax representing the optional name of the member being initialized. - - - ExpressionSyntax representing the value the member is initialized with. - - - Class which represents the syntax node for anonymous object creation expression. - - - SyntaxToken representing the new keyword. - - - SyntaxToken representing the open brace. - - - SeparatedSyntaxList of AnonymousObjectMemberDeclaratorSyntax representing the list of object member initializers. - - - SyntaxToken representing the close brace. - - - Class which represents the syntax node for array creation expression. - - - SyntaxToken representing the new keyword. - - - ArrayTypeSyntax node representing the type of the array. - - - InitializerExpressionSyntax node representing the initializer of the array creation expression. - - - Class which represents the syntax node for implicit array creation expression. - - - SyntaxToken representing the new keyword. - - - SyntaxToken representing the open bracket. - - - SyntaxList of SyntaxToken representing the commas in the implicit array creation expression. - - - SyntaxToken representing the close bracket. - - - InitializerExpressionSyntax representing the initializer expression of the implicit array creation expression. - - - Class which represents the syntax node for stackalloc array creation expression. - - - SyntaxToken representing the stackalloc keyword. - - - TypeSyntax node representing the type of the stackalloc array. - - - Gets the identifier. - - - Gets the identifier. - - - Gets the identifier. - - - Gets the identifier. - - - Gets the identifier. - - - Class which represents a placeholder in an array size list. - - - SyntaxToken representing the omitted array size expression. - - - The first part of an interpolated string, $" or $@" - - - List of parts of the interpolated string, each one is either a literal part or an interpolation. - - - The closing quote of the interpolated string. - - - The text contents of a part of the interpolated string. - - - The text contents of the format specifier for an interpolation. - - - Represents the base class for all statements syntax classes. - - - Gets the modifier list. - - - Gets the identifier. - - - Represents a labeled statement syntax. - - - Gets the identifier. - - - Gets a SyntaxToken that represents the colon succeeding the statement's label. - - - - Represents a goto statement syntax - - - - - Gets a SyntaxToken that represents the goto keyword. - - - - - Gets a SyntaxToken that represents the case or default keywords if any exists. - - - - - Gets a constant expression for a goto case statement. - - - - - Gets a SyntaxToken that represents the semi-colon at the end of the statement. - - - - Gets the identifier. - - - - Represents an if statement syntax. - - - - - Gets a SyntaxToken that represents the if keyword. - - - - - Gets a SyntaxToken that represents the open parenthesis before the if statement's condition expression. - - - - - Gets an ExpressionSyntax that represents the condition of the if statement. - - - - - Gets a SyntaxToken that represents the close parenthesis after the if statement's condition expression. - - - - - Gets a StatementSyntax the represents the statement to be executed when the condition is true. - - - - - Gets an ElseClauseSyntax that represents the statement to be executed when the condition is false if such statement exists. - - - - Represents an else statement syntax. - - - - Gets a syntax token - - - - Represents a switch statement syntax. - - - - Gets a SyntaxToken that represents the switch keyword. - - - - - Gets a SyntaxToken that represents the open parenthesis preceding the switch expression. - - - - - Gets an ExpressionSyntax representing the expression of the switch statement. - - - - - Gets a SyntaxToken that represents the close parenthesis succeeding the switch expression. - - - - - Gets a SyntaxToken that represents the open braces preceding the switch sections. - - - - - Gets a SyntaxList of SwitchSectionSyntax's that represents the switch sections of the switch statement. - - - - - Gets a SyntaxToken that represents the open braces succeeding the switch sections. - - - - Represents a switch section syntax of a switch statement. - - - - Gets a SyntaxList of SwitchLabelSyntax's the represents the possible labels that control can transfer to within the section. - - - - - Gets a SyntaxList of StatementSyntax's the represents the statements to be executed when control transfer to a label the belongs to the section. - - - - Represents a switch label within a switch statement. - - - - Gets a SyntaxToken that represents a case or default keywords that belongs to a switch label. - - - - - Gets a SyntaxToken that represents the colon that terminates the switch label. - - - - Represents a case label within a switch statement. - - - Gets the case keyword token. - - - - Gets an ExpressionSyntax that represents the constant expression that gets matched for the case label. - - - - Represents a default label within a switch statement. - - - Gets the default keyword token. - - - Gets the attribute declaration list. - - - - Represents an ExternAlias directive syntax, e.g. "extern alias MyAlias;" with specifying "/r:MyAlias=SomeAssembly.dll " on the compiler command line. - - - - SyntaxToken representing the extern keyword. - - - SyntaxToken representing the alias keyword. - - - Gets the identifier. - - - SyntaxToken representing the semicolon token. - - - Member declaration syntax. - - - Gets the optional semicolon token. - - - Class representing one or more attributes applied to a language construct. - - - Gets the open bracket token. - - - Gets the optional construct targeted by the attribute. - - - Gets the attribute declaration list. - - - Gets the close bracket token. - - - Class representing what language construct an attribute targets. - - - Gets the identifier. - - - Gets the colon token. - - - Attribute syntax. - - - Gets the name. - - - Attribute argument list syntax. - - - Gets the open paren token. - - - Gets the arguments syntax list. - - - Gets the close paren token. - - - Attribute argument syntax. - - - Gets the expression. - - - Class representing an identifier name followed by an equals token. - - - Gets the identifier name. - - - Type parameter list syntax. - - - Gets the < token. - - - Gets the parameter list. - - - Gets the > token. - - - Type parameter syntax. - - - Gets the attribute declaration list. - - - Gets the identifier. - - - Base class for type declaration syntax. - - - Gets the attribute declaration list. - - - Gets the modifier list. - - - Gets the identifier. - - - Gets the base type list. - - - Gets the open brace token. - - - Gets the close brace token. - - - Gets the optional semicolon token. - - - Base class for type declaration syntax (class, struct, interface). - - - Gets the type keyword token ("class", "struct", "interface"). - - - Gets the type constraint list. - - - Gets the member declarations. - - - Class type declaration syntax. - - - Gets the class keyword token. - - - Struct type declaration syntax. - - - Gets the struct keyword token. - - - Interface type declaration syntax. - - - Gets the interface keyword token. - - - Enum type declaration syntax. - - - Gets the enum keyword token. - - - Gets the members declaration list. - - - Gets the optional semicolon token. - - - Delegate declaration syntax. - - - Gets the attribute declaration list. - - - Gets the modifier list. - - - Gets the "delegate" keyword. - - - Gets the return type. - - - Gets the identifier. - - - Gets the parameter list. - - - Gets the constraint clause list. - - - Gets the semicolon token. - - - Gets the attribute declaration list. - - - Gets the identifier. - - - Base list syntax. - - - Gets the colon token. - - - Gets the base type references. - - - Provides the base class from which the classes that represent base type syntax nodes are derived. This is an abstract class. - - - Type parameter constraint clause. - - - Gets the identifier. - - - Gets the colon token. - - - Gets the constraints list. - - - Base type for type parameter constraint syntax. - - - Constructor constraint syntax. - - - Gets the "new" keyword. - - - Gets the open paren keyword. - - - Gets the close paren keyword. - - - Base type for class or struct constraint syntax. - - - Gets the constraint keyword ("class" or "struct"). - - - Type constraint syntax. - - - Gets the type syntax. - - - Gets the attribute declaration list. - - - Gets the modifier list. - - - Gets the attribute declaration list. - - - Gets the modifier list. - - - Gets the attribute declaration list. - - - Gets the modifier list. - - - Base type for method declaration syntax. - - - Gets the attribute declaration list. - - - Gets the modifier list. - - - Gets the parameter list. - - - Gets the optional semicolon token. - - - Method declaration syntax. - - - Gets the return type syntax. - - - Gets the identifier. - - - Gets the constraint clause list. - - - Gets the optional semicolon token. - - - Operator declaration syntax. - - - Gets the return type. - - - Gets the "operator" keyword. - - - Gets the operator token. - - - Conversion operator declaration syntax. - - - Gets the "implicit" or "explicit" token. - - - Gets the "operator" token. - - - Gets the type. - - - Gets the optional semicolon token. - - - Constructor declaration syntax. - - - Gets the identifier. - - - Gets the optional semicolon token. - - - Constructor initializer syntax. - - - Gets the colon token. - - - Gets the "this" or "base" keyword. - - - Destructor declaration syntax. - - - Gets the tilde token. - - - Gets the identifier. - - - Gets the optional semicolon token. - - - Base type for property declaration syntax. - - - Gets the attribute declaration list. - - - Gets the modifier list. - - - Gets the type syntax. - - - Gets the optional explicit interface specifier. - - - Gets the identifier. - - - The syntax for the expression body of an expression-bodied member. - - - Gets the identifier. - - - Gets the parameter list. - - - Gets the attribute declaration list. - - - Gets the modifier list. - - - Gets the keyword token, or identifier if an erroneous accessor declaration. - - - Gets the optional body block which may be empty, but it is null if there are no braces. - - - Gets the optional semicolon token. - - - Base type for parameter list syntax. - - - Gets the parameter list. - - - Parameter list syntax. - - - Gets the open paren token. - - - Gets the close paren token. - - - Parameter list syntax with surrounding brackets. - - - Gets the open bracket token. - - - Gets the close bracket token. - - - Parameter syntax. - - - Gets the attribute declaration list. - - - Gets the modifier list. - - - Gets the identifier. - - - Gets the attribute declaration list. - - - Gets the modifier list. - - - - A symbol referenced by a cref attribute (e.g. in a <see> or <seealso> documentation comment tag). - For example, the M in <see cref="M" />. - - - - - A symbol reference that definitely refers to a type. - For example, "int", "A::B", "A.B", "A<T>", but not "M()" (has parameter list) or "this" (indexer). - NOTE: TypeCrefSyntax, QualifiedCrefSyntax, and MemberCrefSyntax overlap. The syntax in a TypeCrefSyntax - will always be bound as type, so it's safer to use QualifiedCrefSyntax or MemberCrefSyntax if the symbol - might be a non-type member. - - - - - A symbol reference to a type or non-type member that is qualified by an enclosing type or namespace. - For example, cref="System.String.ToString()". - NOTE: TypeCrefSyntax, QualifiedCrefSyntax, and MemberCrefSyntax overlap. The syntax in a TypeCrefSyntax - will always be bound as type, so it's safer to use QualifiedCrefSyntax or MemberCrefSyntax if the symbol - might be a non-type member. - - - - - The unqualified part of a CrefSyntax. - For example, "ToString()" in "object.ToString()". - NOTE: TypeCrefSyntax, QualifiedCrefSyntax, and MemberCrefSyntax overlap. The syntax in a TypeCrefSyntax - will always be bound as type, so it's safer to use QualifiedCrefSyntax or MemberCrefSyntax if the symbol - might be a non-type member. - - - - - A MemberCrefSyntax specified by a name (an identifier, predefined type keyword, or an alias-qualified name, - with an optional type parameter list) and an optional parameter list. - For example, "M", "M<T>" or "M(int)". - Also, "A::B()" or "string()". - - - - - A MemberCrefSyntax specified by a this keyword and an optional parameter list. - For example, "this" or "this[int]". - - - - - A MemberCrefSyntax specified by an operator keyword, an operator symbol and an optional parameter list. - For example, "operator +" or "operator -[int]". - NOTE: the operator must be overloadable. - - - - Gets the operator token. - - - - A MemberCrefSyntax specified by an implicit or explicit keyword, an operator keyword, a destination type, and an optional parameter list. - For example, "implicit operator int" or "explicit operator MyType(int)". - - - - - A list of cref parameters with surrounding punctuation. - Unlike regular parameters, cref parameters do not have names. - - - - Gets the parameter list. - - - - A parenthesized list of cref parameters. - - - - Gets the open paren token. - - - Gets the close paren token. - - - - A bracketed list of cref parameters. - - - - Gets the open bracket token. - - - Gets the close bracket token. - - - - An element of a BaseCrefParameterListSyntax. - Unlike a regular parameter, a cref parameter has only an optional ref or out keyword and a type - - there is no name and there are no attributes or other modifiers. - - - - Class which represents the syntax node for alias qualified name. - - - IdentifierNameSyntax node representing the name of the alias - - - SyntaxToken representing colon colon. - - - SimpleNameSyntax node representing the name that is being alias qualified. - - - Attribute syntax. - - - - Return the name used in syntax for the attribute. This is typically the class - name without the "Attribute" suffix. (For certain diagnostics, the native - compiler uses the attribute name from syntax rather than the class name.) - - - - Gets the name. - - - Class representing what language construct an attribute targets. - - - Gets the identifier. - - - Gets the colon token. - - - - Returns #r directives specified in the compilation. - - - - - Returns #load directives specified in the compilation. - - - - Gets the attribute declaration list. - - - - Adds C# specific parts to the line directive map. - - - - Gets the modifier list. - - - Delegate declaration syntax. - - - Gets the attribute declaration list. - - - Gets the modifier list. - - - Gets the "delegate" keyword. - - - Gets the return type. - - - Gets the identifier. - - - Gets the parameter list. - - - Gets the constraint clause list. - - - Gets the semicolon token. - - - - Returns true if the property is allowed by the rules of the - language to be an arbitrary expression, not just a statement expression. - - - True if, for example, this expression statement represents the last expression statement - of the interactive top-level code. - - - - Class which represents the syntax node for generic name. - - - SyntaxToken representing the name of the identifier of the generic name. - - - TypeArgumentListSyntax node representing the list of type arguments of the generic name. - - - Gets the identifier. - - - Class which represents the syntax node for anonymous method expression. - - - Gets the "async" token. - - - SyntaxToken representing the delegate keyword. - - - List of parameters of the anonymous method expression, or null if there no parameters are specified. - - - BlockSyntax node representing the body of the anonymous method. - - - - This class contains a variety of helper methods for determining whether a - position is within the scope (and not just the span) of a node. In general, - general, the scope extends from the first token up to, but not including, - the last token. For example, the open brace of a block is within the scope - of the block, but the close brace is not. - - - - - A position is considered to be inside a block if it is on or after - the open brace and strictly before the close brace. - - - - - A position is inside a property body only if it is inside an expression body. - All block bodies for properties are part of the accessor declaration (a type - of BaseMethodDeclaration), not the property declaration. - - - - - A position is inside a property body only if it is inside an expression body. - All block bodies for properties are part of the accessor declaration (a type - of BaseMethodDeclaration), not the property declaration. - - - - - A position is inside a body if it is inside the block or expression - body. - - A position is considered to be inside a block if it is on or after - the open brace and strictly before the close brace. A position is - considered to be inside an expression body if it is on or after - the '=>' and strictly before the semicolon. - - - - - Returns true if position is within the given node and before the first excluded token. - - - - - Used to determine whether it would be appropriate to use the binder for the statement (if any). - Not used to determine whether the position is syntactically within the statement. - - - - - Used to determine whether it would be appropriate to use the binder for the statement (if any). - Not used to determine whether the position is syntactically within the statement. - - - - - Used to determine whether it would be appropriate to use the binder for the statement (if any). - Not used to determine whether the position is syntactically within the statement. - - - - Gets the parameter list. - - - Method declaration syntax. - - - Gets the return type syntax. - - - Gets the identifier. - - - Gets the constraint clause list. - - - Gets the optional semicolon token. - - - Gets the optional semicolon token. - - - Provides the base class from which the classes that represent name syntax nodes are derived. This is an abstract class. - - - - Returns the unqualified (right-most) part of a qualified or alias-qualified name, or the name itself if already unqualified. - - The unqualified (right-most) part of a qualified or alias-qualified name, or the name itself if already unqualified. - If called on an instance of returns the value of the property. - If called on an instance of returns the value of the property. - If called on an instance of returns the instance itself. - - - - - This inspection is entirely syntactic. We are not trying to find the alias corresponding to the assembly symbol - containing the explicitly implemented interface symbol - there may be more than one. We just want to know - how the name was qualified in source so that we can make a similar qualification (for uniqueness purposes). - - - - Parameter list syntax. - - - Gets the open paren token. - - - Gets the close paren token. - - - Parameter syntax. - - - Gets the attribute declaration list. - - - Gets the modifier list. - - - Gets the identifier. - - - Class which represents the syntax node for qualified name. - - - NameSyntax node representing the name on the left side of the dot token of the qualified name. - - - SyntaxToken representing the dot. - - - SimpleNameSyntax node representing the name on the right side of the dot token of the qualified name. - - - Provides the base class from which the classes that represent simple name syntax nodes are derived. This is an abstract class. - - - SyntaxToken representing the identifier of the simple name. - - - - It's a non terminal Trivia CSharpSyntaxNode that has a tree underneath it. - - - - - Get parent trivia. - - - - - Returns whether the specified token is also the end of the line. This will - be true for , , - and all preprocessor directives. - - - - Base class for type declaration syntax (class, struct, interface). - - - Gets the type keyword token ("class", "struct", "interface"). - - - Gets the type constraint list. - - - Gets the member declarations. - - - Provides the base class from which the classes that represent type syntax nodes are derived. This is an abstract class. - - - Class which represents the syntax node for identifier name. - - - SyntaxToken representing the keyword for the kind of the identifier name. - - - Class which represents the syntax node for type argument list. - - - SyntaxToken representing less than. - - - SeparatedSyntaxList of TypeSyntax node representing the type arguments. - - - SyntaxToken representing greater than. - - - Class which represents the syntax node for predefined types. - - - SyntaxToken which represents the keyword corresponding to the predefined type. - - - Class which represents the syntax node for the array type. - - - TypeSyntax node representing the type of the element of the array. - - - SyntaxList of ArrayRankSpecifierSyntax nodes representing the list of rank specifiers for the array. - - - Class which represents the syntax node for pointer type. - - - TypeSyntax node that represents the element type of the pointer. - - - SyntaxToken representing the asterisk. - - - Class which represents the syntax node for a nullable type. - - - TypeSyntax node representing the type of the element. - - - SyntaxToken representing the question mark. - - - Class which represents a placeholder in the type argument list of an unbound generic type. - - - SyntaxToken representing the omitted type argument. - - - Provides the base class from which the classes that represent expression syntax nodes are derived. This is an abstract class. - - - Class which represents the syntax node for parenthesized expression. - - - SyntaxToken representing the open parenthesis. - - - ExpressionSyntax node representing the expression enclosed within the parenthesis. - - - SyntaxToken representing the close parenthesis. - - - Class which represents the syntax node for prefix unary expression. - - - SyntaxToken representing the kind of the operator of the prefix unary expression. - - - ExpressionSyntax representing the operand of the prefix unary expression. - - - Class which represents the syntax node for an "await" expression. - - - SyntaxToken representing the kind "await" keyword. - - - ExpressionSyntax representing the operand of the "await" operator. - - - Class which represents the syntax node for postfix unary expression. - - - ExpressionSyntax representing the operand of the postfix unary expression. - - - SyntaxToken representing the kind of the operator of the postfix unary expression. - - - Class which represents the syntax node for member access expression. - - - ExpressionSyntax node representing the object that the member belongs to. - - - SyntaxToken representing the kind of the operator in the member access expression. - - - SimpleNameSyntax node representing the member being accessed. - - - Class which represents the syntax node for conditional access expression. - - - ExpressionSyntax node representing the object conditionally accessed. - - - SyntaxToken representing the question mark. - - - ExpressionSyntax node representing the access expression to be executed when the object is not null. - - - Class which represents the syntax node for member binding expression. - - - SyntaxToken representing dot. - - - SimpleNameSyntax node representing the member being bound to. - - - Class which represents the syntax node for element binding expression. - - - BracketedArgumentListSyntax node representing the list of arguments of the element binding expression. - - - Class which represents the syntax node for implicit element access expression. - - - BracketedArgumentListSyntax node representing the list of arguments of the implicit element access expression. - - - Class which represents an expression that has a binary operator. - - - ExpressionSyntax node representing the expression on the left of the binary operator. - - - SyntaxToken representing the operator of the binary expression. - - - ExpressionSyntax node representing the expression on the right of the binary operator. - - - Class which represents an expression that has an assignment operator. - - - ExpressionSyntax node representing the expression on the left of the assignment operator. - - - SyntaxToken representing the operator of the assignment expression. - - - ExpressionSyntax node representing the expression on the right of the assignment operator. - - - Class which represents the syntax node for conditional expression. - - - ExpressionSyntax node representing the condition of the conditional expression. - - - SyntaxToken representing the question mark. - - - ExpressionSyntax node representing the expression to be executed when the condition is true. - - - ExpressionSyntax node representing the expression to be executed when the condition is false. - - - Provides the base class from which the classes that represent instance expression syntax nodes are derived. This is an abstract class. - - - Class which represents the syntax node for a this expression. - - - SyntaxToken representing the this keyword. - - - Class which represents the syntax node for a base expression. - - - SyntaxToken representing the base keyword. - - - Class which represents the syntax node for a literal expression. - - - SyntaxToken representing the keyword corresponding to the kind of the literal expression. - - - Class which represents the syntax node for MakeRef expression. - - - SyntaxToken representing the MakeRefKeyword. - - - SyntaxToken representing open parenthesis. - - - Argument of the primary function. - - - SyntaxToken representing close parenthesis. - - - Class which represents the syntax node for RefType expression. - - - SyntaxToken representing the RefTypeKeyword. - - - SyntaxToken representing open parenthesis. - - - Argument of the primary function. - - - SyntaxToken representing close parenthesis. - - - Class which represents the syntax node for RefValue expression. - - - SyntaxToken representing the RefValueKeyword. - - - SyntaxToken representing open parenthesis. - - - Typed reference expression. - - - Comma separating the arguments. - - - The type of the value. - - - SyntaxToken representing close parenthesis. - - - Class which represents the syntax node for Checked or Unchecked expression. - - - SyntaxToken representing the checked or unchecked keyword. - - - SyntaxToken representing open parenthesis. - - - Argument of the primary function. - - - SyntaxToken representing close parenthesis. - - - Class which represents the syntax node for Default expression. - - - SyntaxToken representing the DefaultKeyword. - - - SyntaxToken representing open parenthesis. - - - Argument of the primary function. - - - SyntaxToken representing close parenthesis. - - - Class which represents the syntax node for TypeOf expression. - - - SyntaxToken representing the TypeOfKeyword. - - - SyntaxToken representing open parenthesis. - - - The expression to return type of. - - - SyntaxToken representing close parenthesis. - - - Class which represents the syntax node for SizeOf expression. - - - SyntaxToken representing the SizeOfKeyword. - - - SyntaxToken representing open parenthesis. - - - Argument of the primary function. - - - SyntaxToken representing close parenthesis. - - - Class which represents the syntax node for invocation expression. - - - ExpressionSyntax node representing the expression part of the invocation. - - - ArgumentListSyntax node representing the list of arguments of the invocation expression. - - - Class which represents the syntax node for element access expression. - - - ExpressionSyntax node representing the expression which is accessing the element. - - - BracketedArgumentListSyntax node representing the list of arguments of the element access expression. - - - Provides the base class from which the classes that represent argument list syntax nodes are derived. This is an abstract class. - - - SeparatedSyntaxList of ArgumentSyntax nodes representing the list of arguments. - - - Class which represents the syntax node for the list of arguments. - - - SyntaxToken representing open parenthesis. - - - SeparatedSyntaxList of ArgumentSyntax representing the list of arguments. - - - SyntaxToken representing close parenthesis. - - - Class which represents the syntax node for bracketed argument list. - - - SyntaxToken representing open bracket. - - - SeparatedSyntaxList of ArgumentSyntax representing the list of arguments. - - - SyntaxToken representing close bracket. - - - Class which represents the syntax node for argument. - - - NameColonSyntax node representing the optional name arguments. - - - SyntaxToken representing the optional ref or out keyword. - - - ExpressionSyntax node representing the argument. - - - Class which represents the syntax node for name colon syntax. - - - IdentifierNameSyntax representing the identifier name. - - - SyntaxToken representing colon. - - - Class which represents the syntax node for cast expression. - - - SyntaxToken representing the open parenthesis. - - - TypeSyntax node representing the type the expression is being casted to. - - - SyntaxToken representing the close parenthesis. - - - ExpressionSyntax node representing the expression that is being casted. - - - Provides the base class from which the classes that represent anonymous function expressions are derived. - - - Gets the "async" token. - - - ExpressionSyntax or BlockSyntax representing the body of the lambda expression. - - - Provides the base class from which the classes that represent lambda expressions are derived. - - - SyntaxToken representing equals greater than. - - - Class which represents the syntax node for a simple lambda expression. - - - Gets the "async" token. - - - ParameterSyntax node representing the parameter of the lambda expression. - - - SyntaxToken representing equals greater than. - - - SyntaxNode representing the body of the lambda expression. - - - Class which represents the syntax node for parenthesized lambda expression. - - - Gets the "async" token. - - - ParameterListSyntax node representing the list of parameters for the lambda expression. - - - SyntaxToken representing equals greater than. - - - SyntaxNode representing the body of the lambda expression. - - - Class which represents the syntax node for initializer expression. - - - SyntaxToken representing the open brace. - - - SeparatedSyntaxList of ExpressionSyntax representing the list of expressions in the initializer expression. - - - SyntaxToken representing the close brace. - - - Class which represents the syntax node for object creation expression. - - - SyntaxToken representing the new keyword. - - - TypeSyntax representing the type of the object being created. - - - ArgumentListSyntax representing the list of arguments passed as part of the object creation expression. - - - InitializerExpressionSyntax representing the initializer expression for the object being created. - - - NameEqualsSyntax representing the optional name of the member being initialized. - - - ExpressionSyntax representing the value the member is initialized with. - - - Class which represents the syntax node for anonymous object creation expression. - - - SyntaxToken representing the new keyword. - - - SyntaxToken representing the open brace. - - - SeparatedSyntaxList of AnonymousObjectMemberDeclaratorSyntax representing the list of object member initializers. - - - SyntaxToken representing the close brace. - - - Class which represents the syntax node for array creation expression. - - - SyntaxToken representing the new keyword. - - - ArrayTypeSyntax node representing the type of the array. - - - InitializerExpressionSyntax node representing the initializer of the array creation expression. - - - Class which represents the syntax node for implicit array creation expression. - - - SyntaxToken representing the new keyword. - - - SyntaxToken representing the open bracket. - - - SyntaxList of SyntaxToken representing the commas in the implicit array creation expression. - - - SyntaxToken representing the close bracket. - - - InitializerExpressionSyntax representing the initializer expression of the implicit array creation expression. - - - Class which represents the syntax node for stackalloc array creation expression. - - - SyntaxToken representing the stackalloc keyword. - - - TypeSyntax node representing the type of the stackalloc array. - - - Gets the identifier. - - - Gets the identifier. - - - Gets the identifier. - - - Gets the identifier. - - - Gets the identifier. - - - Class which represents a placeholder in an array size list. - - - SyntaxToken representing the omitted array size expression. - - - The first part of an interpolated string, $" or $@" - - - List of parts of the interpolated string, each one is either a literal part or an interpolation. - - - The closing quote of the interpolated string. - - - The text contents of a part of the interpolated string. - - - The text contents of the format specifier for an interpolation. - - - Represents the base class for all statements syntax classes. - - - Gets the identifier. - - - Represents a labeled statement syntax. - - - Gets the identifier. - - - Gets a SyntaxToken that represents the colon succeeding the statement's label. - - - - Represents a goto statement syntax - - - - - Gets a SyntaxToken that represents the goto keyword. - - - - - Gets a SyntaxToken that represents the case or default keywords if any exists. - - - - - Gets a constant expression for a goto case statement. - - - - - Gets a SyntaxToken that represents the semi-colon at the end of the statement. - - - - Gets the identifier. - - - - Represents an if statement syntax. - - - - - Gets a SyntaxToken that represents the if keyword. - - - - - Gets a SyntaxToken that represents the open parenthesis before the if statement's condition expression. - - - - - Gets an ExpressionSyntax that represents the condition of the if statement. - - - - - Gets a SyntaxToken that represents the close parenthesis after the if statement's condition expression. - - - - - Gets a StatementSyntax the represents the statement to be executed when the condition is true. - - - - - Gets an ElseClauseSyntax that represents the statement to be executed when the condition is false if such statement exists. - - - - Represents an else statement syntax. - - - - Gets a syntax token - - - - Represents a switch statement syntax. - - - - Gets a SyntaxToken that represents the switch keyword. - - - - - Gets a SyntaxToken that represents the open parenthesis preceding the switch expression. - - - - - Gets an ExpressionSyntax representing the expression of the switch statement. - - - - - Gets a SyntaxToken that represents the close parenthesis succeeding the switch expression. - - - - - Gets a SyntaxToken that represents the open braces preceding the switch sections. - - - - - Gets a SyntaxList of SwitchSectionSyntax's that represents the switch sections of the switch statement. - - - - - Gets a SyntaxToken that represents the open braces succeeding the switch sections. - - - - Represents a switch section syntax of a switch statement. - - - - Gets a SyntaxList of SwitchLabelSyntax's the represents the possible labels that control can transfer to within the section. - - - - - Gets a SyntaxList of StatementSyntax's the represents the statements to be executed when control transfer to a label the belongs to the section. - - - - Represents a switch label within a switch statement. - - - - Gets a SyntaxToken that represents a case or default keywords that belongs to a switch label. - - - - - Gets a SyntaxToken that represents the colon that terminates the switch label. - - - - Represents a case label within a switch statement. - - - Gets the case keyword token. - - - - Gets an ExpressionSyntax that represents the constant expression that gets matched for the case label. - - - - Represents a default label within a switch statement. - - - Gets the default keyword token. - - - - Represents an ExternAlias directive syntax, e.g. "extern alias MyAlias;" with specifying "/r:MyAlias=SomeAssembly.dll " on the compiler command line. - - - - SyntaxToken representing the extern keyword. - - - SyntaxToken representing the alias keyword. - - - Gets the identifier. - - - SyntaxToken representing the semicolon token. - - - Member declaration syntax. - - - Class representing one or more attributes applied to a language construct. - - - Gets the open bracket token. - - - Gets the optional construct targeted by the attribute. - - - Gets the attribute declaration list. - - - Gets the close bracket token. - - - Attribute argument list syntax. - - - Gets the open paren token. - - - Gets the arguments syntax list. - - - Gets the close paren token. - - - Attribute argument syntax. - - - Gets the expression. - - - Class representing an identifier name followed by an equals token. - - - Gets the identifier name. - - - Type parameter list syntax. - - - Gets the < token. - - - Gets the parameter list. - - - Gets the > token. - - - Type parameter syntax. - - - Gets the attribute declaration list. - - - Gets the identifier. - - - Base class for type declaration syntax. - - - Gets the attribute declaration list. - - - Gets the modifier list. - - - Gets the identifier. - - - Gets the base type list. - - - Gets the open brace token. - - - Gets the close brace token. - - - Gets the optional semicolon token. - - - Class type declaration syntax. - - - Gets the class keyword token. - - - Struct type declaration syntax. - - - Gets the struct keyword token. - - - Interface type declaration syntax. - - - Gets the interface keyword token. - - - Enum type declaration syntax. - - - Gets the enum keyword token. - - - Gets the members declaration list. - - - Gets the optional semicolon token. - - - Gets the attribute declaration list. - - - Gets the identifier. - - - Base list syntax. - - - Gets the colon token. - - - Gets the base type references. - - - Provides the base class from which the classes that represent base type syntax nodes are derived. This is an abstract class. - - - Type parameter constraint clause. - - - Gets the identifier. - - - Gets the colon token. - - - Gets the constraints list. - - - Base type for type parameter constraint syntax. - - - Constructor constraint syntax. - - - Gets the "new" keyword. - - - Gets the open paren keyword. - - - Gets the close paren keyword. - - - Base type for class or struct constraint syntax. - - - Gets the constraint keyword ("class" or "struct"). - - - Type constraint syntax. - - - Gets the type syntax. - - - Gets the attribute declaration list. - - - Gets the modifier list. - - - Gets the attribute declaration list. - - - Gets the modifier list. - - - Gets the attribute declaration list. - - - Gets the modifier list. - - - Base type for method declaration syntax. - - - Gets the attribute declaration list. - - - Gets the modifier list. - - - Gets the parameter list. - - - Gets the optional semicolon token. - - - Operator declaration syntax. - - - Gets the return type. - - - Gets the "operator" keyword. - - - Gets the operator token. - - - Conversion operator declaration syntax. - - - Gets the "implicit" or "explicit" token. - - - Gets the "operator" token. - - - Gets the type. - - - Gets the optional semicolon token. - - - Constructor declaration syntax. - - - Gets the identifier. - - - Gets the optional semicolon token. - - - Constructor initializer syntax. - - - Gets the colon token. - - - Gets the "this" or "base" keyword. - - - Destructor declaration syntax. - - - Gets the tilde token. - - - Gets the identifier. - - - Gets the optional semicolon token. - - - Base type for property declaration syntax. - - - Gets the attribute declaration list. - - - Gets the modifier list. - - - Gets the type syntax. - - - Gets the optional explicit interface specifier. - - - The syntax for the expression body of an expression-bodied member. - - - Gets the identifier. - - - Gets the attribute declaration list. - - - Gets the modifier list. - - - Gets the keyword token, or identifier if an erroneous accessor declaration. - - - Gets the optional body block which may be empty, but it is null if there are no braces. - - - Gets the optional semicolon token. - - - Base type for parameter list syntax. - - - Gets the parameter list. - - - Parameter list syntax with surrounding brackets. - - - Gets the open bracket token. - - - Gets the close bracket token. - - - Gets the attribute declaration list. - - - Gets the modifier list. - - - - A symbol referenced by a cref attribute (e.g. in a <see> or <seealso> documentation comment tag). - For example, the M in <see cref="M" />. - - - - - A symbol reference that definitely refers to a type. - For example, "int", "A::B", "A.B", "A<T>", but not "M()" (has parameter list) or "this" (indexer). - NOTE: TypeCrefSyntax, QualifiedCrefSyntax, and MemberCrefSyntax overlap. The syntax in a TypeCrefSyntax - will always be bound as type, so it's safer to use QualifiedCrefSyntax or MemberCrefSyntax if the symbol - might be a non-type member. - - - - - A symbol reference to a type or non-type member that is qualified by an enclosing type or namespace. - For example, cref="System.String.ToString()". - NOTE: TypeCrefSyntax, QualifiedCrefSyntax, and MemberCrefSyntax overlap. The syntax in a TypeCrefSyntax - will always be bound as type, so it's safer to use QualifiedCrefSyntax or MemberCrefSyntax if the symbol - might be a non-type member. - - - - - The unqualified part of a CrefSyntax. - For example, "ToString()" in "object.ToString()". - NOTE: TypeCrefSyntax, QualifiedCrefSyntax, and MemberCrefSyntax overlap. The syntax in a TypeCrefSyntax - will always be bound as type, so it's safer to use QualifiedCrefSyntax or MemberCrefSyntax if the symbol - might be a non-type member. - - - - - A MemberCrefSyntax specified by a name (an identifier, predefined type keyword, or an alias-qualified name, - with an optional type parameter list) and an optional parameter list. - For example, "M", "M<T>" or "M(int)". - Also, "A::B()" or "string()". - - - - - A MemberCrefSyntax specified by a this keyword and an optional parameter list. - For example, "this" or "this[int]". - - - - - A MemberCrefSyntax specified by an operator keyword, an operator symbol and an optional parameter list. - For example, "operator +" or "operator -[int]". - NOTE: the operator must be overloadable. - - - - Gets the operator token. - - - - A MemberCrefSyntax specified by an implicit or explicit keyword, an operator keyword, a destination type, and an optional parameter list. - For example, "implicit operator int" or "explicit operator MyType(int)". - - - - - A list of cref parameters with surrounding punctuation. - Unlike regular parameters, cref parameters do not have names. - - - - Gets the parameter list. - - - - A parenthesized list of cref parameters. - - - - Gets the open paren token. - - - Gets the close paren token. - - - - A bracketed list of cref parameters. - - - - Gets the open bracket token. - - - Gets the close bracket token. - - - - An element of a BaseCrefParameterListSyntax. - Unlike a regular parameter, a cref parameter has only an optional ref or out keyword and a type - - there is no name and there are no attributes or other modifiers. - - - - - Defines a set of methods to determine how Unicode characters are treated by the C# compiler. - - - - - Returns true if the Unicode character is a hexadecimal digit. - - The Unicode character. - true if the character is a hexadecimal digit 0-9, A-F, a-f. - - - - Returns true if the Unicode character is a decimal digit. - - The Unicode character. - true if the Unicode character is a decimal digit. - - - - Returns the value of a hexadecimal Unicode character. - - The Unicode character. - - - - Returns the value of a decimal Unicode character. - - The Unicode character. - - - - Returns true if the Unicode character represents a whitespace. - - The Unicode character. - - - - Returns true if the Unicode character is a newline character. - - The Unicode character. - - - - Returns true if the Unicode character can be the starting character of a C# identifier. - - The Unicode character. - - - - Returns true if the Unicode character can be a part of a C# identifier. - - The Unicode character. - - - - Check that the name is a valid identifier. - - - - - Spec section 2.4.2 says that identifiers are compared without regard - to leading "@" characters or unicode formatting characters. As in dev10, - this is actually accomplished by dropping such characters during parsing. - Unfortunately, metadata names can still contain these characters and will - not be referenceable from source if they do (lookup will fail since the - characters will have been dropped from the search string). - See DevDiv #14432 for more. - - - - - A custom equality comparer for - - - PERF: The framework specializes EqualityComparer for enums, but only if the underlying type is System.Int32 - Since SyntaxKind's underlying type is System.UInt16, ObjectEqualityComparer will be chosen instead. - - - - - Some preprocessor keywords are only keywords when they appear after a - hash sign (#). For these keywords, the lexer will produce tokens with - Kind = SyntaxKind.IdentifierToken and ContextualKind set to the keyword - SyntaxKind. - - - This wrinkle is specifically not publicly exposed. - - - - - Member declarations that can appear in global code (other than type declarations). - - - - - Returns true if the node is the alias of an AliasQualifiedNameSyntax - - - - - Returns true if the node is the object of an invocation expression. - - - - - Returns true if the node is the object of an element access expression. - - - - - Returns true if the node is in a tree location that is expected to be a type - - - - - - - Returns true if a node is in a tree location that is expected to be either a namespace or type - - - - - - - Is the node the name of a named argument of an invocation, object creation expression, - constructor initializer, or element access, but not an attribute. - - - - - Is the expression the initializer in a fixed statement? - - - - - Displays a value in the C# style. - - - Separate from because we want to link this functionality into - the Formatter project and we don't want it to be public there. - - - - - - Returns a string representation of an object of primitive type. - - A value to display as a string. - Options used to customize formatting of an object value. - A string representation of an object of primitive type (or null if the type is not supported). - - Handles , , , - , , , , , - , , , , , - and null. - - - - - Returns true if the character should be replaced and sets - to the replacement text if the - character is replaced with text other than the Unicode escape sequence. - - - - - Returns a C# string literal with the given value. - - The value that the resulting string literal should have. - Options used to customize formatting of an object value. - A string literal with the given value. - - Escapes non-printable characters. - - - - - Returns a C# character literal with the given value. - - The value that the resulting character literal should have. - Options used to customize formatting of an object value. - A character literal with the given value. - - - - Displays a symbol in the C# style. - - - - - - Displays a symbol in the C# style, based on a . - - The symbol to be displayed. - The formatting options to apply. If null is passed, will be used. - A formatted string that can be displayed to the user. - - The return value is not expected to be syntactically valid C#. - - - - - Displays a symbol in the C# style, based on a . - Based on the context, qualify type and member names as little as possible without - introducing ambiguities. - - The symbol to be displayed. - Semantic information about the context in which the symbol is being displayed. - A position within the or . - The formatting options to apply. If null is passed, will be used. - A formatted string that can be displayed to the user. - - The return value is not expected to be syntactically valid C#. - - - - - Convert a symbol to an array of string parts, each of which has a kind. Useful for - colorizing the display string. - - The symbol to be displayed. - The formatting options to apply. If null is passed, will be used. - A list of display parts. - - Parts are not localized until they are converted to strings. - - - - - Convert a symbol to an array of string parts, each of which has a kind. Useful for - colorizing the display string. - - The symbol to be displayed. - Semantic information about the context in which the symbol is being displayed. - A position within the or . - The formatting options to apply. If null is passed, will be used. - A list of display parts. - - Parts are not localized until they are converted to strings. - - - - - Returns a string representation of an object of primitive type. - - A value to display as a string. - Whether or not to quote string literals. - Whether or not to display integral literals in hexadecimal. - A string representation of an object of primitive type (or null if the type is not supported). - - Handles , , , - , , , , , - , , , , , - and null. - - - - - Returns a C# string literal with the given value. - - The value that the resulting string literal should have. - True to put (double) quotes around the string literal. - A string literal with the given value. - - Escapes non-printable characters. - - - - - Returns a C# character literal with the given value. - - The value that the resulting character literal should have. - True to put (single) quotes around the character literal. - A character literal with the given value. - - Escapes non-printable characters. - - - - - Some error messages are particularly confusing if multiple placeholders are substituted - with the same string. For example, "cannot convert from 'Foo' to 'Foo'". Usually, this - occurs because there are two types in different contexts with the same qualified name. - The solution is to provide additional qualification on each symbol - either a source - location, an assembly path, or an assembly identity. - - - Performs the same function as ErrArgFlags::Unique in the native compiler. - - - - - Virtual dispatch based on a symbol's particular class. - - Additional argument type - Result type - - - - Call the correct VisitXXX method in this class based on the particular type of symbol that is passed in. - Return default(TResult) if symbol is null - - - - - The default Visit method called when visiting any and - if visiting specific symbol method VisitXXX is not overridden - - The visited symbol - Additional argument - - - - - Called when visiting an ; Override this method with - specific implementation; Calling default if it's not - overridden - - The visited symbol - Additional argument - - - - - Called when visiting a ; Override this method with specific - implementation; Calling default if it's not overridden - - The visited symbol - Additional argument - - - - - Called when visiting a ; Should override this method if - want to visit members of the namespace; Calling - and loop over each member; calling on it Or override this with - specific implementation; Calling if it's not - overridden - - The visited symbol - Additional argument - - - - - Called when visiting a ; Override this with specific - implementation; Calling if it's not overridden - - The visited symbol - Additional argument - - - - - Called when visiting an ; Override this with specific - implementation; Calling if it's not overridden - - The visited symbol - Additional argument - - - - - Called when visiting a ; Override this with specific - implementation; Calling if it's not overridden - - The visited symbol - Additional argument - - - - - Called when visiting an - Error symbol is created when there is compiler error; Override this with specific - implementation; Calling if it's not overridden - - The visited symbol - Additional argument - - - - - Called when visiting a ; Override this with specific - implementation; Calling if it's not overridden - - The visited symbol - Additional argument - - - - - Called when visiting a ; Override this with specific - implementation; Calling if it's not overridden - - The visited symbol - Additional argument - - - - - Called when visiting a ; Override this with specific - implementation; Calling default if it's not overridden - - The visited symbol - Additional argument - - - - - Called when visiting a ; Override this with specific - implementation; Calling default if it's not overridden - - The visited symbol - Additional argument - - - - - Called when visiting a ; Override this with specific - implementation; Calling default if it's not overridden - - The visited symbol - Additional argument - - - - - Called when visiting an ; Override this with specific - implementation; Calling default if it's not overridden - - The visited symbol - Additional argument - - - - - Called when visiting a ; Override this with specific - implementation; Calling default if it's not overridden - - The visited symbol - Additional argument - - - - - Called when visiting a ; Override this with specific - implementation; Calling default if it's not overridden - - The visited symbol - Additional argument - - - - - Called when visiting a ; Override this with specific - implementation; Calling default if it's not overridden - - The visited symbol - Additional argument - - - - - Called when visiting an ; Override this with specific - implementation; Calling default if it's not overridden - - The visited symbol - Additional argument - - - - - Called when visiting a ; Override this with specific - implementation; Calling default if it's not overridden - - The visited symbol - Additional argument - - - - - Returns the System.String that represents the current TypedConstant. - - A System.String that represents the current TypedConstant. - - - - Determine whether there is any substitution of type parameters that will - make two types identical. - - - - - Determine whether there is any substitution of type parameters that will - make two types identical. - - LHS - RHS - - Substitutions performed so far (or null for none). - Keys are type parameters, values are types (possibly type parameters). - Will be updated with new substitutions by the callee. - Should be ignored when false is returned. - - True if there exists a type map such that Map(LHS) == Map(RHS). - - Derived from Dev10's BSYMMGR::UnifyTypes. - Two types will not unify if they have different custom modifiers. - - - - - Return true if the given type contains the specified type parameter. - - - - - Represents a non-terminal node in the syntax tree. - - - - - Used by structured trivia which has "parent == null", and therefore must know its - SyntaxTree explicitly when created. - - - - - Creates a clone of a red node that can be used as a root of given syntaxTree. - New node has no parents, position == 0, and syntaxTree as specified. - - - - - Returns a non-null that owns this node. - If this node was created with an explicit non-null , returns that tree. - Otherwise, if this node has a non-null parent, then returns the parent's . - Otherwise, returns a newly created rooted at this node, preserving this node's reference identity. - - - - - The node that contains this node in its Children collection. - - - - - Returns the of the node. - - - - - The language name that this node is syntax of. - - - - - The list of trivia that appears before this node in the source code. - - - - - The list of trivia that appears after this node in the source code. - - - - - Returns the string representation of this node, not including its leading and trailing trivia. - - The string representation of this node, not including its leading and trailing trivia. - The length of the returned string is always the same as Span.Length - - - - Returns full string representation of this node including its leading and trailing trivia. - - The full string representation of this node including its leading and trailing trivia. - The length of the returned string is always the same as FullSpan.Length - - - - Writes the full text of this node to the specified TextWriter. - - - - - Serialize the syntax node into a byte stream. - - - - - Deserialize a syntax node from the byte stream. - - - - - Determines whether this node is structurally equivalent to another. - - - - - Gets a for this node. - - - - - Gets a SyntaxReference for this syntax node. SyntaxReferences can be used to - regain access to a syntax node without keeping the entire tree and source text in - memory. - - - - - Gets a list of all the diagnostics in the sub tree that has this node as its root. - This method does not filter diagnostics based on #pragmas and compiler options - like nowarn, warnaserror etc. - - - - - Gets the first directive of the tree rooted by this node. - - - - - Gets the last directive of the tree rooted by this node. - - - - - Returns child node or token that contains given position. - - - - - Gets the first token of the tree rooted by this node. - - True if zero width tokens should be included, false by - default. - True if skipped tokens should be included, false by default. - True if directives should be included, false by default. - True if documentation comments should be - included, false by default. - - - - - Gets the first token of the tree rooted by this node. - - Only tokens for which this predicate returns true are included. Pass null to include - all tokens. - Steps into trivia if this is not null. Only trivia for which this delegate returns - true are included. - - - - - Gets the last non-zero-width token of the tree rooted by this node. - - True if zero width tokens should be included, false by - default. - True if skipped tokens should be included, false by default. - True if directives should be included, false by default. - True if documentation comments should be - included, false by default. - - - - - Finds a token according to the following rules: - 1) If position matches the End of the node/s FullSpan and the node is CompilationUnit, - then EoF is returned. - - 2) If node.FullSpan.Contains(position) the token that contains given position is - returned. If stepInto is not Nothing, then structured trivia that satisfies the - condition will also be visited during the search. - - 3) Otherwise an IndexOutOfRange is thrown - - - - - Finds a token according to the following rules: - 1) If position matches the End of the node/s FullSpan and the node is CompilationUnit, - then EoF is returned. - - 2) If node.FullSpan.Contains(position) then the token that contains given position is - returned. - - 3) Otherwise an ArgumentOutOfRangeException is thrown - - - - - Finds a token according to the following rules: - 1) If position matches the End of the node/s FullSpan and the node is CompilationUnit, - then EoF is returned. - - 2) If node.FullSpan.Contains(position) then the token that contains given position is - returned. - - 3) Otherwise an ArgumentOutOfRangeException is thrown - - - - - Finds a descendant trivia of this node at the specified position, where the position is - within the span of the node. - - The character position of the trivia relative to the beginning of - the file. - Specifies a function that determines per trivia node, whether to - descend into structured trivia of that node. - - - - - Finds a descendant trivia of this node whose span includes the supplied position. - - The character position of the trivia relative to the beginning of - the file. - Whether to search inside structured trivia. - - - - Determine if this node is structurally equivalent to another. - - - - - - - Represents a which descends an entire graph and - may replace or remove visited SyntaxNodes in depth-first order. - - - - - The parsed representation of a C# source document. - - - - - The options used by the parser to produce the syntax tree. - - - - - Produces a clone of a which will have current syntax tree as its parent. - - Caller must guarantee that if the same instance of makes multiple calls - to this function, only one result is observable. - - Type of the syntax node. - The original syntax node. - A clone of the original syntax node that has current as its parent. - - - - Gets the root node of the syntax tree. - - - - - Gets the root node of the syntax tree if it is already available. - - - - - Gets the root node of the syntax tree asynchronously. - - - By default, the work associated with this method will be executed immediately on the current thread. - Implementations that wish to schedule this work differently should override . - - - - - Gets the root of the syntax tree statically typed as . - - - Ensure that is true for this tree prior to invoking this method. - - Throws this exception if is false. - - - - Determines if two trees are the same, disregarding trivia differences. - - The tree to compare against. - - If true then the trees are equivalent if the contained nodes and tokens declaring metadata visible symbolic information are equivalent, - ignoring any differences of nodes inside method bodies or initializer expressions, otherwise all nodes and tokens must be equivalent. - - - - - Stores positions where preprocessor state changes. Sorted by position. - The updated state can be found in array at the same index. - - - - - Preprocessor states corresponding to positions in . - - - - - Creates a new syntax tree from a syntax node. - - - - - Creates a new syntax tree from a syntax node with text that should correspond to the syntax node. - - This is used by the ExpressionEvaluator. - - - - - Internal helper for class to create a new syntax tree rooted at the given root node. - This method does not create a clone of the given root, but instead preserves it's reference identity. - - NOTE: This method is only intended to be used from property. - NOTE: Do not use this method elsewhere, instead use method for creating a syntax tree. - - - - - Produces a syntax tree by parsing the source text. - - - - - Produces a syntax tree by parsing the source text. - - - - - Creates a new syntax based off this tree using a new source text. - - - If the new source text is a minor change from the current source text an incremental parse will occur - reusing most of the current syntax tree internal data. Otherwise, a full parse will occur using the new - source text. - - - - - Produces a pessimistic list of spans that denote the regions of text in this tree that - are changed from the text of the old tree. - - The old tree. Cannot be null. - The list is pessimistic because it may claim more or larger regions than actually changed. - - - - Gets a list of text changes that when applied to the old tree produce this tree. - - The old tree. Cannot be null. - The list of changes may be different than the original changes that produced this tree. - - - - Gets the location in terms of path, line and column for a given span. - - Span within the tree. - Cancellation token. - - that contains path, line and column information. - - The values are not affected by line mapping directives (#line). - - - - Gets the location in terms of path, line and column after applying source line mapping directives (#line). - - Span within the tree. - Cancellation token. - - A valid that contains path, line and column information. - - If the location path is mapped the resulting path is the path specified in the corresponding #line, - otherwise it's . - - - A location path is considered mapped if the first #line directive that precedes it and that - either specifies an explicit file path or is #line default exists and specifies an explicit path. - - - - - - Gets a for a . FileLinePositionSpans are used - primarily for diagnostics and source locations. - - The source to convert. - When the method returns, contains a boolean value indicating whether this span is considered hidden or not. - A resulting . - - - - Gets a boolean value indicating whether there are any hidden regions in the tree. - - True if there is at least one hidden region. - - - - Given the error code and the source location, get the warning state based on #pragma warning directives. - - Error code. - Source location. - - - - Gets a for the specified text . - - - - - Gets a list of all the diagnostics in the sub tree that has the specified node as its root. - - - This method does not filter diagnostics based on #pragmas and compiler options - like /nowarn, /warnaserror etc. - - - - - Gets a list of all the diagnostics associated with the token and any related trivia. - - - This method does not filter diagnostics based on #pragmas and compiler options - like /nowarn, /warnaserror etc. - - - - - Gets a list of all the diagnostics associated with the trivia. - - - This method does not filter diagnostics based on #pragmas and compiler options - like /nowarn, /warnaserror etc. - - - - - Gets a list of all the diagnostics in either the sub tree that has the specified node as its root or - associated with the token and its related trivia. - - - This method does not filter diagnostics based on #pragmas and compiler options - like /nowarn, /warnaserror etc. - - - - - Gets a list of all the diagnostics in the syntax tree. - - - This method does not filter diagnostics based on #pragmas and compiler options - like /nowarn, /warnaserror etc. - - - - - Represents a visitor that visits only the single CSharpSyntaxNode - passed into its Visit method and produces - a value of the type specified by the parameter. - - - The type of the return value this visitor's Visit method. - - - - Called when the visitor visits a IdentifierNameSyntax node. - - - Called when the visitor visits a QualifiedNameSyntax node. - - - Called when the visitor visits a GenericNameSyntax node. - - - Called when the visitor visits a TypeArgumentListSyntax node. - - - Called when the visitor visits a AliasQualifiedNameSyntax node. - - - Called when the visitor visits a PredefinedTypeSyntax node. - - - Called when the visitor visits a ArrayTypeSyntax node. - - - Called when the visitor visits a ArrayRankSpecifierSyntax node. - - - Called when the visitor visits a PointerTypeSyntax node. - - - Called when the visitor visits a NullableTypeSyntax node. - - - Called when the visitor visits a OmittedTypeArgumentSyntax node. - - - Called when the visitor visits a ParenthesizedExpressionSyntax node. - - - Called when the visitor visits a PrefixUnaryExpressionSyntax node. - - - Called when the visitor visits a AwaitExpressionSyntax node. - - - Called when the visitor visits a PostfixUnaryExpressionSyntax node. - - - Called when the visitor visits a MemberAccessExpressionSyntax node. - - - Called when the visitor visits a ConditionalAccessExpressionSyntax node. - - - Called when the visitor visits a MemberBindingExpressionSyntax node. - - - Called when the visitor visits a ElementBindingExpressionSyntax node. - - - Called when the visitor visits a ImplicitElementAccessSyntax node. - - - Called when the visitor visits a BinaryExpressionSyntax node. - - - Called when the visitor visits a AssignmentExpressionSyntax node. - - - Called when the visitor visits a ConditionalExpressionSyntax node. - - - Called when the visitor visits a ThisExpressionSyntax node. - - - Called when the visitor visits a BaseExpressionSyntax node. - - - Called when the visitor visits a LiteralExpressionSyntax node. - - - Called when the visitor visits a MakeRefExpressionSyntax node. - - - Called when the visitor visits a RefTypeExpressionSyntax node. - - - Called when the visitor visits a RefValueExpressionSyntax node. - - - Called when the visitor visits a CheckedExpressionSyntax node. - - - Called when the visitor visits a DefaultExpressionSyntax node. - - - Called when the visitor visits a TypeOfExpressionSyntax node. - - - Called when the visitor visits a SizeOfExpressionSyntax node. - - - Called when the visitor visits a InvocationExpressionSyntax node. - - - Called when the visitor visits a ElementAccessExpressionSyntax node. - - - Called when the visitor visits a ArgumentListSyntax node. - - - Called when the visitor visits a BracketedArgumentListSyntax node. - - - Called when the visitor visits a ArgumentSyntax node. - - - Called when the visitor visits a NameColonSyntax node. - - - Called when the visitor visits a CastExpressionSyntax node. - - - Called when the visitor visits a AnonymousMethodExpressionSyntax node. - - - Called when the visitor visits a SimpleLambdaExpressionSyntax node. - - - Called when the visitor visits a ParenthesizedLambdaExpressionSyntax node. - - - Called when the visitor visits a InitializerExpressionSyntax node. - - - Called when the visitor visits a ObjectCreationExpressionSyntax node. - - - Called when the visitor visits a AnonymousObjectMemberDeclaratorSyntax node. - - - Called when the visitor visits a AnonymousObjectCreationExpressionSyntax node. - - - Called when the visitor visits a ArrayCreationExpressionSyntax node. - - - Called when the visitor visits a ImplicitArrayCreationExpressionSyntax node. - - - Called when the visitor visits a StackAllocArrayCreationExpressionSyntax node. - - - Called when the visitor visits a QueryExpressionSyntax node. - - - Called when the visitor visits a QueryBodySyntax node. - - - Called when the visitor visits a FromClauseSyntax node. - - - Called when the visitor visits a LetClauseSyntax node. - - - Called when the visitor visits a JoinClauseSyntax node. - - - Called when the visitor visits a JoinIntoClauseSyntax node. - - - Called when the visitor visits a WhereClauseSyntax node. - - - Called when the visitor visits a OrderByClauseSyntax node. - - - Called when the visitor visits a OrderingSyntax node. - - - Called when the visitor visits a SelectClauseSyntax node. - - - Called when the visitor visits a GroupClauseSyntax node. - - - Called when the visitor visits a QueryContinuationSyntax node. - - - Called when the visitor visits a OmittedArraySizeExpressionSyntax node. - - - Called when the visitor visits a InterpolatedStringExpressionSyntax node. - - - Called when the visitor visits a InterpolatedStringTextSyntax node. - - - Called when the visitor visits a InterpolationSyntax node. - - - Called when the visitor visits a InterpolationAlignmentClauseSyntax node. - - - Called when the visitor visits a InterpolationFormatClauseSyntax node. - - - Called when the visitor visits a GlobalStatementSyntax node. - - - Called when the visitor visits a BlockSyntax node. - - - Called when the visitor visits a LocalDeclarationStatementSyntax node. - - - Called when the visitor visits a VariableDeclarationSyntax node. - - - Called when the visitor visits a VariableDeclaratorSyntax node. - - - Called when the visitor visits a EqualsValueClauseSyntax node. - - - Called when the visitor visits a ExpressionStatementSyntax node. - - - Called when the visitor visits a EmptyStatementSyntax node. - - - Called when the visitor visits a LabeledStatementSyntax node. - - - Called when the visitor visits a GotoStatementSyntax node. - - - Called when the visitor visits a BreakStatementSyntax node. - - - Called when the visitor visits a ContinueStatementSyntax node. - - - Called when the visitor visits a ReturnStatementSyntax node. - - - Called when the visitor visits a ThrowStatementSyntax node. - - - Called when the visitor visits a YieldStatementSyntax node. - - - Called when the visitor visits a WhileStatementSyntax node. - - - Called when the visitor visits a DoStatementSyntax node. - - - Called when the visitor visits a ForStatementSyntax node. - - - Called when the visitor visits a ForEachStatementSyntax node. - - - Called when the visitor visits a UsingStatementSyntax node. - - - Called when the visitor visits a FixedStatementSyntax node. - - - Called when the visitor visits a CheckedStatementSyntax node. - - - Called when the visitor visits a UnsafeStatementSyntax node. - - - Called when the visitor visits a LockStatementSyntax node. - - - Called when the visitor visits a IfStatementSyntax node. - - - Called when the visitor visits a ElseClauseSyntax node. - - - Called when the visitor visits a SwitchStatementSyntax node. - - - Called when the visitor visits a SwitchSectionSyntax node. - - - Called when the visitor visits a CaseSwitchLabelSyntax node. - - - Called when the visitor visits a DefaultSwitchLabelSyntax node. - - - Called when the visitor visits a TryStatementSyntax node. - - - Called when the visitor visits a CatchClauseSyntax node. - - - Called when the visitor visits a CatchDeclarationSyntax node. - - - Called when the visitor visits a CatchFilterClauseSyntax node. - - - Called when the visitor visits a FinallyClauseSyntax node. - - - Called when the visitor visits a CompilationUnitSyntax node. - - - Called when the visitor visits a ExternAliasDirectiveSyntax node. - - - Called when the visitor visits a UsingDirectiveSyntax node. - - - Called when the visitor visits a NamespaceDeclarationSyntax node. - - - Called when the visitor visits a AttributeListSyntax node. - - - Called when the visitor visits a AttributeTargetSpecifierSyntax node. - - - Called when the visitor visits a AttributeSyntax node. - - - Called when the visitor visits a AttributeArgumentListSyntax node. - - - Called when the visitor visits a AttributeArgumentSyntax node. - - - Called when the visitor visits a NameEqualsSyntax node. - - - Called when the visitor visits a TypeParameterListSyntax node. - - - Called when the visitor visits a TypeParameterSyntax node. - - - Called when the visitor visits a ClassDeclarationSyntax node. - - - Called when the visitor visits a StructDeclarationSyntax node. - - - Called when the visitor visits a InterfaceDeclarationSyntax node. - - - Called when the visitor visits a EnumDeclarationSyntax node. - - - Called when the visitor visits a DelegateDeclarationSyntax node. - - - Called when the visitor visits a EnumMemberDeclarationSyntax node. - - - Called when the visitor visits a BaseListSyntax node. - - - Called when the visitor visits a SimpleBaseTypeSyntax node. - - - Called when the visitor visits a TypeParameterConstraintClauseSyntax node. - - - Called when the visitor visits a ConstructorConstraintSyntax node. - - - Called when the visitor visits a ClassOrStructConstraintSyntax node. - - - Called when the visitor visits a TypeConstraintSyntax node. - - - Called when the visitor visits a FieldDeclarationSyntax node. - - - Called when the visitor visits a EventFieldDeclarationSyntax node. - - - Called when the visitor visits a ExplicitInterfaceSpecifierSyntax node. - - - Called when the visitor visits a MethodDeclarationSyntax node. - - - Called when the visitor visits a OperatorDeclarationSyntax node. - - - Called when the visitor visits a ConversionOperatorDeclarationSyntax node. - - - Called when the visitor visits a ConstructorDeclarationSyntax node. - - - Called when the visitor visits a ConstructorInitializerSyntax node. - - - Called when the visitor visits a DestructorDeclarationSyntax node. - - - Called when the visitor visits a PropertyDeclarationSyntax node. - - - Called when the visitor visits a ArrowExpressionClauseSyntax node. - - - Called when the visitor visits a EventDeclarationSyntax node. - - - Called when the visitor visits a IndexerDeclarationSyntax node. - - - Called when the visitor visits a AccessorListSyntax node. - - - Called when the visitor visits a AccessorDeclarationSyntax node. - - - Called when the visitor visits a ParameterListSyntax node. - - - Called when the visitor visits a BracketedParameterListSyntax node. - - - Called when the visitor visits a ParameterSyntax node. - - - Called when the visitor visits a IncompleteMemberSyntax node. - - - Called when the visitor visits a SkippedTokensTriviaSyntax node. - - - Called when the visitor visits a DocumentationCommentTriviaSyntax node. - - - Called when the visitor visits a TypeCrefSyntax node. - - - Called when the visitor visits a QualifiedCrefSyntax node. - - - Called when the visitor visits a NameMemberCrefSyntax node. - - - Called when the visitor visits a IndexerMemberCrefSyntax node. - - - Called when the visitor visits a OperatorMemberCrefSyntax node. - - - Called when the visitor visits a ConversionOperatorMemberCrefSyntax node. - - - Called when the visitor visits a CrefParameterListSyntax node. - - - Called when the visitor visits a CrefBracketedParameterListSyntax node. - - - Called when the visitor visits a CrefParameterSyntax node. - - - Called when the visitor visits a XmlElementSyntax node. - - - Called when the visitor visits a XmlElementStartTagSyntax node. - - - Called when the visitor visits a XmlElementEndTagSyntax node. - - - Called when the visitor visits a XmlEmptyElementSyntax node. - - - Called when the visitor visits a XmlNameSyntax node. - - - Called when the visitor visits a XmlPrefixSyntax node. - - - Called when the visitor visits a XmlTextAttributeSyntax node. - - - Called when the visitor visits a XmlCrefAttributeSyntax node. - - - Called when the visitor visits a XmlNameAttributeSyntax node. - - - Called when the visitor visits a XmlTextSyntax node. - - - Called when the visitor visits a XmlCDataSectionSyntax node. - - - Called when the visitor visits a XmlProcessingInstructionSyntax node. - - - Called when the visitor visits a XmlCommentSyntax node. - - - Called when the visitor visits a IfDirectiveTriviaSyntax node. - - - Called when the visitor visits a ElifDirectiveTriviaSyntax node. - - - Called when the visitor visits a ElseDirectiveTriviaSyntax node. - - - Called when the visitor visits a EndIfDirectiveTriviaSyntax node. - - - Called when the visitor visits a RegionDirectiveTriviaSyntax node. - - - Called when the visitor visits a EndRegionDirectiveTriviaSyntax node. - - - Called when the visitor visits a ErrorDirectiveTriviaSyntax node. - - - Called when the visitor visits a WarningDirectiveTriviaSyntax node. - - - Called when the visitor visits a BadDirectiveTriviaSyntax node. - - - Called when the visitor visits a DefineDirectiveTriviaSyntax node. - - - Called when the visitor visits a UndefDirectiveTriviaSyntax node. - - - Called when the visitor visits a LineDirectiveTriviaSyntax node. - - - Called when the visitor visits a PragmaWarningDirectiveTriviaSyntax node. - - - Called when the visitor visits a PragmaChecksumDirectiveTriviaSyntax node. - - - Called when the visitor visits a ReferenceDirectiveTriviaSyntax node. - - - Called when the visitor visits a LoadDirectiveTriviaSyntax node. - - - Called when the visitor visits a ShebangDirectiveTriviaSyntax node. - - - - Represents a visitor that visits only the single CSharpSyntaxNode - passed into its Visit method. - - - - Called when the visitor visits a IdentifierNameSyntax node. - - - Called when the visitor visits a QualifiedNameSyntax node. - - - Called when the visitor visits a GenericNameSyntax node. - - - Called when the visitor visits a TypeArgumentListSyntax node. - - - Called when the visitor visits a AliasQualifiedNameSyntax node. - - - Called when the visitor visits a PredefinedTypeSyntax node. - - - Called when the visitor visits a ArrayTypeSyntax node. - - - Called when the visitor visits a ArrayRankSpecifierSyntax node. - - - Called when the visitor visits a PointerTypeSyntax node. - - - Called when the visitor visits a NullableTypeSyntax node. - - - Called when the visitor visits a OmittedTypeArgumentSyntax node. - - - Called when the visitor visits a ParenthesizedExpressionSyntax node. - - - Called when the visitor visits a PrefixUnaryExpressionSyntax node. - - - Called when the visitor visits a AwaitExpressionSyntax node. - - - Called when the visitor visits a PostfixUnaryExpressionSyntax node. - - - Called when the visitor visits a MemberAccessExpressionSyntax node. - - - Called when the visitor visits a ConditionalAccessExpressionSyntax node. - - - Called when the visitor visits a MemberBindingExpressionSyntax node. - - - Called when the visitor visits a ElementBindingExpressionSyntax node. - - - Called when the visitor visits a ImplicitElementAccessSyntax node. - - - Called when the visitor visits a BinaryExpressionSyntax node. - - - Called when the visitor visits a AssignmentExpressionSyntax node. - - - Called when the visitor visits a ConditionalExpressionSyntax node. - - - Called when the visitor visits a ThisExpressionSyntax node. - - - Called when the visitor visits a BaseExpressionSyntax node. - - - Called when the visitor visits a LiteralExpressionSyntax node. - - - Called when the visitor visits a MakeRefExpressionSyntax node. - - - Called when the visitor visits a RefTypeExpressionSyntax node. - - - Called when the visitor visits a RefValueExpressionSyntax node. - - - Called when the visitor visits a CheckedExpressionSyntax node. - - - Called when the visitor visits a DefaultExpressionSyntax node. - - - Called when the visitor visits a TypeOfExpressionSyntax node. - - - Called when the visitor visits a SizeOfExpressionSyntax node. - - - Called when the visitor visits a InvocationExpressionSyntax node. - - - Called when the visitor visits a ElementAccessExpressionSyntax node. - - - Called when the visitor visits a ArgumentListSyntax node. - - - Called when the visitor visits a BracketedArgumentListSyntax node. - - - Called when the visitor visits a ArgumentSyntax node. - - - Called when the visitor visits a NameColonSyntax node. - - - Called when the visitor visits a CastExpressionSyntax node. - - - Called when the visitor visits a AnonymousMethodExpressionSyntax node. - - - Called when the visitor visits a SimpleLambdaExpressionSyntax node. - - - Called when the visitor visits a ParenthesizedLambdaExpressionSyntax node. - - - Called when the visitor visits a InitializerExpressionSyntax node. - - - Called when the visitor visits a ObjectCreationExpressionSyntax node. - - - Called when the visitor visits a AnonymousObjectMemberDeclaratorSyntax node. - - - Called when the visitor visits a AnonymousObjectCreationExpressionSyntax node. - - - Called when the visitor visits a ArrayCreationExpressionSyntax node. - - - Called when the visitor visits a ImplicitArrayCreationExpressionSyntax node. - - - Called when the visitor visits a StackAllocArrayCreationExpressionSyntax node. - - - Called when the visitor visits a QueryExpressionSyntax node. - - - Called when the visitor visits a QueryBodySyntax node. - - - Called when the visitor visits a FromClauseSyntax node. - - - Called when the visitor visits a LetClauseSyntax node. - - - Called when the visitor visits a JoinClauseSyntax node. - - - Called when the visitor visits a JoinIntoClauseSyntax node. - - - Called when the visitor visits a WhereClauseSyntax node. - - - Called when the visitor visits a OrderByClauseSyntax node. - - - Called when the visitor visits a OrderingSyntax node. - - - Called when the visitor visits a SelectClauseSyntax node. - - - Called when the visitor visits a GroupClauseSyntax node. - - - Called when the visitor visits a QueryContinuationSyntax node. - - - Called when the visitor visits a OmittedArraySizeExpressionSyntax node. - - - Called when the visitor visits a InterpolatedStringExpressionSyntax node. - - - Called when the visitor visits a InterpolatedStringTextSyntax node. - - - Called when the visitor visits a InterpolationSyntax node. - - - Called when the visitor visits a InterpolationAlignmentClauseSyntax node. - - - Called when the visitor visits a InterpolationFormatClauseSyntax node. - - - Called when the visitor visits a GlobalStatementSyntax node. - - - Called when the visitor visits a BlockSyntax node. - - - Called when the visitor visits a LocalDeclarationStatementSyntax node. - - - Called when the visitor visits a VariableDeclarationSyntax node. - - - Called when the visitor visits a VariableDeclaratorSyntax node. - - - Called when the visitor visits a EqualsValueClauseSyntax node. - - - Called when the visitor visits a ExpressionStatementSyntax node. - - - Called when the visitor visits a EmptyStatementSyntax node. - - - Called when the visitor visits a LabeledStatementSyntax node. - - - Called when the visitor visits a GotoStatementSyntax node. - - - Called when the visitor visits a BreakStatementSyntax node. - - - Called when the visitor visits a ContinueStatementSyntax node. - - - Called when the visitor visits a ReturnStatementSyntax node. - - - Called when the visitor visits a ThrowStatementSyntax node. - - - Called when the visitor visits a YieldStatementSyntax node. - - - Called when the visitor visits a WhileStatementSyntax node. - - - Called when the visitor visits a DoStatementSyntax node. - - - Called when the visitor visits a ForStatementSyntax node. - - - Called when the visitor visits a ForEachStatementSyntax node. - - - Called when the visitor visits a UsingStatementSyntax node. - - - Called when the visitor visits a FixedStatementSyntax node. - - - Called when the visitor visits a CheckedStatementSyntax node. - - - Called when the visitor visits a UnsafeStatementSyntax node. - - - Called when the visitor visits a LockStatementSyntax node. - - - Called when the visitor visits a IfStatementSyntax node. - - - Called when the visitor visits a ElseClauseSyntax node. - - - Called when the visitor visits a SwitchStatementSyntax node. - - - Called when the visitor visits a SwitchSectionSyntax node. - - - Called when the visitor visits a CaseSwitchLabelSyntax node. - - - Called when the visitor visits a DefaultSwitchLabelSyntax node. - - - Called when the visitor visits a TryStatementSyntax node. - - - Called when the visitor visits a CatchClauseSyntax node. - - - Called when the visitor visits a CatchDeclarationSyntax node. - - - Called when the visitor visits a CatchFilterClauseSyntax node. - - - Called when the visitor visits a FinallyClauseSyntax node. - - - Called when the visitor visits a CompilationUnitSyntax node. - - - Called when the visitor visits a ExternAliasDirectiveSyntax node. - - - Called when the visitor visits a UsingDirectiveSyntax node. - - - Called when the visitor visits a NamespaceDeclarationSyntax node. - - - Called when the visitor visits a AttributeListSyntax node. - - - Called when the visitor visits a AttributeTargetSpecifierSyntax node. - - - Called when the visitor visits a AttributeSyntax node. - - - Called when the visitor visits a AttributeArgumentListSyntax node. - - - Called when the visitor visits a AttributeArgumentSyntax node. - - - Called when the visitor visits a NameEqualsSyntax node. - - - Called when the visitor visits a TypeParameterListSyntax node. - - - Called when the visitor visits a TypeParameterSyntax node. - - - Called when the visitor visits a ClassDeclarationSyntax node. - - - Called when the visitor visits a StructDeclarationSyntax node. - - - Called when the visitor visits a InterfaceDeclarationSyntax node. - - - Called when the visitor visits a EnumDeclarationSyntax node. - - - Called when the visitor visits a DelegateDeclarationSyntax node. - - - Called when the visitor visits a EnumMemberDeclarationSyntax node. - - - Called when the visitor visits a BaseListSyntax node. - - - Called when the visitor visits a SimpleBaseTypeSyntax node. - - - Called when the visitor visits a TypeParameterConstraintClauseSyntax node. - - - Called when the visitor visits a ConstructorConstraintSyntax node. - - - Called when the visitor visits a ClassOrStructConstraintSyntax node. - - - Called when the visitor visits a TypeConstraintSyntax node. - - - Called when the visitor visits a FieldDeclarationSyntax node. - - - Called when the visitor visits a EventFieldDeclarationSyntax node. - - - Called when the visitor visits a ExplicitInterfaceSpecifierSyntax node. - - - Called when the visitor visits a MethodDeclarationSyntax node. - - - Called when the visitor visits a OperatorDeclarationSyntax node. - - - Called when the visitor visits a ConversionOperatorDeclarationSyntax node. - - - Called when the visitor visits a ConstructorDeclarationSyntax node. - - - Called when the visitor visits a ConstructorInitializerSyntax node. - - - Called when the visitor visits a DestructorDeclarationSyntax node. - - - Called when the visitor visits a PropertyDeclarationSyntax node. - - - Called when the visitor visits a ArrowExpressionClauseSyntax node. - - - Called when the visitor visits a EventDeclarationSyntax node. - - - Called when the visitor visits a IndexerDeclarationSyntax node. - - - Called when the visitor visits a AccessorListSyntax node. - - - Called when the visitor visits a AccessorDeclarationSyntax node. - - - Called when the visitor visits a ParameterListSyntax node. - - - Called when the visitor visits a BracketedParameterListSyntax node. - - - Called when the visitor visits a ParameterSyntax node. - - - Called when the visitor visits a IncompleteMemberSyntax node. - - - Called when the visitor visits a SkippedTokensTriviaSyntax node. - - - Called when the visitor visits a DocumentationCommentTriviaSyntax node. - - - Called when the visitor visits a TypeCrefSyntax node. - - - Called when the visitor visits a QualifiedCrefSyntax node. - - - Called when the visitor visits a NameMemberCrefSyntax node. - - - Called when the visitor visits a IndexerMemberCrefSyntax node. - - - Called when the visitor visits a OperatorMemberCrefSyntax node. - - - Called when the visitor visits a ConversionOperatorMemberCrefSyntax node. - - - Called when the visitor visits a CrefParameterListSyntax node. - - - Called when the visitor visits a CrefBracketedParameterListSyntax node. - - - Called when the visitor visits a CrefParameterSyntax node. - - - Called when the visitor visits a XmlElementSyntax node. - - - Called when the visitor visits a XmlElementStartTagSyntax node. - - - Called when the visitor visits a XmlElementEndTagSyntax node. - - - Called when the visitor visits a XmlEmptyElementSyntax node. - - - Called when the visitor visits a XmlNameSyntax node. - - - Called when the visitor visits a XmlPrefixSyntax node. - - - Called when the visitor visits a XmlTextAttributeSyntax node. - - - Called when the visitor visits a XmlCrefAttributeSyntax node. - - - Called when the visitor visits a XmlNameAttributeSyntax node. - - - Called when the visitor visits a XmlTextSyntax node. - - - Called when the visitor visits a XmlCDataSectionSyntax node. - - - Called when the visitor visits a XmlProcessingInstructionSyntax node. - - - Called when the visitor visits a XmlCommentSyntax node. - - - Called when the visitor visits a IfDirectiveTriviaSyntax node. - - - Called when the visitor visits a ElifDirectiveTriviaSyntax node. - - - Called when the visitor visits a ElseDirectiveTriviaSyntax node. - - - Called when the visitor visits a EndIfDirectiveTriviaSyntax node. - - - Called when the visitor visits a RegionDirectiveTriviaSyntax node. - - - Called when the visitor visits a EndRegionDirectiveTriviaSyntax node. - - - Called when the visitor visits a ErrorDirectiveTriviaSyntax node. - - - Called when the visitor visits a WarningDirectiveTriviaSyntax node. - - - Called when the visitor visits a BadDirectiveTriviaSyntax node. - - - Called when the visitor visits a DefineDirectiveTriviaSyntax node. - - - Called when the visitor visits a UndefDirectiveTriviaSyntax node. - - - Called when the visitor visits a LineDirectiveTriviaSyntax node. - - - Called when the visitor visits a PragmaWarningDirectiveTriviaSyntax node. - - - Called when the visitor visits a PragmaChecksumDirectiveTriviaSyntax node. - - - Called when the visitor visits a ReferenceDirectiveTriviaSyntax node. - - - Called when the visitor visits a LoadDirectiveTriviaSyntax node. - - - Called when the visitor visits a ShebangDirectiveTriviaSyntax node. - - - - Represents a that descends an entire graph - visiting each CSharpSyntaxNode and its child SyntaxNodes and s in depth-first order. - - - - - A class containing factory methods for constructing syntax nodes, tokens and trivia. - - - - Creates a new AnonymousMethodExpressionSyntax instance. - - - - A trivia with kind EndOfLineTrivia containing both the carriage return and line feed characters. - - - - - A trivia with kind EndOfLineTrivia containing a single line feed character. - - - - - A trivia with kind EndOfLineTrivia containing a single carriage return character. - - - - - A trivia with kind WhitespaceTrivia containing a single space character. - - - - - A trivia with kind WhitespaceTrivia containing a single tab character. - - - - - An elastic trivia with kind EndOfLineTrivia containing both the carriage return and line feed characters. - Elastic trivia are used to denote trivia that was not produced by parsing source text, and are usually not - preserved during formatting. - - - - - An elastic trivia with kind EndOfLineTrivia containing a single line feed character. Elastic trivia are used - to denote trivia that was not produced by parsing source text, and are usually not preserved during - formatting. - - - - - An elastic trivia with kind EndOfLineTrivia containing a single carriage return character. Elastic trivia - are used to denote trivia that was not produced by parsing source text, and are usually not preserved during - formatting. - - - - - An elastic trivia with kind WhitespaceTrivia containing a single space character. Elastic trivia are used to - denote trivia that was not produced by parsing source text, and are usually not preserved during formatting. - - - - - An elastic trivia with kind WhitespaceTrivia containing a single tab character. Elastic trivia are used to - denote trivia that was not produced by parsing source text, and are usually not preserved during formatting. - - - - - An elastic trivia with kind WhitespaceTrivia containing no characters. Elastic marker trivia are included - automatically by factory methods when trivia is not specified. Syntax formatting will replace elastic - markers with appropriate trivia. - - - - - Creates a trivia with kind EndOfLineTrivia containing the specified text. - - The text of the end of line. Any text can be specified here, however only carriage return and - line feed characters are recognized by the parser as end of line. - - - - Creates a trivia with kind EndOfLineTrivia containing the specified text. Elastic trivia are used to - denote trivia that was not produced by parsing source text, and are usually not preserved during formatting. - - The text of the end of line. Any text can be specified here, however only carriage return and - line feed characters are recognized by the parser as end of line. - - - - Creates a trivia with kind WhitespaceTrivia containing the specified text. - - The text of the whitespace. Any text can be specified here, however only specific - whitespace characters are recognized by the parser. - - - - Creates a trivia with kind WhitespaceTrivia containing the specified text. Elastic trivia are used to - denote trivia that was not produced by parsing source text, and are usually not preserved during formatting. - - The text of the whitespace. Any text can be specified here, however only specific - whitespace characters are recognized by the parser. - - - - Creates a trivia with kind either SingleLineCommentTrivia or MultiLineCommentTrivia containing the specified - text. - - The entire text of the comment including the leading '//' token for single line comments - or stop or start tokens for multiline comments. - - - - Creates a trivia with kind DisabledTextTrivia. Disabled text corresponds to any text between directives that - is not considered active. - - - - - Creates a trivia with kind PreprocessingMessageTrivia. - - - - - Trivia nodes represent parts of the program text that are not parts of the - syntactic grammar, such as spaces, newlines, comments, preprocessor - directives, and disabled code. - - - A representing the specific kind of . One of - , , - , , - , - - - The actual text of this token. - - - - - Creates a token corresponding to a syntax kind. This method can be used for token syntax kinds whose text - can be inferred by the kind alone. - - A syntax kind value for a token. These have the suffix Token or Keyword. - - - - - Creates a token corresponding to syntax kind. This method can be used for token syntax kinds whose text can - be inferred by the kind alone. - - A list of trivia immediately preceding the token. - A syntax kind value for a token. These have the suffix Token or Keyword. - A list of trivia immediately following the token. - - - - Creates a token corresponding to syntax kind. This method gives control over token Text and ValueText. - - For example, consider the text '<see cref="operator &#43;"/>'. To create a token for the value of - the operator symbol (&#43;), one would call - Token(default(SyntaxTriviaList), SyntaxKind.PlusToken, "&#43;", "+", default(SyntaxTriviaList)). - - A list of trivia immediately preceding the token. - A syntax kind value for a token. These have the suffix Token or Keyword. - The text from which this token was created (e.g. lexed). - How C# should interpret the text of this token. - A list of trivia immediately following the token. - - - - Creates a missing token corresponding to syntax kind. A missing token is produced by the parser when an - expected token is not found. A missing token has no text and normally has associated diagnostics. - - A syntax kind value for a token. These have the suffix Token or Keyword. - - - - Creates a missing token corresponding to syntax kind. A missing token is produced by the parser when an - expected token is not found. A missing token has no text and normally has associated diagnostics. - - A list of trivia immediately preceding the token. - A syntax kind value for a token. These have the suffix Token or Keyword. - A list of trivia immediately following the token. - - - - Creates a token with kind IdentifierToken containing the specified text. - The raw text of the identifier name, including any escapes or leading '@' - character. - - - - - Creates a token with kind IdentifierToken containing the specified text. - - A list of trivia immediately preceding the token. - The raw text of the identifier name, including any escapes or leading '@' - character. - A list of trivia immediately following the token. - - - - Creates a verbatim token with kind IdentifierToken containing the specified text. - - A list of trivia immediately preceding the token. - The raw text of the identifier name, including any escapes or leading '@' - character as it is in source. - The canonical value of the token's text. - A list of trivia immediately following the token. - - - - Creates a token with kind IdentifierToken containing the specified text. - - A list of trivia immediately preceding the token. - An alternative SyntaxKind that can be inferred for this token in special - contexts. These are usually keywords. - The raw text of the identifier name, including any escapes or leading '@' - character. - The text of the identifier name without escapes or leading '@' character. - A list of trivia immediately following the token. - - - - - Creates a token with kind NumericLiteralToken from a 4-byte signed integer value. - - The 4-byte signed integer value to be represented by the returned token. - - - - Creates a token with kind NumericLiteralToken from the text and corresponding 4-byte signed integer value. - - The raw text of the literal. - The 4-byte signed integer value to be represented by the returned token. - - - - Creates a token with kind NumericLiteralToken from the text and corresponding 4-byte signed integer value. - - A list of trivia immediately preceding the token. - The raw text of the literal. - The 4-byte signed integer value to be represented by the returned token. - A list of trivia immediately following the token. - - - - Creates a token with kind NumericLiteralToken from a 4-byte unsigned integer value. - - The 4-byte unsigned integer value to be represented by the returned token. - - - - Creates a token with kind NumericLiteralToken from the text and corresponding 4-byte unsigned integer value. - - The raw text of the literal. - The 4-byte unsigned integer value to be represented by the returned token. - - - - Creates a token with kind NumericLiteralToken from the text and corresponding 4-byte unsigned integer value. - - A list of trivia immediately preceding the token. - The raw text of the literal. - The 4-byte unsigned integer value to be represented by the returned token. - A list of trivia immediately following the token. - - - - Creates a token with kind NumericLiteralToken from an 8-byte signed integer value. - - The 8-byte signed integer value to be represented by the returned token. - - - - Creates a token with kind NumericLiteralToken from the text and corresponding 8-byte signed integer value. - - The raw text of the literal. - The 8-byte signed integer value to be represented by the returned token. - - - - Creates a token with kind NumericLiteralToken from the text and corresponding 8-byte signed integer value. - - A list of trivia immediately preceding the token. - The raw text of the literal. - The 8-byte signed integer value to be represented by the returned token. - A list of trivia immediately following the token. - - - - Creates a token with kind NumericLiteralToken from an 8-byte unsigned integer value. - - The 8-byte unsigned integer value to be represented by the returned token. - - - - Creates a token with kind NumericLiteralToken from the text and corresponding 8-byte unsigned integer value. - - The raw text of the literal. - The 8-byte unsigned integer value to be represented by the returned token. - - - - Creates a token with kind NumericLiteralToken from the text and corresponding 8-byte unsigned integer value. - - A list of trivia immediately preceding the token. - The raw text of the literal. - The 8-byte unsigned integer value to be represented by the returned token. - A list of trivia immediately following the token. - - - - Creates a token with kind NumericLiteralToken from a 4-byte floating point value. - - The 4-byte floating point value to be represented by the returned token. - - - - Creates a token with kind NumericLiteralToken from the text and corresponding 4-byte floating point value. - - The raw text of the literal. - The 4-byte floating point value to be represented by the returned token. - - - - Creates a token with kind NumericLiteralToken from the text and corresponding 4-byte floating point value. - - A list of trivia immediately preceding the token. - The raw text of the literal. - The 4-byte floating point value to be represented by the returned token. - A list of trivia immediately following the token. - - - - Creates a token with kind NumericLiteralToken from an 8-byte floating point value. - - The 8-byte floating point value to be represented by the returned token. - - - - Creates a token with kind NumericLiteralToken from the text and corresponding 8-byte floating point value. - - The raw text of the literal. - The 8-byte floating point value to be represented by the returned token. - - - - Creates a token with kind NumericLiteralToken from the text and corresponding 8-byte floating point value. - - A list of trivia immediately preceding the token. - The raw text of the literal. - The 8-byte floating point value to be represented by the returned token. - A list of trivia immediately following the token. - - - - Creates a token with kind NumericLiteralToken from a decimal value. - - The decimal value to be represented by the returned token. - - - - Creates a token with kind NumericLiteralToken from the text and corresponding decimal value. - - The raw text of the literal. - The decimal value to be represented by the returned token. - - - - Creates a token with kind NumericLiteralToken from the text and corresponding decimal value. - - A list of trivia immediately preceding the token. - The raw text of the literal. - The decimal value to be represented by the returned token. - A list of trivia immediately following the token. - - - - Creates a token with kind StringLiteralToken from a string value. - - The string value to be represented by the returned token. - - - - Creates a token with kind StringLiteralToken from the text and corresponding string value. - - The raw text of the literal, including quotes and escape sequences. - The string value to be represented by the returned token. - - - - Creates a token with kind StringLiteralToken from the text and corresponding string value. - - A list of trivia immediately preceding the token. - The raw text of the literal, including quotes and escape sequences. - The string value to be represented by the returned token. - A list of trivia immediately following the token. - - - - Creates a token with kind CharacterLiteralToken from a character value. - - The character value to be represented by the returned token. - - - - Creates a token with kind CharacterLiteralToken from the text and corresponding character value. - - The raw text of the literal, including quotes and escape sequences. - The character value to be represented by the returned token. - - - - Creates a token with kind CharacterLiteralToken from the text and corresponding character value. - - A list of trivia immediately preceding the token. - The raw text of the literal, including quotes and escape sequences. - The character value to be represented by the returned token. - A list of trivia immediately following the token. - - - - Creates a token with kind BadToken. - - A list of trivia immediately preceding the token. - The raw text of the bad token. - A list of trivia immediately following the token. - - - - Creates a token with kind XmlTextLiteralToken. - - A list of trivia immediately preceding the token. - The raw text of the literal. - The xml text value. - A list of trivia immediately following the token. - - - - Creates a token with kind XmlTextLiteralNewLineToken. - - A list of trivia immediately preceding the token. - The raw text of the literal. - The xml text new line value. - A list of trivia immediately following the token. - - - - Creates a token with kind XmlEntityLiteralToken. - - A list of trivia immediately preceding the token. - The raw text of the literal. - The xml entity value. - A list of trivia immediately following the token. - - - - Creates a trivia with kind DocumentationCommentExteriorTrivia. - - The raw text of the literal. - - - - Creates an empty list of syntax nodes. - - The specific type of the element nodes. - - - - Creates a singleton list of syntax nodes. - - The specific type of the element nodes. - The single element node. - - - - - Creates a list of syntax nodes. - - The specific type of the element nodes. - A sequence of element nodes. - - - - Creates an empty list of tokens. - - - - - Creates a singleton list of tokens. - - The single token. - - - - Creates a list of tokens. - - An array of tokens. - - - - Creates a list of tokens. - - - - - - - Creates a trivia from a StructuredTriviaSyntax node. - - - - - Creates an empty list of trivia. - - - - - Creates a singleton list of trivia. - - A single trivia. - - - - Creates a list of trivia. - - An array of trivia. - - - - Creates a list of trivia. - - A sequence of trivia. - - - - Creates an empty separated list. - - The specific type of the element nodes. - - - - Creates a singleton separated list. - - The specific type of the element nodes. - A single node. - - - - Creates a separated list of nodes from a sequence of nodes, synthesizing comma separators in between. - - The specific type of the element nodes. - A sequence of syntax nodes. - - - - Creates a separated list of nodes from a sequence of nodes and a sequence of separator tokens. - - The specific type of the element nodes. - A sequence of syntax nodes. - A sequence of token to be interleaved between the nodes. The number of tokens must - be one less than the number of nodes. - - - - Creates a separated list from a sequence of nodes and tokens, starting with a node and alternating between additional nodes and separator tokens. - - The specific type of the element nodes. - A sequence of nodes or tokens, alternating between nodes and separator tokens. - - - - Creates a separated list from a , where the list elements start with a node and then alternate between - additional nodes and separator tokens. - - The specific type of the element nodes. - The list of nodes and tokens. - - - - Creates an empty . - - - - - Create a from a sequence of . - - The sequence of nodes and tokens - - - - Create a from one or more . - - The nodes and tokens - - - - Creates an IdentifierNameSyntax node. - - The identifier name. - - - - Create a new syntax tree from a syntax node. - - - - - Produces a syntax tree by parsing the source text. - - - - - Produces a syntax tree by parsing the source text. - - - - - Parse a list of trivia rules for leading trivia. - - - - - Parse a list of trivia rules for leading trivia. - - - - - Parse a list of trivia using the parsing rules for trailing trivia. - - - - - Parse a C# language token. - - The text of the token including leading and trailing trivia. - Optional offset into text. - - - - Parse a sequence of C# language tokens. - - The text of all the tokens. - An integer to use as the starting position of the first token. - Optional offset into text. - Parse options. - - - - Parse a NameSyntax node using the grammar rule for names. - - - - - Parse a TypeNameSyntax node using the grammar rule for type names. - - - - - Parse an ExpressionSyntax node using the lowest precedence grammar rule for expressions. - - The text of the expression. - Optional offset into text. - The optional parse options to use. If no options are specified default options are - used. - True if extra tokens in the input should be treated as an error - - - - Parse a StatementSyntaxNode using grammar rule for statements. - - The text of the statement. - Optional offset into text. - The optional parse options to use. If no options are specified default options are - used. - True if extra tokens in the input should be treated as an error - - - - Parse a CompilationUnitSyntax using the grammar rule for an entire compilation unit (file). To produce a - SyntaxTree instance, use CSharpSyntaxTree.ParseText instead. - - The text of the compilation unit. - Optional offset into text. - The optional parse options to use. If no options are specified default options are - used. - - - - Parse a ParameterListSyntax node. - - The text of the parenthesized parameter list. - Optional offset into text. - The optional parse options to use. If no options are specified default options are - used. - True if extra tokens in the input should be treated as an error - - - - Parse a BracketedParameterListSyntax node. - - The text of the bracketed parameter list. - Optional offset into text. - The optional parse options to use. If no options are specified default options are - used. - True if extra tokens in the input should be treated as an error - - - - Parse an ArgumentListSyntax node. - - The text of the parenthesized argument list. - Optional offset into text. - The optional parse options to use. If no options are specified default options are - used. - True if extra tokens in the input should be treated as an error - - - - Parse a BracketedArgumentListSyntax node. - - The text of the bracketed argument list. - Optional offset into text. - The optional parse options to use. If no options are specified default options are - used. - True if extra tokens in the input should be treated as an error - - - - Parse an AttributeArgumentListSyntax node. - - The text of the attribute argument list. - Optional offset into text. - The optional parse options to use. If no options are specified default options are - used. - True if extra tokens in the input should be treated as an error - - - - Helper method for wrapping a string in an SourceText. - - - - - Determines if two trees are the same, disregarding trivia differences. - - The original tree. - The new tree. - - If true then the trees are equivalent if the contained nodes and tokens declaring - metadata visible symbolic information are equivalent, ignoring any differences of nodes inside method bodies - or initializer expressions, otherwise all nodes and tokens must be equivalent. - - - - - Determines if two syntax nodes are the same, disregarding trivia differences. - - The old node. - The new node. - - If true then the nodes are equivalent if the contained nodes and tokens declaring - metadata visible symbolic information are equivalent, ignoring any differences of nodes inside method bodies - or initializer expressions, otherwise all nodes and tokens must be equivalent. - - - - - Determines if two syntax nodes are the same, disregarding trivia differences. - - The old node. - The new node. - - If specified called for every child syntax node (not token) that is visited during the comparison. - If it returns true the child is recursively visited, otherwise the child and its subtree is disregarded. - - - - - Determines if two syntax tokens are the same, disregarding trivia differences. - - The old token. - The new token. - - - - Determines if two lists of tokens are the same, disregarding trivia differences. - - The old token list. - The new token list. - - - - Determines if two lists of syntax nodes are the same, disregarding trivia differences. - - The old list. - The new list. - - If true then the nodes are equivalent if the contained nodes and tokens declaring - metadata visible symbolic information are equivalent, ignoring any differences of nodes inside method bodies - or initializer expressions, otherwise all nodes and tokens must be equivalent. - - - - - Determines if two lists of syntax nodes are the same, disregarding trivia differences. - - The old list. - The new list. - - If specified called for every child syntax node (not token) that is visited during the comparison. - If it returns true the child is recursively visited, otherwise the child and its subtree is disregarded. - - - - - Determines if two lists of syntax nodes are the same, disregarding trivia differences. - - The old list. - The new list. - - If true then the nodes are equivalent if the contained nodes and tokens declaring - metadata visible symbolic information are equivalent, ignoring any differences of nodes inside method bodies - or initializer expressions, otherwise all nodes and tokens must be equivalent. - - - - - Determines if two lists of syntax nodes are the same, disregarding trivia differences. - - The old list. - The new list. - - If specified called for every child syntax node (not token) that is visited during the comparison. - If it returns true the child is recursively visited, otherwise the child and its subtree is disregarded. - - - - - Gets the containing expression that is actually a language expression and not just typed - as an ExpressionSyntax for convenience. For example, NameSyntax nodes on the right side - of qualified names and member access expressions are not language expressions, yet the - containing qualified names or member access expressions are indeed expressions. - - - - - Gets the containing expression that is actually a language expression and not just typed - as an ExpressionSyntax for convenience. For example, NameSyntax nodes on the right side - of qualified names and member access expressions are not language expressions, yet the - containing qualified names or member access expressions are indeed expressions. - Similarly, if the input node is a cref part that is not independently meaningful, then - the result will be the full cref. - - - - - Given a conditional binding expression, find corresponding conditional access node. - - - - - Converts a generic name expression into one without the generic arguments. - - - - - - - Determines whether the given text is considered a syntactically complete submission. - - - - Creates a new CaseSwitchLabelSyntax instance. - - - Creates a new DefaultSwitchLabelSyntax instance. - - - Creates a new BlockSyntax instance. - - - Creates a new BlockSyntax instance. - - - Creates a new UsingDirectiveSyntax instance. - - - Creates a new IdentifierNameSyntax instance. - - - Creates a new QualifiedNameSyntax instance. - - - Creates a new QualifiedNameSyntax instance. - - - Creates a new GenericNameSyntax instance. - - - Creates a new GenericNameSyntax instance. - - - Creates a new GenericNameSyntax instance. - - - Creates a new TypeArgumentListSyntax instance. - - - Creates a new TypeArgumentListSyntax instance. - - - Creates a new AliasQualifiedNameSyntax instance. - - - Creates a new AliasQualifiedNameSyntax instance. - - - Creates a new AliasQualifiedNameSyntax instance. - - - Creates a new PredefinedTypeSyntax instance. - - - Creates a new ArrayTypeSyntax instance. - - - Creates a new ArrayTypeSyntax instance. - - - Creates a new ArrayRankSpecifierSyntax instance. - - - Creates a new ArrayRankSpecifierSyntax instance. - - - Creates a new PointerTypeSyntax instance. - - - Creates a new PointerTypeSyntax instance. - - - Creates a new NullableTypeSyntax instance. - - - Creates a new NullableTypeSyntax instance. - - - Creates a new OmittedTypeArgumentSyntax instance. - - - Creates a new OmittedTypeArgumentSyntax instance. - - - Creates a new ParenthesizedExpressionSyntax instance. - - - Creates a new ParenthesizedExpressionSyntax instance. - - - Creates a new PrefixUnaryExpressionSyntax instance. - - - Creates a new PrefixUnaryExpressionSyntax instance. - - - Creates a new AwaitExpressionSyntax instance. - - - Creates a new AwaitExpressionSyntax instance. - - - Creates a new PostfixUnaryExpressionSyntax instance. - - - Creates a new PostfixUnaryExpressionSyntax instance. - - - Creates a new MemberAccessExpressionSyntax instance. - - - Creates a new MemberAccessExpressionSyntax instance. - - - Creates a new ConditionalAccessExpressionSyntax instance. - - - Creates a new ConditionalAccessExpressionSyntax instance. - - - Creates a new MemberBindingExpressionSyntax instance. - - - Creates a new MemberBindingExpressionSyntax instance. - - - Creates a new ElementBindingExpressionSyntax instance. - - - Creates a new ElementBindingExpressionSyntax instance. - - - Creates a new ImplicitElementAccessSyntax instance. - - - Creates a new ImplicitElementAccessSyntax instance. - - - Creates a new BinaryExpressionSyntax instance. - - - Creates a new BinaryExpressionSyntax instance. - - - Creates a new AssignmentExpressionSyntax instance. - - - Creates a new AssignmentExpressionSyntax instance. - - - Creates a new ConditionalExpressionSyntax instance. - - - Creates a new ConditionalExpressionSyntax instance. - - - Creates a new ThisExpressionSyntax instance. - - - Creates a new ThisExpressionSyntax instance. - - - Creates a new BaseExpressionSyntax instance. - - - Creates a new BaseExpressionSyntax instance. - - - Creates a new LiteralExpressionSyntax instance. - - - Creates a new LiteralExpressionSyntax instance. - - - Creates a new MakeRefExpressionSyntax instance. - - - Creates a new MakeRefExpressionSyntax instance. - - - Creates a new RefTypeExpressionSyntax instance. - - - Creates a new RefTypeExpressionSyntax instance. - - - Creates a new RefValueExpressionSyntax instance. - - - Creates a new RefValueExpressionSyntax instance. - - - Creates a new CheckedExpressionSyntax instance. - - - Creates a new CheckedExpressionSyntax instance. - - - Creates a new DefaultExpressionSyntax instance. - - - Creates a new DefaultExpressionSyntax instance. - - - Creates a new TypeOfExpressionSyntax instance. - - - Creates a new TypeOfExpressionSyntax instance. - - - Creates a new SizeOfExpressionSyntax instance. - - - Creates a new SizeOfExpressionSyntax instance. - - - Creates a new InvocationExpressionSyntax instance. - - - Creates a new InvocationExpressionSyntax instance. - - - Creates a new ElementAccessExpressionSyntax instance. - - - Creates a new ElementAccessExpressionSyntax instance. - - - Creates a new ArgumentListSyntax instance. - - - Creates a new ArgumentListSyntax instance. - - - Creates a new BracketedArgumentListSyntax instance. - - - Creates a new BracketedArgumentListSyntax instance. - - - Creates a new ArgumentSyntax instance. - - - Creates a new ArgumentSyntax instance. - - - Creates a new NameColonSyntax instance. - - - Creates a new NameColonSyntax instance. - - - Creates a new NameColonSyntax instance. - - - Creates a new CastExpressionSyntax instance. - - - Creates a new CastExpressionSyntax instance. - - - Creates a new AnonymousMethodExpressionSyntax instance. - - - Creates a new AnonymousMethodExpressionSyntax instance. - - - Creates a new AnonymousMethodExpressionSyntax instance. - - - Creates a new SimpleLambdaExpressionSyntax instance. - - - Creates a new SimpleLambdaExpressionSyntax instance. - - - Creates a new ParenthesizedLambdaExpressionSyntax instance. - - - Creates a new ParenthesizedLambdaExpressionSyntax instance. - - - Creates a new ParenthesizedLambdaExpressionSyntax instance. - - - Creates a new InitializerExpressionSyntax instance. - - - Creates a new InitializerExpressionSyntax instance. - - - Creates a new ObjectCreationExpressionSyntax instance. - - - Creates a new ObjectCreationExpressionSyntax instance. - - - Creates a new ObjectCreationExpressionSyntax instance. - - - Creates a new AnonymousObjectMemberDeclaratorSyntax instance. - - - Creates a new AnonymousObjectMemberDeclaratorSyntax instance. - - - Creates a new AnonymousObjectCreationExpressionSyntax instance. - - - Creates a new AnonymousObjectCreationExpressionSyntax instance. - - - Creates a new ArrayCreationExpressionSyntax instance. - - - Creates a new ArrayCreationExpressionSyntax instance. - - - Creates a new ArrayCreationExpressionSyntax instance. - - - Creates a new ImplicitArrayCreationExpressionSyntax instance. - - - Creates a new ImplicitArrayCreationExpressionSyntax instance. - - - Creates a new ImplicitArrayCreationExpressionSyntax instance. - - - Creates a new StackAllocArrayCreationExpressionSyntax instance. - - - Creates a new StackAllocArrayCreationExpressionSyntax instance. - - - Creates a new QueryExpressionSyntax instance. - - - Creates a new QueryBodySyntax instance. - - - Creates a new QueryBodySyntax instance. - - - Creates a new FromClauseSyntax instance. - - - Creates a new FromClauseSyntax instance. - - - Creates a new FromClauseSyntax instance. - - - Creates a new FromClauseSyntax instance. - - - Creates a new LetClauseSyntax instance. - - - Creates a new LetClauseSyntax instance. - - - Creates a new LetClauseSyntax instance. - - - Creates a new JoinClauseSyntax instance. - - - Creates a new JoinClauseSyntax instance. - - - Creates a new JoinClauseSyntax instance. - - - Creates a new JoinClauseSyntax instance. - - - Creates a new JoinIntoClauseSyntax instance. - - - Creates a new JoinIntoClauseSyntax instance. - - - Creates a new JoinIntoClauseSyntax instance. - - - Creates a new WhereClauseSyntax instance. - - - Creates a new WhereClauseSyntax instance. - - - Creates a new OrderByClauseSyntax instance. - - - Creates a new OrderByClauseSyntax instance. - - - Creates a new OrderingSyntax instance. - - - Creates a new OrderingSyntax instance. - - - Creates a new SelectClauseSyntax instance. - - - Creates a new SelectClauseSyntax instance. - - - Creates a new GroupClauseSyntax instance. - - - Creates a new GroupClauseSyntax instance. - - - Creates a new QueryContinuationSyntax instance. - - - Creates a new QueryContinuationSyntax instance. - - - Creates a new QueryContinuationSyntax instance. - - - Creates a new OmittedArraySizeExpressionSyntax instance. - - - Creates a new OmittedArraySizeExpressionSyntax instance. - - - Creates a new InterpolatedStringExpressionSyntax instance. - - - Creates a new InterpolatedStringExpressionSyntax instance. - - - Creates a new InterpolatedStringExpressionSyntax instance. - - - Creates a new InterpolatedStringTextSyntax instance. - - - Creates a new InterpolatedStringTextSyntax instance. - - - Creates a new InterpolationSyntax instance. - - - Creates a new InterpolationSyntax instance. - - - Creates a new InterpolationSyntax instance. - - - Creates a new InterpolationAlignmentClauseSyntax instance. - - - Creates a new InterpolationFormatClauseSyntax instance. - - - Creates a new InterpolationFormatClauseSyntax instance. - - - Creates a new GlobalStatementSyntax instance. - - - Creates a new BlockSyntax instance. - - - Creates a new BlockSyntax instance. - - - Creates a new LocalDeclarationStatementSyntax instance. - - - Creates a new LocalDeclarationStatementSyntax instance. - - - Creates a new LocalDeclarationStatementSyntax instance. - - - Creates a new VariableDeclarationSyntax instance. - - - Creates a new VariableDeclarationSyntax instance. - - - Creates a new VariableDeclaratorSyntax instance. - - - Creates a new VariableDeclaratorSyntax instance. - - - Creates a new VariableDeclaratorSyntax instance. - - - Creates a new EqualsValueClauseSyntax instance. - - - Creates a new EqualsValueClauseSyntax instance. - - - Creates a new ExpressionStatementSyntax instance. - - - Creates a new ExpressionStatementSyntax instance. - - - Creates a new EmptyStatementSyntax instance. - - - Creates a new EmptyStatementSyntax instance. - - - Creates a new LabeledStatementSyntax instance. - - - Creates a new LabeledStatementSyntax instance. - - - Creates a new LabeledStatementSyntax instance. - - - Creates a new GotoStatementSyntax instance. - - - Creates a new GotoStatementSyntax instance. - - - Creates a new GotoStatementSyntax instance. - - - Creates a new BreakStatementSyntax instance. - - - Creates a new BreakStatementSyntax instance. - - - Creates a new ContinueStatementSyntax instance. - - - Creates a new ContinueStatementSyntax instance. - - - Creates a new ReturnStatementSyntax instance. - - - Creates a new ReturnStatementSyntax instance. - - - Creates a new ThrowStatementSyntax instance. - - - Creates a new ThrowStatementSyntax instance. - - - Creates a new YieldStatementSyntax instance. - - - Creates a new YieldStatementSyntax instance. - - - Creates a new WhileStatementSyntax instance. - - - Creates a new WhileStatementSyntax instance. - - - Creates a new DoStatementSyntax instance. - - - Creates a new DoStatementSyntax instance. - - - Creates a new ForStatementSyntax instance. - - - Creates a new ForStatementSyntax instance. - - - Creates a new ForStatementSyntax instance. - - - Creates a new ForEachStatementSyntax instance. - - - Creates a new ForEachStatementSyntax instance. - - - Creates a new ForEachStatementSyntax instance. - - - Creates a new UsingStatementSyntax instance. - - - Creates a new UsingStatementSyntax instance. - - - Creates a new UsingStatementSyntax instance. - - - Creates a new FixedStatementSyntax instance. - - - Creates a new FixedStatementSyntax instance. - - - Creates a new CheckedStatementSyntax instance. - - - Creates a new CheckedStatementSyntax instance. - - - Creates a new UnsafeStatementSyntax instance. - - - Creates a new UnsafeStatementSyntax instance. - - - Creates a new LockStatementSyntax instance. - - - Creates a new LockStatementSyntax instance. - - - Creates a new IfStatementSyntax instance. - - - Creates a new IfStatementSyntax instance. - - - Creates a new IfStatementSyntax instance. - - - Creates a new ElseClauseSyntax instance. - - - Creates a new ElseClauseSyntax instance. - - - Creates a new SwitchStatementSyntax instance. - - - Creates a new SwitchStatementSyntax instance. - - - Creates a new SwitchStatementSyntax instance. - - - Creates a new SwitchSectionSyntax instance. - - - Creates a new SwitchSectionSyntax instance. - - - Creates a new CaseSwitchLabelSyntax instance. - - - Creates a new CaseSwitchLabelSyntax instance. - - - Creates a new DefaultSwitchLabelSyntax instance. - - - Creates a new DefaultSwitchLabelSyntax instance. - - - Creates a new TryStatementSyntax instance. - - - Creates a new TryStatementSyntax instance. - - - Creates a new TryStatementSyntax instance. - - - Creates a new CatchClauseSyntax instance. - - - Creates a new CatchClauseSyntax instance. - - - Creates a new CatchClauseSyntax instance. - - - Creates a new CatchDeclarationSyntax instance. - - - Creates a new CatchDeclarationSyntax instance. - - - Creates a new CatchDeclarationSyntax instance. - - - Creates a new CatchFilterClauseSyntax instance. - - - Creates a new CatchFilterClauseSyntax instance. - - - Creates a new FinallyClauseSyntax instance. - - - Creates a new FinallyClauseSyntax instance. - - - Creates a new CompilationUnitSyntax instance. - - - Creates a new CompilationUnitSyntax instance. - - - Creates a new CompilationUnitSyntax instance. - - - Creates a new ExternAliasDirectiveSyntax instance. - - - Creates a new ExternAliasDirectiveSyntax instance. - - - Creates a new ExternAliasDirectiveSyntax instance. - - - Creates a new UsingDirectiveSyntax instance. - - - Creates a new UsingDirectiveSyntax instance. - - - Creates a new UsingDirectiveSyntax instance. - - - Creates a new NamespaceDeclarationSyntax instance. - - - Creates a new NamespaceDeclarationSyntax instance. - - - Creates a new NamespaceDeclarationSyntax instance. - - - Creates a new AttributeListSyntax instance. - - - Creates a new AttributeListSyntax instance. - - - Creates a new AttributeListSyntax instance. - - - Creates a new AttributeTargetSpecifierSyntax instance. - - - Creates a new AttributeTargetSpecifierSyntax instance. - - - Creates a new AttributeSyntax instance. - - - Creates a new AttributeSyntax instance. - - - Creates a new AttributeArgumentListSyntax instance. - - - Creates a new AttributeArgumentListSyntax instance. - - - Creates a new AttributeArgumentSyntax instance. - - - Creates a new AttributeArgumentSyntax instance. - - - Creates a new NameEqualsSyntax instance. - - - Creates a new NameEqualsSyntax instance. - - - Creates a new NameEqualsSyntax instance. - - - Creates a new TypeParameterListSyntax instance. - - - Creates a new TypeParameterListSyntax instance. - - - Creates a new TypeParameterSyntax instance. - - - Creates a new TypeParameterSyntax instance. - - - Creates a new TypeParameterSyntax instance. - - - Creates a new ClassDeclarationSyntax instance. - - - Creates a new ClassDeclarationSyntax instance. - - - Creates a new ClassDeclarationSyntax instance. - - - Creates a new ClassDeclarationSyntax instance. - - - Creates a new StructDeclarationSyntax instance. - - - Creates a new StructDeclarationSyntax instance. - - - Creates a new StructDeclarationSyntax instance. - - - Creates a new StructDeclarationSyntax instance. - - - Creates a new InterfaceDeclarationSyntax instance. - - - Creates a new InterfaceDeclarationSyntax instance. - - - Creates a new InterfaceDeclarationSyntax instance. - - - Creates a new InterfaceDeclarationSyntax instance. - - - Creates a new EnumDeclarationSyntax instance. - - - Creates a new EnumDeclarationSyntax instance. - - - Creates a new EnumDeclarationSyntax instance. - - - Creates a new EnumDeclarationSyntax instance. - - - Creates a new DelegateDeclarationSyntax instance. - - - Creates a new DelegateDeclarationSyntax instance. - - - Creates a new DelegateDeclarationSyntax instance. - - - Creates a new DelegateDeclarationSyntax instance. - - - Creates a new EnumMemberDeclarationSyntax instance. - - - Creates a new EnumMemberDeclarationSyntax instance. - - - Creates a new EnumMemberDeclarationSyntax instance. - - - Creates a new BaseListSyntax instance. - - - Creates a new BaseListSyntax instance. - - - Creates a new SimpleBaseTypeSyntax instance. - - - Creates a new TypeParameterConstraintClauseSyntax instance. - - - Creates a new TypeParameterConstraintClauseSyntax instance. - - - Creates a new TypeParameterConstraintClauseSyntax instance. - - - Creates a new TypeParameterConstraintClauseSyntax instance. - - - Creates a new ConstructorConstraintSyntax instance. - - - Creates a new ConstructorConstraintSyntax instance. - - - Creates a new ClassOrStructConstraintSyntax instance. - - - Creates a new ClassOrStructConstraintSyntax instance. - - - Creates a new TypeConstraintSyntax instance. - - - Creates a new FieldDeclarationSyntax instance. - - - Creates a new FieldDeclarationSyntax instance. - - - Creates a new FieldDeclarationSyntax instance. - - - Creates a new EventFieldDeclarationSyntax instance. - - - Creates a new EventFieldDeclarationSyntax instance. - - - Creates a new EventFieldDeclarationSyntax instance. - - - Creates a new ExplicitInterfaceSpecifierSyntax instance. - - - Creates a new ExplicitInterfaceSpecifierSyntax instance. - - - Creates a new MethodDeclarationSyntax instance. - - - Creates a new MethodDeclarationSyntax instance. - - - Creates a new MethodDeclarationSyntax instance. - - - Creates a new MethodDeclarationSyntax instance. - - - Creates a new OperatorDeclarationSyntax instance. - - - Creates a new OperatorDeclarationSyntax instance. - - - Creates a new OperatorDeclarationSyntax instance. - - - Creates a new ConversionOperatorDeclarationSyntax instance. - - - Creates a new ConversionOperatorDeclarationSyntax instance. - - - Creates a new ConversionOperatorDeclarationSyntax instance. - - - Creates a new ConstructorDeclarationSyntax instance. - - - Creates a new ConstructorDeclarationSyntax instance. - - - Creates a new ConstructorDeclarationSyntax instance. - - - Creates a new ConstructorDeclarationSyntax instance. - - - Creates a new ConstructorInitializerSyntax instance. - - - Creates a new ConstructorInitializerSyntax instance. - - - Creates a new DestructorDeclarationSyntax instance. - - - Creates a new DestructorDeclarationSyntax instance. - - - Creates a new DestructorDeclarationSyntax instance. - - - Creates a new DestructorDeclarationSyntax instance. - - - Creates a new PropertyDeclarationSyntax instance. - - - Creates a new PropertyDeclarationSyntax instance. - - - Creates a new PropertyDeclarationSyntax instance. - - - Creates a new PropertyDeclarationSyntax instance. - - - Creates a new ArrowExpressionClauseSyntax instance. - - - Creates a new ArrowExpressionClauseSyntax instance. - - - Creates a new EventDeclarationSyntax instance. - - - Creates a new EventDeclarationSyntax instance. - - - Creates a new EventDeclarationSyntax instance. - - - Creates a new EventDeclarationSyntax instance. - - - Creates a new IndexerDeclarationSyntax instance. - - - Creates a new IndexerDeclarationSyntax instance. - - - Creates a new IndexerDeclarationSyntax instance. - - - Creates a new AccessorListSyntax instance. - - - Creates a new AccessorListSyntax instance. - - - Creates a new AccessorDeclarationSyntax instance. - - - Creates a new AccessorDeclarationSyntax instance. - - - Creates a new AccessorDeclarationSyntax instance. - - - Creates a new ParameterListSyntax instance. - - - Creates a new ParameterListSyntax instance. - - - Creates a new BracketedParameterListSyntax instance. - - - Creates a new BracketedParameterListSyntax instance. - - - Creates a new ParameterSyntax instance. - - - Creates a new ParameterSyntax instance. - - - Creates a new IncompleteMemberSyntax instance. - - - Creates a new IncompleteMemberSyntax instance. - - - Creates a new SkippedTokensTriviaSyntax instance. - - - Creates a new SkippedTokensTriviaSyntax instance. - - - Creates a new DocumentationCommentTriviaSyntax instance. - - - Creates a new DocumentationCommentTriviaSyntax instance. - - - Creates a new TypeCrefSyntax instance. - - - Creates a new QualifiedCrefSyntax instance. - - - Creates a new QualifiedCrefSyntax instance. - - - Creates a new NameMemberCrefSyntax instance. - - - Creates a new NameMemberCrefSyntax instance. - - - Creates a new IndexerMemberCrefSyntax instance. - - - Creates a new IndexerMemberCrefSyntax instance. - - - Creates a new OperatorMemberCrefSyntax instance. - - - Creates a new OperatorMemberCrefSyntax instance. - - - Creates a new OperatorMemberCrefSyntax instance. - - - Creates a new ConversionOperatorMemberCrefSyntax instance. - - - Creates a new ConversionOperatorMemberCrefSyntax instance. - - - Creates a new ConversionOperatorMemberCrefSyntax instance. - - - Creates a new CrefParameterListSyntax instance. - - - Creates a new CrefParameterListSyntax instance. - - - Creates a new CrefBracketedParameterListSyntax instance. - - - Creates a new CrefBracketedParameterListSyntax instance. - - - Creates a new CrefParameterSyntax instance. - - - Creates a new CrefParameterSyntax instance. - - - Creates a new XmlElementSyntax instance. - - - Creates a new XmlElementSyntax instance. - - - Creates a new XmlElementStartTagSyntax instance. - - - Creates a new XmlElementStartTagSyntax instance. - - - Creates a new XmlElementStartTagSyntax instance. - - - Creates a new XmlElementEndTagSyntax instance. - - - Creates a new XmlElementEndTagSyntax instance. - - - Creates a new XmlEmptyElementSyntax instance. - - - Creates a new XmlEmptyElementSyntax instance. - - - Creates a new XmlEmptyElementSyntax instance. - - - Creates a new XmlNameSyntax instance. - - - Creates a new XmlNameSyntax instance. - - - Creates a new XmlNameSyntax instance. - - - Creates a new XmlPrefixSyntax instance. - - - Creates a new XmlPrefixSyntax instance. - - - Creates a new XmlPrefixSyntax instance. - - - Creates a new XmlTextAttributeSyntax instance. - - - Creates a new XmlTextAttributeSyntax instance. - - - Creates a new XmlTextAttributeSyntax instance. - - - Creates a new XmlCrefAttributeSyntax instance. - - - Creates a new XmlCrefAttributeSyntax instance. - - - Creates a new XmlNameAttributeSyntax instance. - - - Creates a new XmlNameAttributeSyntax instance. - - - Creates a new XmlNameAttributeSyntax instance. - - - Creates a new XmlTextSyntax instance. - - - Creates a new XmlTextSyntax instance. - - - Creates a new XmlCDataSectionSyntax instance. - - - Creates a new XmlCDataSectionSyntax instance. - - - Creates a new XmlProcessingInstructionSyntax instance. - - - Creates a new XmlProcessingInstructionSyntax instance. - - - Creates a new XmlProcessingInstructionSyntax instance. - - - Creates a new XmlCommentSyntax instance. - - - Creates a new XmlCommentSyntax instance. - - - Creates a new IfDirectiveTriviaSyntax instance. - - - Creates a new IfDirectiveTriviaSyntax instance. - - - Creates a new ElifDirectiveTriviaSyntax instance. - - - Creates a new ElifDirectiveTriviaSyntax instance. - - - Creates a new ElseDirectiveTriviaSyntax instance. - - - Creates a new ElseDirectiveTriviaSyntax instance. - - - Creates a new EndIfDirectiveTriviaSyntax instance. - - - Creates a new EndIfDirectiveTriviaSyntax instance. - - - Creates a new RegionDirectiveTriviaSyntax instance. - - - Creates a new RegionDirectiveTriviaSyntax instance. - - - Creates a new EndRegionDirectiveTriviaSyntax instance. - - - Creates a new EndRegionDirectiveTriviaSyntax instance. - - - Creates a new ErrorDirectiveTriviaSyntax instance. - - - Creates a new ErrorDirectiveTriviaSyntax instance. - - - Creates a new WarningDirectiveTriviaSyntax instance. - - - Creates a new WarningDirectiveTriviaSyntax instance. - - - Creates a new BadDirectiveTriviaSyntax instance. - - - Creates a new BadDirectiveTriviaSyntax instance. - - - Creates a new DefineDirectiveTriviaSyntax instance. - - - Creates a new DefineDirectiveTriviaSyntax instance. - - - Creates a new DefineDirectiveTriviaSyntax instance. - - - Creates a new UndefDirectiveTriviaSyntax instance. - - - Creates a new UndefDirectiveTriviaSyntax instance. - - - Creates a new UndefDirectiveTriviaSyntax instance. - - - Creates a new LineDirectiveTriviaSyntax instance. - - - Creates a new LineDirectiveTriviaSyntax instance. - - - Creates a new LineDirectiveTriviaSyntax instance. - - - Creates a new PragmaWarningDirectiveTriviaSyntax instance. - - - Creates a new PragmaWarningDirectiveTriviaSyntax instance. - - - Creates a new PragmaWarningDirectiveTriviaSyntax instance. - - - Creates a new PragmaChecksumDirectiveTriviaSyntax instance. - - - Creates a new PragmaChecksumDirectiveTriviaSyntax instance. - - - Creates a new ReferenceDirectiveTriviaSyntax instance. - - - Creates a new ReferenceDirectiveTriviaSyntax instance. - - - Creates a new LoadDirectiveTriviaSyntax instance. - - - Creates a new LoadDirectiveTriviaSyntax instance. - - - Creates a new ShebangDirectiveTriviaSyntax instance. - - - Creates a new ShebangDirectiveTriviaSyntax instance. - - - - A SyntaxReference implementation that lazily translates the result (CSharpSyntaxNode) of the - original syntax reference to a syntax reference for its NamespaceDeclarationSyntax. - - - - - this is a basic do-nothing implementation of a syntax reference - - - - - Gets the expression-body syntax from an expression-bodied member. The - given syntax must be for a member which could contain an expression-body. - - - - - Creates a new syntax token with all whitespace and end of line trivia replaced with - regularly formatted trivia. - - The token to normalize. - A sequence of whitespace characters that defines a single level of indentation. - If true the replaced trivia is elastic trivia. - - - - Creates a new syntax token with all whitespace and end of line trivia replaced with - regularly formatted trivia. - - The token to normalize. - An optional sequence of whitespace characters that defines a - single level of indentation. - An optional sequence of whitespace characters used for end of line. - If true the replaced trivia is elastic trivia. - - - - Creates a new syntax trivia list with all whitespace and end of line trivia replaced with - regularly formatted trivia. - - The trivia list to normalize. - A sequence of whitespace characters that defines a single level of indentation. - If true the replaced trivia is elastic trivia. - - - - Creates a new syntax trivia list with all whitespace and end of line trivia replaced with - regularly formatted trivia. - - The trivia list to normalize. - An optional sequence of whitespace characters that defines a - single level of indentation. - An optional sequence of whitespace characters used for end of line. - If true the replaced trivia is elastic trivia. - - - - Updates the given SimpleNameSyntax node with the given identifier token. - This function is a wrapper that calls WithIdentifier on derived syntax nodes. - - - - The given simple name updated with the given identifier. - - - - Returns true if the specified node represents a lambda. - - - - - Given a node that represents a lambda body returns a node that represents the lambda. - - - - - See SyntaxNode.GetCorrespondingLambdaBody. - - - - - Returns true if the specified represents a body of a lambda. - - - - - When queries are translated into expressions select and group-by expressions such that - 1) select/group-by expression is the same identifier as the "source" identifier and - 2) at least one Where or OrderBy clause but no other clause is present in the contained query body or - the expression in question is a group-by expression and the body has no clause - - do not translate into lambdas. - By "source" identifier we mean the identifier specified in the from clause that initiates the query or the query continuation that includes the body. - - The above condition can be derived from the language specification (chapter 7.16.2) as follows: - - In order for 7.16.2.5 "Select clauses" to be applicable the following conditions must hold: - - There has to be at least one clause in the body, otherwise the query is reduced into a final form by 7.16.2.3 "Degenerate query expressions". - - Only where and order-by clauses may be present in the query body, otherwise a transformation in 7.16.2.4 "From, let, where, join and orderby clauses" - produces pattern that doesn't match the requirements of 7.16.2.5. - - - In order for 7.16.2.6 "Groupby clauses" to be applicable the following conditions must hold: - - Only where and order-by clauses may be present in the query body, otherwise a transformation in 7.16.2.4 "From, let, where, join and orderby clauses" - produces pattern that doesn't match the requirements of 7.16.2.5. - - - - - In C# lambda bodies are expressions or block statements. In both cases it's a single node. - In VB a lambda body might be a sequence of nodes (statements). - We define this function to minimize differences between C# and VB implementation. - - - - - If the specified node represents a lambda returns a node (or nodes) that represent its body (bodies). - - - - - Compares content of two nodes ignoring lambda bodies and trivia. - - - - - "Pair lambda" is a synthesized lambda that creates an instance of an anonymous type representing a pair of values. - - - - - Returns true if the specified node can represent a closure scope -- that is a scope of a captured variable. - Doesn't validate whether or not the node actually declares any captured variable. - - - - - This method is used to keep the code that generates binders in sync - with the code that searches for binders. We don't want the searcher - to skip over any nodes that could have associated binders, especially - if changes are made later. - - "Local binder" is a vague term that refers to binders that represent - scopes for names (e.g. BlockBinders) rather than binders that tweak - default behaviors (e.g. FieldInitializerBinders). Local binders are - created by LocalBinderFactory. - - - - - Given an initializer expression infer the name of anonymous property. - Returns default(SyntaxToken) if unsuccessful - - - - - An enumerator for diagnostic lists. - - - - - Moves the enumerator to the next diagnostic instance in the diagnostic list. - - Returns true if enumerator moved to the next diagnostic, false if the - enumerator was at the end of the diagnostic list. - - - - The current diagnostic that the enumerator is pointing at. - - - - - Gets the expression-body syntax from an expression-bodied member. The - given syntax must be for a member which could contain an expression-body. - - - - - DiagnosticAnalyzer for C# compiler's syntax/semantic/compilation diagnostics. - - - - - Returns the index of the first node of a specified kind in the node list. - - Node list. - The to find. - Returns non-negative index if the list contains a node which matches , -1 otherwise. - - - - True if the list has at least one node of the specified kind. - - - - - Returns the index of the first node of a specified kind in the node list. - - Node list. - The to find. - Returns non-negative index if the list contains a node which matches , -1 otherwise. - - - - True if the list has at least one node of the specified kind. - - - - - Returns the index of the first trivia of a specified kind in the trivia list. - - Trivia list. - The to find. - Returns non-negative index if the list contains a trivia which matches , -1 otherwise. - - - - True if the list has at least one trivia of the specified kind. - - - - - Returns the index of the first token of a specified kind in the token list. - - Token list. - The to find. - Returns non-negative index if the list contains a token which matches , -1 otherwise. - - - - Tests whether a list contains a token of a particular kind. - - - The to test for. - Returns true if the list contains a token which matches - -
-
+ + + + Microsoft.CodeAnalysis.CSharp + + + + + A Binder converts names in to symbols and syntax nodes into bound trees. It is context + dependent, relative to a location in source code. + + + This portion of the binder converts a AnonymousObjectCreationExpressionSyntax into + a bound anonymous object creation node + + + This portion of the binder converts an AwaitExpressionSyntax into a BoundExpression + + + This portion of the binder converts an into a . + + + This portion of the binder converts an into a . + + + This portion of the binder converts a QueryExpressionSyntax into a BoundExpression + + + This portion of the binder reports errors arising from resolving queries. + + + This portion of the binder converts StatementSyntax nodes into BoundStatements + + + + + Used to create a root binder. + + + + + Get the next binder in which to look up a name, if not found by this binder. + + + + + if we are in an explicitly checked context (within checked block or expression). + if we are in an explicitly unchecked context (within unchecked block or expression). + otherwise. + + + + + True if instructions that check overflow should be generated. + + + Spec 7.5.12: + For non-constant expressions (expressions that are evaluated at run-time) that are not + enclosed by any checked or unchecked operators or statements, the default overflow checking + context is unchecked unless external factors (such as compiler switches and execution + environment configuration) call for checked evaluation. + + + + + True if the compiler should check for overflow while evaluating constant expressions. + + + Spec 7.5.12: + For constant expressions (expressions that can be fully evaluated at compile-time), + the default overflow checking context is always checked. Unless a constant expression + is explicitly placed in an unchecked context, overflows that occur during the compile-time + evaluation of the expression always cause compile-time errors. + + + + + Some nodes have special binder's for their contents (like Block's) + + + + + Get locals declared immediately in scope represented by the node. + + + + + The member containing the binding context. Note that for the purposes of the compiler, + a lambda expression is considered a "member" of its enclosing method, field, or lambda. + + + + + Is the contained code within a member method body? + + + May be false in lambdas that are outside of member method bodies, e.g. lambdas in + field initializers. + + + + + Is the contained code within an iterator block? + + + Will be false in a lambda in an iterator. + + + + + Is the contained code within the syntactic span of an + iterator method? + + + Will be true in a lambda in an iterator. + + + + + If we are inside a context where a break statement is legal, + returns the that a break statement would branch to. + Returns null otherwise. + + + + + If we are inside a context where a continue statement is legal, + returns the that a continue statement would branch to. + Returns null otherwise. + + + + + Get the element type of this iterator. + + Node to report diagnostics, if any, such as "yield statement cannot be used + inside a lambda expression" + Where to place any diagnostics + Element type of the current iterator, or an error type. + + + + The imports for all containing namespace declarations (innermost-to-outermost, including global), + or null if there are none. + + + + + The type containing the binding context + + + + + Returns true if the binder is binding top-level script code. + + + + + Issue an error or warning for a symbol if it is Obsolete. If there is not enough + information to report diagnostics, then store the symbols so that diagnostics + can be reported at a later stage. + + + + + True if the symbol is definitely obsolete. + False if the symbol is definitely not obsolete. + Unknown if the symbol may be obsolete. + + NOTE: The return value reflects obsolete-ness, not whether or not the diagnostic was reported. + + + + + Expression lvalue and rvalue requirements. + + + + + Expression is the RHS of an assignment operation. + + + The following are rvalues: values, variables, null literals, properties + and indexers with getters, events. The following are not rvalues: + namespaces, types, method groups, anonymous functions. + + + + + Expression is the RHS of an assignment operation + and may be a method group. + + + + + Expression is the LHS of a simple assignment operation. + + + + + Expression is the operand of an increment + or decrement operation. + + + + + Expression is the LHS of a compound assignment + operation (such as +=). + + + + + Expression is an out parameter. + + + + + Expression is the operand of an address-of operation (&). + + + + + Expression is the receiver of a fixed buffer field access + + + + + Report diagnostics that should be reported when using a synthesized attribute. + + + + + Outside of checked, unchecked expression/block. + + + + + Within unchecked expression/block. + + + + + Within checked expression/block. + + + + + We represent the set of query variables in scope at a particular point by a RangeVariableMap. + Each query variable in scope has a key in this map. If the corresponding value is empty, then + that query variable is represented directly by a lambda parameter. If it is non-empty, then + to get the value of that query variable one starts with the first parameter of the current + lambda (the first parameter is always the transparent one), and dot through its members using + the names in the value list, in reverse order. So, for example, if the query variable "x" has + a value in this map of ["Item2", "Item1", "Item1"], then the way to compute the value of that + query variable is starting with the current lambda's first parameter P, compute "P.Item1.Item1.Item2". + See also WithQueryLambdaParametersBinder. + + + + + Actually, defines if an error ERR_AnonymousTypeNotAvailable is to be generated; + + Dev10 rules (which are based on BindingContext::InMethod()) are difficult to + reproduce, so this implementation checks both current symbol as well as syntax nodes. + + + + + Returns the type to be used as a field type; generates errors in case the type is not + supported for anonymous type fields. + + + + + Gets the rewritten attribute constructor arguments, i.e. the arguments + are in the order of parameters, which may differ from the source + if named constructor arguments are used. + + For example: + void Foo(int x, int y, int z, int w = 3); + + Foo(0, z: 2, y: 1); + + Arguments returned: 0, 1, 2, 3 + + Rewritten attribute constructor arguments + + CONSIDER: Can we share some code will call rewriting in the local rewriter? + + + + + Walk a custom attribute argument bound node and return a TypedConstant. Verify that the expression is a constant expression. + + + + + Return true iff an await with this subexpression would be legal where the expression appears. + + + + + Assuming we are in an async method, return true if we're in a context where await would be illegal. + Specifically, return true if we're in a lock, catch, or finally. + + + + + Reports an error if the await expression did not occur in an async context. + + True if the expression contains errors. + + + + Report diagnostics if the await expression occurs in a context where it is not allowed. + + True if errors were found. + + + + Finds and validates the required members of an awaitable expression, as described in spec 7.7.7.1. + + True if the expression is awaitable; false otherwise. + + + + Validates the awaited expression, returning true if no errors are found. + + + + + Finds the GetAwaiter method of an awaitable expression. + + + Spec 7.7.7.1: + An awaitable expression t has an accessible instance or extension method called GetAwaiter with no + parameters and no type parameters, and a return type A that meets the additional requirements for an + Awaiter. + NOTE: this is an error in the spec. An extension method of the form + Awaiter<T> GetAwaiter<T>(this Task<T>) may be used. + + + + + Finds the IsCompleted property of an Awaiter type. + + + Spec 7.7.7.1: + An Awaiter A has an accessible, readable instance property IsCompleted of type bool. + + + + + Checks that the Awaiter implements System.Runtime.CompilerServices.INotifyCompletion. + + + Spec 7.7.7.1: + An Awaiter A implements the interface System.Runtime.CompilerServices.INotifyCompletion. + + + + + Finds the GetResult method of an Awaiter type. + + + Spec 7.7.7.1: + An Awaiter A has an accessible instance method GetResult with no parameters and no type parameters. + + + + + Return a collection of bound constraint clauses indexed by type parameter + ordinal. All constraint clauses are bound, even if there are multiple constraints + for the same type parameter, or constraints for unrecognized type parameters. + Extra constraints are not included in the returned collection however. + + + + + Bind and return a single type parameter constraint clause. + + + + + Returns true if the type is a valid constraint type. + Otherwise returns false and generates a diagnostic. + + + + + This method implements the algorithm in spec section 7.6.5.1. + + For method group conversions, there are situations in which the conversion is + considered to exist ("Otherwise the algorithm produces a single best method M having + the same number of parameters as D and the conversion is considered to exist"), but + application of the conversion fails. These are the "final validation" steps of + overload resolution. + + + True if there is any error. + + + + + Performs the following checks: + + Spec 7.6.5: Invocation expressions (definition of Final Validation) + The method is validated in the context of the method group: If the best method is a static method, + the method group must have resulted from a simple-name or a member-access through a type. If the best + method is an instance method, the method group must have resulted from a simple-name, a member-access + through a variable or value, or a base-access. If neither of these requirements is true, a binding-time + error occurs. + (Note that the spec omits to mention, in the case of an instance method invoked through a simple name, that + the invocation must appear within the body of an instance method) + + Spec 7.5.4: Compile-time checking of dynamic overload resolution + If F is a static method, the method group must have resulted from a simple-name, a member-access through a type, + or a member-access whose receiver can't be classified as a type or value until after overload resolution (see §7.6.4.1). + If F is an instance method, the method group must have resulted from a simple-name, a member-access through a variable or value, + or a member-access whose receiver can't be classified as a type or value until after overload resolution (see §7.6.4.1). + + + True if there is any error. + + + + + Was the receiver expression compiler-generated? + + + + + This method implements the checks in spec section 15.2. + + + + + This method combines final validation (section 7.6.5.1) and delegate compatibility (section 15.2). + + CSharpSyntaxNode of the expression requiring method group conversion. + Conversion to be performed. + Optional receiver. + Method invoked as extension method. + Target delegate type. + Where diagnostics should be added. + True if a diagnostic has been added. + + + + This method is a wrapper around MethodGroupConversionHasErrors. As a preliminary step, + it checks whether a conversion exists. + + + + + We can't use BindNamespaceOrTypeSymbol, since it doesn't return inaccessible symbols (directly). + + + Guaranteed not to return null. + + CONSIDER: As in dev11, we don't handle ambiguity at this level. Hypothetically, + we could just pick one, though an "ideal" solution would probably involve a search + down all ambiguous branches. + + + + + Perform lookup (optionally, in a specified container). If nothing is found and the member name matches the containing type + name, then use the instance constructors of the type instead. The resulting symbols are sorted since tie-breaking is based + on order and we want cref binding to be repeatable. + + + Never returns null. + + + + + Given a list of viable lookup results (based on the name, arity, and containing symbol), + attempt to select one. + + + + + At this point, we have a list of viable symbols and no parameter list with which to perform + overload resolution. We'll just return the first symbol, giving a diagnostic if there are + others. + Caveat: If there are multiple candidates and only one is from source, then the source symbol + wins and no diagnostic is reported. + + + + + Replace any named type in the symbol list with its instance constructors. + Construct all candidates with the implicitly-declared CrefTypeParameterSymbols. + + + + + Given a list of method and/or property candidates, choose the first one (if any) with a signature + that matches the parameter list in the cref. Return null if there isn't one. + + + Produces a diagnostic for ambiguous matches, but not for unresolved members - WRN_BadXMLRef is + handled in BindMemberCref. + + + + + If the member is generic, construct it with the CrefTypeParameterSymbols that should be in scope. + + + + + Keep in sync with CSharpSemanticModel.GetSpeculativelyBoundExpression. + + + + + Determines whether "this" reference is available within the current context. + + The reference was explicitly specified in syntax. + True if "this" is not available due to the current method/property/field initializer being static. + True if a reference to "this" is available. + + + + Returns true if the node is in a position where an unbound type + such as (C<,>) is allowed. + + + + + Generates a new with no known type + + + + + Generates a new with no known type, and the given bound child. + + + + + Generates a new with no known type, and the given bound children. + + + + + Generates a new with no known type, given lookup resultKind. + + + + + Generates a new with no known type, given lookup resultKind and the given bound child. + + + + + Generates a new with no known type, given lookup resultKind and the given bound children. + + + + + Generates a new with no known type, given lookupResultKind and given symbols for GetSemanticInfo API. + + + + + Generates a new with no known type, given lookupResultKind and given symbols for GetSemanticInfo API, + and the given bound child. + + + + + Generates a new with no known type, given lookupResultKind and given symbols for GetSemanticInfo API, + and the given bound children. + + + + + Generates a new with no known type, given lookupResultKind and given symbols for GetSemanticInfo API, + and the given bound children. + + + + + Helper method to generate a bound expression with HasErrors set to true. + Returned bound expression is guaranteed to have a non-null type, except when is an unbound lambda. + If already has errors and meets the above type requirements, then it is returned unchanged. + Otherwise, if is a BoundBadExpression, then it is updated with the and non-null type. + Otherwise, a new wrapping is returned. + + + Returned expression need not be a , but is guaranteed to have HasErrors set to true. + + + + + Bind the expression and verify the expression matches the combination of lvalue and + rvalue requirements given by valueKind. If the expression was bound successfully, but + did not meet the requirements, the return value will be a that + (typically) wraps the subexpression. + + + + + This function is only needed for SemanticModel to perform binding for erroneous cases. + + + + + Binds a simple identifier. + + + + + This implements the casting behavior described in section 6.2.3 of the spec: + + - If the nullable conversion is from S to T?, the conversion is evaluated as the underlying conversion + from S to T followed by a wrapping from T to T?. + + This particular check is done in the binder because it involves conversion processing rules (like overflow + checking and constant folding) which are not handled by Conversions. + + + + + Gets the NameSyntax associated with the syntax node + If no syntax is attached it sets the nameString to plain text + name and returns a null NameSyntax + + Syntax node + Plain text name + + + + Gets the plain text name associated with the expression syntax node + + Expression syntax node + Plain text name + + + + This method walks through the array's InitializerExpressionSyntax and binds all the initializer expressions recursively. + NOTE: It doesn't convert the bound initializer expressions to array's element type. + NOTE: This is done separately in ConvertAndBindArrayInitialization method below. + + Initializer Syntax. + Bound expression builder. + Diagnostics. + Current array dimension being processed. + Rank of the array type. + + + + Given an array of bound initializer expressions, this method converts these bound expressions + to array's element type and generates a BoundArrayInitialization with the converted initializers. + + Diagnostics. + Initializer Syntax. + Array type. + Known array bounds. + Current array dimension being processed. + Array of bound initializer expressions. + + Index into the array of bound initializer expressions to fetch the next bound expression. + + + + + + Bind the (implicit or explicit) constructor initializer of a constructor symbol (in source). + + + Null for implicit, + BaseConstructorInitializerSyntax.ArgumentList, or + ThisConstructorInitializerSyntax.ArgumentList, or + BaseClassWithArgumentsSyntax.ArgumentList for explicit. + Constructor containing the initializer. + Accumulates errors (e.g. unable to find constructor to invoke). + A bound expression for the constructor initializer call. + + This method should be kept consistent with Compiler.BindConstructorInitializer (e.g. same error codes). + + + + + Given the type containing constructors, gets the list of candidate instance constructors and uses overload resolution to determine which one should be called. + + The containing type of the constructors. + The already bound arguments to the constructor. + The name to use in diagnostics if overload resolution fails. + The location at which to report overload resolution result diagnostics. + True to suppress overload resolution result diagnostics (but not argument diagnostics). + Where diagnostics will be reported. + If this method returns true, then it will contain a valid MethodResolutionResult. + Otherwise, it may contain a MethodResolutionResult for an inaccessible constructor (in which case, it will incorrectly indicate success) or nothing at all. + Candidate instance constructors of type used for overload resolution. + It is always legal to access a protected base class constructor + via a constructor initializer, but not from an object creation expression. + True if overload resolution successfully chose an accessible constructor. + + The two-pass algorithm (accessible constructors, then all constructors) is the reason for the unusual signature + of this method (i.e. not populating a pre-existing ). + Presently, rationalizing this behavior is not worthwhile. + + + + + Binds a member access expression + + + + + Attempt to bind the LHS of a member access expression. If this is a Color Color case (spec 7.6.4.1), + then return a BoundExpression if we can easily disambiguate or a BoundTypeOrValueExpression if we + cannot. If this is not a Color Color case, then return null. + + + + + Bind the RHS of a member access expression, given the bound LHS. + It is assumed that CheckValue has not been called on the LHS. + + + + + Create a value from the expression that can be used as a left-hand-side + of a member access. This method special-cases method and property + groups only. All other expressions are returned as is. + + + + + Report the error from member access lookup. Or, if there + was no explicit error from lookup, report "no such member". + + + + + Return true if the given type is or implements a WinRTAsyncInterface. + + + + + Return a BoundExpression representing the invalid member. + + + + + Combine the receiver and arguments of an extension method + invocation into a single argument list to allow overload resolution + to treat the invocation as a static method invocation with no receiver. + + + + + Binds a static or instance member access. + + + + + Given a viable LookupResult, report any ambiguity errors and return either a single + non-method symbol or a method or property group. If the result set represents a + collection of methods or a collection of properties where at least one of the properties + is an indexed property, then 'methodOrPropertyGroup' is populated with the method or + property group and the method returns null. Otherwise, the method returns a single + symbol and 'methodOrPropertyGroup' is empty. (Since the result set is viable, there + must be at least one symbol.) If the result set is ambiguous - either containing multiple + members of different member types, or multiple properties but no indexed properties - + then a diagnostic is reported for the ambiguity and a single symbol is returned. + + + + + Perform lookup and overload resolution on methods defined directly on the class and any + extension methods in scope. Lookup will occur for extension methods in all nested scopes + as necessary until an appropriate method is found. If analyzedArguments is null, the first + method group is returned, without overload resolution being performed. That method group + will either be the methods defined on the receiver class directly (no extension methods) + or the first set of extension methods. + + + + + Represents a small change from the enclosing/next binder. + Can specify a BindingLocation and a ContainingMemberOrLambda. + + + + + Represents a small change from the enclosing/next binder. + Can specify a receiver Expression for containing conditional member access. + + + + + It seems to be common to do both of these things at once, so provide a way to do so + without adding two links to the binder chain. + + + + + In regular C#, all field initializers are assignments to fields and the assigned expressions + may not reference instance members. + + + + + In script C#, some field initializers are assignments to fields and others are global + statements. There are no restrictions on accessing instance members. + + + + + Helper method to create a synthesized method invocation expression. + + Syntax Node. + Receiver for the method call. + Method to be invoked on the receiver. + Arguments to the method call. + Diagnostics. + Optional type arguments syntax. + Optional type arguments. + The syntax for the query clause generating this invocation expression, if any. + True to allow invocation of fields and properties of delegate type. Only methods are allowed otherwise. + False to prevent selecting a params method in unexpanded form. + Synthesized method invocation expression. + + + + Bind an expression as a method invocation. + + + + + Bind an expression as a method invocation. + + + + + Perform overload resolution on the method group or expression (BoundMethodGroup) + and arguments and return a BoundExpression representing the invocation. + + Invocation syntax node. + The syntax for the invoked method, including receiver. + Name of the invoked method. + Overload resolution result for method group executed by caller. + Arguments bound by the caller. + Method group if the invocation represents a potentially overloaded member. + Delegate type if method group represents a delegate. + Diagnostics. + + Indicates that there are additional extension method candidates of the same lookup viability in cases when + none of the instance methods are applicable to the argument list. + + The syntax for the query clause generating this invocation expression, if any. + BoundCall or error expression representing the invocation. + + + Invocation syntax node. + The syntax for the invoked method, including receiver. + + + + Replace a BoundTypeOrValueExpression with a BoundExpression for either a type (if useType is true) + or a value (if useType is false). Any other node is unmodified. + + + Call this once overload resolution has succeeded on the method group of which the BoundTypeOrValueExpression + is the receiver. Generally, useType will be true if the chosen method is static and false otherwise. + + + + + Return the delegate type if this expression represents a delegate. + + + + + Returns true if syntax form is OK (so no errors were reported) + + + + + Helper method that checks whether there is an invocable 'nameof' in scope. + + + + + Performs name lookup for simple generic or non-generic name + within an optional qualifier namespace or type symbol. + If LookupOption.AttributeTypeOnly is set, then it performs + attribute type lookup which involves attribute name lookup + with and without "Attribute" suffix. + + + + + Look for any symbols in scope with the given name and arity. + + + Makes a second attempt if the results are not viable, in order to produce more detailed failure information (symbols and diagnostics). + + + + + If qualifierOpt is null, look for any symbols in + scope with the given name and arity. + Otherwise look for symbols that are members of the specified qualifierOpt. + + + + + Look for symbols that are members of the specified namespace or type. + + + + + Lookup a member name in a submission chain. + + + We start with the current submission class and walk the submission chain back to the first submission. + The search has two phases + 1) We are looking for any symbol matching the given name, arity, and options. If we don't find any the search is over. + If we find and overloadable symbol(s) (a method or an indexer) we start looking for overloads of this kind + (lookingForOverloadsOfKind) of symbol in phase 2. + 2) If a visited submission contains a matching member of a kind different from lookingForOverloadsOfKind we stop + looking further. Otherwise, if we find viable overload(s) we add them into the result. + + Note that indexers are not supported in script but we deal with them here to handle errors. + + + + + Lookup extension methods by name and arity in the given binder and + check viability in this binder. The lookup is performed on a single + binder because extension method search stops at the first applicable + method group from the nearest enclosing namespace. + + + + + Lookup attribute name in the given binder. By default two name lookups are performed: + (1) With the provided name + (2) With an Attribute suffix added to the provided name + Lookup with Attribute suffix is performed only if LookupOptions.VerbatimAttributeName is not set. + + If either lookup is ambiguous, we return the corresponding result with ambiguous symbols. + Else if exactly one result is single viable attribute type, we return that result. + Otherwise, we return a non-viable result with LookupResult.NotAnAttributeType or an empty result. + + + + + Return the extension methods from this specific binding scope that match the name and optional + arity. Since the lookup of extension methods is iterative, proceeding one binding scope at a time, + GetCandidateExtensionMethods should not defer to the next binding scope. Instead, the caller is + responsible for walking the nested binding scopes from innermost to outermost. This method is overridden + to search the available members list in binding types that represent types, namespaces, and usings. + + + + + If the type implements one of a select few WinRT interfaces, the interface type is + projected to the CLR collection type (e.g., IVector to IList). + When importing a winmd type it may implement one or more winmd collection + interfaces. When the collection interfaces are projected, we may need + to add the projected members to the imported type so that calls to those + members succeed as normal. This method adds the interface methods to + the lookup, if necessary. The CLR understands that a call to the .NET interface + should be projected onto the WinRT interface method. + + + + + This helper is used to determine whether this symbol hides / is hidden + based on its signature, as opposed to its name. + + + CONSIDER: It might be nice to generalize this - maybe an extension method + on Symbol (e.g. IsOverloadable or HidesByName). + + + + + Distinguish from , which performs an analogous task for Add*LookupSymbolsInfo*. + + + + + Used by Add*LookupSymbolsInfo* to determine whether the symbol is of interest. + Distinguish from , which performs an analogous task for LookupSymbols*. + + + Does not consider - that is left to the caller. + + + + + A symbol is accessible for referencing in a cref if it is in the same assembly as the reference + or the symbols's effective visibility is not private. + + + + + Check whether "symbol" is accessible from this binder. + Also checks protected access via "accessThroughType". + + + + + Check whether "symbol" is accessible from this binder. + Also checks protected access via "accessThroughType", and sets "failedThroughTypeCheck" if fails + the protected access check. + + + + + Should only be called by , + which will already have checked for . + + + + + Look for names in scope + + + + + Look for names of members + + + + + Don't call this one directly - call one of the helpers. + + + + + For "receiver.event += expr", produce "receiver.add_event(expr)". + For "receiver.event -= expr", produce "receiver.remove_event(expr)". + + + Performs some validation of the accessor that couldn't be done in CheckEventValueKind, because + the specific accessor wasn't known. + + + + + If one of the (unconverted) operands has constant value null and the other has + a null constant value other than null, then they are definitely not equal + and we can give a constant value for either == or !=. This is a spec violation + that we retain from Dev10. + + The operator kind. Nothing will happen if it is not a lifted equality operator. + The left-hand operand of the operation (possibly wrapped in a conversion). + The right-hand operand of the operation (possibly wrapped in a conversion). + + If the operator represents lifted equality, then constant value true if both arguments have constant + value null, constant value false if exactly one argument has constant value null, and null otherwise. + If the operator represents lifted inequality, then constant value false if both arguments have constant + value null, constant value true if exactly one argument has constant value null, and null otherwise. + + + SPEC VIOLATION: according to the spec (section 7.19) constant expressions cannot + include implicit nullable conversions or nullable subexpressions. However, Dev10 + specifically folds over lifted == and != (see ExpressionBinder::TryFoldingNullableEquality). + Dev 10 does do compile-time evaluation of simple lifted operators, but it does so + in a rewriting pass (see NullableRewriter) - they are not treated as constant values. + + + + + Returns ConstantValue.Bad if, and only if, compound string length is out of supported limit. + The parameter contains value corresponding to the + left node, or zero, which will trigger inference. Upon return, it will + be adjusted to correspond future result node. + + + + + From ExpressionBinder::EnsureQMarkTypesCompatible: + + The v2.0 specification states that the types of the second and third operands T and S of a ternary operator + must be TT and TS such that either (a) TT==TS, or (b), TT->TS or TS->TT but not both. + + Unfortunately that is not what we implemented in v2.0. Instead, we implemented + that either (a) TT=TS or (b) T->TS or S->TT but not both. That is, we looked at the + convertibility of the expressions, not the types. + + + Changing that to the algorithm in the standard would be a breaking change. + + b ? (Func<int>)(delegate(){return 1;}) : (delegate(){return 2;}) + + and + + b ? 0 : myenum + + would suddenly stop working. (The first because o2 has no type, the second because 0 goes to + any enum but enum doesn't go to int.) + + It gets worse. We would like the 3.0 language features which require type inference to use + a consistent algorithm, and that furthermore, the algorithm be smart about choosing the best + of a set of types. However, the language committee has decided that this algorithm will NOT + consume information about the convertibility of expressions. Rather, it will gather up all + the possible types and then pick the "largest" of them. + + To maintain backwards compatibility while still participating in the spirit of consistency, + we implement an algorithm here which picks the type based on expression convertibility, but + if there is a conflict, then it chooses the larger type rather than producing a type error. + This means that b?0:myshort will have type int rather than producing an error (because 0->short, + myshort->int). + + + + + Constant folding for conditional (aka ternary) operators. + + + + + This is a clone of the Dev10 logic for reporting query errors. + + + + + This is the set of parameters and local variables that were used as arguments to + lock or using statements in enclosing scopes. + + + using (x) { } // x counts + using (IDisposable y = null) { } // y does not count + + + + + Noteworthy override is in MemberSemanticModel.IncrementalBinder (used for caching). + + + + + Report an error if this is an awaitable async method invocation that is not being awaited. + + + The checks here are equivalent to StatementBinder::CheckForUnobservedAwaitable() in the native compiler. + + + + + Wrap the initializer in a BoundFixedLocalCollectionInitializer so that the rewriter will have the + information it needs (e.g. conversions, helper methods). + + + + + The purpose of this method is to determine if the expression is classified by the + specification as a *variable*. If it is not then this code gives an appropriate error message. + + To determine the appropriate error message we need to know two things: + + (1) why do we want to know if this is a variable? Because we are trying to assign it, + increment it, or pass it by reference? + + (2) Are we trying to determine if the left hand side of a dot is a variable in order + to determine if the field or property on the right hand side of a dot is assignable? + + + + + Check the expression is of the required lvalue and rvalue specified by valueKind. + The method returns the original expression if the expression is of the required + type. Otherwise, an appropriate error is added to the diagnostics bag and the + method returns a BoundBadExpression node. The method returns the original + expression without generating any error if the expression has errors. + + + + + There are two BadEventUsage error codes and this method decides which one should + be used for a given event. + + + + + SPEC: When a property or indexer declared in a struct-type is the target of an + SPEC: assignment, the instance expression associated with the property or indexer + SPEC: access must be classified as a variable. If the instance expression is + SPEC: classified as a value, a compile-time error occurs. Because of 7.6.4, + SPEC: the same rule also applies to fields. + + + NOTE: The spec fails to impose the restriction that the receiver must be classified + as a variable (unlike for properties - 7.17.1). This seems like a bug, but we have + production code that won't build with the restriction in place (see DevDiv #15674). + + + + + Wrap a given expression e into a block as either { e; } or { return e; } + Shared between lambda and expression-bodied method binding. + + + + + Binds an expression-bodied member with expression e as either { return e;} or { e; }. + + + + + Binds a lambda with expression e as either { return e;} or { e; }. + + + + + Binds the type for the syntax taking into account possibility of "var" type. + + Type syntax to bind. + Diagnostics. + + Set to false if syntax binds to a type in the current context and true if + syntax is "var" and it binds to "var" keyword in the current context. + + + Bound type if syntax binds to a type in the current context and + null if syntax binds to "var" keyword in the current context. + + + + + Binds the type for the syntax taking into account possibility of "var" type. + + Type syntax to bind. + Diagnostics. + + Set to false if syntax binds to a type in the current context and true if + syntax is "var" and it binds to "var" keyword in the current context. + + Alias symbol if syntax binds to an alias. + + Bound type if syntax binds to a type in the current context and + null if syntax binds to "var" keyword in the current context. + + + + + Binds the type for the syntax taking into account possibility of "var" type. + If the syntax binds to an alias symbol to a type, it returns the alias symbol. + + Type syntax to bind. + Diagnostics. + + Set to false if syntax binds to a type or alias to a type in the current context and true if + syntax is "var" and it binds to "var" keyword in the current context. + + + Bound type or alias if syntax binds to a type or alias to a type in the current context and + null if syntax binds to "var" keyword in the current context. + + + + + The immediately containing namespace or named type, or the global + namespace if containing symbol is neither a namespace or named type. + + + + + Binds a simple name or the simple name portion of a qualified name. + + + + + Keep check and error in sync with ConstructBoundMethodGroupAndReportOmittedTypeArguments. + + + + + Keep check and error in sync with ConstructNamedTypeUnlessTypeArgumentOmitted. + + + + + Check generic type constraints unless the type is used as part of a type or method + declaration. In those cases, constraints checking is handled by the caller. + + + + + This is a layer on top of the Compilation version that generates a diagnostic if the special + member isn't found. + + + + + Reports use-site diagnostics for the specified symbol. + + + True if there was an error among the reported diagnostics + + + + + Reports use-site diagnostics for the specified symbol. + + + True if there was an error among the reported diagnostics + + + + + This is a layer on top of the Compilation version that generates a diagnostic if the well-known + type isn't found. + + + + + Retrieves a well-known type member and reports diagnostics. + + Null if the symbol is missing. + + + + Returns -1 if None. + + + + + Prefers symbols from source module, then from added modules, then from referenced assemblies. + Returns true if values were swapped. + + + + + Returns true if the second is a better location than the first. + + + + + Prefer symbols from source module, then from added modules, then from referenced assemblies. + + + + + This is only intended to be called when the type isn't found (i.e. not when it is found but is inaccessible, has the wrong arity, etc). + + + + + Look for a type forwarder for the given type in the containing assembly and any referenced assemblies. + If one is found, search again in the target assembly. Return the last assembly in the chain. + + The metadata name of the (potentially) forwarded type, including the arity (if non-zero). + The arity of the forwarded type. + Set to true if a cycle was found in the type forwarders. + + + Since this method is intended to be used for error reporting, it stops as soon as it finds + any type forwarder - it does not check other assemblies for consistency or better results. + + + + + True if we are currently in an unsafe region (type, member, or block). + + + Does not imply that this compilation allows unsafe regions (could be in an error recovery scenario). + To determine that, check this.Compilation.Options.AllowUnsafe. + + + + True if a diagnostic was reported, or would have been reported if not for + the suppress flag. + + + True if a diagnostic was reported, or would have been reported if not for + the suppress flag. + + + True if a diagnostic was reported, or would have been reported if not for + the suppress flag. + + + True if a diagnostic was reported, or would have been reported if not for + the suppress flag. + + + + Get the name of the method so that it can be looked up in the containing type. + + Non-null declaration syntax. + Binder for the scope around the method (may be null for operators, constructors, and destructors). + + + + Get the name of the property, indexer, or event so that it can be looked up in the containing type. + + Non-null declaration syntax. + Non-null binder for the scope around the member. + + + + Returns true if the location is within the syntax tree and span. + + + + + Returns true if containingNode has a child that contains the specified position + and has kind UsingDirective. + + + Usings can't see other usings, so this is extra info when looking at a namespace + or compilation unit scope. + + + + + Used to detect whether we are in a cref parameter type. + + + + + Used to detect whether we are in a cref return type. + + + + + We're in a <param> or <paramref> element, so we want a binder that can see + the parameters of the associated member and nothing else. + + + + + We're in a <typeparam> or <typeparamref> element, so we want a binder that can see + the type parameters of the associated member and nothing else. + + + + + Given a CrefSyntax and an associated member declaration syntax node, + construct an appropriate binder for binding the cref. + + Cref that will be bound. + The member to which the documentation comment (logically) containing + the cref syntax applies. + Corresponding binder factory. + True to get a special binder for cref parameter and return types. + + The CrefSyntax does not actually have to be within the documentation comment on the member - it + could be included from another file. + + + + + Internal version of MakeCrefBinder that allows the caller to explicitly set the underlying binder. + + + + + Walk up from an XML syntax node (attribute or tag) to the enclosing documentation comment trivia. + + + + + Return binder for binding at node. + and + are optional syntax and symbol for the member containing . + If provided, the will use the member symbol rather + than looking up the member in the containing type, allowing this method to be called + while calculating the member list. + + + Note, there is no guarantee that the factory always gives back the same binder instance for the same node. + + + + + Returns binder that binds usings and aliases + + + Specify imports in the corresponding namespace, or + for top-level imports. + + True if the binder will be used to bind a using directive. + + + + A specific location for binding. + + + + + Indicates that the current context allows unsafe constructs. + + + NOTE: Dev10 doesn't seem to treat attributes as being within the unsafe region. + Fortunately, not following this behavior should not be a breaking change since + attribute arguments have to be constants and there are no constants of unsafe + types. + + + + + Indicates that the unsafe diagnostics are not reported in the current context, regardless + of whether or not it is (part of) an unsafe region. + + + + + Indicates that this binder is being used to answer SemanticModel questions (i.e. not + for batch compilation). + + + Imports touched by a binder with this flag set are not consider "used". + + + + Remarks, mutually exclusive with . + + + Remarks, mutually exclusive with . + + + + In the debugger, one can take the address of a managed object. + + + + + In the debugger, the context is always unsafe, but one can still await. + + + + + Ignore duplicate types from the cor library. + + + + + When binding imports in scripts/submissions, using aliases (other than from the current submission) + are considered but other imports are not. + + + + + In a file that has been included in the compilation via #load. + + + + + Extension methods for the type. + + + + + A binder that knows no symbols and will not delegate further. + + + + + This is used while computing the values of constant fields. Since they can depend on each + other, we need to keep track of which ones we are currently computing in order to avoid (and + report) cycles. + + + + + This binder keeps track of the set of constant fields that are currently being evaluated + so that the set can be passed into the next call to SourceFieldSymbol.ConstantValue (and + its callers). + + + + + Each application of an attribute is effectively a constructor call. Since the attribute constructor + might have a CallerMemberName parameter, we need to keep track of which method/property/event + the attribute is on/in (e.g. on a parameter) so that we can use the name of that member as the + CallerMemberName argument. + + + + Next binder in the chain (enclosing). + Symbol to which the attribute was applied (e.g. a parameter). + + + + We're binding an attribute and this is the member to/in which the attribute was applied. + + + Method, property, event, or null. + A virtual property on Binder (i.e. our usual pattern) would be more robust, but the applicability + of this property is so narrow that it doesn't seem worthwhile. + + + + + Walk up to the nearest method/property/event. + + + + + This is a special binder used for decoding some special well-known attributes very early in the attribute binding phase. + It only binds those attribute argument syntax which can produce valid attribute arguments, but doesn't report any diagnostics. + Subsequent binding phase will rebind such erroneous attributes and generate appropriate diagnostics. + + + + + Since this method is expected to be called on every nested expression of the argument, it doesn't + need to recurse (directly). + + + + + This binder owns and lazily creates the map of SyntaxNodes to Binders associated with + the syntax with which it is created. This binder is not created in reaction to any + specific syntax node type. It is inserted into the binder chain + between the binder which it is constructed with and those that it constructs via + the LocalBinderFactory. + + + + + A distinct scope that may expose extension methods. For a particular Binder, there + are two possible scopes: one for the namespace, and another for any using statements + in the namespace. The namespace scope is searched before the using scope. + + + + + An enumerable collection of extension method scopes in search + order, from the given Binder, out through containing Binders. + + + + + An enumerator over ExtensionMethodScopes. + + + + + Information to be deduced while binding a foreach loop so that the loop can be lowered + to a while over an enumerator. Not applicable to the array or string forms. + + + + + A loop binder that (1) knows how to bind foreach loops and (2) has the foreach iteration variable in scope. + + + This binder produces BoundForEachStatements. The lowering described in the spec is performed in ControlFlowRewriter. + + + + + Bind the ForEachStatementSyntax at the root of this binder. + + + + + The spec describes an algorithm for finding the following types: + 1) Collection type + 2) Enumerator type + 3) Element type + + The implementation details are a bit difference. If we're iterating over a string or an array, then we don't need to record anything + but the inferredType (in case the iteration variable is implicitly typed). If we're iterating over anything else, then we want the + inferred type plus a ForEachEnumeratorInfo.Builder with: + 1) Collection type + 2) Element type + 3) GetEnumerator method of the collection type (return type will be the enumerator type from the spec) + 4) Current property of the enumerator type + 5) MoveNext method of the enumerator type + + The caller will have to do some extra conversion checks before creating a ForEachEnumeratorInfo for the BoundForEachStatement. + + Builder to fill in (partially, all but conversions). + The expression over which to iterate. + Populated with binding diagnostics. + Partially populated (all but conversions) or null if there was an error. + + + + Check for a GetEnumerator method on collectionExprType. Failing to satisfy the pattern is not an error - + it just means that we have to check for an interface instead. + + Type of the expression over which to iterate. + Populated with *warnings* if there are near misses. + Builder to fill in. set if the pattern in satisfied. + True if the method was found (still have to verify that the return (i.e. enumerator) type is acceptable). + + Only adds warnings, so does not affect control flow (i.e. no need to check for failure). + + + + + Perform a lookup for the specified method on the specified type. Perform overload resolution + on the lookup results. + + Type to search. + Method to search for. + Passed in for reusability. + True if failures should result in warnings; false if they should result in errors. + Populated with binding diagnostics. + The desired method or null. + + + + The overload resolution portion of FindForEachPatternMethod. + + + + + Called after it is determined that the expression being enumerated is of a type that + has a GetEnumerator method. Checks to see if the return type of the GetEnumerator + method is suitable (i.e. has Current and MoveNext). + + Must be non-null and contain a non-null GetEnumeratorMethod. + Will be populated with pattern diagnostics. + True if the return type has suitable members. + + It seems that every failure path reports the same diagnostics, so that is left to the caller. + + + + + Checks if the given type implements (or extends, in the case of an interface), + System.Collections.IEnumerable or System.Collections.Generic.IEnumerable<T>, + for at least one T. + + builder to fill in CollectionType. + Type to check. + + True if multiple T's are found. + True if some IEnumerable is found (may still be ambiguous). + + + + Report appropriate diagnostics when lookup of a pattern member (i.e. GetEnumerator, Current, or MoveNext) fails. + + Failed lookup result. + Type in which member was looked up. + Name of looked up member. + True if failures should result in warnings; false if they should result in errors. + Populated appropriately. + + + + Tracks fields that are being bound while binding their initializers. + + + Used to detect circular references like: + var x = y; + var y = x; + + + + + This binder is for binding the initializer of an implicitly typed + local variable. While binding an implicitly typed local variable + it is illegal to refer to the variable. + + + + + Represents symbols imported to the binding scope via using namespace, using alias, and extern alias. + + + + + Does not preserve diagnostics. + + + + + A binder that places the members of a symbol in scope. If there is a container declaration + with using directives, those are merged when looking up names. + + + + + Creates a binder for a container with imports (usings and extern aliases) that can be + retrieved from . + + + + + Creates a binder with given imports. + + + + + Creates a binder with given import computation function. + + + + + A binder for a method body, which places the method's parameters in scope + and notes if the method is an iterator method. + + + + + The LocalBinderFactory is used to build up the map of all Binders within a method body, and the associated + CSharpSyntaxNode. To do so it traverses all the statements, handling blocks and other + statements that create scopes. For efficiency reasons, it does not traverse into + expressions. This means that blocks within lambdas and queries are not created. + Blocks within lambdas are bound by their own LocalBinderFactory when they are + analyzed. + + For reasons of lifetime management, this type is distinct from the BinderFactory + which also creates a map from CSharpSyntaxNode to Binder. That type owns it's binders + and that type's lifetime is that of the compilation. Therefore we do not store + binders local to method bodies in that type's cache. + + + + + This binder keeps track of the local variable (if any) that is currently being evaluated + so that it can be passed into the next call to LocalSymbol.GetConstantValue (and + its callers). + + + + + Call this when you are sure there is a local declaration on this token. Returns the local. + + + + + This type exists to share code between UsingStatementBinder and LockBinder. + + + + + This class exists so these two fields can be set atomically. + CONSIDER: If this causes too many allocations, we could use start and end flags plus spinlocking + as for completion parts. + + + + + Options that can be used to modify the symbol lookup mechanism. + + + Multiple options can be combined together. LookupOptions.AreValid checks for valid combinations. + + + + + Consider all symbols, using normal accessibility rules. + + + + + Consider only namespace aliases and extern aliases. + + + + + Consider only namespaces and types. + + + + + Consider non-members, plus invocable members. + + + + + Consider only symbols that are instance members. Valid with IncludeExtensionMethods + since extension methods are invoked on an instance. + + + + + Do not consider symbols that are instance members. + + + + + Do not consider symbols that are namespaces. + + + + + Consider methods of any arity when arity zero is specified. Because type parameters can be inferred, it is + often desired to consider generic methods when no type arguments were present. + + + + + Look only for label symbols. This must be exclusive of all other options. + + + + + Usually, when determining if a member is accessible, both the type of the receiver + and the type containing the access are used. If this flag is specified, then only + the containing type will be used (i.e. as if you've written base.XX). + + + + + Include extension methods. + + + + + Consider only attribute types. + + + + + Consider lookup name to be a verbatim identifier. + If this flag is specified, then only one lookup is performed for attribute name: lookup with the given name, + and attribute name lookup with "Attribute" suffix is skipped. + + + + + Consider named types of any arity when arity zero is specified. It is specifically desired for nameof in such situations: nameof(System.Collections.Generic.List) + + + + + Do not consider symbols that are method type parameters. + + + + + Are these options valid in their current combination? + + + Some checks made here: + + - Default is valid. + - If LabelsOnly is set, it must be the only option. + - If one of MustBeInstance or MustNotBeInstance are set, the other one must not be set. + - If any of MustNotBeInstance, MustBeInstance, or MustNotBeNonInvocableMember are set, + the options are considered valid. + - If MustNotBeNamespace is set, neither NamespaceAliasesOnly nor NamespacesOrTypesOnly must be set. + - Otherwise, only one of NamespaceAliasesOnly, NamespacesOrTypesOnly, or AllMethodsOnArityZero must be set. + + + + + represents one-to-one symbol -> SingleLookupResult filter. + + + + + A LookupResult summarizes the result of a name lookup within a scope It also allows + combining name lookups from different scopes in an easy way. + + A LookupResult can be ONE OF: + empty - nothing found. + a viable result - this kind of result prevents lookup into further scopes of lower priority. + Viable results should be without error; ambiguity is handled in the caller. + (Note that handling multiple "viable" results is not the same as in the VB compiler) + a non-accessible result - this kind of result means that search continues into further scopes of lower priority for + a viable result. An error is attached with the inaccessibility errors. Non-accessible results take priority over + non-viable results. + a non-viable result - a result that means that the search continues into further scopes of lower priority for + a viable or non-accessible result. An error is attached with the error that indicates + why the result is non-viable. A typical reason would be that it is the wrong kind of symbol. + + Note that the class is poolable so its instances can be obtained from a pool via GetInstance. + Also it is a good idea to call Free on instances after they no longer needed. + + The typical pattern is "caller allocates / caller frees" - + + var result = LookupResult.GetInstance(); + + scope.Lookup(result, "foo"); + ... use result ... + + result.Clear(); + anotherScope.Lookup(result, "moo"); + ... use result ... + + result.Free(); //result and its content is invalid after this + + + + + + Currently LookupResult is intended only for name lookup, not for overload resolution. It is + not clear if overload resolution will work with the structure as is, require enhancements, + or be best served by an alternate mechanism. + + We might want to extend this to a more general priority scheme. + + + + + + Return the single symbol if there is exactly one, otherwise null. + + + + + Is the result viable with one or more symbols? + + + + + NOTE: Even there is a single viable symbol, it may be an error type symbol. + + + + + Set current result according to another. + + + + + Set current result according to another. + + + + + Merge another result with this one, with the symbols combined if both + this and other are viable. Otherwise the highest priority result wins (this if equal + priority and non-viable.) + + + + + Classifies the different ways in which a found symbol might be incorrect. + Higher values are considered "better" than lower values. These values are used + in a few different places: + 1) Inside a LookupResult to indicate the quality of a symbol from lookup. + 2) Inside a bound node (for example, BoundBadExpression), to indicate + the "binding quality" of the symbols referenced by that bound node. + 3) Inside an error type symbol, to indicate the reason that the candidate symbols + in the error type symbols were not good. + + While most of the values can occur in all places, some of the problems are not + detected at lookup time (e.g., NotAVariable), so only occur in bound nodes. + + + This enumeration is parallel to and almost the same as the CandidateReason enumeration. + Changes to one should usually result in changes to the other. + + There are two enumerations because: + 1) CandidateReason in language-independent, while this enum is language specific. + 2) The name "CandidateReason" didn't make much sense in the way LookupResultKind is used internally. + 3) Viable isn't used in CandidateReason, but we need it in LookupResultKind, and there isn't a + a way to have internal enumeration values. + + + + + Maps a LookupResultKind to a CandidateReason. Should not be called on LookupResultKind.Viable! + + + + + Packages up the various parts returned when resolving a method group. + + + + + Contains the code for determining C# accessibility rules. + + + + + Checks if 'symbol' is accessible from within assembly 'within'. + + + + + Checks if 'symbol' is accessible from within type 'within', with + an optional qualifier of type "throughTypeOpt". + + + + + Checks if 'symbol' is accessible from within type 'within', with + an qualifier of type "throughTypeOpt". Sets "failedThroughTypeCheck" to true + if it failed the "through type" check. + + + + + Checks if 'symbol' is accessible from within 'within', which must be a NamedTypeSymbol + or an AssemblySymbol. + + Note that NamedTypeSymbol, if available, is the type that is associated with the binder + that found the 'symbol', not the inner-most type that contains the access to the + 'symbol'. + + If 'symbol' is accessed off of an expression then 'throughTypeOpt' is the type of that + expression. This is needed to properly do protected access checks. Sets + "failedThroughTypeCheck" to true if this protected check failed. + + NOTE(cyrusn): I expect this function to be called a lot. As such, i do not do any memory + allocations in the function itself (including not making any iterators). This does mean + that certain helper functions that we'd like to call are inlined in this method to + prevent the overhead of returning collections or enumerators. + + + + + This method finds the best common type of a set of expressions as per section 7.5.2.14 of the specification. + NOTE: If some or all of the expressions have error types, we return error type as the inference result. + + + + + This method implements best type inference for the conditional operator ?:. + NOTE: If either expression is an error type, we return error type as the inference result. + + + + + Summarizes whether a conversion is allowed, and if so, which kind of conversion (and in some cases, the + associated symbol). + + + + + Returns true if the conversion exists, either as an implicit or explicit conversion. + + + The existence of a conversion does not necessarily imply that the conversion is valid. + For example, an ambiguous user-defined conversion may exist but may not be valid. + + + + + Returns true if the conversion is implicit. + + + Implicit conversions are described in section 6.1 of the C# language specification. + + + + + Returns true if the conversion is explicit. + + + Explicit conversions are described in section 6.2 of the C# language specification. + + + + + Returns true if the conversion is an identity conversion. + + + Identity conversions are described in section 6.1.1 of the C# language specification. + + + + + Returns true if the conversion is an implicit numeric conversion or explicit numeric conversion. + + + Implicit and explicit numeric conversions are described in sections 6.1.2 and 6.2.1 of the C# language specification. + + + + + Returns true if the conversion is an implicit enumeration conversion or explicit enumeration conversion. + + + Implicit and explicit enumeration conversions are described in sections 6.1.3 and 6.2.2 of the C# language specification. + + + + + Returns true if the conversion is an interpolated string conversion. + + + The interpolated string conversion described in section 6.1.N of the C# language specification. + + + + + Returns true if the conversion is an implicit nullable conversion or explicit nullable conversion. + + + Implicit and explicit nullable conversions are described in sections 6.1.4 and 6.2.3 of the C# language specification. + + + + + Returns true if the conversion is an implicit reference conversion or explicit reference conversion. + + + Implicit and explicit reference conversions are described in sections 6.1.6 and 6.2.4 of the C# language specification. + + + + + Returns true if the conversion is an implicit user-defined conversion or explicit user-defined conversion. + + + Implicit and explicit user-defined conversions are described in section 6.4 of the C# language specification. + + + + + Returns true if the conversion is an implicit boxing conversion. + + + Implicit boxing conversions are described in section 6.1.7 of the C# language specification. + + + + + Returns true if the conversion is an explicit unboxing conversion. + + + Explicit unboxing conversions as described in section 6.2.5 of the C# language specification. + + + + + Returns true if the conversion is an implicit null literal conversion. + + + Null literal conversions are described in section 6.1.5 of the C# language specification. + + + + + Returns true if the conversion is an implicit dynamic conversion. + + + Implicit dynamic conversions are described in section 6.1.8 of the C# language specification. + + + + + Returns true if the conversion is an implicit constant expression conversion. + + + Implicit constant expression conversions are described in section 6.1.9 of the C# language specification. + + + + + Returns true if the conversion is an implicit anonymous function conversion. + + + Implicit anonymous function conversions are described in section 6.5 of the C# language specification. + + + + + Returns true if the conversion is an implicit method group conversion. + + + Implicit method group conversions are described in section 6.6 of the C# language specification. + + + + + Returns true if the conversion is a pointer conversion + + + Pointer conversions are described in section 18.4 of the C# language specification. + + Returns true if the conversion is a conversion + a) from a pointer type to void*, + b) from a pointer type to another pointer type (other than void*), + c) from the null literal to a pointer type, + d) from an integral numeric type to a pointer type, or + e) from a pointer type to an integral numeric type. + + Does not return true for user-defined conversions to/from pointer types. + Does not return true for conversions between pointer types and IntPtr/UIntPtr. + + + + + Returns true if the conversion is a conversion to or from IntPtr or UIntPtr. + + + Returns true if the conversion is a conversion to or from IntPtr or UIntPtr. + This includes: + IntPtr to/from int + IntPtr to/from long + IntPtr to/from void* + UIntPtr to/from int + UIntPtr to/from long + UIntPtr to/from void* + + + + + Returns the method used to create the delegate for a method group conversion if is true + or the method used to perform the conversion for a user-defined conversion if is true. + Otherwise, returns null. + + + Method group conversions are described in section 6.6 of the C# language specification. + User-defined conversions are described in section 6.4 of the C# language specification. + + + + + Gives an indication of how successful the conversion was. + Viable - found a best built-in or user-defined conversion. + Empty - found no applicable built-in or user-defined conversions. + OverloadResolutionFailure - found applicable conversions, but no unique best. + + + + + Conversion applied to operand of the user-defined conversion. + + + + + Conversion applied to the result of the user-defined conversion. + + + + + The user-defined operators that were considered when attempting this conversion + (i.e. the arguments to overload resolution). + + + + + Returns a string that represents the of the conversion. + + A string that represents the of the conversion. + + + + Determines whether the specified object is equal to the current object. + + The object to compare with the current object. + true if the specified object is equal to the current object; otherwise, false. + + + + Determines whether the specified object is equal to the current object. + + The object to compare with the current object. + true if the specified object is equal to the current object; otherwise, false. + + + + Returns a hash code for the current object. + + A hash code for the current object. + + + + Returns true if the specified objects are equal and false otherwise. + + The first object. + The second object. + + + + + Returns false if the specified objects are equal and true otherwise. + + The first object. + The second object. + + + + + Determines if the source expression is convertible to the destination type via + any conversion: implicit, explicit, user-defined or built-in. + + + It is rare but possible for a source expression to be convertible to a destination type + by both an implicit user-defined conversion and a built-in explicit conversion. + In that circumstance, this method classifies the conversion as the implicit conversion. + + + + + Determines if the source expression is convertible to the destination type via + any conversion: implicit, explicit, user-defined or built-in. + + + It is rare but possible for a source expression to be convertible to a destination type + by both an implicit user-defined conversion and a built-in explicit conversion. + In that circumstance, this method classifies the conversion as the built-in conversion. + + An implicit conversion exists from an expression of a dynamic type to any type. + An explicit conversion exists from a dynamic type to any type. + When casting we prefer the explicit conversion. + + + + + Determines if the source expression is convertible to the destination type via + any built-in or user-defined implicit conversion. + + + + + Attempt a quick classification of builtin conversions. As result of "no conversion" + means that there is no built-in conversion, though there still may be a user-defined + conversion if compiling against a custom mscorlib. + + + + + IsBaseInterface returns true if baseType is on the base interface list of derivedType or + any base class of derivedType. It may be on the base interface list either directly or + indirectly. + * baseType must be an interface. + * type parameters do not have base interfaces. (They have an "effective interface list".) + * an interface is not a base of itself. + * this does not check for variance conversions; if a type inherits from + IEnumerable<string> then IEnumerable<object> is not a base interface. + + + + + Determines if the source type is convertible to the destination type via + any conversion: implicit, explicit, user-defined or built-in. + + + It is rare but possible for a source type to be convertible to a destination type + by both an implicit user-defined conversion and a built-in explicit conversion. + In that circumstance, this method classifies the conversion as the implicit conversion. + + + + + Determines if the source type is convertible to the destination type via + any conversion: implicit, explicit, user-defined or built-in. + + + It is rare but possible for a source type to be convertible to a destination type + by both an implicit user-defined conversion and a built-in explicit conversion. + In that circumstance, this method classifies the conversion as the built-in conversion. + + + + + Determines if the source type is convertible to the destination type via + any standard implicit or standard explicit conversion. + + + Not all built-in explicit conversions are standard explicit conversions. + + + + + Determines if the source type is convertible to the destination type via + any user-defined or built-in implicit conversion. + + + Not all built-in explicit conversions are standard explicit conversions. + + + + + NOTE: Keep this method in sync with AnalyzeImplicitUserDefinedConversionForSwitchGoverningType. + + + + + This method find the set of applicable user-defined and lifted conversion operators, u. + The set consists of the user-defined and lifted implicit conversion operators declared by + the classes and structs in d that convert from a type encompassing source to a type encompassed by target. + However if allowAnyTarget is true, then it considers all operators that convert from a type encompassing source + to any target. This flag must be set only if we are computing user defined conversions from a given source + type to any target type. + + + Currently allowAnyTarget flag is only set to true by AnalyzeImplicitUserDefinedConversionForSwitchGoverningType, + where we must consider user defined implicit conversions from the type of the switch expression to + any of the possible switch governing types. + + + + + Find the most specific among a set of conversion operators, with the given constraint on the conversion. + + + + + NOTE: Keep this method in sync with AnalyzeImplicitUserDefinedConversion. + + + + + Resolve method group based on the optional delegate invoke method. + If the invoke method is null, ignore arguments in resolution. + + + + + Return the Invoke method symbol if the type is a delegate + type and the Invoke method is available, otherwise null. + + + + + This is specifically a private helper function (rather than a public property or extension method) + because applying this predicate to a non-method member doesn't have a clear meaning. The goal was + simply to avoid repeating ad-hoc code in a group of related collections. + + + + + To duplicate native compiler behavior for some scenarios we force a priority among + operators. If two operators are both applicable and both have a non-null Priority, + the one with the numerically lower Priority value is preferred. + + + + + Omit ref feature for COM interop: We can pass arguments by value for ref parameters if we are invoking a method/property on an instance of a COM imported type. + This property returns a flag indicating whether we had any ref omitted argument for the given call. + + + + + Returns false for + because those diagnostics are only reported if no other candidates are + available. + + + + + Indicates why the compiler accepted or rejected the member during overload resolution. + + + + + No resolution has (yet) been determined. + + + + + The candidate member was accepted in its normal (non-expanded) form. + + + + + The candidate member was accepted in its expanded form, after expanding a "params" parameter. + + + + + The candidate member was rejected because an inferred type argument is inaccessible. + + + + + The candidate member was rejected because an argument was specified that did not have a corresponding + parameter. + + + + + The candidate member was rejected because a named argument was specified that did not have a corresponding + parameter. + + + + + The candidate member was rejected because an required parameter had no corresponding argument. + + + + + The candidate member was rejected because a named argument was used that corresponded to a previously-given positional argument. + + + + + The candidate member was rejected because it is not supported by the language or cannot be used + given the current set of assembly references. + + + + + The candidate member was rejected because it is not supported by the language. + + + No diagnostics will be reported for such candidates unless they "win" overload resolution. + + + + + The candidate member was rejected because an argument could not be converted to the appropriate parameter + type. + + + + + The candidate member was rejected because type inference failed. + + + + + The extension method candidate was rejected because type + inference based on the "instance" argument failed. + + + + + The candidate member was rejected because it a constraint on a type parameter was not satisfied. + + + + + The candidate member was rejected because another member further down in the inheritance hierarchy was + present. + + + + + The candidate member was rejected because it was considered worse that another member (according to section + 7.5.3.2 of the language specification). + + + + + Same as , but the candidate shouldn't be mentioned in an ambiguity diagnostics. + + + + + Represents the results of overload resolution for a single member. + + + + + The member considered during overload resolution. + + + + + The least overridden member that is accessible from the call site that performed overload resolution. + Typically a virtual or abstract method (but not necessarily). + + + The member whose parameter types and params modifiers were considered during overload resolution. + + + + + Indicates why the compiler accepted or rejected the member during overload resolution. + + + + + Returns true if the compiler accepted this member as the sole correct result of overload resolution. + + + + + The result of member analysis. + + + + + Return the interface with an original definition matches + the original definition of the target. If the are no matches, + or multiple matches, the return value is null. + + + + + Return the inferred type arguments using null + for any type arguments that were not inferred. + + + + + Summarizes the results of an overload resolution analysis, as described in section 7.5 of + the language specification. Describes whether overload resolution succeeded, and which + method was selected if overload resolution succeeded, as well as detailed information about + each method that was considered. + + + + + True if overload resolution successfully selected a single best method. + + + + + If overload resolution successfully selected a single best method, returns information + about that method. Otherwise returns null. + + + + + If there was a method that overload resolution considered better than all others, + returns information about that method. A method may be returned even if that method was + not considered a successful overload resolution, as long as it was better that any other + potential method considered. + + + + + Returns information about each method that was considered during overload resolution, + and what the results of overload resolution were for that method. + + + + + Returns true if one or more of the members in the group are applicable. (Note that + Succeeded implies IsApplicable but IsApplicable does not imply Succeeded. It is possible + that no applicable member was better than all others.) + + + + + Returns all methods in the group that are applicable, . + + + + + Called when overload resolution has failed. Figures out the best way to describe what went wrong. + + + Overload resolution (effectively) starts out assuming that all candidates are valid and then + gradually disqualifies them. Therefore, our strategy will be to perform our checks in the + reverse order - the farther a candidate got through the process without being flagged, the + "better" it was. + + Note that "final validation" is performed after overload resolution, + so final validation errors are not seen here. Final validation errors include + violations of constraints on method type parameters, static/instance mismatches, + and so on. + + + + + If an argument fails to convert to the type of the corresponding parameter and that + parameter is a params array, then the error message should reflect the element type + of the params array - not the array type. + + + + + The base class for all symbols (namespaces, classes, method, parameters, etc.) that are + exposed by the compiler. + + + + + Checks if 'symbol' is accessible from within named type 'within'. If 'symbol' is accessed off + of an expression then 'throughTypeOpt' is the type of that expression. This is needed to + properly do protected access checks. + + + + + Checks if 'symbol' is accessible from within assembly 'within'. + + + + + Checks if this symbol is a definition and its containing module is a SourceModuleSymbol. + + + + + Return whether the symbol is either the original definition + or distinct from the original. Intended for use in Debug.Assert + only since it may include a deep comparison. + + + + + Returns a list of attributes to emit to CustomAttribute table. + The builder is freed after all its items are enumerated. + + + + + True if this Symbol should be completed by calling ForceComplete. + Intuitively, true for source entities (from any compilation). + + + + + Gets the name of this symbol. Symbols without a name return the empty string; null is + never returned. + + + + + Gets the name of a symbol as it appears in metadata. Most of the time, this + is the same as the Name property, with the following exceptions: + 1) The metadata name of generic types includes the "`1", "`2" etc. suffix that + indicates the number of type parameters (it does not include, however, names of + containing types or namespaces). + 2) The metadata name of explicit interface names have spaces removed, compared to + the name property. + + + + + Gets the kind of this symbol. + + + + + Get the symbol that logically contains this symbol. + + + + + Returns the nearest lexically enclosing type, or null if there is none. + + + + + Gets the nearest enclosing namespace for this namespace or type. For a nested type, + returns the namespace that contains its container. + + + + + Returns the assembly containing this symbol. If this symbol is shared across multiple + assemblies, or doesn't belong to an assembly, returns null. + + + + + For a source assembly, the associated compilation. + For any other assembly, null. + For a source module, the DeclaringCompilation of the associated source assembly. + For any other module, null. + For any other symbol, the DeclaringCompilation of the associated module. + + + We're going through the containing module, rather than the containing assembly, + because of /addmodule (symbols in such modules should return null). + + Remarks, not "ContainingCompilation" because it isn't transitive. + + + + + Returns the module containing this symbol. If this symbol is shared across multiple + modules, or doesn't belong to a module, returns null. + + + + + The original definition of this symbol. If this symbol is constructed from another + symbol by type substitution then OriginalDefinition gets the original symbol as it was defined in + source or metadata. + + + + + Returns true if this is the original definition of this symbol. + + + + + + Get a source location key for sorting. For performance, it's important that this + be able to be returned from a symbol without doing any additional allocations (even + if nothing is cached yet.) + + + Only (original) source symbols and namespaces that can be merged + need implement this function if they want to do so for efficiency. + + + + + + Gets the locations where this symbol was originally defined, either in source or + metadata. Some symbols (for example, partial classes) may be defined in more than one + location. + + + + + + Get the syntax node(s) where this symbol was declared in source. Some symbols (for + example, partial classes) may be defined in more than one location. This property should + return one or more syntax nodes only if the symbol was declared in source code and also + was not implicitly declared (see the property). + + + Note that for namespace symbol, the declaring syntax might be declaring a nested + namespace. For example, the declaring syntax node for N1 in "namespace N1.N2 {...}" is + the entire for N1.N2. For the global namespace, the declaring + syntax will be the . + + + + The syntax node(s) that declared the symbol. If the symbol was declared in metadata or + was implicitly declared, returns an empty read-only array. + + + To go the opposite direction (from syntax node to symbol), see . + + + + + Helper for implementing for derived classes that store a location but not a + or . + + + + + Get this accessibility that was declared on this symbol. For symbols that do not have + accessibility declared on them, returns . + + + + + Returns true if this symbol is "static"; i.e., declared with the static modifier or + implicitly static. + + + + + Returns true if this symbol is "virtual", has an implementation, and does not override a + base class member; i.e., declared with the virtual modifier. Does not return true for + members declared as abstract or override. + + + + + Returns true if this symbol was declared to override a base class member; i.e., declared + with the override modifier. Still returns true if member was declared to override + something, but (erroneously) no member to override exists. + + + Even for metadata symbols, = true does not imply that will + be non-null. + + + + + Returns true if this symbol was declared as requiring an override; i.e., declared with + the abstract modifier. Also returns true on a type declared as "abstract", all + interface types, and members of interface types. + + + + + Returns true if this symbol was declared to override a base class member and was also + sealed from further overriding; i.e., declared with the sealed modifier. Also set for + types that do not allow a derived class (declared with sealed or static or struct + or enum or delegate). + + + + + Returns true if this symbol has external implementation; i.e., declared with the + extern modifier. + + + + + Returns true if this symbol was automatically created by the compiler, and does not + have an explicit corresponding source code declaration. + + This is intended for symbols that are ordinary symbols in the language sense, + and may be used by code, but that are simply declared implicitly rather than + with explicit language syntax. + + Examples include (this list is not exhaustive): + the default constructor for a class or struct that is created if one is not provided, + the BeginInvoke/Invoke/EndInvoke methods for a delegate, + the generated backing field for an auto property or a field-like event, + the "this" parameter for non-static methods, + the "value" parameter for a property setter, + the parameters on indexer accessor methods (not on the indexer itself), + methods in anonymous types, + + + + + Returns true if this symbol can be referenced by its name in code. Examples of symbols + that cannot be referenced by name are: + constructors, destructors, operators, explicit interface implementations, + accessor methods for properties and events, array types. + + + + + As an optimization, viability checking in the lookup code should use this property instead + of . The full name check will then be performed in the . + + + This property exists purely for performance reasons. + + + + + Perform additional checks after the member has been + added to the member list of the containing type. + + + + + Compare two symbol objects to see if they refer to the same symbol. You should always + use and , or the method, to compare two symbols for equality. + + + + + Compare two symbol objects to see if they refer to the same symbol. You should always + use == and !=, or the Equals method, to compare two symbols for equality. + + + + + Returns a string representation of this symbol, suitable for debugging purposes, or + for placing in an error message. + + + This will provide a useful representation, but it would be clearer to call + directly and provide an explicit format. + Sealed so that and can't get out of sync. + + + + + Build and add synthesized attributes for this symbol. + + + + + Convenience helper called by subclasses to add a synthesized attribute to a collection of attributes. + + + + + effective for this symbol (type or DllImport method). + Nothing if isn't applied on the containing module or it doesn't apply on this symbol. + + + Determined based upon value specified via applied on the containing module. + + + + + Always prefer . + + + + Unfortunately, when determining overriding/hiding/implementation relationships, we don't + have the "current" compilation available. We could, but that would clutter up the API + without providing much benefit. As a compromise, we consider all compilations "current". + + + Unlike in VB, we are not allowing retargeting symbols. This method is used as an approximation + for when a compilation is not available and that method will never return + true for retargeting symbols. + + + + + + Returns the Documentation Comment ID for the symbol, or null if the symbol doesn't + support documentation comments. + + + + + Fetches the documentation comment for this element with a cancellation token. + + Optionally, retrieve the comments formatted for a particular culture. No impact on source documentation comments. + Optionally, expand ]]> elements. No impact on non-source documentation comments. + Optionally, allow cancellation of documentation comment retrieval. + The XML that would be written to the documentation file for the symbol. + + + + True if the symbol has a use-site diagnostic with error severity. + + + + + Returns diagnostic info that should be reported at the use site of the symbol, or null if there is none. + + + + + Return error code that has highest priority while calculating use site error for this symbol. + Supposed to be ErrorCode, but it causes inconsistent accessibility error. + + + + + Indicates that this symbol uses metadata that cannot be supported by the language. + + Examples include: + - Pointer types in VB + - ByRef return type + - Required custom modifiers + + This is distinguished from, for example, references to metadata symbols defined in assemblies that weren't referenced. + Symbols where this returns true can never be used successfully, and thus should never appear in any IDE feature. + + This is set for metadata symbols, as follows: + Type - if a type is unsupported (e.g., a pointer type, etc.) + Method - parameter or return type is unsupported + Field - type is unsupported + Event - type is unsupported + Property - type is unsupported + Parameter - type is unsupported + + + + + Merges given diagnostic to the existing result diagnostic. + + + + + Reports specified use-site diagnostic to given diagnostic bag. + + + This method should be the only method adding use-site diagnostics to a diagnostic bag. + It performs additional adjustments of the location for unification related diagnostics and + may be the place where to add more use-site location post-processing. + + True if the diagnostic has error severity. + + + + Derive error info from a type symbol. + + + + + True if this symbol has been marked with the attribute. + This property returns if the attribute hasn't been cracked yet. + + + + + Returns data decoded from attribute or null if there is no attribute. + This property returns if attribute arguments haven't been decoded yet. + + + + + Returns true and a from the first on the symbol, + the string might be null or an invalid guid representation. False, + if there is no with string argument. + + + + + Gets the attributes for this symbol. Returns an empty if + there are no attributes. + + + + + Gets the attribute target kind corresponding to the symbol kind + If attributes cannot be applied to this symbol kind, returns + an invalid AttributeTargets value of 0 + + AttributeTargets or 0 + + + + Method to early decode the type of well-known attribute which can be queried during the BindAttributeType phase. + This method is called first during attribute binding so that any attributes that affect semantics of type binding + can be decoded here. + + + NOTE: If you are early decoding any new well-known attribute, make sure to update PostEarlyDecodeWellKnownAttributeTypes + to default initialize this data. + + + + + This method is called during attribute binding after EarlyDecodeWellKnownAttributeTypes has been executed. + Symbols should default initialize the data for early decoded well-known attributes here. + + + + + Method to early decode applied well-known attribute which can be queried by the binder. + This method is called during attribute binding after we have bound the attribute types for all attributes, + but haven't yet bound the attribute arguments/attribute constructor. + Early decoding certain well-known attributes enables the binder to use this decoded information on this symbol + when binding the attribute arguments/attribute constructor without causing attribute binding cycle. + + + + + This method is called by the binder when it is finished binding a set of attributes on the symbol so that + the symbol can extract data from the attribute arguments and potentially perform validation specific to + some well known attributes. + + NOTE: If we are decoding a well-known attribute that could be queried by the binder, consider decoding it during early decoding pass. + + + + + Symbol types should override this if they want to handle a specific well-known attribute. + If the attribute is of a type that the symbol does not wish to handle, it should delegate back to + this (base) method. + + + + + + Called to report attribute related diagnostics after all attributes have been bound and decoded. + Called even if there are no attributes. + + + This method is called by the binder from after it has finished binding attributes on the symbol, + has executed for attributes applied on the symbol and has stored the decoded data in the + lazyCustomAttributesBag on the symbol. Bound attributes haven't been stored on the bag yet. + + Post-validation for attributes that is dependent on other attributes can be done here. + + This method should not have any side effects on the symbol, i.e. it SHOULD NOT change the symbol state. + + Bound attributes. + Syntax nodes of attributes in order they are specified in source, or null if there are no attributes. + Diagnostic bag. + Specific part of the symbol to which the attributes apply, or if the attributes apply to the symbol itself. + Decoded well-known attribute data, could be null. + + + + This method does the following set of operations in the specified order: + (1) GetAttributesToBind: Merge attributes from the given attributesSyntaxLists and filter out attributes by attribute target. + (2) BindAttributeTypes: Bind all the attribute types to enable early decode of certain well-known attributes by type. + (3) EarlyDecodeWellKnownAttributes: Perform early decoding of certain well-known attributes that could be queried by the binder in subsequent steps. + (NOTE: This step has the side effect of updating the symbol state based on the data extracted from well known attributes). + (4) GetAttributes: Bind the attributes (attribute arguments and constructor) using bound attribute types. + (5) DecodeWellKnownAttributes: Decode and validate bound well known attributes. + (NOTE: This step has the side effect of updating the symbol state based on the data extracted from well known attributes). + (6) StoreBoundAttributesAndDoPostValidation: + (a) Store the bound attributes in lazyCustomAttributes in a thread safe manner. + (b) Perform some additional post attribute validations, such as + 1) Duplicate attributes, attribute usage target validation, etc. + 2) Post validation for attributes dependent on other attributes + These validations cannot be performed prior to step 6(a) as we might need to + perform a GetAttributes() call on a symbol which can introduce a cycle in attribute binding. + We avoid this cycle by performing such validations in PostDecodeWellKnownAttributes after lazyCustomAttributes have been set. + NOTE: PostDecodeWellKnownAttributes SHOULD NOT change the symbol state. + + + Current design of early decoding well-known attributes doesn't permit decoding attribute arguments/constructor as this can lead to binding cycles. + For well-known attributes used by the binder, where we need the decoded arguments, we must handle them specially in one of the following possible ways: + (a) Avoid decoding the attribute arguments during binding and delay the corresponding binder tasks to a separate post-pass executed after binding. + (b) As the cycles can be caused only when we are binding attribute arguments/constructor, special case the corresponding binder tasks based on the current BinderFlags. + + + + Specific part of the symbol to which the attributes apply, or if the attributes apply to the symbol itself. + Indicates that only early decoding should be performed. WARNING: the resulting bag will not be sealed. + Flag indicating whether lazyCustomAttributes were stored on this thread. Caller should check for this flag and perform NotePartComplete if true. + + + + Method to merge attributes from the given attributesSyntaxLists and filter out attributes by attribute target. + This is the first step in attribute binding. + + + This method can generate diagnostics for few cases where we have an invalid target specifier and the parser hasn't generated the necessary diagnostics. + It should not perform any bind operations as it can lead to an attribute binding cycle. + + + + + Method to early decode certain well-known attributes which can be queried by the binder. + This method is called during attribute binding after we have bound the attribute types for all attributes, + but haven't yet bound the attribute arguments/attribute constructor. + Early decoding certain well-known attributes enables the binder to use this decoded information on this symbol + when binding the attribute arguments/attribute constructor without causing attribute binding cycle. + + + + + This method validates attribute usage for each bound attribute and calls + on attributes with valid attribute usage. + This method is called by the binder when it is finished binding a set of attributes on the symbol so that + the symbol can extract data from the attribute arguments and potentially perform validation specific to + some well known attributes. + + + + + Validate attribute usage target and duplicate attributes. + + Bound attribute + Syntax node for attribute specification + Compilation + Symbol part to which the attribute has been applied. + Diagnostics + Set of unique attribute types applied to the symbol + + + + Ensure that attributes are bound and the ObsoleteState of this symbol is known. + + + + + Represents a result of lookup operation over a 0 or 1 symbol (as opposed to a scope). The + typical use is to represent that a particular symbol is good/bad/unavailable. + + For more explanation of Kind, Symbol, Error - see LookupResult. + + + + + This binder is for binding the argument to typeof. It traverses + the syntax marking each open type ("unbound generic type" in the + C# spec) as either allowed or not allowed, so that BindType can + appropriately return either the corresponding type symbol or an + error type. It also indicates whether the argument as a whole + should be considered open so that the flag can be set + appropriately in BoundTypeOfOperator. + + + + + This visitor walks over a type expression looking for open types. + Open types are allowed if an only if: + 1) There is no constructed generic type elsewhere in the visited syntax; and + 2) The open type is not used as a type argument or array/pointer/nullable + element type. + + + + The argument to typeof. + + Keys are GenericNameSyntax nodes representing unbound generic types. + Values are false if the node should result in an error and true otherwise. + + True if no constructed generic type was encountered. + + + + A binder that places class/interface/struct/delegate type parameters in scope + + + + + The scope within a documentation cref. Contains the implicitly declared type parameters + of the cref (see for details). + + + + + A binder that places method type parameters in scope. + + + + + Binder used to place the parameters of a method, property, indexer, or delegate + in scope when binding <param> tags inside of XML documentation comments. + + + + + Returns true if calls and delegate invocations with this + expression as the receiver should be non-virtual calls. + + + + + Returns a serializable object that is used for displaying this expression in a diagnostic message. + + + + + The set of method symbols from which this call's method was chosen. + Only kept in the tree if the call was an error and overload resolution + was unable to choose a best method. + + + + + The set of indexer symbols from which this call's indexer was chosen. + Only kept in the tree if the call was an error and overload resolution + was unable to choose a best indexer. + + + + + The set of method symbols from which this operator's method was chosen. + Only kept in the tree if the operator was an error and overload resolution + was unable to choose a best method. + + + + + The set of method symbols from which this operator's method was chosen. + Only kept in the tree if the operator was an error and overload resolution + was unable to choose a best method. + + + + + The set of method symbols from which this operator's method was chosen. + Only kept in the tree if the operator was an error and overload resolution + was unable to choose a best method. + + + + + The set of method symbols from which this operator's method was chosen. + Only kept in the tree if the operator was an error and overload resolution + was unable to choose a best method. + + + + + The set of method symbols from which this operator's method was chosen. + Only kept in the tree if the operator was an error and overload resolution + was unable to choose a best method. + + + + + The set of method symbols from which this conversion's method was chosen. + Only kept in the tree if the conversion was an error and overload resolution + was unable to choose a best method. + + + + + Returns true when conversion itself (not the operand) may have side-effects + A typical side-effect of a conversion is an exception when conversion is unsuccessful. + + + + + + This method is intended for passes other than the LocalRewriter. + Use MakeConversion helper method in the LocalRewriter instead, + it generates a synthesized conversion in its lowered form. + + + + + NOTE: This method is intended for passes other than the LocalRewriter. + NOTE: Use MakeConversion helper method in the LocalRewriter instead, + NOTE: it generates a synthesized conversion in its lowered form. + + + + + Build an object creation expression without performing any rewriting + + + + + Set if the group has a receiver but none was not specified in syntax. + + + + + Determines if a bound node, or associated syntax or type has an error (not a warning) + diagnostic associated with it. + + Typically used in the binder as a way to prevent cascading errors. + In most other cases a more lightweight HasErrors should be used. + + + + + Determines if a bound node, or any child, grandchild, etc has an error (not warning) + diagnostic associated with it. The HasError bit is initially set for a node by providing it + to the node constructor. If any child nodes of a node have + the HasErrors bit set, then it is automatically set to true on the parent bound node. + + HasErrors indicates that the tree is not emittable and used to short-circuit lowering/emit stages. + NOTE: not having HasErrors does not guarantee that we do not have any diagnostic associated + with corresponding syntax or type. + + + + + NOTE: not generally set in rewriters. + + + + + The bound expression that invokes the operation of the query clause. + + + + + The bound expression that is the invocation of a "Cast" method specified by the query translation. + + + + + The bound expression that is the query expression in "unoptimized" form. Specifically, a final ".Select" + invocation that is omitted by the specification is included here. + + + + + Consumers must provide implementation for . + + + + + We should be intentional about behavior of derived classes regarding guarding against stack overflow. + + + + + BoundExpressions to be used for emit. The expressions are assumed + to be lowered and will not be visited by . + + + + + What we need to do is find a *repeatable* arbitrary way to choose between + two errors; we can for example simply take the one that is lower in alphabetical + order when converted to a string. As an optimization, we compare error codes + first and skip string comparison if they differ. + + + + + In some cases returns are handled as gotos to return epilogue. + This is used to track the state of the epilogue. + + + + + Emits address as in & + + May introduce a temp which it will return. (otherwise returns null) + + + + + Emits address of a temp. + Used in cases where taking address directly is not possible + (typically because expression does not have a home) + + Introduce a temp which it will return. + + + + + May introduce a temp which it will return. (otherwise returns null) + + + + + Checks if expression directly or indirectly represents a value with its own home. In + such cases it is possible to get a reference without loading into a temporary. + + + + + Special HasHome for fields. Fields have homes when they are writable. + + + + + May introduce a temp which it will return. (otherwise returns null) + + + + + Emits receiver in a form that allows member accesses ( O or & ). For verifiably + reference types it is the actual reference. For generic types it is a address of the + receiver with readonly intent. For the value types it is an address of the receiver. + + isAccessConstrained indicates that receiver is a target of a constrained callvirt + in such case it is unnecessary to box a receiver that is typed to a type parameter + + May introduce a temp which it will return. (otherwise returns null) + + + + + May introduce a temp which it will return. (otherwise returns null) + + + + + Entry point to the array initialization. + Assumes that we have newly created array on the stack. + + inits could be an array of values for a single dimensional array + or an array (of array)+ of values for a multidimensional case + + in either case it is expected that number of leaf values will match number + of elements in the array and nesting level should match the rank of the array. + + + + + To handle array initialization of arbitrary rank it is convenient to + approach multidimensional initialization as a recursively nested. + + ForAll{i, j, k} Init(i, j, k) ===> + ForAll{i} ForAll{j, k} Init(i, j, k) ===> + ForAll{i} ForAll{j} ForAll{k} Init(i, j, k) + + This structure is used for capturing initializers of a given index and + the index value itself. + + + + + Emits all initializers that match indices on the stack recursively. + + Example: + if array has [0..2, 0..3, 0..2] shape + and we have {1, 2} indices on the stack + initializers for + [1, 2, 0] + [1, 2, 1] + [1, 2, 2] + + will be emitted and the top index will be pushed off the stack + as at that point we would be completely done with emitting initializers + corresponding to that index. + + + + + Count of all nontrivial initializers and count of those that are constants. + + + + + Produces a serialized blob of all constant initializers. + Non-constant initializers are matched with a zero of corresponding size. + + + + + Check if it is a regular collection of expressions or there are nested initializers. + + + + + Used to decide if we need to emit call or callvirt. + It basically checks if the receiver expression cannot be null, but it is not 100% precise. + There are cases where it really can be null, but we do not care. + + + + + checks if receiver is effectively ldarg.0 + + + + + Used to decide if we need to emit 'call' or 'callvirt' for structure method. + It basically checks if the method overrides any other and method's defining type + is not a 'special' or 'special-by-ref' type. + + + + + When array operation get long or ulong arguments the args should be + cast to native int. + Note that the cast is always checked. + + + + + Emit an element store instruction for a single dimensional array. + + + + + Emit code for a conditional (aka ternary) operator. + + + (b ? x : y) becomes + push b + if pop then goto CONSEQUENCE + push y + goto DONE + CONSEQUENCE: + push x + DONE: + + + + + Emit code for a null-coalescing operator. + + + x ?? y becomes + push x + dup x + if pop != null goto LEFT_NOT_NULL + pop + push y + LEFT_NOT_NULL: + + + + + Produces opcode for a jump that corresponds to given operation and sense. + Also produces a reverse opcode - opcode for the same condition with inverted sense. + + + + + The interesting part in the following method is the support for exception filters. + === Example: + + try + { + TryBlock + } + catch (ExceptionType ex) when (Condition) + { + Handler + } + + gets emitted as something like ===> + + Try + TryBlock + Filter + var tmp = Pop() as {ExceptionType} + if (tmp == null) + { + Push 0 + } + else + { + ex = tmp + Push Condition ? 1 : 0 + } + End Filter // leaves 1 or 0 on the stack + Catch // gets called after finalization of nested exception frames if condition above produced 1 + Pop // CLR pushes the exception object again + variable ex can be used here + Handler + EndCatch + + + + + Delegate to emit string compare call and conditional branch based on the compare result. + + Key to compare + Node for diagnostics. + Case constant to compare the key against + Target label to branch to if key = stringConstant + String equality method + + + + Gets already declared and initialized local. + + + + + Gets the name and id of the local that are going to be generated into the debug metadata. + + + + + Releases a local. + + + + + Allocates a temp without identity. + + + + + Frees a temp. + + + + + Frees an optional temp. + + + + + Clones all labels used in a finally block. + This allows creating an emittable clone of finally. + It is safe to do because no branches can go in or out of the finally handler. + + + + + The argument is BoundTryStatement (and not a BoundBlock) specifically + to support only Finally blocks where it is guaranteed to not have incoming or leaving branches. + + + + + Perform IL specific optimizations (mostly reduction of local slots) + + Method body to optimize + + When set, do not perform aggressive optimizations that degrade debugging experience. + In particular we do not do the following: + + 1) Do not elide any user defined locals, even if never read from. + Example: + { + var dummy = Foo(); // should not become just "Foo" + } + + User might want to examine dummy in the debugger. + + 2) Do not carry values on the stack between statements + Example: + { + var temp = Foo(); + temp.ToString(); // should not become Foo().ToString(); + } + + User might want to examine temp in the debugger. + + + + Produced list of "ephemeral" locals. + Essentially, these locals do not need to leave the evaluation stack. + As such they do not require an allocation of a local slot and + their load/store operations are implemented trivially. + + + + + + when current and other use spans are regular spans we can have only 2 conflict cases: + [1, 3) conflicts with [0, 2) + [1, 3) conflicts with [2, 4) + + NOTE: with regular spans, it is not possible for two spans to share an edge point + unless they belong to the same local. (because we cannot aceess two real locals at the same time) + + specifically: + [1, 3) does not conflict with [0, 1) since such spans would need to belong to the same local + + + + + Dummy locals represent implicit control flow + It is not allowed for a regular local span to cross into or + be immediately adjacent to a dummy span. + + specifically: + [1, 3) does conflict with [0, 1) since that would imply a value flowing into or out of a span surrounded by a branch/label + + + + + + The command line arguments to a C# . + + + + + Gets the compilation options for the C# + created from the . + + + + + Gets the parse options for the C# . + + + + + Should the format of error messages include the line and column of + the end of the offending text. + + + + + Get the path name starting from the + + + + + Parses a command line. + + A collection of strings representing the command line arguments. + The base directory used for qualifying file locations. + The directory to search for mscorlib, or null if not available. + A string representing additional reference paths. + a commandlinearguments object representing the parsed command line. + + + + Diagnostic for the errorCode added if the warningOptions does not mention suppressed for the errorCode. + + + + + Given a compilation and a destination directory, determine three names: + 1) The name with which the assembly should be output. + 2) The path of the assembly/module file. + 3) The path of the pdb file. + + When csc produces an executable, but the name of the resulting assembly + is not specified using the "/out" switch, the name is taken from the name + of the file (note: file, not class) containing the assembly entrypoint + (as determined by binding and the "/main" switch). + + For example, if the command is "csc /target:exe a.cs b.cs" and b.cs contains the + entrypoint, then csc will produce "b.exe" and "b.pdb" in the output directory, + with assembly name "b" and module name "b.exe" embedded in the file. + + + + + Print compiler logo + + + + + + Print Commandline help message (up to 80 English characters per line) + + + + + + A binding for an attribute. Represents the result of binding an attribute constructor and + the positional and named arguments. + + + + + Creates an AttributeSemanticModel that allows asking semantic questions about an attribute node. + + + + + Creates a speculative AttributeSemanticModel that allows asking semantic questions about an attribute node that did not appear in the original source code. + + + + + Structure containing all semantic information about an await expression. + + + + + Internal cache of built-in operators. + Cache is compilation-specific because it uses compilation-specific SpecialTypes. + + + + + Appends all trees (including any trees from #load'ed files). + + + + + Collects all the trees #load'ed by (as well as + itself) and populates + with all the trees that are safe to remove (not #load'ed by any other tree). + + + + + The compilation object is an immutable representation of a single invocation of the + compiler. Although immutable, a compilation is also on-demand, and will realize and cache + data as necessary. A compilation can produce a new compilation from existing compilation + with the application of small deltas. In many cases, it is more efficient than creating a + new compilation from scratch, as the new compilation can reuse information from the old + compilation. + + + + + Manages anonymous types declared in this compilation. Unifies types that are structurally equivalent. + + + + + The for this compilation. Do not access directly, use Assembly property + instead. This field is lazily initialized by ReferenceManager, ReferenceManager.CacheLockObject must be locked + while ReferenceManager "calculates" the value and assigns it, several threads must not perform duplicate + "calculation" simultaneously. + + + + + Holds onto data related to reference binding. + The manager is shared among multiple compilations that we expect to have the same result of reference binding. + In most cases this can be determined without performing the binding. If the compilation however contains a circular + metadata reference (a metadata reference that refers back to the compilation) we need to avoid sharing of the binding results. + We do so by creating a new reference manager for such compilation. + + + + + Contains the main method of this assembly, if there is one. + + + + + The set of trees for which a has been added to the queue. + + + + + The options the compilation was created with. + + + + + True when the compiler is run in "strict" mode, in which it enforces the language specification + in some cases even at the expense of full compatibility. Such differences typically arise when + earlier versions of the compiler failed to enforce the full language specification. + + + + + The language version that was used to parse the syntax trees of this compilation. + + + + + Creates a new compilation from scratch. Methods such as AddSyntaxTrees or AddReferences + on the returned object will allow to continue building up the Compilation incrementally. + + Simple assembly name. + The syntax trees with the source code for the new compilation. + The references for the new compilation. + The compiler options to use. + A new compilation. + + + + Creates a new compilation that can be used in scripting. + + + + + Create a duplicate of this compilation with different symbol instances. + + + + + Creates a new compilation with the specified name. + + + + + Creates a new compilation with the specified references. + + + The new will query the given for the underlying + metadata as soon as the are needed. + + The new compilation uses whatever metadata is currently being provided by the . + E.g. if the current compilation references a metadata file that has changed since the creation of the compilation + the new compilation is going to use the updated version, while the current compilation will be using the previous (it doesn't change). + + + + + Creates a new compilation with the specified references. + + + + + Creates a new compilation with the specified compilation options. + + + + + Returns a new compilation with the given compilation set as the previous submission. + + + + + Returns a new compilation with a given event queue. + + + + + The syntax trees (parsed from source code) that this compilation was created with. + + + + + Returns true if this compilation contains the specified tree. False otherwise. + + + + + Creates a new compilation with additional syntax trees. + + + + + Creates a new compilation with additional syntax trees. + + + + + Creates a new compilation without the specified syntax trees. Preserves metadata info for use with trees + added later. + + + + + Creates a new compilation without the specified syntax trees. Preserves metadata info for use with trees + added later. + + + + + Creates a new compilation without any syntax trees. Preserves metadata info + from this compilation for use with trees added later. + + + + + Creates a new compilation without the old tree but with the new tree. + + + + + Gets the or for a metadata reference used to create this compilation. + + or corresponding to the given reference or null if there is none. + + Uses object identity when comparing two references. + + + + + All reference directives used in this compilation. + + + + + Returns a metadata reference that a given #r resolves to. + + #r directive. + Metadata reference the specified directive resolves to, or null if the doesn't match any #r directive in the compilation. + + + + Creates a new compilation with additional metadata references. + + + + + Creates a new compilation with additional metadata references. + + + + + Creates a new compilation without the specified metadata references. + + + + + Creates a new compilation without the specified metadata references. + + + + + Creates a new compilation without any metadata references + + + + + Creates a new compilation with an old metadata reference replaced with a new metadata reference. + + + + + Get all modules in this compilation, including the source module, added modules, and all + modules of referenced assemblies that do not come from an assembly with an extern alias. + Metadata imported from aliased assemblies is not visible at the source level except through + the use of an extern alias directive. So exclude them from this list which is used to construct + the global namespace. + + + + + Return a list of assembly symbols than can be accessed without using an alias. + For example: + 1) /r:A.dll /r:B.dll -> A, B + 2) /r:Foo=A.dll /r:B.dll -> B + 3) /r:Foo=A.dll /r:A.dll -> A + + + + + Gets the that corresponds to the assembly symbol. + + + + + The AssemblySymbol that represents the assembly being created. + + + + + The AssemblySymbol that represents the assembly being created. + + + + + Get a ModuleSymbol that refers to the module being created by compiling all of the code. + By getting the GlobalNamespace property of that module, all of the namespaces and types + defined in source code can be obtained. + + + + + Gets the root namespace that contains all namespaces and types defined in source code or in + referenced metadata, merged into a single namespace hierarchy. + + + + + Given for the specified module or assembly namespace, gets the corresponding compilation + namespace (merged namespace representation for all namespace declarations and references + with contributions for the namespaceSymbol). Can return null if no corresponding + namespace can be bound in this compilation with the same name. + + + + + A symbol representing the implicit Script class. This is null if the class is not + defined in the compilation. + + + + + Resolves a symbol that represents script container (Script class). Uses the + full name of the container class stored in to find the symbol. + + The Script class symbol or null if it is not defined. + + + + Global imports (including those from previous submissions, if there are any). + + + + + Imports declared by this submission (null if this isn't one). + + + + + Imports from all previous submissions. + + + + + Get the symbol for the predefined type from the COR Library referenced by this compilation. + + + + + Get the symbol for the predefined type member from the COR Library referenced by this compilation. + + + + + Gets the type within the compilation's assembly and all referenced assemblies (other than + those that can only be referenced via an extern alias) using its canonical CLR metadata name. + + + + + The TypeSymbol for the type 'dynamic' in this Compilation. + + + + + The NamedTypeSymbol for the .NET System.Object type, which could have a TypeKind of + Error if there was no COR Library in this Compilation. + + + + + Returns a new ArrayTypeSymbol representing an array type tied to the base types of the + COR Library in this Compilation. + + + + + Returns a new PointerTypeSymbol representing a pointer type tied to a type in this Compilation. + + + + + Gets a new SyntaxTreeSemanticModel for the specified syntax tree. + + + + + Returns imported symbols for the given declaration. + + + + + The bag in which semantic analysis should deposit its diagnostics. + + + + + A bag in which diagnostics that should be reported after code gen can be deposited. + + + + + Gets the diagnostics produced during the parsing stage of a compilation. There are no diagnostics for declarations or accessor or + method bodies, for example. + + + + + Gets the diagnostics produced during symbol declaration headers. There are no diagnostics for accessor or + method bodies, for example. + + + + + Gets the diagnostics produced during the analysis of method bodies and field initializers. + + + + + Gets the all the diagnostics for the compilation, including syntax, declaration, and binding. Does not + include any diagnostics that might be produced during emit. + + + + + Filter out warnings based on the compiler options (/nowarn, /warn and /warnaserror) and the pragma warning directives. + 'incoming' is freed. + + True when there is no error or warning treated as an error. + + + + Filter out warnings based on the compiler options (/nowarn, /warn and /warnaserror) and the pragma warning directives. + + True when there is no error. + + + + Return true if there is a source declaration symbol name that meets given predicate. + + + + + Return source declaration symbols whose name meets given predicate. + + + + + Returns if the compilation has all of the members necessary to emit metadata about + dynamic types. + + + + + + Returns whether the compilation has the Boolean type and if it's good. + + Returns true if Boolean is present and healthy. + + + + Determine if enum arrays can be initialized using block initialization. + + True if it's safe to use block initialization for enum arrays. + + In NetFx 4.0, block array initializers do not work on all combinations of {32/64 X Debug/Retail} when array elements are enums. + This is fixed in 4.5 thus enabling block array initialization for a very common case. + We look for the presence of which was introduced in .Net 4.5 + + + + + An array of cached well known types available for use in this Compilation. + Lazily filled by GetWellKnownType method. + + + + + Lazy cache of well known members. + Not yet known value is represented by ErrorTypeSymbol.UnknownResultType + + + + + Lookup member declaration in well known type used by this Compilation. + + + If a well-known member of a generic type instantiation is needed use this method to get the corresponding generic definition and + to construct an instantiation. + + + + + Synthesizes a custom attribute. + Returns null if the symbol is missing, + or any of the members in are missing. + The attribute is synthesized only if present. + + + Constructor of the attribute. If it doesn't exist, the attribute is not created. + + Arguments to the attribute constructor. + + Takes a list of pairs of well-known members and constants. The constants + will be passed to the field/property referenced by the well-known member. + If the well-known member does not exist in the compilation then no attribute + will be synthesized. + + + + + Given a type , which is either dynamic type OR is a constructed type with dynamic type present in it's type argument tree, + returns a synthesized DynamicAttribute with encoded dynamic transforms array. + + This method is port of AttrBind::CompileDynamicAttr from the native C# compiler. + + + + Used to generate the dynamic attributes for the required typesymbol. + + + + + ReferenceManager encapsulates functionality to create an underlying SourceAssemblySymbol + (with underlying ModuleSymbols) for Compilation and AssemblySymbols for referenced + assemblies (with underlying ModuleSymbols) all properly linked together based on + reference resolution between them. + + ReferenceManager is also responsible for reuse of metadata readers for imported modules + and assemblies as well as existing AssemblySymbols for referenced assemblies. In order + to do that, it maintains global cache for metadata readers and AssemblySymbols + associated with them. The cache uses WeakReferences to refer to the metadata readers and + AssemblySymbols to allow memory and resources being reclaimed once they are no longer + used. The tricky part about reusing existing AssemblySymbols is to find a set of + AssemblySymbols that are created for the referenced assemblies, which (the + AssemblySymbols from the set) are linked in a way, consistent with the reference + resolution between the referenced assemblies. + + When existing Compilation is used as a metadata reference, there are scenarios when its + underlying SourceAssemblySymbol cannot be used to provide symbols in context of the new + Compilation. Consider classic multi-targeting scenario: compilation C1 references v1 of + Lib.dll and compilation C2 references C1 and v2 of Lib.dll. In this case, + SourceAssemblySymbol for C1 is linked to AssemblySymbol for v1 of Lib.dll. However, + given the set of references for C2, the same reference for C1 should be resolved against + v2 of Lib.dll. In other words, in context of C2, all types from v1 of Lib.dll leaking + through C1 (through method signatures, etc.) must be retargeted to the types from v2 of + Lib.dll. In this case, ReferenceManager creates a special RetargetingAssemblySymbol for + C1, which is responsible for the type retargeting. The RetargetingAssemblySymbols could + also be reused for different Compilations, ReferenceManager maintains a cache of + RetargetingAssemblySymbols (WeakReferences) for each Compilation. + + The only public entry point of this class is CreateSourceAssembly() method. + + + + + Checks if the properties of are compatible with properties of . + Reports inconsistencies to the given diagnostic bag. + + True if the properties are compatible and hence merged, false if the duplicate reference should not merge it's properties with primary reference. + + + + C# only considers culture when comparing weak identities. + It ignores versions of weak identities and reports an error if there are two weak assembly + references passed to a compilation that have the same simple name. + + + + + Creates a from specified metadata. + + + Used by EnC to create symbols for emit baseline. The PE symbols are used by . + + The assembly references listed in the metadata AssemblyRef table are matched to the resolved references + stored on this . We assume that the dependencies of the baseline metadata are + the same as the dependencies of the current compilation. This is not exactly true when the dependencies use + time-based versioning pattern, e.g. AssemblyVersion("1.0.*"). In that case we assume only the version + changed and nothing else. + + Each AssemblyRef is matched against the assembly identities using an exact equality comparison modulo version. + AssemblyRef with lower version in metadata is matched to a PE assembly symbol with the higher version + (provided that the assembly name, culture, PKT and flags are the same) if there is no symbol with the exactly matching version. + If there are multiple symbols with higher versions selects the one with the minimal version among them. + + Matching to a higher version is necessary to support EnC for projects whose P2P dependencies use time-based versioning pattern. + The versions of the dependent projects seen from the IDE will be higher than + the one written in the metadata at the time their respective baselines are built. + + No other unification or further resolution is performed. + + + + + A map of the PE assembly symbol identities to the identities of the original metadata AssemblyRefs. + This map will be used in emit when serializing AssemblyRef table of the delta. For the delta to be compatible with + the original metadata we need to map the identities of the PE assembly symbols back to the original AssemblyRefs (if different). + In other words, we pretend that the versions of the dependencies haven't changed. + + + + + Guarded by . + + + + + Import options of the compilation being built. + + + + + For testing purposes only. + + + + + For testing purposes only. + + + + + Represents a reference to another C# compilation. + + + + + Returns the referenced Compilation. + + + + + Create a metadata reference to a compilation. + + The compilation to reference. + Extern aliases for this reference. + Should interop types be embedded in the created assembly? + + + + Applies C#-specific modification and filtering of s. + + + + + Modifies an input per the given options. For example, the + severity may be escalated, or the may be filtered out entirely + (by returning null). + + The input diagnostic + The maximum warning level to allow. Diagnostics with a higher warning level will be filtered out. + How warning diagnostics should be reported + How specific diagnostics should be reported + A diagnostic updated to reflect the options, or null if it has been filtered out + + + + Allows asking semantic questions about a tree of syntax nodes in a Compilation. Typically, + an instance is obtained by a call to .. + + + An instance of caches local symbols and semantic + information. Thus, it is much more efficient to use a single instance of when asking multiple questions about a syntax tree, because + information from the first question may be reused. This also means that holding onto an + instance of SemanticModel for a long time may keep a significant amount of memory from being + garbage collected. + + + When an answer is a named symbol that is reachable by traversing from the root of the symbol + table, (that is, from an of the ), + that symbol will be returned (i.e. the returned value will be reference-equal to one + reachable from the root of the symbol table). Symbols representing entities without names + (e.g. array-of-int) may or may not exhibit reference equality. However, some named symbols + (such as local variables) are not reachable from the root. These symbols are visible as + answers to semantic questions. When the same SemanticModel object is used, the answers + exhibit reference-equality. + + + + + + The compilation this object was obtained from. + + + + + The root node of the syntax tree that this binding is based on. + + + + + Gets symbol information about a syntax node. This is overridden by various specializations of SemanticModel. + It can assume that CheckSyntaxNode and CanGetSemanticInfo have already been called, as well as that named + argument nodes have been handled. + + The syntax node to get semantic information for. + Options to control behavior. + The cancellation token. + + + + Gets symbol information about the 'Add' method corresponding to an expression syntax within collection initializer. + This is the worker function that is overridden in various derived kinds of Semantic Models. It can assume that + CheckSyntaxNode has already been called and the is in the right place in the syntax tree. + + + + + Gets type information about a syntax node. This is overridden by various specializations of SemanticModel. + It can assume that CheckSyntaxNode and CanGetSemanticInfo have already been called, as well as that named + argument nodes have been handled. + + The syntax node to get semantic information for. + The cancellation token. + + + + Gets a list of method or indexed property symbols for a syntax node. This is overridden by various specializations of SemanticModel. + It can assume that CheckSyntaxNode and CanGetSemanticInfo have already been called, as well as that named + argument nodes have been handled. + + The syntax node to get semantic information for. + + The cancellation token. + + + + Gets a list of indexer symbols for a syntax node. This is overridden by various specializations of SemanticModel. + It can assume that CheckSyntaxNode and CanGetSemanticInfo have already been called, as well as that named + argument nodes have been handled. + + The syntax node to get semantic information for. + + The cancellation token. + + + + Gets the constant value for a syntax node. This is overridden by various specializations of SemanticModel. + It can assume that CheckSyntaxNode and CanGetSemanticInfo have already been called, as well as that named + argument nodes have been handled. + + The syntax node to get semantic information for. + The cancellation token. + + + + Bind the given expression speculatively at the given position, and return back + the resulting bound node. May return null in some error cases. + + + Keep in sync with Binder.BindCrefParameterOrReturnType. + + + + + Bind the given attribute speculatively at the given position, and return back + the resulting bound node. May return null in some error cases. + + + + + Gets the semantic information for an ordering clause in an orderby query clause. + + + + + Gets the semantic information associated with a select or group clause. + + + + + Returns what symbol(s), if any, the given expression syntax bound to in the program. + + An AliasSymbol will never be returned by this method. What the alias refers to will be + returned instead. To get information about aliases, call GetAliasInfo. + + If binding the type name C in the expression "new C(...)" the actual constructor bound to + will be returned (or all constructor if overload resolution failed). This occurs as long as C + unambiguously binds to a single type that has a constructor. If C ambiguously binds to multiple + types, or C binds to a static class, then type(s) are returned. + + + + + Returns what 'Add' method symbol(s), if any, corresponds to the given expression syntax + within . + + + + + Returns what symbol(s), if any, the given constructor initializer syntax bound to in the program. + + The syntax node to get semantic information for. + The cancellation token. + + + + Returns what symbol(s), if any, the given attribute syntax bound to in the program. + + The syntax node to get semantic information for. + The cancellation token. + + + + Gets the semantic information associated with a documentation comment cref. + + + + + Binds the expression in the context of the specified location and gets symbol information. + This method is used to get symbol information about an expression that did not actually + appear in the source code. + + A character position used to identify a declaration scope and + accessibility. This character position must be within the FullSpan of the Root syntax + node in this SemanticModel. + + A syntax node that represents a parsed expression. This syntax + node need not and typically does not appear in the source code referred to by the + SemanticModel instance. + Indicates whether to binding the expression as a full expressions, + or as a type or namespace. If SpeculativeBindingOption.BindAsTypeOrNamespace is supplied, then + expression should derive from TypeSyntax. + The symbol information for the topmost node of the expression. + + The passed in expression is interpreted as a stand-alone expression, as if it + appeared by itself somewhere within the scope that encloses "position". + + is ignored if is within a documentation + comment cref attribute value. + + + + + Bind the attribute in the context of the specified location and get semantic information + such as type, symbols and diagnostics. This method is used to get semantic information about an attribute + that did not actually appear in the source code. + + A character position used to identify a declaration scope and accessibility. This + character position must be within the FullSpan of the Root syntax node in this SemanticModel. In order to obtain + the correct scoping rules for the attribute, position should be the Start position of the Span of the symbol that + the attribute is being applied to. + + A syntax node that represents a parsed attribute. This syntax node + need not and typically does not appear in the source code referred to SemanticModel instance. + The semantic information for the topmost node of the attribute. + + + + Bind the constructor initializer in the context of the specified location and get semantic information + such as type, symbols and diagnostics. This method is used to get semantic information about a constructor + initializer that did not actually appear in the source code. + + NOTE: This will only work in locations where there is already a constructor initializer. + + A character position used to identify a declaration scope and accessibility. This + character position must be within the FullSpan of the Root syntax node in this SemanticModel. + Furthermore, it must be within the span of an existing constructor initializer. + + A syntax node that represents a parsed constructor initializer. This syntax node + need not and typically does not appear in the source code referred to SemanticModel instance. + The semantic information for the topmost node of the constructor initializer. + + + + Bind the cref in the context of the specified location and get semantic information + such as type, symbols and diagnostics. This method is used to get semantic information about a cref + that did not actually appear in the source code. + + A character position used to identify a declaration scope and accessibility. This + character position must be within the FullSpan of the Root syntax node in this SemanticModel. In order to obtain + the correct scoping rules for the cref, position should be the Start position of the Span of the original cref. + + A syntax node that represents a parsed cref. This syntax node + need not and typically does not appear in the source code referred to SemanticModel instance. + SymbolInfo options. + The semantic information for the topmost node of the cref. + + + + Gets type information about a constructor initializer. + + The syntax node to get semantic information for. + The cancellation token. + + + + Gets type information about an expression. + + The syntax node to get semantic information for. + The cancellation token. + + + + Gets type information about an attribute. + + The syntax node to get semantic information for. + The cancellation token. + + + + Gets the conversion that occurred between the expression's type and type implied by the expression's context. + + + + + Binds the expression in the context of the specified location and gets type information. + This method is used to get type information about an expression that did not actually + appear in the source code. + + A character position used to identify a declaration scope and + accessibility. This character position must be within the FullSpan of the Root syntax + node in this SemanticModel. + + A syntax node that represents a parsed expression. This syntax + node need not and typically does not appear in the source code referred to by the + SemanticModel instance. + Indicates whether to binding the expression as a full expressions, + or as a type or namespace. If SpeculativeBindingOption.BindAsTypeOrNamespace is supplied, then + expression should derive from TypeSyntax. + The type information for the topmost node of the expression. + The passed in expression is interpreted as a stand-alone expression, as if it + appeared by itself somewhere within the scope that encloses "position". + + + + Gets the conversion that occurred between the expression's type and type implied by the expression's context. + + + + + Gets a list of method or indexed property symbols for a syntax node. + + The syntax node to get semantic information for. + The cancellation token. + + + + Gets a list of method or indexed property symbols for a syntax node. + + The syntax node to get semantic information for. + The cancellation token. + + + + Gets a list of method or indexed property symbols for a syntax node. + + The syntax node to get semantic information for. + The cancellation token. + + + + Returns the list of accessible, non-hidden indexers that could be invoked with the given expression as receiver. + + Potential indexer receiver. + To cancel the computation. + Accessible, non-hidden indexers. + + If the receiver is an indexer expression, the list will contain the indexers that could be applied to the result + of accessing the indexer, not the set of candidates that were considered during construction of the indexer expression. + + + + + Gets the semantic information associated with a query clause. + + + + + If resolves to an alias name, return the AliasSymbol corresponding + to A. Otherwise return null. + + + + + Binds the name in the context of the specified location and sees if it resolves to an + alias name. If it does, return the AliasSymbol corresponding to it. Otherwise, return null. + + A character position used to identify a declaration scope and + accessibility. This character position must be within the FullSpan of the Root syntax + node in this SemanticModel. + + A syntax node that represents a name. This syntax + node need not and typically does not appear in the source code referred to by the + SemanticModel instance. + Indicates whether to binding the name as a full expression, + or as a type or namespace. If SpeculativeBindingOption.BindAsTypeOrNamespace is supplied, then + expression should derive from TypeSyntax. + The passed in name is interpreted as a stand-alone name, as if it + appeared by itself somewhere within the scope that encloses "position". + + + + Gets the binder that encloses the position. + + + + + Gets the MemberSemanticModel that contains the node. + + + + + Given a position, locates the containing token. If the position is actually within the + leading trivia of the containing token or if that token is EOF, moves one token to the + left. Returns the start position of the resulting token. + + This has the effect of moving the position left until it hits the beginning of a non-EOF + token. + + Throws an ArgumentOutOfRangeException if position is not within the root of this model. + + + + + A convenience method that determines a position from a node. If the node is missing, + then its position will be adjusted using CheckAndAdjustPosition. + + + + + Gets the available named symbols in the context of the specified location and optional container. Only + symbols that are accessible and visible from the given location are returned. + + The character position for determining the enclosing declaration scope and + accessibility. + The container to search for symbols within. If null then the enclosing declaration + scope around position is used. + The name of the symbol to find. If null is specified then symbols + with any names are returned. + Consider (reduced) extension methods. + A list of symbols that were found. If no symbols were found, an empty list is returned. + + The "position" is used to determine what variables are visible and accessible. Even if "container" is + specified, the "position" location is significant for determining which members of "containing" are + accessible. + + Labels are not considered (see ). + + Non-reduced extension methods are considered regardless of the value of . + + + + + Gets the available base type members in the context of the specified location. Akin to + calling with the container set to the immediate base type of + the type in which occurs. However, the accessibility rules + are different: protected members of the base type will be visible. + + Consider the following example: + + public class Base + { + protected void M() { } + } + + public class Derived : Base + { + void Test(Base b) + { + b.M(); // Error - cannot access protected member. + base.M(); + } + } + + Protected members of an instance of another type are only accessible if the instance is known + to be "this" instance (as indicated by the "base" keyword). + + The character position for determining the enclosing declaration scope and + accessibility. + The name of the symbol to find. If null is specified then symbols + with any names are returned. + A list of symbols that were found. If no symbols were found, an empty list is returned. + + The "position" is used to determine what variables are visible and accessible. + + Non-reduced extension methods are considered, but reduced extension methods are not. + + + + + Gets the available named static member symbols in the context of the specified location and optional container. + Only members that are accessible and visible from the given location are returned. + + Non-reduced extension methods are considered, since they are static methods. + + The character position for determining the enclosing declaration scope and + accessibility. + The container to search for symbols within. If null then the enclosing declaration + scope around position is used. + The name of the symbol to find. If null is specified then symbols + with any names are returned. + A list of symbols that were found. If no symbols were found, an empty list is returned. + + The "position" is used to determine what variables are visible and accessible. Even if "container" is + specified, the "position" location is significant for determining which members of "containing" are + accessible. + + + + + Gets the available named namespace and type symbols in the context of the specified location and optional container. + Only members that are accessible and visible from the given location are returned. + + The character position for determining the enclosing declaration scope and + accessibility. + The container to search for symbols within. If null then the enclosing declaration + scope around position is used. + The name of the symbol to find. If null is specified then symbols + with any names are returned. + A list of symbols that were found. If no symbols were found, an empty list is returned. + + The "position" is used to determine what variables are visible and accessible. Even if "container" is + specified, the "position" location is significant for determining which members of "containing" are + accessible. + + Does not return INamespaceOrTypeSymbol, because there could be aliases. + + + + + Gets the available named label symbols in the context of the specified location and optional container. + Only members that are accessible and visible from the given location are returned. + + The character position for determining the enclosing declaration scope and + accessibility. + The name of the symbol to find. If null is specified then symbols + with any names are returned. + A list of symbols that were found. If no symbols were found, an empty list is returned. + + The "position" is used to determine what variables are visible and accessible. Even if "container" is + specified, the "position" location is significant for determining which members of "containing" are + accessible. + + + + + Gets the available named symbols in the context of the specified location and optional + container. Only symbols that are accessible and visible from the given location are + returned. + + The character position for determining the enclosing declaration + scope and accessibility. + The container to search for symbols within. If null then the + enclosing declaration scope around position is used. + The name of the symbol to find. If null is specified then symbols + with any names are returned. + Additional options that affect the lookup process. + Ignore 'throughType' in accessibility checking. + Used in checking accessibility of symbols accessed via 'MyBase' or 'base'. + + The "position" is used to determine what variables are visible and accessible. Even if + "container" is specified, the "position" location is significant for determining which + members of "containing" are accessible. + + Throws an argument exception if the passed lookup options are invalid. + + + + Determines if the symbol is accessible from the specified location. + + A character position used to identify a declaration scope and + accessibility. This character position must be within the FullSpan of the Root syntax + node in this SemanticModel. + + The symbol that we are checking to see if it accessible. + + True if "symbol is accessible, false otherwise. + + This method only checks accessibility from the point of view of the accessibility + modifiers on symbol and its containing types. Even if true is returned, the given symbol + may not be able to be referenced for other reasons, such as name hiding. + + + + + Field-like events can be used as fields in types that can access private + members of the declaring type of the event. + + + + + Analyze control-flow within a part of a method body. + + The first statement to be included in the analysis. + The last statement to be included in the analysis. + An object that can be used to obtain the result of the control flow analysis. + The two statements are not contained within the same statement list. + + + + Analyze control-flow within a part of a method body. + + The statement to be included in the analysis. + An object that can be used to obtain the result of the control flow analysis. + + + + Analyze data-flow within an expression. + + The expression within the associated SyntaxTree to analyze. + An object that can be used to obtain the result of the data flow analysis. + + + + Analyze data-flow within a part of a method body. + + The first statement to be included in the analysis. + The last statement to be included in the analysis. + An object that can be used to obtain the result of the data flow analysis. + The two statements are not contained within the same statement list. + + + + Analyze data-flow within a part of a method body. + + The statement to be included in the analysis. + An object that can be used to obtain the result of the data flow analysis. + + + + Get a SemanticModel object that is associated with a method body that did not appear in this source code. + Given must lie within an existing method body of the Root syntax node for this SemanticModel. + Locals and labels declared within this existing method body are not considered to be in scope of the speculated method body. + + A character position used to identify a declaration scope and accessibility. This + character position must be within the FullSpan of the Root syntax node in this SemanticModel and must be + within the FullSpan of a Method body within the Root syntax node. + A syntax node that represents a parsed method declaration. This method should not be + present in the syntax tree associated with this object, but must have identical signature to the method containing + the given in this SemanticModel. + A SemanticModel object that can be used to inquire about the semantic + information associated with syntax nodes within . + Flag indicating whether a speculative semantic model was created. + Throws this exception if the node is contained any SyntaxTree in the current Compilation + Throws this exception if is null. + Throws this exception if this model is a speculative semantic model, i.e. is true. + Chaining of speculative semantic model is not supported. + + + + Get a SemanticModel object that is associated with a method body that did not appear in this source code. + Given must lie within an existing method body of the Root syntax node for this SemanticModel. + Locals and labels declared within this existing method body are not considered to be in scope of the speculated method body. + + A character position used to identify a declaration scope and accessibility. This + character position must be within the FullSpan of the Root syntax node in this SemanticModel and must be + within the FullSpan of a Method body within the Root syntax node. + A syntax node that represents a parsed accessor declaration. This accessor should not be + present in the syntax tree associated with this object. + A SemanticModel object that can be used to inquire about the semantic + information associated with syntax nodes within . + Flag indicating whether a speculative semantic model was created. + Throws this exception if the node is contained any SyntaxTree in the current Compilation + Throws this exception if is null. + Throws this exception if this model is a speculative semantic model, i.e. is true. + Chaining of speculative semantic model is not supported. + + + + Get a SemanticModel object that is associated with a type syntax node that did not appear in + this source code. This can be used to get detailed semantic information about sub-parts + of a type syntax that did not appear in source code. + + A character position used to identify a declaration scope and accessibility. This + character position must be within the FullSpan of the Root syntax node in this SemanticModel. + + A syntax node that represents a parsed expression. This expression should not be + present in the syntax tree associated with this object. + Indicates whether to bind the expression as a full expression, + or as a type or namespace. + A SemanticModel object that can be used to inquire about the semantic + information associated with syntax nodes within . + Flag indicating whether a speculative semantic model was created. + Throws this exception if the node is contained any SyntaxTree in the current Compilation + Throws this exception if is null. + Throws this exception if this model is a speculative semantic model, i.e. is true. + Chaining of speculative semantic model is not supported. + + + + Get a SemanticModel object that is associated with a statement that did not appear in + this source code. This can be used to get detailed semantic information about sub-parts + of a statement that did not appear in source code. + + A character position used to identify a declaration scope and accessibility. This + character position must be within the FullSpan of the Root syntax node in this SemanticModel. + A syntax node that represents a parsed statement. This statement should not be + present in the syntax tree associated with this object. + A SemanticModel object that can be used to inquire about the semantic + information associated with syntax nodes within . + Flag indicating whether a speculative semantic model was created. + Throws this exception if the node is contained any SyntaxTree in the current Compilation + Throws this exception if is null. + Throws this exception if this model is a speculative semantic model, i.e. is true. + Chaining of speculative semantic model is not supported. + + + + Get a SemanticModel object that is associated with an initializer that did not appear in + this source code. This can be used to get detailed semantic information about sub-parts + of a field initializer or default parameter value that did not appear in source code. + + A character position used to identify a declaration scope and accessibility. This + character position must be within the FullSpan of the Root syntax node in this SemanticModel. + + A syntax node that represents a parsed initializer. This initializer should not be + present in the syntax tree associated with this object. + A SemanticModel object that can be used to inquire about the semantic + information associated with syntax nodes within . + Flag indicating whether a speculative semantic model was created. + Throws this exception if the node is contained any SyntaxTree in the current Compilation. + Throws this exception if is null. + Throws this exception if this model is a speculative semantic model, i.e. is true. + Chaining of speculative semantic model is not supported. + + + + Get a SemanticModel object that is associated with an expression body that did not appear in + this source code. This can be used to get detailed semantic information about sub-parts + of an expression body that did not appear in source code. + + A character position used to identify a declaration scope and accessibility. This + character position must be within the FullSpan of the Root syntax node in this SemanticModel. + + A syntax node that represents a parsed expression body. This node should not be + present in the syntax tree associated with this object. + A SemanticModel object that can be used to inquire about the semantic + information associated with syntax nodes within . + Flag indicating whether a speculative semantic model was created. + Throws this exception if the node is contained any SyntaxTree in the current Compilation. + Throws this exception if is null. + Throws this exception if this model is a speculative semantic model, i.e. is true. + Chaining of speculative semantic model is not supported. + + + + Get a SemanticModel object that is associated with a constructor initializer that did not appear in + this source code. This can be used to get detailed semantic information about sub-parts + of a constructor initializer that did not appear in source code. + + NOTE: This will only work in locations where there is already a constructor initializer. + + A character position used to identify a declaration scope and accessibility. This + character position must be within the FullSpan of the Root syntax node in this SemanticModel. + Furthermore, it must be within the span of an existing constructor initializer. + + A syntax node that represents a parsed constructor initializer. + This node should not be present in the syntax tree associated with this object. + A SemanticModel object that can be used to inquire about the semantic + information associated with syntax nodes within . + Flag indicating whether a speculative semantic model was created. + Throws this exception if the node is contained any SyntaxTree in the current Compilation. + Throws this exception if is null. + Throws this exception if this model is a speculative semantic model, i.e. is true. + Chaining of speculative semantic model is not supported. + + + + Get a SemanticModel object that is associated with a cref that did not appear in + this source code. This can be used to get detailed semantic information about sub-parts + of a cref that did not appear in source code. + + NOTE: This will only work in locations where there is already a cref. + + A character position used to identify a declaration scope and accessibility. This + character position must be within the FullSpan of the Root syntax node in this SemanticModel. + Furthermore, it must be within the span of an existing cref. + + A syntax node that represents a parsed cref syntax. + This node should not be present in the syntax tree associated with this object. + A SemanticModel object that can be used to inquire about the semantic + information associated with syntax nodes within . + Flag indicating whether a speculative semantic model was created. + Throws this exception if the node is contained any SyntaxTree in the current Compilation. + Throws this exception if is null. + Throws this exception if this model is a speculative semantic model, i.e. is true. + Chaining of speculative semantic model is not supported. + + + + Get a SemanticModel object that is associated with an attribute that did not appear in + this source code. This can be used to get detailed semantic information about sub-parts + of an attribute that did not appear in source code. + + A character position used to identify a declaration scope and accessibility. This + character position must be within the FullSpan of the Root syntax node in this SemanticModel. + A syntax node that represents a parsed attribute. This attribute should not be + present in the syntax tree associated with this object. + A SemanticModel object that can be used to inquire about the semantic + information associated with syntax nodes within . + Flag indicating whether a speculative semantic model was created. + Throws this exception if the node is contained any SyntaxTree in the current Compilation. + Throws this exception if is null. + Throws this exception if this model is a speculative semantic model, i.e. is true. + Chaining of speculative semantic model is not supported. + + + + If this is a speculative semantic model, then returns its parent semantic model. + Otherwise, returns null. + + + + + The SyntaxTree that this object is associated with. + + + + + Determines what type of conversion, if any, would be used if a given expression was + converted to a given type. If isExplicitInSource is true, the conversion produced is + that which would be used if the conversion were done for a cast expression. + + An expression which much occur within the syntax tree + associated with this object. + The type to attempt conversion to. + True if the conversion should be determined as for a cast expression. + Returns a Conversion object that summarizes whether the conversion was + possible, and if so, what kind of conversion it was. If no conversion was possible, a + Conversion object with a false "Exists" property is returned. + To determine the conversion between two types (instead of an expression and a + type), use Compilation.ClassifyConversion. + + + + Determines what type of conversion, if any, would be used if a given expression was + converted to a given type. If isExplicitInSource is true, the conversion produced is + that which would be used if the conversion were done for a cast expression. + + The character position for determining the enclosing declaration + scope and accessibility. + The expression to classify. This expression does not need to be + present in the syntax tree associated with this object. + The type to attempt conversion to. + True if the conversion should be determined as for a cast expression. + Returns a Conversion object that summarizes whether the conversion was + possible, and if so, what kind of conversion it was. If no conversion was possible, a + Conversion object with a false "Exists" property is returned. + To determine the conversion between two types (instead of an expression and a + type), use Compilation.ClassifyConversion. + + + + Determines what type of conversion, if any, would be used if a given expression was + converted to a given type using an explicit cast. + + An expression which much occur within the syntax tree + associated with this object. + The type to attempt conversion to. + Returns a Conversion object that summarizes whether the conversion was + possible, and if so, what kind of conversion it was. If no conversion was possible, a + Conversion object with a false "Exists" property is returned. + To determine the conversion between two types (instead of an expression and a + type), use Compilation.ClassifyConversion. + + + + Determines what type of conversion, if any, would be used if a given expression was + converted to a given type using an explicit cast. + + The character position for determining the enclosing declaration + scope and accessibility. + The expression to classify. This expression does not need to be + present in the syntax tree associated with this object. + The type to attempt conversion to. + Returns a Conversion object that summarizes whether the conversion was + possible, and if so, what kind of conversion it was. If no conversion was possible, a + Conversion object with a false "Exists" property is returned. + To determine the conversion between two types (instead of an expression and a + type), use Compilation.ClassifyConversion. + + + + Given a member declaration syntax, get the corresponding symbol. + + The syntax node that declares a member. + The cancellation token. + The symbol that was declared. + + NOTE: We have no GetDeclaredSymbol overloads for following subtypes of MemberDeclarationSyntax: + NOTE: (1) GlobalStatementSyntax as they don't declare any symbols. + NOTE: (2) IncompleteMemberSyntax as there are no symbols for incomplete members. + NOTE: (3) BaseFieldDeclarationSyntax or its subtypes as these declarations can contain multiple variable declarators. + NOTE: GetDeclaredSymbol should be called on the variable declarators directly. + + + + + Given a namespace declaration syntax node, get the corresponding namespace symbol for + the declaration assembly. + + The syntax node that declares a namespace. + The cancellation token. + The namespace symbol that was declared by the namespace declaration. + + + + Given a type declaration, get the corresponding type symbol. + + The syntax node that declares a type. + The cancellation token. + The type symbol that was declared. + + NOTE: We have no GetDeclaredSymbol overloads for subtypes of BaseTypeDeclarationSyntax as all of them return a NamedTypeSymbol. + + + + + Given a delegate declaration, get the corresponding type symbol. + + The syntax node that declares a delegate. + The cancellation token. + The type symbol that was declared. + + + + Given a enum member declaration, get the corresponding field symbol. + + The syntax node that declares an enum member. + The cancellation token. + The symbol that was declared. + + + + Given a base method declaration syntax, get the corresponding method symbol. + + The syntax node that declares a method. + The cancellation token. + The symbol that was declared. + + NOTE: We have no GetDeclaredSymbol overloads for subtypes of BaseMethodDeclarationSyntax as all of them return a MethodSymbol. + + + + + Given a syntax node that declares a property, indexer or an event, get the corresponding declared symbol. + + The syntax node that declares a property, indexer or an event. + The cancellation token. + The symbol that was declared. + + + + Given a syntax node that declares a property, get the corresponding declared symbol. + + The syntax node that declares a property. + The cancellation token. + The symbol that was declared. + + + + Given a syntax node that declares an indexer, get the corresponding declared symbol. + + The syntax node that declares an indexer. + The cancellation token. + The symbol that was declared. + + + + Given a syntax node that declares a (custom) event, get the corresponding event symbol. + + The syntax node that declares a event. + The cancellation token. + The symbol that was declared. + + + + Given a syntax node of anonymous object creation initializer, get the anonymous object property symbol. + + The syntax node that declares a property. + The cancellation token. + The symbol that was declared. + + + + Given a syntax node of anonymous object creation expression, get the anonymous object type symbol. + + The syntax node that declares an anonymous object. + The cancellation token. + The symbol that was declared. + + + + Given a syntax node that declares a property or member accessor, get the corresponding + symbol. + + The syntax node that declares an accessor. + The cancellation token. + The symbol that was declared. + + + + Given a syntax node that declares an expression body, get the corresponding symbol. + + The syntax node that declares an expression body. + The cancellation token. + The symbol that was declared. + + + + Given a variable declarator syntax, get the corresponding symbol. + + The syntax node that declares a variable. + The cancellation token. + The symbol that was declared. + + + + Given a labeled statement syntax, get the corresponding label symbol. + + The syntax node of the labeled statement. + The cancellation token. + The label symbol for that label. + + + + Given a switch label syntax, get the corresponding label symbol. + + The syntax node of the switch label. + The cancellation token. + The label symbol for that label. + + + + Given a using declaration get the corresponding symbol for the using alias that was + introduced. + + + The cancellation token. + The alias symbol that was declared. + + If the using directive is an error because it attempts to introduce an alias for which an existing alias was + previously declared in the same scope, the result is a newly-constructed AliasSymbol (i.e. not one from the + symbol table). + + + + + Given an extern alias declaration get the corresponding symbol for the alias that was introduced. + + + The cancellation token. + The alias symbol that was declared, or null if a duplicate alias symbol was declared. + + + + Given a parameter declaration syntax node, get the corresponding symbol. + + The syntax node that declares a parameter. + The cancellation token. + The parameter that was declared. + + + + Given a base field declaration syntax, get the corresponding symbols. + + The syntax node that declares one or more fields or events. + The cancellation token. + The symbols that were declared. + + + + Given a type parameter declaration (field or method), get the corresponding symbol + + The cancellation token. + + + + + Given a foreach statement, get the symbol for the iteration variable + + The cancellation token. + + + + + Given a catch declaration, get the symbol for the exception variable + + The cancellation token. + + + + + Get the query range variable declared in a join into clause. + + + + + Get the query range variable declared in a query continuation clause. + + + + + Returns a list of accessible, non-hidden indexers that could be invoked with the given expression + as a receiver. + + + If the given expression is an indexer access, then this method will return the list of indexers + that could be invoked on the result, not the list of indexers that were considered. + + + + + The method group can contain "duplicate" symbols that we do not want to display in the IDE analysis. + + For example, there could be an overriding virtual method and the method it overrides both in + the method group. This, strictly speaking, is a violation of the C# specification because we are + supposed to strip out overriding methods from the method group before overload resolution; overload + resolution is supposed to treat overridden methods as being methods of the less derived type. However, + in the IDE we want to display information about the overriding method, not the overridden method, and + therefore we leave both in the method group. The overload resolution algorithm has been written + to handle this departure from the specification. + + Similarly, we might have two methods in the method group where one is a "new" method that hides + another. Again, in overload resolution this would be handled by the rule that says that methods + declared on more derived types take priority over methods declared on less derived types. Both + will be in the method group, but in the IDE we want to only display information about the + hiding method, not the hidden method. + + We can also have "diamond" inheritance of interfaces leading to multiple copies of the same + method ending up in the method group: + + interface IB { void M(); } + interface IL : IB {} + interface IR : IB {} + interface ID : IL, IR {} + ... + id.M(); + + We only want to display one symbol in the IDE, even if the member lookup algorithm is unsophisticated + and puts IB.M in the member group twice. (Again, this is a mild spec violation since a method group + is supposed to be a set, without duplicates.) + + Finally, the interaction of multiple inheritance of interfaces and hiding can lead to some subtle + situations. Suppose we make a slight modification to the scenario above: + + interface IL : IB { new void M(); } + + Again, we only want to display one symbol in the method group. The fact that there is a "path" + to IB.M from ID via IR is irrelevant; if the symbol IB.M is hidden by IL.M then it is hidden + in ID, period. + + + + + Get the semantic info of a named argument in an invocation-like expression. + + + + + Find the first parameter named "argumentName". + + + + + If the call represents an extension method invocation with an explicit receiver, return the original + methods as ReducedExtensionMethodSymbols. Otherwise, return the original methods unchanged. + + + + + If the call represents an extension method with an explicit receiver, return a + ReducedExtensionMethodSymbol if it can be constructed. Otherwise, return the + original call method. + + + + + Gets for each statement info. + + The node. + + + + Gets await expression info. + + The node. + + + + If the given node is within a preprocessing directive, gets the preprocessing symbol info for it. + + Preprocessing symbol identifier node. + + + + Options to control the internal working of GetSymbolInfoWorker. Not currently exposed + to public clients, but could be if desired. + + + + + When binding "C" new C(...), return the type C and do not return information about + which constructor was bound to. Bind "new C(...)" to get information about which constructor + was chosen. + + + + + When binding "C" new C(...), return the constructor of C that was bound to, if C unambiguously + binds to a single type with at least one constructor. + + + + + When binding a name X that was declared with a "using X=OtherTypeOrNamespace", return OtherTypeOrNamespace. + + + + + When binding a name X that was declared with a "using X=OtherTypeOrNamespace", return the alias symbol X. + + + + + Given a position in the SyntaxTree for this SemanticModel returns the innermost + NamedType that the position is considered inside of. + + + + + Structure containing all semantic information about a for each statement. + + + + + Gets the "GetEnumerator" method. + + + + + Gets the "MoveNext" method. + + + + + Gets the "Current" property. + + + + + Gets the "Dispose" method. + + + + + The intermediate type to which the output of the is converted + before being converted to the iteration variable type. + + + As you might hope, for an array, it is the element type of the array. + + + + + The conversion from the to the iteration variable type. + + + May be user-defined. + + + + + The conversion from the type of the to the . + + + + + Initializes a new instance of the structure. + + + + + A binding for a field initializer, property initializer, constructor + initializer, or a parameter default value. + Represents the result of binding a value expression rather than a + block (for that, use a ). + + + + + Creates a SemanticModel for a true field initializer (field = value) of a named type (incl. Enums). + + + + + Creates a SemanticModel for an autoprop initializer of a named type + + + + + Creates a SemanticModel for a constructor initializer (": this(...)" or ": base(...)"). + + + + + Creates a SemanticModel for a constructor initializer (": base-class(...)"). + + + + + Creates a SemanticModel for a parameter default value. + + + + + Creates a speculative SemanticModel for an initializer node (field initializer, constructor initializer, or parameter default value) + that did not appear in the original source code. + + + + This is an implementation of a special symbol comparer, which is supposed to be used for + sorting original definition symbols (explicitly or explicitly declared in source within the same + container) in lexical order of their declarations. It will not work on anything that uses non-source locations. + + + + + Binding info for expressions and statements that are part of a member declaration. + + + + + The member symbol + + + + + This overload exists for callers who + a) Already have a node in hand and don't want to search through the tree + b) May want to search from an indirect container (e.g. node containing node + containing position). + + + + + Get the bound node corresponding to the root. + + + + + Get the highest bound node in the tree associated with a particular syntax node. + + + + + Get the lowest bound node in the tree associated with a particular syntax node. Lowest is defined as last + in a pre-order traversal of the bound tree. + + + + + Returned binder doesn't need to have set - the caller will add it. + + + + + Performs the same function as GetEnclosingBinder, but is known to take place within a + specified lambda. Walks up the syntax hierarchy until a node with an associated binder + is found. + + + CONSIDER: can this share code with MemberSemanticModel.GetEnclosingBinder? + + Returned binder doesn't need to have set - the caller will add it. + + + + + Get all bounds nodes associated with a node, ordered from highest to lowest in the bound tree. + Strictly speaking, the order is that of a pre-order traversal of the bound tree. + + + + + If the node is an expression, return the nearest parent node + with semantic meaning. Otherwise return null. + + + + + The incremental binder is used when binding statements. Whenever a statement + is bound, it checks the bound node cache to see if that statement was bound, + and returns it instead of rebinding it. + + For example, we might have: + while (x > foo()) + { + y = y * x; + z = z + y; + } + + We might first get semantic info about "z", and thus bind just the statement + "z = z + y". Later, we might bind the entire While block. While binding the while + block, we can reuse the binding we did of "z = z + y". + + + NOTE: any member overridden by this binder should follow the BuckStopsHereBinder pattern. + Otherwise, a subsequent binder in the chain could suppress the caching behavior. + + + + + We override GetBinder so that the BindStatement override is still + in effect on nested binders. + + + + + Walks the bound tree and adds all non compiler generated bound nodes whose syntax matches the given one + to the cache. + + The root of the bound tree. + The cache. + The syntax node where to add bound nodes for. + + + + Decides whether to the add the bound node to the cache or not. + + The bound node. + + + + Allows asking semantic questions about a TypeSyntax (or its descendants) within a member, that did not appear in the original source code. + Typically, an instance is obtained by a call to SemanticModel.TryGetSpeculativeSemanticModel. + + + + + Creates a speculative SemanticModel for a TypeSyntax node at a position within an existing MemberSemanticModel. + + + + + Creates a SemanticModel that creates and owns the ExecutableCodeBinder for the method of which it is a model. + + + + + Creates a speculative SemanticModel for a method body that did not appear in the original source code. + + + + + Creates a speculative SemanticModel for an expression body that did not appear in the original source code. + + + + + Semantic information associated with a query clause in a C# query expression. + + + + + The .Cast<T>() operation generated from the query range variable's type restriction, + or null if the type restriction isn't specified. + + + The operation, when present is implemented via . + To access the type, when this is non-null use [0]. + If it is an extension method, it is returned in reduced form. + + + + + The operation (e.g. Select(), Where(), etc) that implements the given clause. + + + The clause can be implemented via , or + or that return a delegate. + If it is an extension method, it is returned in reduced form. + + + + + Allows asking semantic questions about a tree of syntax nodes that did not appear in the original source code. + Typically, an instance is obtained by a call to SemanticModel.TryGetSpeculativeSemanticModel. + + + + + Allows asking semantic questions about any node in a SyntaxTree within a Compilation. + + + Allows asking semantic questions about any node in a SyntaxTree within a Compilation. + + + + + The compilation this object was obtained from. + + + + + The root node of the syntax tree that this object is associated with. + + + + + The SyntaxTree that this object is associated with. + + + + + Returns true if this is a SemanticModel that ignores accessibility rules when answering semantic questions. + + + + + Gets the enclosing binder associated with the node + + + + + + + Given a namespace declaration syntax node, get the corresponding namespace symbol for the declaration + assembly. + + The syntax node that declares a namespace. + The cancellation token. + The namespace symbol that was declared by the namespace declaration. + + + + Given a type declaration, get the corresponding type symbol. + + The syntax node that declares a type. + The cancellation token. + The type symbol that was declared. + + NOTE: We have no GetDeclaredSymbol overloads for subtypes of BaseTypeDeclarationSyntax as all of them return a NamedTypeSymbol. + + + + + Given a delegate declaration, get the corresponding type symbol. + + The syntax node that declares a delegate. + The cancellation token. + The type symbol that was declared. + + + + Given an member declaration syntax, get the corresponding symbol. + + The syntax node that declares a member. + The cancellation token. + The symbol that was declared. + + NOTE: We have no GetDeclaredSymbol overloads for following subtypes of MemberDeclarationSyntax: + NOTE: (1) GlobalStatementSyntax as they don't declare any symbols. + NOTE: (2) IncompleteMemberSyntax as there are no symbols for incomplete members. + NOTE: (3) BaseFieldDeclarationSyntax or its subtypes as these declarations can contain multiple variable declarators. + NOTE: GetDeclaredSymbol should be called on the variable declarators directly. + + + + + Given a enum member declaration, get the corresponding field symbol. + + The syntax node that declares an enum member. + The cancellation token. + The symbol that was declared. + + + + Given a base method declaration syntax, get the corresponding method symbol. + + The syntax node that declares a method. + The cancellation token. + The symbol that was declared. + + NOTE: We have no GetDeclaredSymbol overloads for subtypes of BaseMethodDeclarationSyntax as all of them return a MethodSymbol. + + + + + Given a syntax node that declares a property, indexer or an event, get the corresponding declared symbol. + + The syntax node that declares a property, indexer or an event. + The cancellation token. + The symbol that was declared. + + + + Given a syntax node that declares a property, get the corresponding declared symbol. + + The syntax node that declares a property, indexer or an event. + The cancellation token. + The symbol that was declared. + + + + Given a syntax node that declares an indexer, get the corresponding declared symbol. + + The syntax node that declares an indexer. + The cancellation token. + The symbol that was declared. + + + + Given a syntax node that declares a (custom) event, get the corresponding event symbol. + + The syntax node that declares a event. + The cancellation token. + The symbol that was declared. + + + + Given an syntax node that declares a property or member accessor, get the corresponding symbol. + + The syntax node that declares an accessor. + The cancellation token. + The symbol that was declared. + + + + Finds the member in the containing symbol which is inside the given declaration span. + + + + + Given an variable declarator syntax, get the corresponding symbol. + + The syntax node that declares a variable. + The cancellation token. + The symbol that was declared. + + + + Given a labeled statement syntax, get the corresponding label symbol. + + The syntax node of the labeled statement. + The cancellation token. + The label symbol for that label. + + + + Given a switch label syntax, get the corresponding label symbol. + + The syntax node of the switch label. + The cancellation token. + The label symbol for that label. + + + + Given a using declaration get the corresponding symbol for the using alias that was introduced. + + + The cancellation token. + The alias symbol that was declared. + + If the using directive is an error because it attempts to introduce an alias for which an existing alias was + previously declared in the same scope, the result is a newly-constructed AliasSymbol (i.e. not one from the + symbol table). + + + + + Given an extern alias declaration get the corresponding symbol for the alias that was introduced. + + + The cancellation token. + The alias symbol that was declared, or null if a duplicate alias symbol was declared. + + + + Given a base field declaration syntax, get the corresponding symbols. + + The syntax node that declares one or more fields or events. + The cancellation token. + The field symbols that were declared. + + + + Given an parameter declaration syntax node, get the corresponding symbol. + + The syntax node that declares a parameter. + The cancellation token. + The parameter that was declared. + + + + Given a type parameter declaration (field or method), get the corresponding symbol + + + The cancellation token. + + + + + The type of the expression represented by the syntax node. For expressions that do not + have a type, null is returned. If the type could not be determined due to an error, than + an object derived from ErrorTypeSymbol is returned. + + + + + The type of the expression after it has undergone an implicit conversion. If the type + did not undergo an implicit conversion, returns the same as Type. + + + + + If the expression underwent an implicit conversion, return information about that + conversion. Otherwise, returns an identity conversion. + + + + + Manages anonymous types created in owning compilation. All requests for + anonymous type symbols go via the instance of this class. + + + Manages anonymous types created on module level. All requests for anonymous type symbols + go via the instance of this class, the symbol will be either created or returned from cache. + + + + + Represents an anonymous type constructor. + + + + + Represents a getter for anonymous type property. + + + + + Represents an anonymous type 'Equals' method. + + + + + Represents an anonymous type 'GetHashCode' method. + + + + + Represents an anonymous type 'ToString' method. + + + + + Current compilation + + + + + Given anonymous type descriptor provided constructs an anonymous type symbol. + + + + + Get a symbol of constructed anonymous type property by property index + + + + + Retrieves anonymous type properties types + + + + + Given an anonymous type and new field types construct a new anonymous type symbol; + a new type symbol will reuse type descriptor from the constructed type with new type arguments. + + + + + Logical equality on anonymous types that ignores custom modifiers and/or the object/dynamic distinction. + Differs from IsSameType for arrays, pointers, and generic instantiations. + + + + + Reports all use site errors in special or well known symbols required for anonymous types + + true if there was at least one error + + + + Cache of created anonymous type templates used as an implementation of anonymous + types in emit phase. + + + + + Maps delegate signature shape (number of parameters and their ref-ness) to a synthesized generic delegate symbol. + Unlike anonymous types synthesized delegates are not available through symbol APIs. They are only used in lowered bound trees. + Currently used for dynamic call-site sites whose signature doesn't match any of the well-known Func or Action types. + + + + + Given anonymous type provided constructs an implementation type symbol to be used in emit phase; + if the anonymous type has at least one field the implementation type symbol will be created based on + a generic type template generated for each 'unique' anonymous type structure, otherwise the template + type will be non-generic. + + + + + Resets numbering in anonymous type names and compiles the + anonymous type methods. Also seals the collection of templates. + + + + + The set of anonymous type templates created by + this AnonymousTypeManager, in fixed order. + + + + + The set of synthesized delegates created by + this AnonymousTypeManager. + + + + + Returns all templates owned by this type manager + + + + + Returns true if the named type is an implementation template for an anonymous type + + + + + Retrieves methods of anonymous type template which are not placed to symbol table. + In current implementation those are overridden 'ToString', 'Equals' and 'GetHashCode' + + + + + Translates anonymous type public symbol into an implementation type symbol to be used in emit. + + + + + Translates anonymous type method symbol into an implementation method symbol to be used in emit. + + + + + Comparator being used for stable ordering in anonymous type indices. + + + + + Represents an anonymous type 'public' symbol which is used in binding and lowering. + In emit phase it is being substituted with implementation symbol. + + + + Properties defined in the type + + + Maps member names to symbol(s) + + + Anonymous type manager owning this template + + + Anonymous type descriptor + + + + Represents a baking field for an anonymous type template property symbol. + + + + + Represents an anonymous type template's property symbol. + + + + + Represents a base implementation for anonymous type synthesized methods. + + + + + Represents an anonymous type 'template' which is a generic type to be used for all + anonymous type having the same structure, i.e. the same number of fields and field names. + + + + Name to be used as metadata name during emit + + + This list consists of synthesized method symbols for ToString, + Equals and GetHashCode which are not part of symbol table + + + Properties defined in the template + + + Maps member names to symbol(s) + + + Anonymous type manager owning this template + + + Smallest location of the template, actually contains the smallest location + of all the anonymous type instances created using this template during EMIT + + + Key pf the anonymous type descriptor + + + + Smallest location of the template, actually contains the smallest location + of all the anonymous type instances created using this template during EMIT; + + NOTE: if this property is queried, smallest location must not be null. + + + + + In emit phase every time a created anonymous type is referenced we try to store the lowest + location of the template. It will be used for ordering templates and assigning emitted type names. + + + + + Returns a synthesized debugger display attribute or null if one + could not be synthesized. + + + + + Represents an anonymous type template's type parameter. + + + + + Represents a compiler generated synthesized method symbol + representing string switch hash function + + + + + Compute the hashcode of a sub string using FNV-1a + See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + + + This method should be kept consistent with MethodBodySynthesizer.ConstructStringSwitchHashFunctionBody + The control flow in this method mimics lowered "for" loop. It is exactly what we want to emit + to ensure that JIT can do range check hoisting. + + + + + When C# interface implementation differs from CLR interface implementation, + we insert a synthesized explicit interface implementation that delegates + to the method that C# considers an implicit implementation. + There are two key scenarios for this: + 1) A single source method is implicitly implementing one or more interface + methods from metadata and the interface methods have different custom + modifiers. In this case, we explicitly implement the interface methods + and have (all) implementations delegate to the source method. + 2) A non-virtual, non-source method in a base type is implicitly implementing + an interface method. Since we can't change the "virtualness" of the + non-source method, we introduce an explicit implementation that delegates + to it instead. + + + + + Given a SynthesizedExplicitImplementationMethod (effectively a tuple (interface method, implementing method, implementing type)), + construct a BoundBlock body. Consider the tuple (Interface.Foo, Base.Foo, Derived). The generated method will look like: + + R Interface.Foo<T1, T2, ...>(A1 a1, A2 a2, ...) + { + //don't return the output if the return type is void + return this.Foo<T1, T2, ...>(a1, a2, ...); + } + + + + + If a sealed override property defines fewer accessors than the + original virtual property, it is necessary to synthesize a sealed + accessor so that the accessor will not be overridable from metadata. + + + + + Given a SynthesizedSealedPropertyAccessor (an accessor with a reference to the accessor it overrides), + construct a BoundBlock body. + + + + + a bound node rewriter that rewrites types properly (which in some cases the automatically-generated + base class does not). This is used in the lambda rewriter, the iterator rewriter, and the async rewriter. + + + + + A wrapper method that is created for non-virtually calling a base-class + virtual method from other classes (like those created for lambdas...). + + + + + Given a SynthesizedSealedPropertyAccessor (an accessor with a reference to the accessor it overrides), + construct a BoundBlock body. + + + + A not-null collection of synthesized methods generated for the current source type. + + + + Returns true if the specified local/parameter needs to be hoisted to a field. + Variable may be hoisted even if it is not captured, to improve debugging experience. + + + + + Contains methods related to synthesizing bound nodes in lowered form + that does not need any processing before passing to codegen + + + + + Construct a body for a method containing a call to a single other method with the same signature (modulo name). + + Bound node factory. + Method to invoke in constructed body. + True for "base.", false for "this.". + Body for implementedMethod. + + + + An ArrayTypeSymbol represents an array type, such as int[] or object[,]. + + + + + Gets the list of custom modifiers associated with the array. + Returns an empty list if there are no custom modifiers. + + + + + Gets the number of dimensions of the array. A regular single-dimensional array + has rank 1, a two-dimensional array has rank 2, etc. + + + + + Is this zero-based one-dimensional array, i.e. SZArray in CLR terms. + + + + + Specified sizes for dimensions, by position. The length can be less than , + meaning that some trailing dimensions don't have the size specified. + The most common case is none of the dimensions have the size specified - an empty array is returned. + + + + + Specified lower bounds for dimensions, by position. The length can be less than , + meaning that some trailing dimensions don't have the lower bound specified. + The most common case is all dimensions are zero bound - a null array is returned in this case. + + + + + Note, equality should be checked separately!!! + + + + + Normally C# arrays have default sizes and lower bounds - sizes are not specified and all dimensions are zero bound. + This property should return false for any deviations. + + + + + Gets the type of the elements stored in the array. + + + + + Represents SZARRAY - zero-based one-dimensional array + + + + + Represents MDARRAY - multi-dimensional array (possibly of rank 1) + + + + + Represents an attribute applied to a Symbol. + + + + + Gets the attribute class being applied. + + + + + Gets the constructor used in this application of the attribute. + + + + + Gets a reference to the source for this application of the attribute. Returns null for applications of attributes on metadata Symbols. + + + + + Gets the list of constructor arguments specified by this application of the attribute. This list contains both positional arguments + and named arguments that are formal parameters to the constructor. + + + + + Gets the list of named field or property value arguments specified by this application of the attribute. + + + + + Compares the namespace and type name with the attribute's namespace and type name. + Returns true if they are the same. + + + + + Checks if an applied attribute with the given attributeType matches the namespace name and type name of the given early attribute's description + and the attribute description has a signature with parameter count equal to the given attribute syntax's argument list count. + NOTE: We don't allow early decoded attributes to have optional parameters. + + + + + Returns the that represents the current AttributeData. + + A that represents the current AttributeData. + + + + Gets the attribute class being applied as an + + + + + Gets the constructor used in this application of the attribute as an . + + + + + Gets a reference to the source for this application of the attribute. Returns null for applications of attributes on metadata Symbols. + + + + + Decodes PermissionSetAttribute applied in source to determine if it needs any fixup during codegen. + + + PermissionSetAttribute needs fixup when it contains an assignment to the 'File' property as a single named attribute argument. + Fixup performed is ported from SecurityAttributes::FixUpPermissionSetAttribute. + It involves following steps: + 1) Verifying that the specified file name resolves to a valid path. + 2) Reading the contents of the file into a byte array. + 3) Convert each byte in the file content into two bytes containing hexadecimal characters. + 4) Replacing the 'File = fileName' named argument with 'Hex = hexFileContent' argument, where hexFileContent is the converted output from step 3) above. + + Step 1) is performed in this method, i.e. during binding. + Remaining steps are performed during serialization as we want to avoid retaining the entire file contents throughout the binding/codegen pass. + See for remaining fixup steps. + + String containing the resolved file path if PermissionSetAttribute needs fixup during codegen, null otherwise. + + + + This method determines if an applied attribute must be emitted. + Some attributes appear in symbol model to reflect the source code, + but should not be emitted. + + + + + Represents a custom modifier (modopt/modreq). + + + + + A type used as a tag that indicates which type of modification applies. + + + + + Represents an event. + + + + + The original definition of this symbol. If this symbol is constructed from another + symbol by type substitution then OriginalDefinition gets the original symbol as it was defined in + source or metadata. + + + + + The type of the event. + + + + + The 'add' accessor of the event. Null only in error scenarios. + + + + + The 'remove' accessor of the event. Null only in error scenarios. + + + + + True if this is a Windows Runtime-style event. + + A normal C# event, "event D E", has accessors + void add_E(D d) + void remove_E(D d) + + A Windows Runtime event, "event D E", has accessors + EventRegistrationToken add_E(D d) + void remove_E(EventRegistrationToken t) + + + + + True if this symbol has a special name (metadata flag SpecialName is set). + + + + + Gets the attributes on event's associated field, if any. + Returns an empty if + there are no attributes. + + + This publicly exposes the attributes of the internal backing field. + + + + + Returns the overridden event, or null. + + + + + Source: Was the member name qualified with a type name? + Metadata: Is the member an explicit implementation? + + + Will not always agree with ExplicitInterfaceImplementations.Any() + (e.g. if binding of the type part of the name fails). + + + + + Returns interface events explicitly implemented by this event. + + + Events imported from metadata can explicitly implement more than one event. + + + + + Gets the kind of this symbol. + + + + + Implements visitor pattern. + + + + + Represents a field in a class, struct or enum + + + + + The original definition of this symbol. If this symbol is constructed from another + symbol by type substitution then OriginalDefinition gets the original symbol as it was defined in + source or metadata. + + + + + Gets the type of this field. + + + + + Gets the list of custom modifiers, if any, associated with the field. + + + + + If this field serves as a backing variable for an automatically generated + property or a field-like event, returns that + property/event. Otherwise returns null. + Note, the set of possible associated symbols might be expanded in the future to + reflect changes in the languages. + + + + + Returns true if this field was declared as "readonly". + + + + + Returns true if this field was declared as "volatile". + + + + + Returns true if this field was declared as "fixed". + Note that for a fixed-size buffer declaration, this.Type will be a pointer type, of which + the pointed-to type will be the declared element type of the fixed-size buffer. + + + + + If IsFixed is true, the value between brackets in the fixed-size-buffer declaration. + If IsFixed is false FixedSize is 0. + Note that for fixed-a size buffer declaration, this.Type will be a pointer type, of which + the pointed-to type will be the declared element type of the fixed-size buffer. + + + + + If this.IsFixed is true, returns the underlying implementation type for the + fixed-size buffer when emitted. Otherwise returns null. + + + + + Returns true when field is a backing field for a captured frame pointer (typically "this"). + + + + + Returns true if this field was declared as "const" (i.e. is a constant declaration). + Also returns true for an enum member. + + + + + Returns false if the field wasn't declared as "const", or constant value was omitted or erroneous. + True otherwise. + + + + + If IsConst returns true, then returns the constant value of the field or enum member. If IsConst returns + false, then returns null. + + + + + Gets the kind of this symbol. + + + + + Returns false because field can't be abstract. + + + + + Returns false because field can't be defined externally. + + + + + Returns false because field can't be overridden. + + + + + Returns false because field can't be sealed. + + + + + Returns false because field can't be virtual. + + + + + True if this symbol has a special name (metadata flag SpecialName is set). + + + + + True if this symbol has a runtime-special name (metadata flag RuntimeSpecialName is set). + + + + + True if this field is not serialized (metadata flag NotSerialized is set). + + + + + True if this field has a pointer type. + + + By default we defer to this.Type.IsPointerType() + However in some cases this may cause circular dependency via binding a + pointer that points to the type that contains the current field. + Fortunately in those cases we do not need to force binding of the field's type + and can just check the declaration syntax if the field type is not yet known. + + + + + Describes how the field is marshalled when passed to native code. + Null if no specific marshalling information is available for the field. + + PE symbols don't provide this information and always return null. + + + + Returns the marshalling type of this field, or 0 if marshalling information isn't available. + + + By default this information is extracted from if available. + Since the compiler does only need to know the marshalling type of symbols that aren't emitted + PE symbols just decode the type from metadata and don't provide full marshalling information. + + + + + Offset assigned to the field when the containing type is laid out by the VM. + Null if unspecified. + + + + + Return error code that has highest priority while calculating use site error for this symbol. + + + + + Represents a method or method-like symbol (including constructor, + destructor, operator, or property/event accessor). + + + + + This method indicates whether or not the runtime will regard the method + as newslot (as indicated by the presence of the "newslot" modifier in the + signature). + WARN WARN WARN: We won't have a final value for this until declaration + diagnostics have been computed for all s, so pass + ignoringInterfaceImplementationChanges: true if you need a value sooner + and aren't concerned about tweaks made to satisfy interface implementation + requirements. + NOTE: Not ignoring changes can only result in a value that is more true. + + + + + This method indicates whether or not the runtime will regard the method + as virtual (as indicated by the presence of the "virtual" modifier in the + signature). + WARN WARN WARN: We won't have a final value for this until declaration + diagnostics have been computed for all s, so pass + ignoringInterfaceImplementationChanges: true if you need a value sooner + and aren't concerned about tweaks made to satisfy interface implementation + requirements. + NOTE: Not ignoring changes can only result in a value that is more true. + + + + + The original definition of this symbol. If this symbol is constructed from another + symbol by type substitution then OriginalDefinition gets the original symbol as it was defined in + source or metadata. + + + + + Gets what kind of method this is. There are several different kinds of things in the + C# language that are represented as methods. This property allow distinguishing those things + without having to decode the name of the method. + + + + + Returns the arity of this method, or the number of type parameters it takes. + A non-generic method has zero arity. + + + + + Returns whether this method is generic; i.e., does it have any type parameters? + + + + + Returns true if this method is an extension method. + + + + + True if this symbol has a special name (metadata flag SpecialName is set). + + + + + Misc implementation metadata flags (ImplFlags in metadata). + + + + + True if the type has declarative security information (HasSecurity flags). + + + + + Platform invoke information, or null if the method isn't a P/Invoke. + + + + + Declaration security information associated with this type, or null if there is none. + + + + + Marshalling information for return value (FieldMarshal in metadata). + + + + + True if the method calls another method containing security code (metadata flag RequiresSecurityObject is set). + + + A method can me marked as RequiresSecurityObject by applying the DynamicSecurityMethodAttribute in source. + DynamicSecurityMethodAttribute is a pseudo custom attribute defined as an internal class in System.Security namespace. + This attribute is set on certain security methods defined within mscorlib. + + + + + Returns true if this method hides base methods by name. This cannot be specified directly + in the C# language, but can be true for methods defined in other languages imported from + metadata. The equivalent of the "hidebyname" flag in metadata. + + + + + Returns whether this method is using CLI VARARG calling convention. This is used for C-style variable + argument lists. This is used extremely rarely in C# code and is represented using the undocumented "__arglist" keyword. + + Note that methods with "params" on the last parameter are indicated with the "IsParams" property on ParameterSymbol, and + are not represented with this property. + + + + + Returns whether this built-in operator checks for integer overflow. + + + + + Returns true if this method has no return type; i.e., returns "void". + + + + + Source: Returns whether this method is async; i.e., does it have the async modifier? + Metadata: Returns false; methods from metadata cannot be async. + + + + + Gets the return type of the method + + + + + Returns the type arguments that have been substituted for the type parameters. + If nothing has been substituted for a given type parameter, + then the type parameter itself is consider the type argument. + + + + + Get the type parameters on this method. If the method has not generic, + returns an empty list. + + + + + Call and throw if it returns false. + + + + + True if this type supports retrieving the this parameter + and false otherwise. Note that a return value of true does not guarantee a non-null + (e.g. fails for static methods). + + + + + Optimization: in many cases, the parameter count (fast) is sufficient and we + don't need the actual parameter symbols (slow). + + + The default implementation is always correct, but may be unnecessarily slow. + + + + + Gets the parameters of this method. If this method has no parameters, returns + an empty list. + + + + + Returns the method symbol that this method was constructed from. The resulting + method symbol + has the same containing type (if any), but has type arguments that are the same + as the type parameters (although its containing type might not). + + + + + Source: Was the member name qualified with a type name? + Metadata: Is the member an explicit implementation? + + + Will not always agree with ExplicitInterfaceImplementations.Any() + (e.g. if binding of the type part of the name fails). + + + + + Returns interface methods explicitly implemented by this method. + + + Methods imported from metadata can explicitly implement more than one method, + that is why return type is ImmutableArray. + + + + + Returns the list of custom modifiers, if any, associated with the returned value. + + + + + Gets the attributes on method's return type. + Returns an empty array if there are no attributes. + + + + + If this method has MethodKind of MethodKind.PropertyGet or MethodKind.PropertySet, + returns the property that this method is the getter or setter for. + If this method has MethodKind of MethodKind.EventAdd or MethodKind.EventRemove, + returns the event that this method is the adder or remover for. + Note, the set of possible associated symbols might be expanded in the future to + reflect changes in the languages. + + + + + Returns the original virtual or abstract method which a given method symbol overrides, + ignoring any other overriding methods in base classes. + + The search must respect accessibility from this type. + + + + Returns the original virtual or abstract method which a given method symbol overrides, + ignoring any other overriding methods in base classes. + Also, if the given method symbol is generic then the resulting virtual or abstract method is constructed with the + same type arguments as the given method. + + + + + If this method overrides another method (because it both had the override modifier + and there correctly was a method to override), returns the overridden method. + Note that if an overriding method D.M overrides C.M, which in turn overrides + virtual method A.M, the "overridden method" of D.M is C.M, not the original virtual + method A.M. Note also that constructed generic methods are not considered to + override anything. + + + + + Returns true if calls to this method are omitted in this syntax tree. Calls are omitted + when the called method is a partial method with no implementation part, or when the + called method is a conditional method whose condition is not true in the source file + corresponding to the given syntax tree. + + + + + Calls are conditionally omitted if both the following requirements are true: + (a) IsConditional == true, i.e. it has at least one applied/inherited conditional attribute AND + (b) None of conditional symbols corresponding to these conditional attributes are defined in the given syntaxTree. + + + Forces binding and decoding of attributes. + + + + + Returns a sequence of preprocessor symbols specified in applied on this symbol, or null if there are none. + + + + + Returns a flag indicating whether this symbol has at least one applied/inherited conditional attribute. + + + Forces binding and decoding of attributes. + + + + + Some method kinds do not participate in overriding/hiding (e.g. constructors). + + + + + Returns value 'Method' of the + + + + + Returns true if this symbol represents a constructor of a script class. + + + + + Returns if the method is implicit constructor (normal and static) + + + + + Returns if the method is implicit instance constructor + + + + + Returns true if this symbol represents a constructor of an interactive submission class. + + + + + Determines whether this method is a candidate for a default assembly entry point + (i.e. it is a static method called "Main"). + + + + + Checks if the method has an entry point compatible signature, i.e. + - the return type is either void or int + - has either no parameter or a single parameter of type string[] + + + + + If this is an extension method that can be applied to a receiver of the given type, + returns a reduced extension method symbol thus formed. Otherwise, returns null. + + + + + If this is an extension method, returns a reduced extension method + symbol representing the method. Otherwise, returns null. + + + + + If this method is a reduced extension method, returns the extension method that + should be used at call site during ILGen. Otherwise, returns null. + + + + + If this is a partial method declaration without a body, and the method also + has a part that implements it with a body, returns that implementing + definition. Otherwise null. + + + + + If this is a partial method with a body, returns the corresponding + definition part (without a body). Otherwise null. + + + + + If this method is a reduced extension method, gets the extension method definition that + this method was reduced from. Otherwise, returns null. + + + + + If this method can be applied to an object, returns the type of object it is applied to. + + + + + If this method is a reduced extension method, returns a type inferred during reduction process for the type parameter. + + Type parameter of the corresponding method. + Inferred type or Nothing if nothing was inferred. + If this is not a reduced extension method. + If is null. + If doesn't belong to the corresponding method. + + + + Apply type substitution to a generic method to create an method symbol with the given type parameters supplied. + + + + + + + Apply type substitution to a generic method to create an method symbol with the given type parameters supplied. + + + + + + + As a performance optimization, cache parameter types and refkinds - overload resolution uses them a lot. + + + + + Null if no parameter is ref/out. Otherwise the RefKind for each parameter. + + + + + Returns the map from type parameters to type arguments. + If this is not a generic method instantiation, returns null. + The map targets the original definition of the method. + + + + + Return error code that has highest priority while calculating use site error for this symbol. + + + + + If the method was written as an iterator method (i.e. with yield statements in its body) returns the + element type of the iterator. Otherwise returns null. + + + + + Generates bound block representing method's body for methods in lowered form and adds it to + a collection of method bodies of the current module. This method is supposed to only be + called for method symbols which return SynthesizesLoweredBoundBody == true. + + + + + Returns true for synthesized symbols which generate synthesized body in lowered form + + + + + Return true iff the method contains user code. + + + + + Calculates a syntax offset for a local (user-defined or long-lived synthesized) declared at . + Must be implemented by all methods that may contain user code. + + + Syntax offset is a unique identifier for the local within the emitted method body. + It's based on position of the local declarator. In single-part method bodies it's simply the distance + from the start of the method body syntax span. If a method body has multiple parts (such as a constructor + comprising of code for member initializers and constructor initializer calls) the offset is calculated + as if all source these parts were concatenated together and prepended to the constructor body. + The resulting syntax offset is then negative for locals defined outside of the constructor body. + + + + + Build and add synthesized return type attributes for this method symbol. + + + + + Represents a type other than an array, a pointer, a type parameter, and dynamic. + + + + + Gets the set of interfaces to emit on this type. This set can be different from the set returned by Interfaces property. + + + + + Add the type to the builder and then recurse on its interfaces. + + + Pre-order depth-first search. + + + + + To represent a gap in interface's v-table null value should be returned in the appropriate position, + unless the gap has a symbol (happens if it is declared in source, for example). + + + + + Returns the arity of this type, or the number of type parameters it takes. + A non-generic type has zero arity. + + + + + Returns the type parameters that this type has. If this is a non-generic type, + returns an empty ImmutableArray. + + + + + Returns the type arguments that have been substituted for the type parameters. + If nothing has been substituted for a give type parameters, + then the type parameter itself is consider the type argument. + + + + + Returns custom modifiers for the type arguments that have been substituted for the type parameters. + + + + + Returns the type symbol that this type was constructed from. This type symbol + has the same containing type (if any), but has type arguments that are the same + as the type parameters (although its containing type might not). + + + + + For enum types, gets the underlying type. Returns null on all other + kinds of types. + + + + + Returns true for a struct type containing a cycle. + This property is intended for flow analysis only + since it is only implemented for source types. + + + + + Is this a NoPia local type explicitly declared in source, i.e. + top level type with a TypeIdentifier attribute on it? + + + + + Returns true and a string from the first GuidAttribute on the type, + the string might be null or an invalid guid representation. False, + if there is no GuidAttribute with string argument. + + + + + For delegate types, gets the delegate's invoke method. Returns null on + all other kinds of types. Note that it is possible to have an ill-formed + delegate type imported from metadata which does not have an Invoke method. + Such a type will be classified as a delegate but its DelegateInvokeMethod + would be null. + + + + + Get the operators for this type by their metadata name + + + + + Get the instance constructors for this type. + + + + + Get the static constructors for this type. + + + + + Get the instance and static constructors for this type. + + + + + Get the indexers for this type. + + + Won't include indexers that are explicit interface implementations. + + + + + Returns true if this type might contain extension methods. If this property + returns false, there are no extension methods in this type. + + + This property allows the search for extension methods to be narrowed quickly. + + + + + Returns true if this type is known to be a reference type. It is never the case that + IsReferenceType and IsValueType both return true. However, for an unconstrained type + parameter, IsReferenceType and IsValueType will both return false. + + + + + Returns true if this type is known to be a value type. It is never the case that + IsReferenceType and IsValueType both return true. However, for an unconstrained type + parameter, IsReferenceType and IsValueType will both return false. + + + + + Gets the associated attribute usage info for an attribute type. + + + + + Returns true if the type is a Script class. + It might be an interactive submission class or a Script class in a csx file. + + + + + Returns true if the type is the implicit class that holds onto invalid global members (like methods or + statements in a non script file). + + + + + Gets the name of this symbol. Symbols without a name return the empty string; null is + never returned. + + + + + Return the name including the metadata arity suffix. + + + + + Should the name returned by Name property be mangled with [`arity] suffix in order to get metadata name. + Must return False for a type with Arity == 0. + + + + + Collection of names of members declared within this type. + + + + + Get all the members of this symbol. + + An ImmutableArray containing all the members of this symbol. If this symbol has no members, + returns an empty ImmutableArray. Never returns null. + + + + Get all the members of this symbol that have a particular name. + + An ImmutableArray containing all the members of this symbol with the given name. If there are + no members with this name, returns an empty ImmutableArray. Never returns null. + + + + Get all the members of this symbol that are types. + + An ImmutableArray containing all the types that are members of this symbol. If this symbol has no type members, + returns an empty ImmutableArray. Never returns null. + + + + Get all the members of this symbol that are types that have a particular name, of any arity. + + An ImmutableArray containing all the types that are members of this symbol with the given name. + If this symbol has no type members with this name, + returns an empty ImmutableArray. Never returns null. + + + + Get all the members of this symbol that are types that have a particular name and arity + + An ImmutableArray containing all the types that are members of this symbol with the given name and arity. + If this symbol has no type members with this name and arity, + returns an empty ImmutableArray. Never returns null. + + + + Get all instance field and event members. + + + For source symbols may be called while calculating + . + + + + + Get this accessibility that was declared on this symbol. For symbols that do not have + accessibility declared on them, returns NotApplicable. + + + + + Used to implement visitor pattern. + + + + + During early attribute decoding, we consider a safe subset of all members that will not + cause cyclic dependencies. Get all such members for this symbol. + + + Never returns null (empty instead). + Expected implementations: for source, return type and field members; for metadata, return all members. + + + + + During early attribute decoding, we consider a safe subset of all members that will not + cause cyclic dependencies. Get all such members for this symbol that have a particular name. + + + Never returns null (empty instead). + Expected implementations: for source, return type and field members; for metadata, return all members. + + + + + Gets the kind of this symbol. + + + + + Compares this type to another type. + + + + + Helper for more complicated cases of Equals like when we have generic instantiations or types nested within them. + + + + + Returns a constructed type given its type arguments. + + The immediate type arguments to be replaced for type + parameters in the type. + + + + Returns a constructed type given its type arguments. + + The immediate type arguments to be replaced for type + parameters in the type. + + + + Returns a constructed type given its type arguments. + + + + + + Returns an unbound generic type of this named type. + + + + + True if this type or some containing type has type parameters. + + + + + True if this is a reference to an unbound generic type. These occur only + within a typeof expression. A generic type is considered unbound + if all of the type argument lists in its fully qualified name are empty. + Note that the type arguments of an unbound generic type will be returned as error + types because they do not really have type arguments. An unbound generic type + yields null for its BaseType and an empty result for its Interfaces. + + + + + The original definition of this symbol. If this symbol is constructed from another + symbol by type substitution then OriginalDefinition gets the original symbol as it was defined in + source or metadata. + + + + + Returns the map from type parameters to type arguments. + If this is not a generic type instantiation, returns null. + The map targets the original definition of the type. + + + + + True if this symbol has a special name (metadata flag SpecialName is set). + + + + + Returns a flag indicating whether this symbol is ComImport. + + + A type can me marked as a ComImport type in source by applying the + + + + + True if the type is a Windows runtime type. + + + A type can me marked as a Windows runtime type in source by applying the WindowsRuntimeImportAttribute. + WindowsRuntimeImportAttribute is a pseudo custom attribute defined as an internal class in System.Runtime.InteropServices.WindowsRuntime namespace. + This is needed to mark Windows runtime types which are redefined in mscorlib.dll and System.Runtime.WindowsRuntime.dll. + These two assemblies are special as they implement the CLR's support for WinRT. + + + + + True if the type should have its WinRT interfaces projected onto .NET types and + have missing .NET interface members added to the type. + + + + + Returns a flag indicating whether this symbol has at least one applied/inherited conditional attribute. + + + Forces binding and decoding of attributes. + + + + + True if the type is serializable (has Serializable metadata flag). + + + + + Type layout information (ClassLayout metadata and layout kind flags). + + + + + The default charset used for type marshalling. + Can be changed via applied on the containing module. + + + + + Marshalling charset of string data fields within the type (string formatting flags in metadata). + + + + + True if the type has declarative security information (HasSecurity flags). + + + + + Declaration security information associated with this type, or null if there is none. + + + + + Returns a sequence of preprocessor symbols specified in applied on this symbol, or null if there are none. + + + + + If was applied to the type and the attribute argument is a valid named type argument, i.e. accessible class type, then it returns the type symbol for the argument. + Otherwise, returns null. + + + + This property invokes force completion of attributes. If you are accessing this property + from the binder, make sure that we are not binding within an Attribute context. + This could lead to a possible cycle in attribute binding. + We can avoid this cycle by first checking if we are within the context of an Attribute argument, + i.e. if(!binder.InAttributeArgument) { ... namedType.ComImportCoClass ... } + + + CONSIDER: We can remove the above restriction and possibility of cycle if we do an + early binding of some well known attributes. + + + + + + If class represents fixed buffer, this property returns the FixedElementField + + + + + Requires less computation than == . + + + Metadata types need to compute their base types in order to know their TypeKinds, and that can lead + to cycles if base types are already being computed. + + True if this is an interface type. + + + + Represents a namespace. + + + + + Get all the members of this symbol that are namespaces. + + An IEnumerable containing all the namespaces that are members of this symbol. + If this symbol has no namespace members, returns an empty IEnumerable. Never returns + null. + + + + Returns whether this namespace is the unnamed, global namespace that is + at the root of all namespaces. + + + + + The kind of namespace: Module, Assembly or Compilation. + Module namespaces contain only members from the containing module that share the same namespace name. + Assembly namespaces contain members for all modules in the containing assembly that share the same namespace name. + Compilation namespaces contain all members, from source or referenced metadata (assemblies and modules) that share the same namespace name. + + + + + The containing compilation for compilation namespaces. + + + + + If a namespace has Assembly or Compilation extent, it may be composed of multiple + namespaces that are merged together. If so, ConstituentNamespaces returns + all the namespaces that were merged. If this namespace was not merged, returns + an array containing only this namespace. + + + + + Containing assembly. + + + + + Gets the kind of this symbol. + + + + + Implements visitor pattern. + + + + + Get this accessibility that was declared on this symbol. For symbols that do not have + accessibility declared on them, returns NotApplicable. + + + + + Returns true if this symbol is "static"; i.e., declared with the "static" modifier or + implicitly static. + + + + + Returns true if this symbol was declared as requiring an override; i.e., declared with + the "abstract" modifier. Also returns true on a type declared as "abstract", all + interface types, and members of interface types. + + + + + Returns true if this symbol was declared to override a base class member and was also + sealed from further overriding; i.e., declared with the "sealed" modifier. Also set for + types that do not allow a derived class (declared with "sealed" or "static" or "struct" + or "enum" or "delegate"). + + + + + Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. + This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. + + + + + Returns an implicit type symbol for this namespace or null if there is none. This type + wraps misplaced global code. + + + + + Lookup a nested namespace. + + + Sequence of names for nested child namespaces. + + + Symbol for the most nested namespace, if found. Nothing + if namespace or any part of it can not be found. + + + + + Add all extension methods in this namespace to the given list. If name or arity + or both are provided, only those extension methods that match are included. + + Methods list + Optional method name + Method arity + Lookup options + + + + Represents a parameter of a method or indexer. + + + + + Gets constant value to be stored in metadata Constant table. + + + + + The original definition of this symbol. If this symbol is constructed from another + symbol by type substitution then OriginalDefinition gets the original symbol as it was defined in + source or metadata. + + + + + Gets the type of the parameter. + + + + + Determines if the parameter ref, out or neither. + + + + + The list of custom modifiers, if any, associated with the parameter. + + + + + Describes how the parameter is marshalled when passed to native code. + Null if no specific marshalling information is available for the parameter. + + PE symbols don't provide this information and always return null. + + + + Returns the marshalling type of this parameter, or 0 if marshalling information isn't available. + + + By default this information is extracted from if available. + Since the compiler does only need to know the marshalling type of symbols that aren't emitted + PE symbols just decode the type from metadata and don't provide full marshalling information. + + + + + Gets the ordinal position of the parameter. The first parameter has ordinal zero. + The "'this' parameter has ordinal -1. + + + + + Returns true if the parameter was declared as a parameter array. + + + + + Returns true if the parameter is semantically optional. + + + True iff the parameter has a default argument syntax, + or the parameter is not a params-array and Optional metadata flag is set. + + + + + True if Optional flag is set in metadata. + + + + + True if In flag is set in metadata. + + + + + True if Out flag is set in metadata. + + + + + Returns true if the parameter explicitly specifies a default value to be passed + when no value is provided as an argument to a call. + + + True if the parameter has a default argument syntax, + or the parameter is from source and is applied, + or the parameter is from metadata and HasDefault metadata flag is set. See + to determine if the parameter will be considered optional by + overload resolution. + + The default value can be obtained with property. + + + + + Returns the default value of the parameter. If + returns false then DefaultValue throws an InvalidOperationException. + + + If the parameter type is a struct and the default value of the parameter + is the default value of the struct type or of type parameter type which is + not known to be a referenced type, then this property will return null. + + The parameter has no default value. + + + + Returns the default value constant of the parameter, + or null if the parameter doesn't have a default value or + the parameter type is a struct and the default value of the parameter + is the default value of the struct type or of type parameter type which is + not known to be a referenced type. + + + This is used for emitting. It does not reflect the language semantics + (i.e. even non-optional parameters can have default values). + + + + + Gets the kind of this symbol. + + + + + Implements visitor pattern. + + + + + Get this accessibility that was declared on this symbol. For symbols that do not have + accessibility declared on them, returns NotApplicable. + + + + + Returns true if this symbol was declared as requiring an override; i.e., declared with + the "abstract" modifier. Also returns true on a type declared as "abstract", all + interface types, and members of interface types. + + + + + Returns true if this symbol was declared to override a base class member and was also + sealed from further overriding; i.e., declared with the "sealed" modifier. Also set for + types that do not allow a derived class (declared with "sealed" or "static" or "struct" + or "enum" or "delegate"). + + + + + Returns true if this symbol is "virtual", has an implementation, and does not override a + base class member; i.e., declared with the "virtual" modifier. Does not return true for + members declared as abstract or override. + + + + + Returns true if this symbol was declared to override a base class member; i.e., declared + with the "override" modifier. Still returns true if member was declared to override + something, but (erroneously) no member to override exists. + + + + + Returns true if this symbol is "static"; i.e., declared with the "static" modifier or + implicitly static. + + + + + Returns true if this symbol has external implementation; i.e., declared with the + "extern" modifier. + + + + + Returns true if the parameter is the hidden 'this' parameter. + + + + + Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. + This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. + + + + + The CLI spec says that custom modifiers must precede the ByRef type code in the encoding of a parameter. + Unfortunately, the managed C++ compiler emits them in the reverse order. In order to avoid breaking + interop scenarios, we need to support such signatures. + Should be 0 for non-ref parameters. + + + + + Represents a pointer type such as "int *". Pointer types + are used only in unsafe code. + + + + + Create a new PointerTypeSymbol. + + The type being pointed at. + + + + Create a new PointerTypeSymbol. + + The type being pointed at. + Custom modifiers for the element type of this array type. + + + + The list of custom modifiers, if any, associated with the pointer type. + + + + + Gets the type of the storage location that an instance of the pointer type points to. + + + + + Represents a property or indexer. + + + + + As a performance optimization, cache parameter types and refkinds - overload resolution uses them a lot. + + + + + The original definition of this symbol. If this symbol is constructed from another + symbol by type substitution then OriginalDefinition gets the original symbol as it was defined in + source or metadata. + + + + + The type of the property. + + + + + The list of custom modifiers, if any, associated with the type of the property. + + + + + The parameters of this property. If this property has no parameters, returns + an empty list. Parameters are only present on indexers, or on some properties + imported from a COM interface. + + + + + Optimization: in many cases, the parameter count (fast) is sufficient and we + don't need the actual parameter symbols (slow). + + + + + Returns whether the property is really an indexer. + + + In source, we regard a property as an indexer if it is declared with an IndexerDeclarationSyntax. + From metadata, we regard a property if it has parameters and is a default member of the containing + type. + CAVEAT: To ensure that this property (and indexer Names) roundtrip, source properties are not + indexers if they are explicit interface implementations (since they will not be marked as default + members in metadata). + + + + + True if this an indexed property; that is, a property with parameters + within a [ComImport] type. + + + + + True if this is a read-only property; that is, a property with no set accessor. + + + + + True if this is a write-only property; that is, a property with no get accessor. + + + + + True if this symbol has a special name (metadata flag SpecialName is set). + + + + + The 'get' accessor of the property, or null if the property is write-only. + + + + + The 'set' accessor of the property, or null if the property is read-only. + + + + + Returns the overridden property, or null. + + + + + Source: Was the member name qualified with a type name? + Metadata: Is the member an explicit implementation? + + + Will not always agree with ExplicitInterfaceImplementations.Any() + (e.g. if binding of the type part of the name fails). + + + + + Returns interface properties explicitly implemented by this property. + + + Properties imported from metadata can explicitly implement more than one property. + + + + + Gets the kind of this symbol. + + + + + Implements visitor pattern. + + + + + Return error code that has highest priority while calculating use site error for this symbol. + + + + + Represents a type parameter in a generic type or generic method. + + + + + The original definition of this symbol. If this symbol is constructed from another + symbol by type substitution then OriginalDefinition gets the original symbol as it was defined in + source or metadata. + + + + + If this is a type parameter of a reduced extension method, gets the type parameter definition that + this type parameter was reduced from. Otherwise, returns Nothing. + + + + + The ordinal position of the type parameter in the parameter list which declares + it. The first type parameter has ordinal zero. + + + + + The types that were directly specified as constraints on the type parameter. + Duplicates and cycles are removed, although the collection may include + redundant constraints where one constraint is a base type of another. + + + + + True if the parameterless constructor constraint was specified for the type parameter. + + + + + The type parameter kind of this type parameter. + + + + + The method that declared this type parameter, or null. + + + + + The type that declared this type parameter, or null. + + + + + The effective base class of the type parameter (spec 10.1.5). If the deduced + base type is a reference type, the effective base type will be the same as + the deduced base type. Otherwise if the deduced base type is a value type, + the effective base type will be the most derived reference type from which + deduced base type is derived. + + + + + The effective interface set (spec 10.1.5). + + + + + The most encompassed type (spec 6.4.2) from the constraints. + + + + + The effective interface set and any base interfaces of those + interfaces. This is AllInterfaces excluding interfaces that are + only implemented by the effective base type. + + + + + Called by , , , and . + to allow derived classes to ensure constraints within the containing + type or method are resolved in a consistent order, regardless of the + order the callers query individual type parameters. + + + + + Helper method to force type parameter constraints to be resolved. + + + + + Returns a bag of applied custom attributes and data decoded from well-known attributes. Returns null if there are no attributes applied on the symbol. + + + Forces binding and decoding of attributes. + + + + + State machine interface property implementation. + + + + + A base method symbol used as a base class for lambda method symbol and base method wrapper symbol. + + + + + Abstract base class for mutable and immutable type maps. + + + + + Substitute for a type declaration. May use alpha renaming if the container is substituted. + + + + + SubstType, but for NamedTypeSymbols only. This is used for concrete types, so no alpha substitution appears in the result. + + + + + Perform the substitution on the given type. Each occurrence of the type parameter is + replaced with its corresponding type argument from the map. + + The type to be rewritten. + The type with type parameters replaced with the type arguments. + + + + Substitute types, and return the results without duplicates, preserving the original order. + + + + + Like SubstTypes, but for NamedTypeSymbols. + + + + + Symbol representing a using alias appearing in a compilation unit or within a namespace + declaration. Generally speaking, these symbols do not appear in the set of symbols reachable + from the unnamed namespace declaration. In other words, when a using alias is used in a + program, it acts as a transparent alias, and the symbol to which it is an alias is used in + the symbol table. For example, in the source code +
+            namespace NS
+            {
+                using o = System.Object;
+                partial class C : o {}
+                partial class C : object {}
+                partial class C : System.Object {}
+            }
+            
+ all three declarations for class C are equivalent and result in the same symbol table object + for C. However, these using alias symbols do appear in the results of certain SemanticModel + APIs. Specifically, for the base clause of the first of C's class declarations, the + following APIs may produce a result that contains an AliasSymbol: +
+                SemanticInfo SemanticModel.GetSemanticInfo(ExpressionSyntax expression);
+                SemanticInfo SemanticModel.BindExpression(CSharpSyntaxNode location, ExpressionSyntax expression);
+                SemanticInfo SemanticModel.BindType(CSharpSyntaxNode location, ExpressionSyntax type);
+                SemanticInfo SemanticModel.BindNamespaceOrType(CSharpSyntaxNode location, ExpressionSyntax type);
+            
+ Also, the following are affected if container==null (and, for the latter, when arity==null + or arity==0): +
+                IList<string> SemanticModel.LookupNames(CSharpSyntaxNode location, NamespaceOrTypeSymbol container = null, LookupOptions options = LookupOptions.Default, List<string> result = null);
+                IList<Symbol> SemanticModel.LookupSymbols(CSharpSyntaxNode location, NamespaceOrTypeSymbol container = null, string name = null, int? arity = null, LookupOptions options = LookupOptions.Default, List<Symbol> results = null);
+            
+
+
+ + + Gets the for the + namespace or type referenced by the alias. + + + + + Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. + This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. + + + + + Using aliases in C# are always contained within a namespace declaration, or at the top + level within a compilation unit, within the implicit unnamed namespace declaration. We + return that as the "containing" symbol, even though the alias isn't a member of the + namespace as such. + + + + + Describes anonymous type in terms of fields + + + + Anonymous type location + + + Anonymous type fields + + + + Anonymous type descriptor Key + + The key is to be used to separate anonymous type templates in an anonymous type symbol cache. + The type descriptors with the same keys are supposed to map to 'the same' anonymous type + template in terms of the same generic type being used for their implementation. + + + + + Compares two anonymous type descriptors, takes into account fields names and types, not locations. + + + + + Compares two anonymous type descriptors, takes into account fields names and types, not locations. + + + + + Creates a new anonymous type descriptor based on 'this' one, + but having field types passed as an argument. + + + + + Describes anonymous type field in terms of its name, type and other attributes + + + + Anonymous type field name, not nothing and not empty + + + Anonymous type field location + + + Anonymous type field type + + + + Represents a .NET assembly, consisting of one or more modules. + + + + + The system assembly, which provides primitive types like Object, String, etc., e.g. mscorlib.dll. + The value is provided by ReferenceManager and must not be modified. For SourceAssemblySymbol, non-missing + coreLibrary must match one of the referenced assemblies returned by GetReferencedAssemblySymbols() method of + the main module. If there is no existing assembly that can be used as a source for the primitive types, + the value is a Compilation.MissingCorLibrary. + + + + + The system assembly, which provides primitive types like Object, String, etc., e.g. mscorlib.dll. + The value is MissingAssemblySymbol if none of the referenced assemblies can be used as a source for the + primitive types and the owning assembly cannot be used as the source too. Otherwise, it is one of + the referenced assemblies returned by GetReferencedAssemblySymbols() method or the owning assembly. + + + + + A helper method for ReferenceManager to set the system assembly, which provides primitive + types like Object, String, etc., e.g. mscorlib.dll. + + + + + Simple name the assembly. + + + This is equivalent to ., but may be + much faster to retrieve for source code assemblies, since it does not require binding + the assembly-level attributes that contain the version number and other assembly + information. + + + + + Gets the identity of this assembly. + + + + + Assembly version pattern with wildcards represented by , + or null if the version string specified in the doesn't contain a wildcard. + + For example, + AssemblyVersion("1.2.*") is represented as 1.2.65535.65535, + AssemblyVersion("1.2.3.*") is represented as 1.2.3.65535. + + + + + Target architecture of the machine. + + + + + Indicates that this PE file makes Win32 calls. See CorPEKind.pe32BitRequired for more information (http://msdn.microsoft.com/en-us/library/ms230275.aspx). + + + + + Gets the merged root namespace that contains all namespaces and types defined in the modules + of this assembly. If there is just one module in this assembly, this property just returns the + GlobalNamespace of that module. + + + + + Given a namespace symbol, returns the corresponding assembly specific namespace symbol + + + + + Gets a read-only list of all the modules in this assembly. (There must be at least one.) The first one is the main module + that holds the assembly manifest. + + + + + Does this symbol represent a missing assembly. + + + + + Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. + This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. + + + + + True if the assembly contains interactive code. + + + + + Lookup a top level type referenced from metadata, names should be + compared case-sensitively. + + + Full type name with generic name mangling. + + + Take forwarded types into account. + + + + + + Lookup a top level type referenced from metadata, names should be + compared case-sensitively. Detect cycles during lookup. + + + Full type name, possibly with generic name mangling. + + + List of assemblies lookup has already visited (since type forwarding can introduce cycles). + + + Take forwarded types into account. + + + + + Returns the type symbol for a forwarded type based its canonical CLR metadata name. + The name should refer to a non-nested type. If type with this name is not forwarded, + null is returned. + + + + + Look up the given metadata type, if it is forwarded. + + + + + Look up the given metadata type, if it is forwarded. + + + + + Lookup declaration for predefined CorLib type in this Assembly. + + The symbol for the pre-defined type or an error type if the type is not defined in the core library. + + + + Register declaration of predefined CorLib type in this Assembly. + + + + + + Continue looking for declaration of predefined CorLib type in this Assembly + while symbols for new type declarations are constructed. + + + + + Return an array of assemblies involved in canonical type resolution of + NoPia local types defined within this assembly. In other words, all + references used by previous compilation referencing this assembly. + + + + + + Return an array of assemblies referenced by this assembly, which are linked (/l-ed) by + each compilation that is using this AssemblySymbol as a reference. + If this AssemblySymbol is linked too, it will be in this array too. + + + + + Assembly is /l-ed by compilation that is using it as a reference. + + + + + Returns true and a string from the first GuidAttribute on the assembly, + the string might be null or an invalid guid representation. False, + if there is no GuidAttribute with string argument. + + + + + Gets the set of type identifiers from this assembly. + + + These names are the simple identifiers for the type, and do not include namespaces, + outer type names, or type parameters. + + This functionality can be used for features that want to quickly know if a name could be + a type for performance reasons. For example, classification does not want to incur an + expensive binding call cost if it knows that there is no type with the name that they + are looking at. + + + + + Gets the set of namespace names from this assembly. + + + + + Returns true if this assembly might contain extension methods. If this property + returns false, there are no extension methods in this assembly. + + + This property allows the search for extension methods to be narrowed quickly. + + + + + Gets the symbol for the pre-defined type from core library associated with this assembly. + + The symbol for the pre-defined type or an error type if the type is not defined in the core library. + + + + The NamedTypeSymbol for the .NET System.Object type, which could have a TypeKind of + Error if there was no COR Library in a compilation using the assembly. + + + + + Get symbol for predefined type from Cor Library used by this assembly. + + + + + + + Lookup a type within the assembly using the canonical CLR metadata name of the type. + + Type name. + Symbol for the type or null if type cannot be found or is ambiguous. + + + + Lookup a type within the assembly using its canonical CLR metadata name. + + + + If search within assembly fails, lookup in assemblies referenced by the primary module. + For source assembly, this is equivalent to all assembly references given to compilation. + + + Extra restrictions apply when searching for a well-known type. In particular, the type must be public. + + + While resolving the name, consider only types following CLS-compliant generic type names and arity encoding (ECMA-335, section 10.7.2). + I.e. arity is inferred from the name and matching type must have the same emitted name and arity. + + + A diagnostic bag to receive warnings if we should allow multiple definitions and pick one. + + Null if the type can't be found. + + + + Resolves to a available in this assembly + its referenced assemblies. + + The type to resolve. + Use referenced assemblies for resolution. + The resolved symbol if successful or null on failure. + + + + Lookup member declaration in predefined CorLib type in this Assembly. Only valid if this + assembly is the Cor Library + + + + + Lookup member declaration in predefined CorLib type used by this Assembly. + + + + + If this symbol represents a metadata assembly returns the underlying . + + Otherwise, this returns null. + + + + + Represents a PE custom attribute + + + + + Matches an attribute by metadata namespace, metadata type name. Does not load the type symbol for + the attribute. + + + + True if the attribute data matches. + + + + Matches an attribute by metadata namespace, metadata type name and metadata signature. Does not load the + type symbol for the attribute. + + Target symbol. + Attribute to match. + + An index of the target constructor signature in + signatures array, -1 if + this is not the target attribute. + + + + + Decodes applied to a specified metadata symbol and + transforms the specified metadata type, using the decoded dynamic transforms attribute argument, + by replacing each occurrence of type with dynamic type. + + + This is a port of TypeManager::ImportDynamicTransformType from the native compiler. + Comments from the C# design document for Dynamic: + SPEC: To represent the dynamic type in metadata, any indexer, field or return value typed as dynamic or known to be a constructed type + SPEC: containing dynamic will have each occurrence of dynamic erased to object and will be annotated with a [DynamicAttribute]. + SPEC: If the relevant type is a constructed type, the attribute's constructor is passed a bool array. + SPEC: This array represents a preorder traversal of each "node" in the constructed type's "tree of types", + SPEC: with true set for each "node" that is dynamic, and false set for all other types. + SPEC: When dynamic occurs as part of the base type of a type, the applicable [DynamicAttribute] is applied to the type itself. + + + + + Should be accessed through , , and . + + + + + Decodes the attributes applied to the given from metadata and checks if is applied. + If so, it transforms the given , using the decoded dynamic transforms attribute argument, + by replacing each occurrence of type with dynamic type. + If no is applied or the decoded dynamic transforms attribute argument is erroneous, + returns the unchanged . + + This method is a port of TypeManager::ImportDynamicTransformType from the native compiler. + + + + This subclass of MetadataDecoder is specifically for finding + method symbols corresponding to method MemberRefs. The parent + implementation is unsuitable because it requires a PEMethodSymbol + for context when decoding method type parameters and no such + context is available because it is precisely what we are trying + to find. Since we know in advance that there will be no context + and that signatures decoded with this class will only be used + for comparison (when searching through the methods of a known + TypeSymbol), we can return indexed type parameters instead. + + + + + Type context for resolving generic type arguments. + + + + + We know that we'll never have a method context because that's what we're + trying to find. Instead, just return an indexed type parameter that will + make comparison easier. + + + + + + + This override changes two things: + 1) Return type arguments instead of type parameters. + 2) Handle non-PE types. + + + + + Search through the members of a given type symbol to find the method that matches a particular + signature. + + Type containing the desired method symbol. + A MemberRef handle that can be used to obtain the name and signature of the method + True to only return a method. + The matching method symbol, or null if the inputs do not correspond to a valid method. + + + + Helper class to resolve metadata tokens and signatures. + + + + + Type context for resolving generic type arguments. + + + + + Method context for resolving generic method type arguments. + + + + + Lookup a type defined in referenced assembly. + + + + + + + Lookup a type defined in a module of a multi-module assembly. + + + + + Lookup a type defined in this module. + This method will be called only if the type we are + looking for hasn't been loaded yet. Otherwise, MetadataDecoder + would have found the type in TypeDefRowIdToTypeMap based on its + TypeDef row id. + + + + + Perform a check whether the type or at least one of its generic arguments + is defined in the specified assemblies. The check is performed recursively. + + + + + Find canonical type for NoPia embedded type. + + + Symbol for the canonical type or an ErrorTypeSymbol. Never returns null. + + + + + Represents an assembly imported from a PE. + + + + + An Assembly object providing metadata for the assembly. + + + + + A DocumentationProvider that provides XML documentation comments for this assembly. + + + + + The list of contained PEModuleSymbol objects. + The list doesn't use type ReadOnlyCollection(Of PEModuleSymbol) so that we + can return it from Modules property as is. + + + + + An array of assemblies involved in canonical type resolution of + NoPia local types defined within this assembly. In other words, all + references used by a compilation referencing this assembly. + The array and its content is provided by ReferenceManager and must not be modified. + + + + + An array of assemblies referenced by this assembly, which are linked (/l-ed) by + each compilation that is using this AssemblySymbol as a reference. + If this AssemblySymbol is linked too, it will be in this array too. + The array and its content is provided by ReferenceManager and must not be modified. + + + + + Assembly is /l-ed by compilation that is using it as a reference. + + + + + Assembly's custom attributes + + + + + Look up the assembly to which the given metadata type is forwarded. + + + + The assembly to which the given type is forwarded or null, if there isn't one. + + + The returned assembly may also forward the type. + + + + + The class to represent all events imported from a PE/module. + + + + + Look for a field with the same name and an appropriate type (i.e. the same type, except in WinRT). + If one is found, the caller will assume that this event was originally field-like and associate + the two symbols. + + + Perf impact: If we find a field with the same name, we will eagerly evaluate its type. + + + + + Intended behavior: this event, E, explicitly implements an interface event, IE, + if E.add explicitly implements IE.add and E.remove explicitly implements IE.remove. + + + + + The class to represent all fields imported from a PE/module. + + + + + Mark this field as the backing field of a field-like event. + The caller will also ensure that it is excluded from the member list of + the containing type (as it would be in source). + + + + + The module containing the namespace. + + + + + + The class to represent all methods imported from a PE/module. + + + + + Holds infrequently accessed fields. See for an explanation. + + + + + A single field to hold optional auxiliary data. + In many scenarios it is possible to avoid allocating this, thus saving total space in . + Even for lazily-computed values, it may be possible to avoid allocating if + the computed value is a well-known "empty" value. In this case, bits in are used + to indicate that the lazy values have been computed and, if is null, then + the "empty" value should be inferred. + + + + + Associate the method with a particular property. Returns + false if the method is already associated with a property or event. + + + + + Associate the method with a particular event. Returns + false if the method is already associated with a property or event. + + + + + Represents a net-module imported from a PE. Can be a primary module of an assembly. + + + + + Owning AssemblySymbol. This can be a PEAssemblySymbol or a SourceAssemblySymbol. + + + + + A Module object providing metadata. + + + + + Global namespace. + + + + + Cache the symbol for well-known type System.Type because we use it frequently + (for attributes). + + + + + The same value as ConcurrentDictionary.DEFAULT_CAPACITY + + + + + This is a map from TypeDef handle to the target . + It is used by to speed up type reference resolution + for metadata coming from this module. The map is lazily populated + as we load types from the module. + + + + + This is a map from TypeRef row id to the target . + It is used by to speed up type reference resolution + for metadata coming from this module. The map is lazily populated + by as we resolve TypeRefs from the module. + + + + + Module's custom attributes + + + + + Module's assembly attributes + + + + + Returns a possibly ExtensionAttribute filtered roArray of attributes. If + filterExtensionAttributes is set to true, the method will remove all ExtensionAttributes + from the returned array. If it is false, the parameter foundExtension will always be set to + false and can be safely ignored. + + The paramArrayAttribute parameter is similar to the foundExtension parameter, but instead + of just indicating if the attribute was found, the parameter is set to the attribute handle + for the ParamArrayAttribute if any is found and is null otherwise. This allows NoPia to filter + the attribute out for the symbol but still cache it separately for emit. + + + + + Get the custom attributes, but filter out any ParamArrayAttributes. + + The parameter token handle. + Set to a ParamArrayAttribute + CustomAttributeHandle if any are found. Nil token otherwise. + + + + Filters extension attributes from the attribute results. + + + True if we found an extension method, false otherwise. + The attributes on the token, minus any ExtensionAttributes. + + + + If this module forwards the given type to another assembly, return that assembly; + otherwise, return null. + + Type to look up. + Assembly symbol or null. + + The returned assembly may also forward the type. + + + + + The class to represent all types imported from a PE/module. + + + + + A set of all the names of the members in this type. + We can get names without getting members (which is a more expensive operation) + + + + + We used to sort symbols on demand and relied on row ids to figure out the order between symbols of the same kind. + However, that was fragile because, when map tables are used in metadata, row ids in the map table define the order + and we don't have them. + Members are grouped by kind. First we store fields, then methods, then properties, then events and finally nested types. + Within groups, members are sorted based on declaration order. + + + + + A map of members immediately contained within this type + grouped by their name (case-sensitively). + + + + + A map of types immediately contained within this type + grouped by their name (case-sensitively). + + + + + Lazily initialized by TypeKind property. + + + + + Need to import them for an enum from a linked assembly, when we are embedding it. These symbols are not included into lazyMembersInDeclarationOrder. + + + + + Returns the index of the first member of the specific kind. + Returns the number of members if not found. + + + + + Returns all members of the specific kind, starting at the optional offset. + Members of the same kind are assumed to be contiguous. + + + + + Specialized PENamedTypeSymbol for types with no type parameters in + metadata (no type parameters on this type and all containing types). + + + + + Specialized PENamedTypeSymbol for types with type parameters in metadata. + NOTE: the type may have Arity == 0 if it has same metadata arity as the metadata arity of the containing type. + + + + + Return true if the type parameters specified on the nested type (this), + that represent the corresponding type parameters on the containing + types, in fact match the actual type parameters on the containing types. + + + + + The base class to represent a namespace imported from a PE/module. Namespaces that differ + only by casing in name are not merged. + + + + + A map of namespaces immediately contained within this namespace + mapped by their name (case-sensitively). + + + + + A map of types immediately contained within this namespace + grouped by their name (case-sensitively). + + + + + A map of NoPia local types immediately contained in this assembly. + Maps type name (non-qualified) to the row id. Note, for VB we should use + full name. + + + + + All type members in a flat array + + + + + Returns PEModuleSymbol containing the namespace. + + PEModuleSymbol containing the namespace. + + + + Initializes namespaces and types maps with information about + namespaces and types immediately contained within this namespace. + + + The sequence of groups of TypeDef row ids for types contained within the namespace, + recursively including those from nested namespaces. The row ids must be grouped by the + fully-qualified namespace name case-sensitively. There could be multiple groups + for each fully-qualified namespace name. The groups must be sorted by + their key in case-sensitive manner. Empty string must be used as namespace name for types + immediately contained within Global namespace. Therefore, all types in this namespace, if any, + must be in several first IGroupings. + + + + + Create symbols for nested namespaces and initialize namespaces map. + + + + + Create symbols for nested types and initialize types map. + + + + + The class to represent all, but Global, namespaces imported from a PE/module. + Namespaces that differ only by casing in name are not merged. + + + + + + The parent namespace. There is always one, Global namespace contains all + top level namespaces. + + + + + + The name of the namespace. + + + + + + The sequence of groups of TypeDef row ids for types contained within the namespace, + recursively including those from nested namespaces. The row ids are grouped by the + fully-qualified namespace name case-sensitively. There could be multiple groups + for each fully-qualified namespace name. The groups are sorted by their + key in case-sensitive manner. Empty string is used as namespace name for types + immediately contained within Global namespace. Therefore, all types in this namespace, if any, + will be in several first IGroupings. + + This member is initialized by constructor and is cleared in EnsureAllMembersLoaded + as soon as symbols for children are created. + + + + + + Constructor. + + + Name of the namespace, must be not empty. + + + Containing namespace. + + + The sequence of groups of TypeDef row ids for types contained within the namespace, + recursively including those from nested namespaces. The row ids are grouped by the + fully-qualified namespace name case-sensitively. There could be multiple groups + for each fully-qualified namespace name. The groups are sorted by their + key in case-sensitive manner. Empty string is used as namespace name for types + immediately contained within Global namespace. Therefore, all types in this namespace, if any, + will be in several first IGroupings. + + + + + The class to represent all method parameters imported from a PE/module. + + + + + Attributes filtered out from m_lazyCustomAttributes, ParamArray, etc. + + + + + Construct a parameter symbol for a property loaded from metadata. + + + + + The property parameter doesn't have a name in metadata, + so this is the handle of a corresponding accessor parameter, if there is one, + or of the ParamInfo passed in, otherwise). + + + + + + Internal for testing. Non-test code should use . + + + + + The class to represent all properties imported from a PE/module. + + + + + To facilitate lookup, all indexer symbols have the same name. + Check the MetadataName property to find the name we imported. + + + + + This property can return true for bogus indexers. + Rationale: If a type in metadata has a single, bogus indexer + and a source method tries to invoke it, then Dev10 reports a bogus + indexer rather than lack of an indexer. + + + + + Intended behavior: this property, P, explicitly implements an interface property, IP, + if any of the following is true: + + 1) P.get explicitly implements IP.get and P.set explicitly implements IP.set + 2) P.get explicitly implements IP.get and there is no IP.set + 3) P.set explicitly implements IP.set and there is no IP.get + + Extra or missing accessors will not result in errors, P will simply not report that + it explicitly implements IP. + + + + + The class to represent all generic type parameters imported from a PE/module. + + + + + + First error calculating bounds. + + + + + Represents a retargeting custom attribute + + + + + Gets the retargeted System.Type type symbol. + + Target symbol on which this attribute is applied. + Retargeted System.Type type symbol. + + + + Essentially this is a wrapper around another AssemblySymbol that is responsible for retargeting + symbols from one assembly to another. It can retarget symbols for multiple assemblies at the same time. + + For example, compilation C1 references v1 of Lib.dll and compilation C2 references C1 and v2 of Lib.dll. + In this case, in context of C2, all types from v1 of Lib.dll leaking through C1 (through method + signatures, etc.) must be retargeted to the types from v2 of Lib.dll. This is what + RetargetingAssemblySymbol is responsible for. In the example above, modules in C2 do not + reference C1.m_AssemblySymbol, but reference a special RetargetingAssemblySymbol created for + C1 by ReferenceManager. + + Here is how retargeting is implemented in general: + - Symbols from underlying assembly are substituted with retargeting symbols. + - Symbols from referenced assemblies that can be reused as is (i.e. doesn't have to be retargeted) are + used as is. + - Symbols from referenced assemblies that must be retargeted are substituted with result of retargeting. + + + + + The underlying AssemblySymbol, it leaks symbols that should be retargeted. + This cannot be an instance of RetargetingAssemblySymbol. + + + + + The list of contained ModuleSymbol objects. First item in the list + is RetargetingModuleSymbol that wraps corresponding SourceModuleSymbol + from underlyingAssembly.Modules list, the rest are PEModuleSymbols for + added modules. + + + + + An array of assemblies involved in canonical type resolution of + NoPia local types defined within this assembly. In other words, all + references used by a compilation referencing this assembly. + The array and its content is provided by ReferenceManager and must not be modified. + + + + + An array of assemblies referenced by this assembly, which are linked (/l-ed) by + each compilation that is using this AssemblySymbol as a reference. + If this AssemblySymbol is linked too, it will be in this array too. + The array and its content is provided by ReferenceManager and must not be modified. + + + + + Backing field for the map from a local NoPia type to corresponding canonical type. + + + + + A map from a local NoPia type to corresponding canonical type. + + + + + Assembly is /l-ed by compilation that is using it as a reference. + + + + + Retargeted custom attributes + + + + + Constructor. + + + The underlying AssemblySymbol, cannot be an instance of RetargetingAssemblySymbol. + + + Assembly is /l-ed by compilation that is using it as a reference. + + + + + The underlying AssemblySymbol. + This cannot be an instance of RetargetingAssemblySymbol. + + + + + Lookup declaration for FX type in this Assembly. + + + + + + + + Owning RetargetingModuleSymbol. + + + + + The underlying EventSymbol, cannot be another RetargetingEventSymbol. + + + + + Represents a field in a RetargetingModuleSymbol. Essentially this is a wrapper around + another FieldSymbol that is responsible for retargeting symbols from one assembly to another. + It can retarget symbols for multiple assemblies at the same time. + + + + + Owning RetargetingModuleSymbol. + + + + + The underlying FieldSymbol, cannot be another RetargetingFieldSymbol. + + + + + Retargeted custom attributes + + + + + Represents a method in a RetargetingModuleSymbol. Essentially this is a wrapper around + another MethodSymbol that is responsible for retargeting symbols from one assembly to another. + It can retarget symbols for multiple assemblies at the same time. + + + + + Owning RetargetingModuleSymbol. + + + + + The underlying MethodSymbol, cannot be another RetargetingMethodSymbol. + + + + + Retargeted custom attributes + + + + + Retargeted return type custom attributes + + + + + Represents a primary module of a . Essentially this is a wrapper around + another that is responsible for retargeting symbols from one assembly to another. + It can retarget symbols for multiple assemblies at the same time. + + Here is how retargeting is implemented in general: + - Symbols from underlying module are substituted with retargeting symbols. + - Symbols from referenced assemblies that can be reused as is (i.e. don't have to be retargeted) are + used as is. + - Symbols from referenced assemblies that must be retargeted are substituted with result of retargeting. + + + + + Owning . + + + + + The underlying , cannot be another . + + + + + The map that captures information about what assembly should be retargeted + to what assembly. Key is the referenced by the underlying module, + value is the corresponding referenced by this module, and corresponding + retargeting map for symbols. + + + + + Retargeted custom attributes + + + + + Constructor. + + + Owning assembly. + + + The underlying ModuleSymbol, cannot be another RetargetingModuleSymbol. + + + + + The underlying ModuleSymbol, cannot be another RetargetingModuleSymbol. + + + + + A helper method for ReferenceManager to set AssemblySymbols for assemblies + referenced by this module. + + + + + Retargeting map from underlying module to this one. + + + + + Retargeting map from underlying module to the retargeting module. + + + + + RetargetingAssemblySymbol owning retargetingModule. + + + + + The underlying ModuleSymbol for retargetingModule. + + + + + The map that captures information about what assembly should be retargeted + to what assembly. Key is the AssemblySymbol referenced by the underlying module, + value is the corresponding AssemblySymbol referenced by the retargeting module, and + corresponding retargeting map for symbols. + + + + + Perform a check whether the type or at least one of its generic arguments + is an explicitly defined local type. The check is performed recursively. + + + + + Represents a type of a RetargetingModuleSymbol. Essentially this is a wrapper around + another NamedTypeSymbol that is responsible for retargeting referenced symbols from one assembly to another. + It can retarget symbols for multiple assemblies at the same time. + + + + + Owning RetargetingModuleSymbol. + + + + + The underlying NamedTypeSymbol, cannot be another RetargetingNamedTypeSymbol. + + + + + Represents a namespace of a RetargetingModuleSymbol. Essentially this is a wrapper around + another NamespaceSymbol that is responsible for retargeting symbols from one assembly to another. + It can retarget symbols for multiple assemblies at the same time. + + + + + Owning RetargetingModuleSymbol. + + + + + The underlying NamespaceSymbol, cannot be another RetargetingNamespaceSymbol. + + + + + Represents a parameter of a RetargetingMethodSymbol. Essentially this is a wrapper around + another ParameterSymbol that is responsible for retargeting symbols from one assembly to another. + It can retarget symbols for multiple assemblies at the same time. + + + + + Retargeted custom attributes + + + + + Owning RetargetingMethodSymbol. + + + + + Owning RetargetingPropertySymbol. + + + + + Owning RetargetingModuleSymbol. + + + + + The underlying PropertySymbol, cannot be another RetargetingPropertySymbol. + + + + + Retargeted custom attributes + + + + + Represents a type parameter in a RetargetingModuleSymbol. Essentially this is a wrapper around + another TypeParameterSymbol that is responsible for retargeting symbols from one assembly to another. + It can retarget symbols for multiple assemblies at the same time. + + + + + Owning RetargetingModuleSymbol. + + + + + The underlying TypeParameterSymbol, cannot be another RetargetingTypeParameterSymbol. + + + + + Retargeted custom attributes + + + + + Represents a Source custom attribute specification + + + + + If the contains any named constructor arguments or default value arguments, + it returns an array representing each argument's source argument index. A value of -1 indicates default value argument. + Otherwise, returns null. + + + + + This method finds an attribute by metadata name and signature. The algorithm for signature matching is similar to the one + in Module.GetTargetAttributeSignatureIndex. Note, the signature matching is limited to primitive types + and System.Type. It will not match an arbitrary signature but it is sufficient to match the signatures of the current set of + well known attributes. + + The symbol which is the target of the attribute + The attribute to match. + + + + Gets the System.Type type symbol from targetSymbol's containing assembly. + + Target symbol on which this attribute is applied. + System.Type type symbol. + + + + Information early-decoded from well-known custom attributes applied on a parameter. + + + + + Information decoded from early well-known custom attributes applied on a property. + + + + + Information decoded from well-known custom attributes applied on a type. + + + + + IsManagedType is simple for most named types: + enums are not managed; + non-enum, non-struct named types are managed; + generic types and their nested types are managed; + type parameters are managed; + all special types have spec'd values (basically, (non-string) primitives) are not managed; + + Only structs are complicated, because the definition is recursive. A struct type is managed + if one of its instance fields is managed. Unfortunately, this can result in infinite recursion. + If the closure is finite, and we don't find anything definitely managed, then we return true. + If the closure is infinite, we disregard all but a representative of any expanding cycle. + + Intuitively, this will only return true if there's a specific type we can point to that is would + be managed even if it had no fields. e.g. struct S { S s; } is not managed, but struct S { S s; object o; } + is because we can point to object. + + + + + Returns a boolean value if we can determine whether the type is managed + without looking at its fields and Unset otherwise. + + + + + An error type, used to represent a byref return in a metadata signature. + + + If we ever decide to support by-ref returns, don't just make this a non-error + type. For consistency with parameters and locals, we should have a bit on the + signature (i.e. on the MethodSymbol). + + + + + This enum describes the types of components that could give + us diagnostics. We shouldn't read the list of diagnostics + until all of these types are accounted for. + + + PEParameterSymbol reserves all completion part bits and uses them to track the completion state and + presence of well known attributes. + + + + + A tuple of TypeParameterSymbol and DiagnosticInfo, created for errors + reported from ConstraintsHelper rather than creating Diagnostics directly. + This decouples constraints checking from syntax and Locations, and supports + callers that may want to create Location instances lazily or not at all. + + + + + Helper methods for generic type parameter constraints. There are two sets of methods: one + set for resolving constraint "bounds" (that is, determining the effective base type, interface set, + etc.), and another set for checking for constraint violations in type and method references. + + Bounds are resolved by calling one of the ResolveBounds overloads. Typically bounds are + resolved by each TypeParameterSymbol at, or before, one of the corresponding properties + (BaseType, Interfaces, etc.) is accessed. Resolving bounds may result in errors (cycles, + inconsistent constraints, etc.) and it is the responsibility of the caller to report any such + errors as declaration errors or use-site errors (depending on whether the type parameter + was from source or metadata) and to ensure bounds are resolved for source type parameters + even if the corresponding properties are never accessed directly. + + Constraints are checked by calling one of the CheckConstraints or CheckAllConstraints + overloads for any generic type or method reference from source. In some circumstances, + references are checked at the time the generic type or generic method is bound and constructed + by the Binder. In those case, it is sufficient to call one of the CheckConstraints overloads + since compound types (such as A<T>.B<U> or A<B<T>>) are checked + incrementally as each part is bound. In other cases however, constraint checking needs to be + delayed to prevent cycles where checking constraints requires binding the syntax that is currently + being bound (such as the constraint in class C<T> where T : C<T>). In those cases, + the caller must lazily check constraints, and since the types may be compound types, it is + necessary to call CheckAllConstraints. + + + + + Determine the effective base type, effective interface set, and set of type + parameters (excluding cycles) from the type parameter constraints. Conflicts + within the constraints and constraint types are returned as diagnostics. + 'inherited' should be true if the type parameters are from an overridden + generic method. In those cases, additional constraint checks are applied. + + + + + Check all generic constraints on the given type and any containing types + (such as A<T> in A<T>.B<U>). This includes checking constraints + on generic types within the type (such as B<T> in A<B<T>[]>). + + + + + Check type parameter constraints for the containing type or method symbol. + + The generic type or method. + Conversions instance. + The map from type parameters to type arguments. + Containing symbol type parameters. + Containing symbol type arguments. + Improves error message detail. + Diagnostics. + Parameters to skip. + + True if the constraints were satisfied, false otherwise. + + + + Return true if the class type has a public parameterless constructor. + + + + + Returns true if type a is encompassed by type b (spec 6.4.3), + and returns false otherwise. + + + + + A named type symbol that results from substituting a new owner for a type declaration. + + + + + A generic named type symbol that has been constructed with type arguments distinct from its own type parameters. + + + + + Substitutes all occurrences of dynamic type with Object type. + + + + + When indexer overload resolution fails, we have two options: + 1) Create a BoundBadExpression with the candidates as child nodes; + 2) Create a BoundIndexerAccess with the error flag set. + + Option 2 is preferable, because it retains information about the arguments + (names, ref kind, etc), and results in better output from flow analysis. + However, we can't create a BoundIndexerAccess with a null indexer symbol, + so we create an ErrorPropertySymbol to fill the gap. + + + + + An ErrorSymbol is used when the compiler cannot determine a symbol object to return because + of an error. For example, if a field is declared "Foo x;", and the type "Foo" cannot be + found, an ErrorSymbol is returned when asking the field "x" what it's type is. + + + + + The underlying error. + + + + + Summary of the reason why the type is bad. + + + + + Called by to perform substitution + on types with TypeKind ErrorType. The general pattern is to use the type map + to perform substitution on the wrapped type, if any, and then construct a new + error type symbol from the result (if there was a change). + + + + + When constructing this ErrorTypeSymbol, there may have been symbols that seemed to + be what the user intended, but were unsuitable. For example, a type might have been + inaccessible, or ambiguous. This property returns the possible symbols that the user + might have intended. It will return no symbols if no possible symbols were found. + See the CandidateReason property to understand why the symbols were unsuitable. + + + + + If CandidateSymbols returns one or more symbols, returns the reason that those + symbols were not chosen. Otherwise, returns None. + + + + + Returns true if this type is known to be a reference type. It is never the case that + IsReferenceType and IsValueType both return true. However, for an unconstrained type + parameter, IsReferenceType and IsValueType will both return false. + + + + + Returns true if this type is known to be a value type. It is never the case that + IsReferenceType and IsValueType both return true. However, for an unconstrained type + parameter, IsReferenceType and IsValueType will both return false. + + + + + Collection of names of members declared within this type. + + + + + Get all the members of this symbol. + + An ImmutableArray containing all the members of this symbol. If this symbol has no members, + returns an empty ImmutableArray. Never returns Null. + + + + Get all the members of this symbol that have a particular name. + + An ImmutableArray containing all the members of this symbol with the given name. If there are + no members with this name, returns an empty ImmutableArray. Never returns Null. + + + + Get all the members of this symbol that are types. + + An ImmutableArray containing all the types that are members of this symbol. If this symbol has no type members, + returns an empty ImmutableArray. Never returns null. + + + + Get all the members of this symbol that are types that have a particular name, of any arity. + + An ImmutableArray containing all the types that are members of this symbol with the given name. + If this symbol has no type members with this name, + returns an empty ImmutableArray. Never returns null. + + + + Get all the members of this symbol that are types that have a particular name and arity + + An ImmutableArray containing all the types that are members of this symbol with the given name and arity. + If this symbol has no type members with this name and arity, + returns an empty ImmutableArray. Never returns null. + + + + Gets the kind of this symbol. + + + + + Gets the kind of this type. + + + + + Get the symbol that logically contains this symbol. + + + + + Gets the locations where this symbol was originally defined, either in source or + metadata. Some symbols (for example, partial classes) may be defined in more than one + location. + + + + + Returns the arity of this type, or the number of type parameters it takes. + A non-generic type has zero arity. + + + + + Gets the name of this symbol. Symbols without a name return the empty string; null is + never returned. + + + + + Returns the type arguments that have been substituted for the type parameters. + If nothing has been substituted for a give type parameters, + then the type parameter itself is consider the type argument. + + + + + Returns the type parameters that this type has. If this is a non-generic type, + returns an empty ImmutableArray. + + + + + Returns the type symbol that this type was constructed from. This type symbol + has the same containing type (if any), but has type arguments that are the same + as the type parameters (although its containing type might not). + + + + + Implements visitor pattern. + + + + + Get this accessibility that was declared on this symbol. For symbols that do not have + accessibility declared on them, returns NotApplicable. + + + + + Returns true if this symbol is "static"; i.e., declared with the "static" modifier or + implicitly static. + + + + + Returns true if this symbol was declared as requiring an override; i.e., declared with + the "abstract" modifier. Also returns true on a type declared as "abstract", all + interface types, and members of interface types. + + + + + Returns true if this symbol was declared to override a base class member and was also + sealed from further overriding; i.e., declared with the "sealed" modifier. Also set for + types that do not allow a derived class (declared with "sealed" or "static" or "struct" + or "enum" or "delegate"). + + + + + An error type, used to represent the type of a type binding + operation when binding fails. + + + + + If (we believe) we know which symbol the user intended, then we should retain that information + in the corresponding error symbol - it can be useful for deciding how to handle the error. + For example, we might want to know whether (we believe) the error type was supposed to be an + interface, so that we can put it in a derived type's interface list, rather than in the base + type slot. + + Sometimes we will return the original definition of the intended symbol. For example, if we see + ]]> and we have an IFoo with a different arity or accessibility + (e.g. ]]> was constructed from an error symbol based on ]]>), + then we'll return ]]>, rather than trying to construct a corresponding closed + type (which may not be difficult/possible in the case of nested types or mismatched arities). + + NOTE: Any non-null type symbol returned is guaranteed not to be an error type. + + + TypeSymbolExtensions.GetNonErrorGuess is a more discoverable version of this functionality. + However, the real definition is in this class so that it can access the private field + nonErrorGuessType. + + + + + Represents a field initializer, a property initializer, or a global statement in script code. + + + + + The field being initialized (possibly a backing field of a property), or null if this is a top-level statement in script code. + + + + + A reference to or top-level in script code. + + + + + A sum of widths of spans of all preceding initializers + (instance and static initializers are summed separately, and trivias are not counted). + + + + + Represents a label in method body + + + + + Returns false because label can't be defined externally. + + + + + Returns false because label can't be sealed. + + + + + Returns false because label can't be abstract. + + + + + Returns false because label can't be overridden. + + + + + Returns false because label can't be virtual. + + + + + Returns false because label can't be static. + + + + + Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. + This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. + + + + + Returns 'NotApplicable' because label can't be used outside the member body. + + + + + Gets the locations where the symbol was originally defined, either in source or + metadata. Some symbols (for example, partial classes) may be defined in more than one + location. + + + + + Gets the immediately containing symbol of the . + It should be the containing the label in its body. + + + + + Gets the immediately containing symbol of the . + It should be the containing the label in its body. + + + + + Returns value 'Label' of the + + + + + A structure used to lexically order symbols. For performance, it's important that this be + a STRUCTURE, and be able to be returned from a symbol without doing any additional allocations (even + if nothing is cached yet.) + + + + + Compare two lexical sort keys in a compilation. + + + + + Specifies the syntax that a user defined variable comes from. + + + + + The local is not user defined nor it is a copy of a user defined local (e.g. with a substituted type). + Check the value of for the kind of synthesized variable. + + + + + User defined local variable declared by . + + + + + User defined local constant declared by . + + + + + User defined local variable declared by in . + + + + + User defined local variable declared by in . + + + + + User defined local variable declared by . + + + + + User defined local variable declared by in . + + + + + User defined local variable declared by . + + + + + Represents a local variable in a method body. + + + + + Gets the type of this local. + + + + + WARN WARN WARN: If you access this via the semantic model, things will break (since the initializer may not have been bound). + + Whether or not this local is pinned (i.e. the type will be emitted with the "pinned" modifier). + + + Superficially, it seems as though this should always be the same as DeclarationKind == LocalDeclarationKind.Fixed. + Unfortunately, when we fix a string expression, it is not the declared local (e.g. char*) but a synthesized temp (string) + that is pinned. + + + + + Returns false because local variable can't be defined externally. + + + + + Returns false because local variable can't be sealed. + + + + + Returns false because local variable can't be abstract. + + + + + Returns false because local variable can't be overridden. + + + + + Returns false because local variable can't be virtual. + + + + + Returns false because local variable can't be declared as static in C#. + + + + + Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. + This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. + + + + + Returns 'NotApplicable' because local variable can't be used outside the member body.. + + + + + Returns value 'Local' of the + + + + + Returns true if this local variable was declared in a catch clause. + + + + + Returns true if this local variable was declared as "const" (i.e. is a constant declaration). + + + + + Returns true if the local variable is declared in resource-acquisition of a 'using statement'; + otherwise false + + + + using (var localVariable = new StreamReader("C:\\Temp\\MyFile.txt")) { ... } + + + + + + Returns true if the local variable is declared in fixed-pointer-initializer (in unsafe context) + + + + + Returns true if this local variable is declared in for-initializer + + + + + Returns true if this local variable is declared as iteration variable + + + + + Returns the syntax node that declares the variable. + + + All user-defined and long-lived synthesized variables must return a reference to a node that is + tracked by the EnC diffing algorithm. For example, for variable + the declarator is the node. + + The location of the declarator is used to calculate during emit. + + + + + Returns false if the field wasn't declared as "const", or constant value was omitted or erroneous. + True otherwise. + + + + + If IsConst returns true, then returns the constant value of the field or enum member. If IsConst returns + false, then returns null. + + + + + Returns true if the local symbol was compiler generated. + + + + + + C# 4.0 §10.6: The name, the type parameter list and the formal parameter list of a method define + the signature (§3.6) of the method. Specifically, the signature of a method consists of its + name, the number of type parameters and the number, modifiers, and types of its formal + parameters. For these purposes, any type parameter of the method that occurs in the type of + a formal parameter is identified not by its name, but by its ordinal position in the type + argument list of the method. The return type is not part of a method's signature, nor are + the names of the type parameters or the formal parameters. + + + C# 4.0 §3.6: For the purposes of signatures, the types object and dynamic are considered the + same. + + + C# 4.0 §3.6: We implement the rules for ref/out by mapping both to ref. The caller (i.e. + checking for proper overrides or partial methods, etc) should check that ref/out are + consistent. + + + + + + This instance is used when trying to determine if one member explicitly implements another, + according the C# definition. + The member signatures are compared without regard to name (including the interface part, if any) + and the return types must match. + + + + + This instance is used when trying to determine if one member implicitly implements another, + according to the C# definition. + The member names, parameters, and (return) types must match. Custom modifiers are ignored. + + + One would expect this comparer to have requireSourceMethod = true, but it doesn't because (for source types) + we allow inexact matching of custom modifiers when computing implicit member implementations. Consider the + following scenario: interface I has a method M with custom modifiers C1, source type ST includes I in its + interface list but has no method M, and metadata type MT has a method M with custom modifiers C2. + In this scenario, we want to compare I.M to MT.M without regard to custom modifiers, because if C1 != C2, + we can just synthesize an explicit implementation of I.M in ST that calls MT.M. + + + + + This instance is used as a fallback when it is determined that one member does not implicitly implement + another. It applies a looser check to determine whether the proposed implementation should be reported + as "close". + + + + + This instance is used to determine if two C# member declarations in source conflict with each other. + Names, arities, and parameter types are considered. + Return types, type parameter constraints, custom modifiers, and parameter ref kinds, etc are ignored. + + + This does the same comparison that MethodSignature used to do. + + + + + This instance is used to check whether one member overrides another, according to the C# definition. + + + + + This instance is used to check whether one property or event overrides another, according to the C# definition. + NOTE: C# ignores accessor member names. + CAVEAT: considers return types so that getters and setters will be treated the same. + + + + + Same as except that it pays attention to custom modifiers and return type. + Normally, the return type isn't considered during overriding, but this comparer is actually used to find + exact matches (i.e. before tie-breaking takes place amongst close matches). + + + + + If this returns false, then the real override comparer (whichever one is appropriate for the scenario) + will also return false. + + + + + This instance is intended to reflect the definition of signature equality used by the runtime + (ECMA-335, Partition I, §8.6.1.6 Signature Matching). + It considers return type, name, parameters, calling convention, and custom modifiers, but ignores + the difference between and . + + + + + Same as , but distinguishes between ref and out. During override resolution, + if we find two methods that match except for ref/out, we want to prefer the one that matches, even + if the runtime doesn't. + + + + + This instance is the same as RuntimeSignatureComparer. + CONSIDER: just use RuntimeSignatureComparer? + + + + + This instance is used to search for members that have the same name, parameters, (return) type, and constraints (if any) + according to the C# definition. Custom modifiers are ignored. + + + + + This instance is used to search for members that have identical signatures in every regard. + + + + + This instance is used for performing approximate overload resolution of documentation + comment cref attributes. It ignores the name, because the candidates were all found by lookup. + + + + + This instance is used as a key in the lambda return type inference. + We basically only interested in parameters since inference will set the return type to null. + + + + + Returns true if the first set of constraint types + is a subset of the second set. + + + + + SymbolExtensions for member symbols. + + + + + Get the parameters of a member symbol. Should be a method, property, or event. + + + + + Get the types of the parameters of a member symbol. Should be a method, property, or event. + + + + + Get the ref kinds of the parameters of a member symbol. Should be a method, property, or event. + + + + + Count the number of custom modifiers in/on the return type + and parameters of the specified method. + + + + + Count the number of custom modifiers in/on the type + and parameters (for indexers) of the specified property. + + + + + Return the arity of a member. + + + + + NOTE: every struct has a public parameterless constructor either used-defined or default one + + + + + default zero-init constructor symbol is added to a struct when it does not define + its own parameterless public constructor. + We do not emit this constructor and do not call it + + + + + If the event has a AddMethod, return that. Otherwise check the overridden + event, if any. Repeat for each overridden event. + + + This method exists to mimic the behavior of GetOwnOrInheritedGetMethod, but it + should only ever look at the overridden event in error scenarios. + + + + + If the event has a RemoveMethod, return that. Otherwise check the overridden + event, if any. Repeat for each overridden event. + + + This method exists to mimic the behavior of GetOwnOrInheritedSetMethod, but it + should only ever look at the overridden event in error scenarios. + + + + + Does the compilation this symbol belongs to output to a winmdobj? + + + + + + + Returns a constructed named type symbol if 'type' is generic, otherwise just returns 'type' + + + + + Returns true if the members of superType are accessible from subType due to inheritance. + + + + + The immediately containing namespace or named type, or null + if the containing symbol is neither a namespace or named type. + + + + + Returns true if all type parameter references within the given + type belong to containingSymbol or its containing types. + + + + + Returns true if all type parameter references within the given + types belong to containingSymbol or its containing types. + + + + + A MergedNamespaceSymbol represents a namespace that merges the contents of two or more other + namespaces. Any sub-namespaces with the same names are also merged if they have two or more + instances. + + Merged namespaces are used to merge the symbols from multiple metadata modules and the + source "module" into a single symbol tree that represents all the available symbols. The + compiler resolves names against this merged set of symbols. + + Typically there will not be very many merged namespaces in a Compilation: only the root + namespaces and namespaces that are used in multiple referenced modules. (Microsoft, System, + System.Xml, System.Diagnostics, System.Threading, ...) + + + + + Create a possibly merged namespace symbol. If only a single namespace is passed it, it + is just returned directly. If two or more namespaces are passed in, then a new merged + namespace is created with the given extent and container. + + The namespace extent to use, IF a merged namespace is created. + The containing namespace to used, IF a merged + namespace is created. + One or more namespaces to merged. If just one, then it + is returned. The merged namespace symbol may hold onto the array. + An optional name to give the resulting namespace. + A namespace symbol representing the merged namespace. + + + + Method that is called from the CachingLookup to lookup the children of a given name. + Looks in all the constituent namespaces. + + + + + Method that is called from the CachingLookup to get all child names. Looks in all + constituent namespaces. + + + + + Represents source or metadata assembly. + + + + + + An array of cached Cor types defined in this assembly. + Lazily filled by GetSpecialType method. + + + + + + How many Cor types have we cached so far. + + + + + Lookup declaration for predefined CorLib type in this Assembly. + + + + + + + + Register declaration of predefined CorLib type in this Assembly. + + + + + + Continue looking for declaration of predefined CorLib type in this Assembly + while symbols for new type declarations are constructed. + + + + + Not yet known value is represented by ErrorTypeSymbol.UnknownResultType + + + + + Lookup member declaration in predefined CorLib type in this Assembly. Only valid if this + assembly is the Cor Library + + + + + Determine whether this assembly has been granted access to . + Assumes that the public key has been determined. The result will be cached. + + + + + + + + If the extension method is applicable based on the "this" argument type, return + the method constructed with the inferred type arguments. If the method is not an + unconstructed generic method, type inference is skipped. If the method is not + applicable, or if constraints when inferring type parameters from the "this" type + are not satisfied, the return value is null. + + + + + The runtime considers a method to be a finalizer (i.e. a method that should be invoked + by the garbage collector) if it (directly or indirectly) overrides System.Object.Finalize. + + + As an optimization, return true immediately for metadata methods with MethodKind + Destructor - they are guaranteed to be finalizers. + + Method to inspect. + This method is used to determine the method kind of + a PEMethodSymbol, so we may need to avoid using MethodKind until we move on to a different + MethodSymbol. + + + + Returns a constructed method symbol if 'method' is generic, otherwise just returns 'method' + + + + + Some kinds of methods are not considered to be hideable by certain kinds of members. + Specifically, methods, properties, and types cannot hide constructors, destructors, + operators, conversions, or accessors. + + + + + Some kinds of methods are never considered hidden by methods, properties, or types + (constructors, destructors, operators, conversions, and accessors). + + + + + Returns whether this method is async and returns void. + + + + + Returns whether this method is async and returns a task. + + + + + Returns whether this method is async and returns a generic task. + + + + + A is a special kind of that represents + an assembly that couldn't be found. + + + + + AssemblySymbol to represent missing, for whatever reason, CorLibrary. + The symbol is created by ReferenceManager on as needed basis and is shared by all compilations + with missing CorLibraries. + + + + + An array of cached Cor types defined in this assembly. + Lazily filled by GetDeclaredSpecialType method. + + + + + + Lookup declaration for predefined CorLib type in this Assembly. Only should be + called if it is know that this is the Cor Library (mscorlib). + + + + + + A is a special kind of that represents + a type symbol that was attempted to be read from metadata, but couldn't be + found, because: + a) The metadata file it lives in wasn't referenced + b) The metadata file was referenced, but didn't contain the type + c) The metadata file was referenced, contained the correct outer type, but + didn't contains a nested type in that outer type. + + + + + Get the arity of the missing type. + + + + + Represents not nested missing type. + + + + + Either , , or -1 if not initialized. + + + + + This is the FULL namespace name (e.g., "System.Collections.Generic") + of the type that couldn't be found. + + + + + Represents nested missing type. + + + + + A is a special kind of that represents + a module that couldn't be found. + + + + + A is a special kind of that represents + a namespace that couldn't be found. + + + + + Represents a module within an assembly. Every assembly contains one or more modules. + + + + + Returns a NamespaceSymbol representing the global (root) namespace, with + module extent, that can be used to browse all of the symbols defined in this module. + + + + + Returns the containing assembly. Modules are always directly contained by an assembly, + so this property always returns the same as ContainingSymbol. + + + + + Returns value 'NetModule' of the + + + + + Module's ordinal within containing assembly's Modules array. + 0 - for a source module, etc. + -1 - for a module that doesn't have containing assembly, or has it, but is not part of Modules array. + + + + + Target architecture of the machine. + + + + + Indicates that this PE file makes Win32 calls. See CorPEKind.pe32BitRequired for more information (http://msdn.microsoft.com/en-us/library/ms230275.aspx). + + + + + Does this symbol represent a missing module. + + + + + Returns 'NotApplicable' + + + + + Returns false because module can't be declared as 'static'. + + + + + Returns false because module can't be virtual. + + + + + Returns false because module can't be overridden. + + + + + Returns false because module can't be abstract. + + + + + Returns false because module can't be sealed. + + + + + Returns false because module can't be defined externally. + + + + + Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. + This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. + + + + + Returns an array of assembly identities for assemblies referenced by this module. + Items at the same position from ReferencedAssemblies and from ReferencedAssemblySymbols + correspond to each other. + + + + + Returns an array of assembly identities for assemblies referenced by this module. + Items at the same position from GetReferencedAssemblies and from GetReferencedAssemblySymbols + should correspond to each other. + + The array and its content is provided by ReferenceManager and must not be modified. + + + + + + Returns an array of AssemblySymbol objects corresponding to assemblies referenced + by this module. Items at the same position from ReferencedAssemblies and + from ReferencedAssemblySymbols correspond to each other. + + + + + Returns an array of AssemblySymbol objects corresponding to assemblies referenced + by this module. Items at the same position from GetReferencedAssemblies and + from GetReferencedAssemblySymbols should correspond to each other. If reference is + not resolved by compiler, GetReferencedAssemblySymbols returns MissingAssemblySymbol in the + corresponding item. + + The array and its content is provided by ReferenceManager and must not be modified. + + + + + A helper method for ReferenceManager to set assembly identities for assemblies + referenced by this module and corresponding AssemblySymbols. + + A description of the assemblies referenced by this module. + + Source assembly that triggered creation of this module symbol. + For debug purposes only, this assembly symbol should not be persisted within + this module symbol because the module can be shared across multiple source + assemblies. This method will only be called for the first one. + + + + + True if this module has any unified references. + + + + + Returns a unification use-site error (if any) for a symbol contained in this module + that is referring to a specified . + + + If an assembly referenced by this module isn't exactly matching any reference given to compilation + the Assembly Manager might decide to use another reference if it matches except for version + (it unifies the version with the existing reference). + + + + + Lookup a top level type referenced from metadata, names should be + compared case-sensitively. + + + Full type name, possibly with generic name mangling. + + + Symbol for the type, or MissingMetadataSymbol if the type isn't found. + + + + + + Returns true if there is any applied CompilationRelaxationsAttribute assembly attribute for this module. + + + + + Returns true if there is any applied RuntimeCompatibilityAttribute assembly attribute for this module. + + + + + Default char set for contained types, or null if not specified. + + + + + Given a namespace symbol, returns the corresponding module specific namespace symbol + + + + + If this symbol represents a metadata module returns the underlying . + + Otherwise, this returns null. + + + + + Utility class for substituting actual type arguments for formal generic type parameters. + + + + + A NamespaceExtent represents whether a namespace contains types and sub-namespaces from a + particular module, assembly, or merged across all modules (source and metadata) in a + particular compilation. + + + + + Returns what kind of extent: Module, Assembly, or Compilation. + + + + + If the Kind is ExtendKind.Module, returns the module symbol that this namespace + encompasses. Otherwise throws InvalidOperationException. + + + + + If the Kind is ExtendKind.Assembly, returns the assembly symbol that this namespace + encompasses. Otherwise throws InvalidOperationException. + + + + + If the Kind is ExtendKind.Compilation, returns the compilation symbol that this + namespace encompasses. Otherwise throws InvalidOperationException. + + + + + Create a NamespaceExtent that represents a given ModuleSymbol. + + + + + Create a NamespaceExtent that represents a given AssemblySymbol. + + + + + Create a NamespaceExtent that represents a given Compilation. + + + + + Represents either a namespace or a type. + + + + + Returns true if this symbol is a namespace. If it is not a namespace, it must be a type. + + + + + Returns true if this symbols is a type. Equivalent to !IsNamespace. + + + + + Returns true if this symbol is "virtual", has an implementation, and does not override a + base class member; i.e., declared with the "virtual" modifier. Does not return true for + members declared as abstract or override. + + + Always returns false. + + + + + Returns true if this symbol was declared to override a base class member; i.e., declared + with the "override" modifier. Still returns true if member was declared to override + something, but (erroneously) no member to override exists. + + + Always returns false. + + + + + Returns true if this symbol has external implementation; i.e., declared with the + "extern" modifier. + + + Always returns false. + + + + + Get all the members of this symbol. + + An ImmutableArray containing all the members of this symbol. If this symbol has no members, + returns an empty ImmutableArray. Never returns null. + + + + Get all the members of this symbol. The members may not be in a particular order, and the order + may not be stable from call-to-call. + + An ImmutableArray containing all the members of this symbol. If this symbol has no members, + returns an empty ImmutableArray. Never returns null. + + + + Get all the members of this symbol that have a particular name. + + An ImmutableArray containing all the members of this symbol with the given name. If there are + no members with this name, returns an empty ImmutableArray. Never returns null. + + + + Get all the members of this symbol that are types. The members may not be in a particular order, and the order + may not be stable from call-to-call. + + An ImmutableArray containing all the types that are members of this symbol. If this symbol has no type members, + returns an empty ImmutableArray. Never returns null. + + + + Get all the members of this symbol that are types. + + An ImmutableArray containing all the types that are members of this symbol. If this symbol has no type members, + returns an empty ImmutableArray. Never returns null. + + + + Get all the members of this symbol that are types that have a particular name, of any arity. + + An ImmutableArray containing all the types that are members of this symbol with the given name. + If this symbol has no type members with this name, + returns an empty ImmutableArray. Never returns null. + + + + Get all the members of this symbol that are types that have a particular name and arity + + An IEnumerable containing all the types that are members of this symbol with the given name and arity. + If this symbol has no type members with this name and arity, + returns an empty IEnumerable. Never returns null. + + + + Get a source type symbol for the given declaration syntax. + + Null if there is no matching declaration. + + + + Get a source type symbol for the given declaration syntax. + + Null if there is no matching declaration. + + + + Get a source type symbol of given name, arity and kind. If a tree and syntax are provided, restrict the results + to those that are declared within the given syntax. + + Null if there is no matching declaration. + + + + Lookup an immediately nested type referenced from metadata, names should be + compared case-sensitively. + + + Simple type name, possibly with generic name mangling. + + + Symbol for the type, or MissingMetadataSymbol if the type isn't found. + + + + + Finds types or namespaces described by a qualified name. + + Sequence of simple plain names. + + A set of namespace or type symbols with given qualified name (might comprise of types with multiple generic arities), + or an empty set if the member can't be found (the qualified name is ambiguous or the symbol doesn't exist). + + + "C.D" matches C.D, C{T}.D, C{S,T}.D{U}, etc. + + + + + A is a special kind of that represents + an assembly that is not missing, i.e. the "real" thing. + + + + + This is a cache similar to the one used by MetaImport::GetTypeByName + in native compiler. The difference is that native compiler pre-populates + the cache when it loads types. Here we are populating the cache only + with things we looked for, so that next time we are looking for the same + thing, the lookup is fast. This cache also takes care of TypeForwarders. + Gives about 8% win on subsequent lookups in some scenarios. + + + + + + Does this symbol represent a missing assembly. + + + + + Gets the merged root namespace that contains all namespaces and types defined in the modules + of this assembly. If there is just one module in this assembly, this property just returns the + GlobalNamespace of that module. + + + + + Lookup a top level type referenced from metadata, names should be + compared case-sensitively. Detect cycles during lookup. + + + Full type name, possibly with generic name mangling. + + + List of assemblies lookup has already visited (since type forwarding can introduce cycles). + + + Take forwarded types into account. + + + + + For test purposes only. + + + + + For test purposes only. + + + + + A is a special kind of that represents + a module that is not missing, i.e. the "real" thing. + + + + + An array of objects corresponding to assemblies directly referenced by this module. + + + The contents are provided by ReferenceManager and may not be modified. + + + + + Does this symbol represent a missing module. + + + + + Returns an array of assembly identities for assemblies referenced by this module. + Items at the same position from GetReferencedAssemblies and from GetReferencedAssemblySymbols + should correspond to each other. + + + + + Returns an array of AssemblySymbol objects corresponding to assemblies referenced + by this module. Items at the same position from GetReferencedAssemblies and + from GetReferencedAssemblySymbols should correspond to each other. If reference is + not resolved by compiler, GetReferencedAssemblySymbols returns MissingAssemblySymbol in the + corresponding item. + + + + + A helper method for ReferenceManager to set assembly identities for assemblies + referenced by this module and corresponding AssemblySymbols. + + + + + Lookup a top level type referenced from metadata, names should be + compared case-sensitively. + + + Full type name, possibly with generic name mangling. + + + Symbol for the type, or MissingMetadataSymbol if the type isn't found. + + + + + + A NoPiaAmbiguousCanonicalTypeSymbol is a special kind of ErrorSymbol that represents a NoPia + embedded type symbol that was attempted to be substituted with canonical type, but the + canonical type was ambiguous. + + + + + A NoPiaIllegalGenericInstantiationSymbol is a special kind of ErrorSymbol that represents a + generic type instantiation that cannot cross assembly boundaries according to NoPia rules. + + + + + A NoPiaMissingCanonicalTypeSymbol is a special kind of ErrorSymbol that represents a NoPia + embedded type symbol that was attempted to be substituted with canonical type, but the + canonical type couldn't be found. + + + + + Initialize the ObsoleteAttributeData by fetching attributes and decoding ObsoleteAttributeData. This can be + done for Metadata symbol easily whereas trying to do this for source symbols could result in cycles. + + + + + Get the ObsoleteAttributeData by fetching attributes and decoding ObsoleteAttributeData. This can be + done for Metadata symbol easily whereas trying to do this for source symbols could result in cycles. + + + + + This method checks to see if the given symbol is Obsolete or if any symbol in the parent hierarchy is Obsolete. + + + True if some symbol in the parent hierarchy is known to be Obsolete. Unknown if any + symbol's Obsoleteness is Unknown. False, if we are certain that no symbol in the parent + hierarchy is Obsolete. + + + + + Create a diagnostic for the given symbol. This could be an error or a warning based on + the ObsoleteAttribute's arguments. + + + + + Encapsulates the MakeOverriddenOrHiddenMembers functionality for methods, properties (including indexers), + and events. + + + + + Walk up the type hierarchy from ContainingType and list members that this + member either overrides (accessible members with the same signature, if this + member is declared "override") or hides (accessible members with the same name + but different kinds, plus members that would be in the overrides list if + this member were not declared "override"). + + Members in the overridden list may be non-virtual or may have different + accessibilities, types, accessors, etc. They are really candidates to be + overridden. + + Members in the hidden list are definitely hidden. + + Members in the runtime overridden list are indistinguishable from the members + in the overridden list from the point of view of the runtime (see + FindOtherOverriddenMethodsInContainingType for details). + + + In the presence of non-C# types, the meaning of "same signature" is rather + complicated. If this member isn't from source, then it refers to the runtime's + notion of signature (i.e. including return type, custom modifiers, etc). + If this member is from source, then the process is (conceptually) as follows. + + 1) Walk up the type hierarchy, recording all matching members with the same + signature, ignoring custom modifiers and return type. Stop if a hidden + member is encountered. + 2) Apply the following "tie-breaker" rules until you have at most one member, + a) Prefer members in more derived types. + b) Prefer an exact custom modifier match (i.e. none, for a source member). + c) Prefer fewer custom modifiers (values/positions don't matter, just count). + d) Prefer earlier in GetMembers order (within the same type). + 3) If a member remains, search its containing type for other members that + have the same C# signature (overridden members) or runtime signature + (runtime overridden members). + + In metadata, properties participate in overriding only through their accessors. + That is, property/event accessors may implicitly or explicitly override other methods + and a property/event can be considered to override another property/event if its accessors + override those of the other property/event. + This implementation (like Dev10) will not follow that approach. Instead, it is + based on spec section 10.7.5, which treats properties as entities in their own + right. If all property/event accessors have conventional names in metadata and nothing + "unusual" is done with explicit overriding, this approach should produce the same + results as an implementation based on accessor overriding. + + + + + In the CLI, accessors are just regular methods and their overriding/hiding rules are the same as for + regular methods. In C#, however, accessors are intimately connected with their corresponding properties. + Rather than walking up the type hierarchy from the containing type of this accessor, looking for members + with the same name, MakePropertyAccessorOverriddenOrHiddenMembers delegates to the associated property. + For an accessor to hide a member, the hidden member must be a corresponding accessor on a property hidden + by the associated property. For an accessor to override a member, the overridden member must be a + corresponding accessor on a property (directly or indirectly) overridden by the associated property. + + Example 1: + + public class A { public virtual int P { get; set; } } + public class B : A { public override int P { get { return 1; } } } //get only + public class C : B { public override int P { set { } } } // set only + + C.P.set overrides A.P.set because C.P.set is the setter of C.P, which overrides B.P, + which overrides A.P, which has A.P.set as a setter. + + Example 2: + + public class A { public virtual int P { get; set; } } + public class B : A { public new virtual int P { get { return 1; } } } //get only + public class C : B { public override int P { set { } } } // set only + + C.P.set does not override any method because C.P overrides B.P, which has no setter + and does not override a property. + + This accessor. + The property associated with this accessor. + Members overridden or hidden by this accessor. + + This method is intended to return values consistent with the definition of C#, which + may differ from the actual meaning at runtime. + + Note: we don't need a different path for interfaces - Property.OverriddenOrHiddenMembers handles that. + + + + + In the CLI, accessors are just regular methods and their overriding/hiding rules are the same as for + regular methods. In C#, however, accessors are intimately connected with their corresponding events. + Rather than walking up the type hierarchy from the containing type of this accessor, looking for members + with the same name, MakeEventAccessorOverriddenOrHiddenMembers delegates to the associated event. + For an accessor to hide a member, the hidden member must be a corresponding accessor on a event hidden + by the associated event. For an accessor to override a member, the overridden member must be a + corresponding accessor on a event (directly or indirectly) overridden by the associated event. + + This accessor. + The event associated with this accessor. + Members overridden or hidden by this accessor. + + This method is intended to return values consistent with the definition of C#, which + may differ from the actual meaning at runtime. + + Note: we don't need a different path for interfaces - Event.OverriddenOrHiddenMembers handles that. + + CONSIDER: It is an error for an event to have only one accessor. Currently, we mimic the behavior for + properties, for consistency, but an alternative approach would be to say that nothing is overridden. + + CONSIDER: is there a way to share code with MakePropertyAccessorOverriddenOrHiddenMembers? + + + + + There are two key reasons why interface overriding/hiding is different from class overriding/hiding: + 1) interface members never override other members; and + 2) interfaces can extend multiple interfaces. + The first difference doesn't require any special handling - as long as the members have IsOverride=false, + the code for class overriding/hiding does the right thing. + The second difference is more problematic. For one thing, an interface member can hide a different member in + each base interface. We only report the first one, but we need to expose all of them in the API. More importantly, + multiple inheritance raises the possibility of diamond inheritance. Spec section 13.2.5, Interface member access, + says: "The intuitive rule for hiding in multiple-inheritance interfaces is simply this: If a member is hidden in any + access path, it is hidden in all access paths." For example, consider the following interfaces: + + interface I0 { void M(); } + interface I1 : I0 { void M(); } + interface I2 : I0, I1 { void M(); } + + I2.M does not hide I0.M, because it is already hidden by I1.M. To make this work, we need to traverse the graph + of ancestor interfaces in topological order and flag ones later in the enumeration that are hidden along some path. + + + See SymbolPreparer::checkIfaceHiding. + + + + + Look for overridden or hidden members in a specific type. + + Member that is hiding or overriding. + True if member is from the current compilation. + The type that contains member (member.ContainingType). + The type to search. + + A member with the same signature if currTypeHasExactMatch is true, + a member with (a minimal number of) different custom modifiers if there is one, + and null otherwise. + True if there's a member with the same name and kind that is not a match. + Hidden members (same name, different kind) will be added to this builder. + + There is some similarity between this member and TypeSymbol.FindPotentialImplicitImplementationMethodDeclaredInType. + When making changes to this member, think about whether or not they should also be applied in TypeSymbol. + + In incorrect or imported code, it is possible that both currTypeBestMatch and hiddenBuilder will be populated. + + + + + If representative member is non-null and is contained in a constructed type, then find + other members in the same type with the same signature. If this is an override member, + add them to the overridden and runtime overridden lists. Otherwise, add them to the + hidden list. + + + + + Some kinds of methods are not considered to be hideable by certain kinds of members. + Specifically, methods, properties, and types cannot hide constructors, destructors, + operators, conversions, or accessors. + + + + + Having found the best member to override, we want to find members with the same signature on the + best member's containing type. + + + The member that we consider to be overridden (may have different custom modifiers from the overriding member). + Assumed to already be in the overridden and runtime overridden lists. + + + If the best match was based on the custom modifier count, rather than the custom modifiers themselves + (because the overriding member is in the current compilation), then we should use the count when determining + whether the override is ambiguous. + + + If the declaring type is constructed, it's possible that two (or more) members have the same signature + (including custom modifiers). Return a list of such members so that we can report the ambiguity. + + + If the declaring type is constructed, it's possible that two (or more) members have the same signature + (including custom modifiers) in metadata (no ref/out distinction). Return a list of such members so + that we can report the ambiguity. + + Even in a non-generic type, it's possible for two indexers to have the same signature. For example, + this would be the case if the default member of a type is "get_Item" and indexers "A" and "B", + with the same signature, both have an indexer called "get_Item". + + From: SymbolPreparer.cpp + DevDiv Bugs 115384: Both out and ref parameters are implemented as references. In addition, out parameters are + decorated with OutAttribute. In CLR when a signature is looked up in virtual dispatch, CLR does not distinguish + between these to parameter types. The choice is the last method in the vtable. Therefore we check and warn if + there would potentially be a mismatch in CLRs and C#s choice of the overridden method. Unfortunately we have no + way of communicating to CLR which method is the overridden one. We only run into this problem when the + parameters are generic. + + + + + Having found that we are hiding a method with exactly the same signature + (including custom modifiers), we want to find methods with the same signature + on the declaring type because they will also be hidden. + (If the declaring type is constructed, it's possible that two or more + methods have the same signature (including custom modifiers).) + (If the representative member is an indexer, it's possible that two or more + properties have the same signature (including custom modifiers, even in a + non-generic type). + + + This kind of the hiding member. + + + The member that we consider to be hidden (must have exactly the same custom modifiers as the hiding member). + Assumed to already be in hiddenBuilder. + + + Will have all other members with the same signature (including custom modifiers) as + representativeMember added. + + + + + Given a method, find a method that it overrides from the perspective of the CLI. + Key differences from C#: non-virtual methods are ignored, the RuntimeSignatureComparer + is used (i.e. consider return types, ignore ref/out distinction). + + + WARN: Must not check method.MethodKind - PEMethodSymbol.ComputeMethodKind uses this method. + NOTE: Does not check whether the given method will be marked "newslot" in metadata (which + would indicate that it does not override anything). + WARN: If the method may override a source method and declaration diagnostics have yet to + be computed, then it is important to pass ignoreInterfaceImplementationChanges: true + (see MethodSymbol.IsMetadataVirtual for details). + + + + + Note that the access check is done using the original definitions. This is because we want to avoid + reductions in accessibility that result from type argument substitution (e.g. if an inaccessible type + has been passed as a type argument). + See DevDiv #11967 for an example. + + + + + Groups the information computed by MakeOverriddenOrHiddenMembers. + + + + + It is not suitable to call this method on a object + associated with a member within substituted type, + should be used instead. + + + + + Represents a preprocessing conditional compilation symbol. + + + + + Helper methods that exist to share code between properties and events. + + + + + If the property has a GetMethod, return that. Otherwise check the overridden + property, if any. Repeat for each overridden property. + + + + + If the property has a SetMethod, return that. Otherwise check the overridden + property, if any. Repeat for each overridden property. + + + + + A RangeVariableSymbol represents an identifier introduced in a query expression as the + identifier of a "from" clause, an "into" query continuation, a "let" clause, or a "join" clause. + + + + + Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. + This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. + + + + + An extension method with the "this" parameter removed. + Used for the public binding API only, not for compilation. + + + + + Return the extension method in reduced form if the extension method + is applicable, and satisfies type parameter constraints, based on the + "this" argument type. Otherwise, returns null. + + + + + A representation of a method symbol that is intended only to be used for comparison purposes + (esp in MethodSignatureComparer). + + + + + Intended to be used to create ParameterSymbols for a SignatureOnlyMethodSymbol. + + + + + A representation of a property symbol that is intended only to be used for comparison purposes + (esp in PropertySignatureComparer). + + + + + Generate a list containing the given field and all dependencies + of that field that require evaluation. The list is ordered by + dependencies, with fields with no dependencies first. Cycles are + broken at the first field lexically in the cycle. If multiple threads + call this method with the same field, the order of the fields + returned should be the same, although some fields may be missing + from the lists in some threads as other threads evaluate fields. + + + + + The set of fields on which the field depends. + + + + + The set of fields that depend on the field. + + + + + Build a dependency graph (a map from + field to dependencies). + + + + + Return an ordering of the compilations referenced in the graph. + The actual ordering is not important, but we need some ordering + to compare source locations across different compilations. + + + + + Return one member from one cycle in the graph. + (There must be at least one cycle. In fact, there + shouldn't be any fields without dependencies.) + + + + + Type parameters in documentation comments are complicated since they sort of act as declarations, + rather than references. Consider the following example: + + See . + class B { void M(T t) { } } + ]]> + + We make some key observations: + 1) The type parameter name in the cref is not tied to the type parameter name in the type declaration. + 2) A relationship exists between the two occurrences of "U" in the cref: they both refer to (or define) + the same symbol. + + In Roslyn, we've decided on the following representation: within the (entire) scope of a cref, the names + of all type parameters "declared" in the cref are in scope and bind to the corresponding type parameters. + This representation has one major advantage: as long as the appropriate binder (i.e. the one that knows + about the implicitly-declared type parameters) is used, TypeSyntaxes within the cref can be bound by + calling BindType. In addition to eliminating the necessity for custom binding code in the batch case, + this reduces the problem of exposing such nodes in the SemanticModel to one of ensuring that the right + enclosing binder is chosen. That is, new code will have to be written to handle CrefSyntaxes, but the + existing code for TypeSyntaxes should just work! + + In the example above, this means that, between the cref quotation marks, the name "U" binds to an + implicitly declared type parameter, whether it is in "B{U}", "M{U}", or "M{List{U[]}}". + + Of course, it's not all gravy. One thing we're giving up by using this representation is the ability to + distinguish between "declared" type parameters with the same name. Consider the following example: + + See . + class A + { + void M(T t) { } + void M(U u) { } + } + ]]> + + + The native compiler interprets this in the same way as it would interpret A{T1, T2}.M(T2) and unambiguously + (i.e. without a warning) binds to A{T, U}.M(U). Since Roslyn does not distinguish between the T's, Roslyn + reports an ambiguity warning and picks the first method. Furthermore, renaming one 'T' will rename all of + them. + + This class represents such an implicitly declared type parameter. The declaring syntax is expected to be + an IdentifierNameSyntax in the type argument list of a QualifiedNameSyntax. + + + + Out params are updated by assignment. If you require thread-safety, pass temps and then + CompareExchange them back into shared memory. + + + + Type that already has custom modifiers. + Same as , but without custom modifiers. May differ in object/dynamic. + of the parameter of which this is the type (or for a return type. + The assembly containing the signature referring to the destination type. + with custom modifiers copied from . + + + + Given a member, look for other members contained in the same type with signatures that will + not be distinguishable by the runtime. + + + + + Implemented by symbols that can be targetted by an attribute declaration (i.e. source symbols). + + + + + Returns the owner of attributes that apply to this symbol. + + + Attributes for this symbol might be retrieved from attribute list of another (owning) symbol. + In that case this property returns that owning symbol, otherwise it returns "this". + + + + + Returns a bit set of attribute locations applicable to this symbol. + + + + + Attribute location corresponding to this symbol. + + + Location of an attribute if an explicit location is not specified via attribute target specification syntax. + + + + + Represents implicit, script and submission classes. + + + + + Returns null for a submission class. + This ensures that a submission class does not inherit methods such as ToString or GetHashCode. + + + + + Indexed type parameters are used in place of type parameters for method signatures. There is + a unique mapping from index to a single IndexedTypeParameterSymbol. + + They don't have a containing symbol or locations. + + They do not have constraints, variance, or attributes. + + + + + Create a vector of n dummy type parameters. Always reuses the same type parameter symbol + for the same position. + + + + + + + Represents an assembly built by compiler. + + + + + A Compilation the assembly is created for. + + + + + Assembly's identity. + + + + + A list of modules the assembly consists of. + The first (index=0) module is a SourceModuleSymbol, which is a primary module, the rest are net-modules. + + + + + Bag of assembly's custom attributes and decoded well-known attribute data from source. + + + + + Bag of assembly's custom attributes and decoded well-known attribute data from added netmodules. + + + + + Indices of attributes that will not be emitted for one of two reasons: + - They are duplicates of another attribute (i.e. attributes that bind to the same constructor and have identical arguments) + - They are InternalsVisibleToAttributes with invalid assembly identities + + + These indices correspond to the merged assembly attributes from source and added net modules, i.e. attributes returned by method. + + + + + Map for storing effectively private or effectively internal fields declared in this assembly but never initialized nor assigned. + Each {symbol, bool} key-value pair in this map indicates the following: + (a) Key: Unassigned field symbol. + (b) Value: True if the unassigned field is effectively internal, false otherwise. + + + + + private fields declared in this assembly but never read + + + + + We imitate the native compiler's policy of not warning about unused fields + when the enclosing type is used by an extern method for a ref argument. + Here we keep track of those types. + + + + + The warnings for unused fields. + + + + + This override is essential - it's a base case of the recursive definition. + + + + + Raw assembly version as specified in the AssemblyVersionAttribute, or null if none specified. + If the string passed to AssemblyVersionAttribute contains * the version build and/or revision numbers are set to . + + + + + This represents what the user claimed in source through the AssemblyFlagsAttribute. + It may be modified as emitted due to presence or absence of the public key. + + + + + We're going to synthesize some well-known attributes for this assembly symbol. However, at synthesis time, it is + too late to report diagnostics or cancel the emit. Instead, we check for use site errors on the types and members + we know we'll need at synthesis time. + + + As in Dev10, we won't report anything if the attribute TYPES are missing (note: missing, not erroneous) because we won't + synthesize anything in that case. We'll only report diagnostics if the attribute TYPES are present and either they or + the attribute CONSTRUCTORS have errors. + + + + + If this compilation allows unsafe code (note: allows, not contains), then when we actually emit the assembly/module, + we're going to synthesize SecurityPermissionAttribute/UnverifiableCodeAttribute. However, at synthesis time, it is + too late to report diagnostics or cancel the emit. Instead, we check for use site errors on the types and members + we know we'll need at synthesis time. + + + As in Dev10, we won't report anything if the attribute TYPES are missing (note: missing, not erroneous) because we won't + synthesize anything in that case. We'll only report diagnostics if the attribute TYPES are present and either they or + the attribute CONSTRUCTORS have errors. + + + + + True if internals are exposed at all. + + + Forces binding and decoding of attributes. + This property shouldn't be accessed during binding as it can lead to attribute binding cycle. + + + + + Gets unique source assembly attributes that should be emitted, + i.e. filters out attributes with errors and duplicate attributes. + + + + + Returns a bag of applied custom attributes and data decoded from well-known attributes. Returns null if there are no attributes applied on the symbol. + + + Forces binding and decoding of attributes. + + + + + Gets the attributes applied on this symbol. + Returns an empty array if there are no attributes. + + + NOTE: This method should always be kept as a sealed override. + If you want to override attribute binding logic for a sub-class, then override method. + + + + + Returns true if the assembly attribute at the given index is a duplicate assembly attribute that must not be emitted. + Duplicate assembly attributes are attributes that bind to the same constructor and have identical arguments. + + + This method must be invoked only after all the assembly attributes have been bound. + + + + + Returns data decoded from source assembly attributes or null if there are none. + + + Forces binding and decoding of attributes. + TODO: We should replace methods GetSourceDecodedWellKnownAttributeData and GetNetModuleDecodedWellKnownAttributeData with + a single method GetDecodedWellKnownAttributeData, which merges DecodedWellKnownAttributeData from source and netmodule attributes. + + + + + Returns true if and only if at least one type within the assembly contains + extension methods. Note, this method is expensive since it potentially + inspects all types within the assembly. The expectation is that this method is + only called at emit time, when all types have been or will be traversed anyway. + + + + + Get the warnings for unused fields. This should only be fetched when all method bodies have been compiled. + + + + + Represents a source parameter cloned from another , when they must share attribute data and default constant value. + For example, parameters on a property symbol are cloned to generate parameters on accessors. + Similarly parameters on delegate invoke method are cloned to delegate begin/end invoke methods. + + + + + A source parameter, potentially with a default value, attributes, etc. + + + + + Symbol to copy bound attributes from, or null if the attributes are not shared among multiple source parameter symbols. + + + Used for parameters of partial implementation. We bind the attributes only on the definition + part and copy them over to the implementation. + + + + + Gets the syntax list of custom attributes that declares attributes for this parameter symbol. + + + + + Returns data decoded from well-known attributes applied to the symbol or null if there are no applied attributes. + + + Forces binding and decoding of attributes. + + + + + Returns data decoded from special early bound well-known attributes applied to the symbol or null if there are no applied attributes. + + + Forces binding and decoding of attributes. + + + + + Returns a bag of applied custom attributes and data decoded from well-known attributes. Returns null if there are no attributes applied on the symbol. + + + Forces binding and decoding of attributes. + + + + + Verify the default value matches the default value from any earlier attribute + (DefaultParameterValueAttribute, DateTimeConstantAttribute or DecimalConstantAttribute). + If not, report ERR_ParamDefaultValueDiffersFromAttribute. + + + + + Is the attribute syntax appearing on a parameter of a partial method implementation part? + Since attributes are merged between the parts of a partial, we need to look at the syntax where the + attribute appeared in the source to see if it corresponds to a partial method implementation part. + + + + + + + True if the parameter has default argument syntax. + + + + + True if the parameter is marked by . + + + + + This class represents an event accessor declared in source + (i.e. not one synthesized for a field-like event). + + + The accessors are associated with . + + + + + This class represents an event declared in source with explicit accessors + (i.e. not a field-like event). + + + + + Represents a constant field of an enum. + + + + + Base class for event accessors - synthesized and user defined. + + + + + A delegate field associated with a . + + + SourceFieldSymbol takes care of the initializer (plus "var" in the interactive case). + + + + + This class represents an event declared in source. It may be either + field-like (see ) or property-like (see + ). + + + + + Gets the syntax list of custom attributes applied on the event symbol. + + + + + Returns a bag of applied custom attributes and data decoded from well-known attributes. Returns null if there are no attributes applied on the symbol. + + + Forces binding and decoding of attributes. + + + + + Gets the attributes applied on this symbol. + Returns an empty array if there are no attributes. + + + NOTE: This method should always be kept as a sealed override. + If you want to override attribute binding logic for a sub-class, then override method. + + + + + Returns data decoded from well-known attributes applied to the symbol or null if there are no applied attributes. + + + Forces binding and decoding of attributes. + + + + + Returns data decoded from special early bound well-known attributes applied to the symbol or null if there are no applied attributes. + + + Forces binding and decoding of attributes. + + + + + Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. + This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. + + + + + This class represents an event declared in source without explicit accessors. + It implicitly has thread safe accessors and an associated field (of the same + name), unless it does not have an initializer and is either extern or inside + an interface, in which case it only has accessors. + + + + + Backing field for field-like event. Will be null if the event + has no initializer and is either extern or inside an interface. + + + + + Gets the syntax list of custom attributes applied on the symbol. + + + + + Returns a bag of applied custom attributes and data decoded from well-known attributes. Returns null if there are no attributes applied on the symbol. + + + Forces binding and decoding of attributes. + + + + + Gets the attributes applied on this symbol. + Returns an empty array if there are no attributes. + + + NOTE: This method should always be kept as a sealed override. + If you want to override attribute binding logic for a sub-class, then override method. + + + + + Returns data decoded from well-known attributes applied to the symbol or null if there are no applied attributes. + + + Forces binding and decoding of attributes. + + + + + Returns data decoded from special early bound well-known attributes applied to the symbol or null if there are no applied attributes. + + + Forces binding and decoding of attributes. + + + + + Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. + This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. + + + + + Verify the constant value matches the default value from any earlier attribute + (DateTimeConstantAttribute or DecimalConstantAttribute). + If not, report ERR_FieldHasMultipleDistinctConstantValues. + + + + + Return the constant value dependencies. Compute the dependencies + if necessary by evaluating the constant value but only persist the + constant value if there were no dependencies. (If there are dependencies, + the constant value will be re-evaluated after evaluating dependencies.) + + + + + Switch case labels have a constant expression associated with them. + + + + + If the label is a switch case label, returns the associated constant value with + case expression, otherwise returns null. + + + + + Represents a local variable in a method body. + + + + + Might not be a method symbol. + + + + + There are three ways to initialize a fixed statement local: + 1) with an address; + 2) with an array (or fixed-size buffer); or + 3) with a string. + + In the first two cases, the resulting local will be emitted with a "pinned" modifier. + In the third case, it is not the fixed statement local but a synthesized temp that is pinned. + Unfortunately, we can't distinguish these cases when the local is declared; we only know + once we have bound the initializer. + + + CompareExchange doesn't support bool, so use an int. First bit is true/false, second bit + is read/unread (debug-only). + + + + + Gets the name of the local variable. + + + + + Gets the locations where the local symbol was originally defined in source. + There should not be local symbols from metadata, and there should be only one local variable declared. + TODO: check if there are multiple same name local variables - error symbol or local symbol? + + + + + Store the constant value and the corresponding diagnostics together + to avoid having the former set by one thread and the latter set by + another. + + + + + Determine the constant value of this local and the corresponding diagnostics. + Set both to constantTuple in a single operation for thread safety. + + Null for the initial call, non-null if we are in the process of evaluating a constant. + If we already have the bound node for the initial value, pass it in to avoid recomputing it. + + + + Represents a named type symbol whose members are declared in source. + + + + + Compute the "effective accessibility" of the current class for the purpose of warnings about unused fields. + + + + + Encapsulates information about the non-type members of a (i.e. this) type. + 1) For non-initializers, symbols are created and stored in a list. + 2) For fields and properties, the symbols are stored in (1) and their initializers are + stored with other initialized fields and properties from the same syntax tree with + the same static-ness. + 3) For indexers, syntax (weak) references are stored for later binding. + + + CONSIDER: most types won't have indexers, so we could move the indexer list + into a subclass to spare most instances the space required for the field. + + + + + Calculates a syntax offset of a syntax position that is contained in a property or field initializer (if it is in fact contained in one). + + + + + During early attribute decoding, we consider a safe subset of all members that will not + cause cyclic dependencies. Get all such members for this symbol. + + In particular, this method will return nested types and fields (other than auto-property + backing fields). + + + + + During early attribute decoding, we consider a safe subset of all members that will not + cause cyclic dependencies. Get all such members for this symbol that have a particular name. + + In particular, this method will return nested types and fields (other than auto-property + backing fields). + + + + + Merge (already ordered) non-type, non-indexer members with (already ordered) indexer members. + + + + + Fix up a partial method by combining its defining and implementing declarations, updating the array of symbols (by name), + and returning the combined symbol. + + The symbols array containing both the latent and implementing declaration + One of the two declarations + The other declaration + An updated symbols array containing only one method symbol representing the two parts + + + + Report an error if a member (other than a method) exists with the same name + as the property accessor, or if a method exists with the same name and signature. + + + + + Report an error if a member (other than a method) exists with the same name + as the event accessor, or if a method exists with the same name and signature. + + + + + Return the location of the accessor, or if no accessor, the location of the property. + + + + + Return the location of the accessor, or if no accessor, the location of the event. + + + + + Return true if the method parameters match the parameters of the + property accessor, including the value parameter for the setter. + + + + + Return true if the method parameters match the parameters of the + event accessor, including the value parameter. + + + + + In some circumstances (e.g. implicit implementation of an interface method by a non-virtual method in a + base type from another assembly) it is necessary for the compiler to generate explicit implementations for + some interface methods. They don't go in the symbol table, but if we are emitting, then we should + generate code for them. + + + + + It's not interesting to report diagnostics on implementation of interface accessors + if the corresponding events or properties are not implemented (i.e. we want to suppress + cascading diagnostics). + Caveat: Indexed property accessors are always interesting. + Caveat: It's also uninteresting if a WinRT event is implemented by a non-WinRT event, + or vice versa. + + + + + If necessary, report a diagnostic for a hidden abstract member. + + True if a diagnostic was reported. + + + + It is invalid for a type to directly (vs through a base class) implement two interfaces that + unify (i.e. are the same for some substitution of type parameters). + + + CONSIDER: check this while building up InterfacesAndTheirBaseInterfaces (only in the SourceNamedTypeSymbol case). + + + + + Though there is a method that C# considers to be an implementation of the interface method, that + method may not be considered an implementation by the CLR. In particular, implicit implementation + methods that are non-virtual or that have different (usually fewer) custom modifiers than the + interface method, will not be considered CLR overrides. To address this problem, we either make + them virtual (in metadata, not in C#), or we introduce an explicit interface implementation that + delegates to the implicit implementation. + + Returned from FindImplementationForInterfaceMemberWithDiagnostics. + The interface method or property that is being implemented. + Synthesized implementation or null if not needed. + + + + The CLR will only look for an implementation of an interface method in a type that + 1) declares that it implements that interface; or + 2) is a base class of a type that declares that it implements the interface but not + a subtype of a class that declares that it implements the interface. + + For example, + + interface I + class A + class B : A, I + class C : B + class D : C, I + + Suppose the runtime is looking for D's implementation of a member of I. It will look in + D because of (1), will not look in C, will look in B because of (1), and will look in A + because of (2). + + The key point is that it does not look in C, which C# *does*. + + + + + If C# picks a different implementation than the CLR (see IsPossibleImplementationUnderClrRules), then we might + still be okay, but dynamic dispatch might result in C#'s choice getting called anyway. + + + This is based on SymbolPreparer::IsCLRMethodImplSame in the native compiler. + + ACASEY: What the native compiler actually does is compute the C# answer, compute the CLR answer, + and then confirm that they override the same method. What I've done here is check for the situations + where the answers could disagree. I believe the results will be equivalent. If in doubt, a more conservative + check would be implementingMethod.ContainingType.InterfacesAndTheirBaseInterfaces.Contains(@interface). + + + + + A collection of type parameter constraints, populated when + constraints for the first type parameter is requested. + + + + + If this symbol represents a partial method definition or implementation part, its other part (if any). + This should be set, if at all, before this symbol appears among the members of its owner. + The implementation part is not listed among the "members" of the enclosing type. + + + + + If this is a partial implementation part returns the definition part and vice versa. + + + + + Returns true if this symbol represents a partial method definition (the part that specifies a signature but no body). + + + + + Returns true if this symbol represents a partial method implementation (the part that specifies both signature and body). + + + + + True if this is a partial method that doesn't have an implementation part. + + + + + Returns the implementation part of a partial method definition, + or null if this is not a partial method or it is the definition part. + + + + + Returns the definition part of a partial method implementation, + or null if this is not a partial method or it is the implementation part. + + + + + Report differences between the defining and implementing + parts of a partial method. Diagnostics are reported on the + implementing part, matching Dev10 behavior. + + + + + Returns true if the two partial methods have the same constraints. + + + + + Implementers should assume that a lock has been taken on MethodChecksLockObject. + In particular, it should not (generally) be necessary to use CompareExchange to + protect assignments to fields. + + + + + We can usually lock on the syntax reference of this method, but it turns + out that some synthesized methods (e.g. field-like event accessors) also + need to do method checks. This property allows such methods to supply + their own lock objects, so that we don't have to add a new field to every + SourceMethodSymbol. + + + + + Overridden by , + which might return locations of partial methods. + + + + + Symbol to copy bound attributes from, or null if the attributes are not shared among multiple source method symbols. + + + Used for example for event accessors. The "remove" method delegates attribute binding to the "add" method. + The bound attribute data are then applied to both accessors. + + + + + Gets the syntax list of custom attributes that declares attributes for this method symbol. + + + + + Gets the syntax list of custom attributes that declares attributes for return type of this method. + + + + + Returns data decoded from special early bound well-known attributes applied to the symbol or null if there are no applied attributes. + + + Forces binding and decoding of attributes. + + + + + Returns data decoded from well-known attributes applied to the symbol or null if there are no applied attributes. + + + Forces binding and decoding of attributes. + + + + + Returns information retrieved from custom attributes on return type in source, or null if the symbol is not source symbol or there are none. + + + Forces binding and decoding of attributes. + + + + + Returns a bag of applied custom attributes and data decoded from well-known attributes. Returns null if there are no attributes applied on the symbol. + + + Forces binding and decoding of attributes. + + + + + Returns a bag of custom attributes applied on the method return value and data decoded from well-known attributes. Returns null if there are no attributes. + + + Forces binding and decoding of attributes. + + + + + Gets the attributes applied on this symbol. + Returns an empty array if there are no attributes. + + + + + Gets the attributes applied on the return value of this method symbol. + Returns an empty array if there are no attributes. + + + + + Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. + This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. + + + + + Checks to see if a body is legal given the current modifiers. + If it is not, a diagnostic is added with the current type. + + + + + Returns true if the method body is an expression, as expressed + by the syntax. False + otherwise. + + + If the method has both block body and an expression body + present, this is not treated as expression-bodied. + + + + + Represents the primary module of an assembly being built by compiler. + + + + + Owning assembly. + + + + + The declarations corresponding to the source files of this module. + + + + + The name (contains extension) + + + + + This override is essential - it's a base case of the recursive definition. + + + + + Returns a bag of applied custom attributes and data decoded from well-known attributes. Returns null if there are no attributes applied on the symbol. + + + Forces binding and decoding of attributes. + + + + + Gets the attributes applied on this symbol. + Returns an empty array if there are no attributes. + + + NOTE: This method should always be kept as a sealed override. + If you want to override attribute binding logic for a sub-class, then override method. + + + + + Returns data decoded from well-known attributes applied to the symbol or null if there are no applied attributes. + + + Forces binding and decoding of attributes. + + + + + A collection of type parameter constraints, populated when + constraints for the first type parameter are requested. + + + + + Returns a bag of applied custom attributes and data decoded from well-known attributes. Returns null if there are no attributes applied on the symbol. + + + Forces binding and decoding of attributes. + + + + + Gets the attributes applied on this symbol. + Returns an empty array if there are no attributes. + + + + + Returns data decoded from well-known attributes applied to the symbol or null if there are no applied attributes. + + + Forces binding and decoding of attributes. + + + + + Returns data decoded from special early bound well-known attributes applied to the symbol or null if there are no applied attributes. + + + Forces binding and decoding of attributes. + + + + + Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. + This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. + + + + + These won't be returned by GetAttributes on source methods, but they + will be returned by GetAttributes on metadata symbols. + + + + + Gets the BaseType of this type. If the base type could not be determined, then + an instance of ErrorType is returned. If this kind of type does not have a base type + (for example, interfaces), null is returned. Also the special class System.Object + always has a BaseType of null. + + + + + Gets the set of interfaces that this type directly implements. This set does not include + interfaces that are base interfaces of directly implemented interfaces. + + + + + Returns true if the type cannot be used as an explicit base class. + + + + + For enum types, gets the underlying type. Returns null on all other + kinds of types. + + + + + For enum types, returns the synthesized instance field used + for generating metadata. Returns null for non-enum types. + + + + + Register COR types declared in this namespace, if any, in the COR types cache. + + + + + Base class for parameters can be referred to from source code. + + + These parameters can potentially be targetted by an attribute specified in source code. + As an optimization we distinguish simple parameters (no attributes, no modifiers, etc.) and complex parameters. + + + + + True if the parameter is marked by . + + + + + True if the parameter has default argument syntax. + + + + + Gets the attributes applied on this symbol. + Returns an empty array if there are no attributes. + + + NOTE: This method should always be kept as a sealed override. + If you want to override attribute binding logic for a sub-class, then override method. + + + + + Base class for all parameters that are emitted. + + + + + Return Accessibility declared locally on the accessor, or + NotApplicable if no accessibility was declared explicitly. + + + + + If we are outputting a .winmdobj then the setter name is put_, not set_. + + + + + or + + + + + Set in constructor, might be changed while decoding . + + + + + To facilitate lookup, all indexer symbols have the same name. + Check the MetadataName property to find the name that will be + emitted (based on IndexerNameAttribute, or the default "Item"). + + + + + Even though it is declared with an IndexerDeclarationSyntax, an explicit + interface implementation is not an indexer because it will not cause the + containing type to be emitted with a DefaultMemberAttribute (and even if + there is another indexer, the name of the explicit implementation won't + match). This is important for round-tripping. + + + + + Backing field for automatically implemented property, or + for a property with an initializer. + + + + + Return true if the accessor accessibility is more restrictive + than the property accessibility, otherwise false. + + + + + If this property is sealed, then we have to emit both accessors - regardless of whether + they are present in the source - so that they can be marked final. (i.e. sealed). + + + + + Only non-null for sealed properties without both accessors. + + + + + Returns a bag of applied custom attributes and data decoded from well-known attributes. Returns null if there are no attributes applied on the symbol. + + + Forces binding and decoding of attributes. + + + + + Gets the attributes applied on this symbol. + Returns an empty array if there are no attributes. + + + NOTE: This method should always be kept as a sealed override. + If you want to override attribute binding logic for a sub-class, then override method. + + + + + Returns data decoded from well-known attributes applied to the symbol or null if there are no applied attributes. + + + Forces binding and decoding of attributes. + + + + + Returns data decoded from special early bound well-known attributes applied to the symbol or null if there are no applied attributes. + + + Forces binding and decoding of attributes. + + + + + Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. + This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. + + + + + A source parameter that has no default value, no attributes, + and is not params. + + + + + Base class for type and method type parameters. + + + + + Gets the attributes applied on this symbol. + Returns an empty array if there are no attributes. + + + NOTE: This method should always be kept as a sealed override. + If you want to override attribute binding logic for a sub-class, then override method. + + + + + Check constraints of generic types referenced in constraint types. For instance, + with "interface I<T> where T : I<T> {}", check T satisfies constraints + on I<T>. Those constraints are not checked when binding ConstraintTypes + since ConstraintTypes has not been set on I<T> at that point. + + + + + A map shared by all type parameters for an overriding method or a method + that explicitly implements an interface. The map caches the overridden method + and a type map from overridden type parameters to overriding type parameters. + + + + + A type parameter for a method that either overrides a base + type method or explicitly implements an interface method. + + + Exists to copy constraints from the corresponding type parameter of an overridden method. + + + + + The type parameter to use for determining constraints. If there is a base + method that the owner method is overriding, the corresponding type + parameter on that method is used. Otherwise, the result is null. + + + + + Class to represent a synthesized attribute + + + + + A context for binding type parameter symbols of named types. + + + + + A simple representation of a type parameter constraint clause + as a set of constraint bits and a set of constraint types. + + + + + Checks if a type is considered a "built-in integral" by CLR. + + + + + The type is one of the simple types defined in Dev10 C#, see "predeftype.h"/simple + + + + + Either a SubstitutedNestedTypeSymbol or a ConstructedNamedTypeSymbol, which share in common that they + have type parameters substituted. + + + + + This field keeps track of the s for which we already retrieved + diagnostics. We shouldn't return from ForceComplete (i.e. indicate that diagnostics are + available) until this is equal to , except that when completing + with a given position, we might not complete .Member*. + + Since completeParts is used as a flag indicating completion of other assignments + it must be volatile to ensure the read is not reordered/optimized to happen + before the writes. + + + + + Used to force (source) symbols to a given state of completion. + + The owning source symbol. + + + + Since this formula is rather opaque, a demonstration of its correctness is + provided in Roslyn.Compilers.CSharp.UnitTests.CompletionTests.TestHasAtMostOneBitSet. + + + + + Produces name of the synthesized delegate symbol that encodes the parameter byref-ness and return type of the delegate. + The arity is appended via `N suffix in MetadataName calculation since the delegate is generic. + + + + + Represents the compiler generated value parameter for property/event accessor. + This parameter has no source location/syntax, but may have attributes. + Attributes with 'param' target specifier on the accessor must be applied to the this parameter. + + + + + Represents a compiler generated backing field for an automatically implemented property. + + + + + A container synthesized for a lambda, iterator method, async method, or dynamic-sites. + + + + + Dynamic call-site delegate, for call-sites that do not + match System.Action or System.Func signatures. + + + + + Represents an interactive code entry point that is inserted into the compilation if there is not an existing one. + + + + + Represents __value field of an enum. + + + + + Event accessor that has been synthesized for a field-like event declared in source. + + + Associated with . + + + + + Represents a compiler generated field. + + + Represents a compiler generated field of given type and name. + + + + + Represents a compiler generated field or captured variable. + + + + + Represents a compiler generated synthesized method symbol + that must be emitted in the compiler generated + PrivateImplementationDetails class + + + + + Synthesized methods that must be emitted in the compiler generated + PrivateImplementationDetails class have null containing type symbol. + + + + + A base class for synthesized methods that want a this parameter. + + + + + Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. + This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. + + + + + A synthesized local variable. + + + + + Represents a simple compiler generated parameter of a given type. + + + + + For each parameter of a source method, construct a corresponding synthesized parameter + for a destination method. + + Has parameters. + Needs parameters. + Synthesized parameters to add to destination method. + + + + A type parameter for a synthesized class or method. + + + + + Utility class for substituting actual type arguments for formal generic type parameters. + + + + + The effective "bounds" of a type parameter: the constraint types, effective + interface set, and effective base type, determined from the declared + constraints, with any cycles removed. The fields are exposed by the + TypeParameterSymbol as ConstraintTypes, Interfaces, and BaseType. + + + + + The type parameters, classes, and interfaces explicitly declared as + constraint types on the containing type parameter, with cycles removed. + + + + + The set of interfaces explicitly declared on the containing type + parameter and any type parameters on which the containing + type parameter depends, with duplicates removed. + + + + + As defined in 10.1.5 of the specification. + + + + + The "exact" effective base type. + In the definition of effective base type we abstract some concrete types to their base classes: + * For each constraint of T that is a struct-type, R contains System.ValueType. + * For each constraint of T that is an enumeration type, R contains System.Enum. + * For each constraint of T that is a delegate type, R contains System.Delegate. + * For each constraint of T that is an array type, R contains System.Array. + * For each constraint of T that is a class-type C, R contains type C' which is constructed + from C by replacing all occurrences of dynamic with object. + The reason is that the CLR doesn't support operations on generic parameters that would be needed + to work with these types. For example, ldelem instruction requires the receiver to be a specific array, + not a type parameter constrained to be an array. + + When computing the deduced type we don't perform this abstraction. We keep the original constraint T. + Deduced base type is used to check that consistency rules are satisfied. + + + + + A TypeSymbol is a base class for all the symbols that represent a type + in C#. + + + + + A comparator that treats dynamic and object as "the same" types. + + + + + The original definition of this symbol. If this symbol is constructed from another + symbol by type substitution then OriginalDefinition gets the original symbol as it was defined in + source or metadata. + + + + + Gets the BaseType of this type. If the base type could not be determined, then + an instance of ErrorType is returned. If this kind of type does not have a base type + (for example, interfaces), null is returned. Also the special class System.Object + always has a BaseType of null. + + + + + Gets the set of interfaces that this type directly implements. This set does not include + interfaces that are base interfaces of directly implemented interfaces. + + + + + The list of all interfaces of which this type is a declared subtype, excluding this type + itself. This includes all declared base interfaces, all declared base interfaces of base + types, and all declared base interfaces of those results (recursively). Each result + appears exactly once in the list. This list is topologically sorted by the inheritance + relationship: if interface type A extends interface type B, then A precedes B in the + list. This is not quite the same as "all interfaces of which this type is a proper + subtype" because it does not take into account variance: AllInterfaces for + IEnumerable<string> will not include IEnumerable<object> + + + + + If this is a type parameter returns its effective base class, otherwise returns this type. + + + + + Returns true if this type derives from a given type. + + + + + Returns true if this type is equal or derives from a given type. + + + + + Determines if this type symbol represent the same type as another, according to the language + semantics. + + The other type. + True to compare without regard to custom modifiers, false by default. + True to ignore the distinction between object and dynamic, false by default. + True if the types are equivalent. + + + + We ignore custom modifiers, and the distinction between dynamic and object, when computing a type's hash code. + + + + + Produce all implemented interfaces in topologically sorted order. We use + TypeSymbol.Interfaces as the source of edge data, which has had cycles and infinitely + long dependency cycles removed. Consequently, it is possible (and we do) use the + simplest version of Tarjan's topological sorting algorithm. + + + + Gets the set of interfaces that this type directly implements, plus the base interfaces + of all such types. + + + CONSIDER: it probably isn't truly necessary to cache this. If space gets tight, consider + alternative approaches (recompute every time, cache on the side, only store on some types, + etc). + + + + + Returns the corresponding symbol in this type or a base type that implements + interfaceMember (either implicitly or explicitly), or null if no such symbol exists + (which might be either because this type doesn't implement the container of + interfaceMember, or this type doesn't supply a member that successfully implements + interfaceMember). + + + Must be a non-null interface property, method, or event. + + + + + Returns true if this type is known to be a reference type. It is never the case that + IsReferenceType and IsValueType both return true. However, for an unconstrained type + parameter, IsReferenceType and IsValueType will both return false. + + + + + Returns true if this type is known to be a value type. It is never the case that + IsReferenceType and IsValueType both return true. However, for an unconstrained type + parameter, IsReferenceType and IsValueType will both return false. + + + + + Gets the kind of this type. + + + + + Gets corresponding special TypeId of this type. + + + Not preserved in types constructed from this one. + + + + + Gets corresponding primitive type code for this type declaration. + + + + + Return error code that has highest priority while calculating use site error for this symbol. + + + + + Is this a symbol for an anonymous type (including delegate). + + + + + Is this type a managed type (false for everything but enum, pointer, and + some struct types). + + + See Type::computeManagedType. + + + + + Performs interface mapping (spec 13.4.4). + + + CONSIDER: we could probably do less work in the metadata and retargeting cases - we won't use the diagnostics. + + A non-null property on an interface type. + The type implementing the interface property (usually "this"). + Bag to which to add diagnostics. + The implementing property or null, if there isn't one. + + + + Since dev11 didn't expose a symbol API, it had the luxury of being able to accept a base class's claim that + it implements an interface. Roslyn, on the other hand, needs to be able to point to an implementing symbol + for each interface member. + + DevDiv #718115 was triggered by some unusual metadata in a Microsoft reference assembly (Silverlight System.Windows.dll). + The issue was that a type explicitly implemented the accessors of an interface event, but did not tie them together with + an event declaration. To make matters worse, it declared its own protected event with the same name as the interface + event (presumably to back the explicit implementation). As a result, when Roslyn was asked to find the implementing member + for the interface event, it found the protected event and reported an appropriate diagnostic. Would it should have done + (and does do now) is recognize that no event associated with the accessors explicitly implementing the interface accessors + and returned null. + + We resolved this issue by introducing a new step into the interface mapping algorithm: after failing to find an explicit + implementation in a type, but before searching for an implicit implementation in that type, check for an explicit implementation + of an associated accessor. If there is such an implementation, then immediately return the associated property or event, + even if it is null. That is, never attempt to find an implicit implementation for an interface property or event with an + explicitly implemented accessor. + + + + + If we were looking for an accessor, then look for an accessor on the implementation of the + corresponding interface property/event. If it is valid as an implementation (ignoring the name), + then prefer it to our current result if: + 1) our current result is null; or + 2) our current result is on the same type. + + If there is no corresponding accessor on the implementation of the corresponding interface + property/event and we found an accessor, then the accessor we found is invalid, so clear it. + + + + + These diagnostics are for members that do implicitly implement an interface member, but do so + in an undesirable way. + + + + + These diagnostics are for members that almost, but not actually, implicitly implement an interface member. + + + + + Search the declared members of a type for one that could be an implementation + of a given interface member (depending on interface declarations). + + The interface member being implemented. + True if the implementing type is from some compilation (i.e. not from metadata). + The type on which we are looking for a declared implementation of the interface member. + A member on currType that could implement the interface, or null. + A member on currType that could have been an attempt to implement the interface, or null. + + There is some similarity between this member and MemberSymbol.FindOverriddenOrHiddenMembersInType. + When making changes to this member, think about whether or not they should also be applied in MemberSymbol. + One key difference is that custom modifiers are considered when looking up overridden members, but + not when looking up implicit implementations. We're preserving this behavior from Dev10. + + + + + To implement an interface member, a candidate member must be public, non-static, and have + the same signature. "Have the same signature" has a looser definition if the type implementing + the interface is from source. + + + PROPERTIES: + NOTE: we're not checking whether this property has at least the accessors + declared in the interface. Dev10 considers it a match either way and, + reports failure to implement accessors separately. + + If the implementing type (i.e. the type with the interface in its interface + list) is in source, then we can ignore custom modifiers in/on the property + type because they will be copied into the bridge property that explicitly + implements the interface property (or they would be, if we created such + a bridge property). Bridge *methods* (not properties) are inserted in + SourceNamedTypeSymbol.ImplementInterfaceMember. + + CONSIDER: The spec for interface mapping (13.4.4) could be interpreted to mean that this + property is not an implementation unless it has an accessor for each accessor of the + interface property. For now, we prefer to represent that case as having an implemented + property and an unimplemented accessor because it makes finding accessor implementations + much easier. If we decide that we want the API to report the property as unimplemented, + then it might be appropriate to keep current result internally and just check the accessors + before returning the value from the public API (similar to the way MethodSymbol.OverriddenMethod + filters MethodSymbol.OverriddenOrHiddenMembers. + + + + + The set of abstract members in declared in this type or declared in a base type and not overridden. + + + + + Represents the method by which this type implements a given interface type + and/or the corresponding diagnostics. + + + + + Determines if the given type is a valid attribute parameter type. + + Type to validated + compilation + + + + + Gets the typed constant kind for the given attribute parameter type. + + Type to validated + compilation + TypedConstantKind for the attribute parameter type. + + + + return true if the type is constructed from System.Linq.Expressions.Expression`1 + + + + + return true if the type is constructed from a generic interface that + might be implemented by an array. + + + + + Return the default value constant for the given type, + or null if the default value is not a constant. + + + + + Visit the given type and, in the case of compound types, visit all "sub type" + (such as A in A[], or { A<T>, T, U } in A<T>.B<U>) invoking 'predicate' + with the type and 'arg' at each sub type. If the predicate returns true for any type, + traversal stops and that type is returned from this method. Otherwise if traversal + completes without the predicate returning true for any type, this method returns null. + + + + + (null TypeParameterSymbol "parameter"): Checks if the given type is a type parameter + or its referent type is a type parameter (array/pointer) or contains a type parameter (aggregate type) + (non-null TypeParameterSymbol "parameter"): above + also checks if the type parameter + is the same as "parameter" + + + + + Return true if the type contains any dynamic type reference. + + + + + Guess the non-error type that the given type was intended to represent. + If the type itself is not an error type, then it will be returned. + Otherwise, the underlying type (if any) of the error type will be + returned. + + + Any non-null type symbol returned is guaranteed not to be an error type. + + It is possible to pass in a constructed type and received back an + unconstructed type. This can occur when the type passed in was + constructed from an error type - the underlying definition will be + available, but there won't be a good way to "re-substitute" back up + to the level of the specified type. + + + + + Guess the non-error type kind that the given type was intended to represent, + if possible. If not, return TypeKind.Error. + + + + + Returns true if the type is a valid switch expression type. + + + + + Returns true if the type is one of the restricted types, namely: , + , or . + + + + + Add this instance to the set of checked types. Returns true + if this was added, false if the type was already in the set. + + + + + These special types are structs that contain fields of the same type + (e.g. contains an instance field of type ). + + + + + Compute a hash code for the constructed type. The return value will be + non-zero so callers can used zero to represent an uninitialized value. + + + + + If we are in a COM PIA with embedInteropTypes enabled we should turn properties and methods + that have the type and return type of object, respectively, into type dynamic. If the requisite conditions + are fulfilled, this method returns a dynamic type. If not, it returns the original type. + + A property type or method return type to be checked for dynamification. + Containing type. + + + + + Type variables are never considered reference types by the verifier. + + + + + Type variables are never considered value types by the verifier. + + + + + Return all of the type parameters in this type and enclosing types, + from outer-most to inner-most type. + + + + + Return all of the type parameters in this type and enclosing types, + from outer-most to inner-most type. + + + + + Return the nearest type parameter with the given name in + this type or any enclosing type. + + + + + Return true if the fully qualified name of the type's containing symbol + matches the given name. This method avoids string concatenations + in the common case where the type is a top-level type. + + + + + Count the custom modifiers within the specified TypeSymbol. + Potentially non-zero for arrays, pointers, and generic instantiations. + + + + + Check for custom modifiers within the specified TypeSymbol. + Potentially true for arrays, pointers, and generic instantiations. + + + A much less efficient implementation would be CustomModifierCount() == 0. + CONSIDER: Could share a backing method with CustomModifierCount. + + + + + Return true if this type can unify with the specified type + (i.e. is the same for some substitution of type parameters). + + + + + Used when iterating through base types in contexts in which the caller needs to avoid cycles and can't use BaseType + (perhaps because BaseType is in the process of being computed) + + + + + + + + + + Extract type under assumption that there should be no custom modifiers. + The method asserts otherwise. + + + + + This class groups together all of the functionality needed to check for error CS1961, ERR_UnexpectedVariance. + Its functionality is accessible through the NamedTypeSymbol extension method CheckInterfaceVarianceSafety and + the MethodSymbol extension method CheckMethodVarianceSafety (for checking delegate Invoke). + + + + + Accumulate diagnostics related to the variance safety of an interface. + + + + + Accumulate diagnostics related to the variance safety of a delegate. + + + + + Accumulate diagnostics related to the variance safety of an interface method. + + + + + Accumulate diagnostics related to the variance safety of an interface property. + + + + + Accumulate diagnostics related to the variance safety of an interface event. + + + + + Accumulate diagnostics related to the variance safety of an interface method/property parameter. + + + + + Accumulate diagnostics related to the variance safety of an interface method type parameters. + + + + + Returns true if the type is output-unsafe or input-unsafe, as defined in the C# spec. + Roughly, a type is output-unsafe if it could not be the return type of a method and + input-unsafe if it could not be a parameter type of a method. + + + This method is intended to match spec section 13.1.3.1 as closely as possible + (except that the output-unsafe and input-unsafe checks are merged). + + + + + 3) T is an interface, class, struct, enum, or delegate type ]]> constructed + from a generic type ]]> where for at least one A_i one + of the following holds: + a) X_i is covariant or invariant and A_i is output-unsafe [input-unsafe] + b) X_i is contravariant or invariant and A_i is input-unsafe [output-unsafe] (note: spec has "input-safe", but it's a typo) + + + Slight rewrite to make it more idiomatic for C#: + a) X_i is covariant and A_i is input-unsafe + b) X_i is contravariant and A_i is output-unsafe + c) X_i is invariant and A_i is input-unsafe or output-unsafe + + + + + Add an ERR_UnexpectedVariance diagnostic to the diagnostic bag. + + Diagnostic bag. + Type parameter that is not variance safe. + Context in which type is not variance safe (e.g. method). + Callback to provide location. + Callback argument. + Desired variance of type. + + + + Traverses the symbol table checking for CLS compliance. + + + + + Traverses the symbol table checking for CLS compliance. + + Compilation that owns the symbol table. + Will be supplemented with documentation comment diagnostics. + To stop traversing the symbol table early. + Only report diagnostics from this syntax tree, if non-null. + If and is non-null, report diagnostics within this span in the . + + + False if no further checks are required (because they would be cascading). + + + + BREAK: Dev11 reports WRN_CLS_ArrayArgumentToAttribute on all symbols, whereas roslyn reports it only + on accessible symbols. + + + + True if the symbol is okay (i.e. no warnings). + + + + NOTE: Dev11 behavior - First, it ignores arity, + which seems like a good way to disambiguate symbols (in particular, + CLS Rule 43 says that the name includes backtick-arity). Second, it + does not consider two members with identical names (i.e. not differing + in case) to collide. + + + + + This check (the only one that uses the "context" parameter is based on CLS Rule 46, + as implemented by LangCompiler::IsCLSAccessible. The idea is that C<int> and C<char> + are separate types in CLS, so they can't touch each other's protected members. + TODO: This should really have a separate error code - it's logically separate and requires explanation. + + Check the accessibility of this type (probably a parameter or return type). + Context for the accessibility check (e.g. containing type of method with as a parameter type. + + + + As in dev11, we ignore the fact that CLSCompliantAttribute is inherited (i.e. from the base type) + (see CSemanticChecker::CheckSymForCLS). This should only affect types where the syntactic parent + and the inheritance parent disagree. + + + + + Based on CompilationPass::CLSReduceSignature. + + + + + Traverses the symbol table processing XML documentation comments and optionally writing them to + a provided stream. + + + + + Traverses the symbol table processing XML documentation comments and optionally writing them to + a provided stream. + + Compilation that owns the symbol table. + Assembly name override, if specified. Otherwise the of the source assembly is used. + Stream to which XML will be written, if specified. + Will be supplemented with documentation comment diagnostics. + To stop traversing the symbol table early. + Only report diagnostics from this syntax tree, if non-null. + If and filterSpanWithinTree is non-null, report diagnostics within this span in the . + + + + Gets the XML that would be written to the documentation comment file for this assembly. + + The symbol for which to retrieve documentation comments. + True to treat includes as semantically meaningful (pull in contents from other files and bind crefs, etc). + To stop traversing the symbol table early. + + + + Write header, descend into members, and write footer. + + + + + Write own documentation comments and then descend into members. + + + + + Compile documentation comments on the symbol and write them to the stream if one is provided. + + + + + Loop over the DocumentationCommentTriviaSyntaxes. Gather + 1) concatenated XML, as a string; + 2) whether or not the XML is valid; + 3) set of type parameters covered by <typeparam> elements; + 4) set of parameters covered by <param> elements; + 5) list of <include> elements, as SyntaxNodes. + + True, if at least one documentation comment was processed; false, otherwise. + This was factored out for clarity, not because it's reusable. + + + + Similar to SymbolExtensions.GetParameters, but returns empty for unsupported symbols + and handles delegates. + + + + + Similar to SymbolExtensions.GetMemberTypeParameters, but returns empty for unsupported symbols. + + + + + A symbol requires a documentation comment if it was explicitly declared and + will be visible outside the current assembly (ignoring InternalsVisibleTo). + Exception: accessors do not require doc comments. + + + + + Get all of the DocumentationCommentTriviaSyntax associated with any declaring syntax of the + given symbol (except for partial methods, which only consider the part with the body). + + True if the nodes are all valid XML. + + + + Given the full text of a documentation comment, strip off the comment punctuation (///, /**, etc) + and add appropriate indentations. + + + + + Given a string, find the index of the first non-whitespace char. + + The string to search + The index of the first non-whitespace char in the string + + + + Find the first non-whitespace character in a given substring. + + The string to search + The start index + The last index (non-inclusive) + The index of the first non-whitespace char after index start in the string up to, but not including the end index + + + + Determine if the given string starts with the given prefix if whitespace + is first trimmed from the beginning. + + The string to search + The prefix + true if str.TrimStart().StartsWith(prefix) + + + + Given a string which may contain newline sequences, get the index of the first newline + sequence beginning at the given starting index. + + The string to split. + The starting index within the string. + The length of the newline sequence discovered. 0 if the end of the string was reached, otherwise either 1 or 2 chars + The index of the start of the first newline sequence following the start index + + + + Given the full text of a single-line style documentation comment, for each line, strip off + the comment punctuation (///) and add appropriate indentations. + + + + + Given the full text of a multi-line style documentation comment, broken into lines, strip off + the comment punctuation (/**, */, etc) and add appropriate indentations. + + + + + Remove "*/" and any following text, if it is present. + + + + + Return the longest prefix matching [whitespace]*[*][whitespace]*. + + + + + Return the longest common prefix of two strings + + + + + Bind a CrefSyntax and unwrap the result if it's an alias. + + + Does not respect DocumentationMode, so use a temporary bag if diagnostics are not desired. + + + + + Given a cref syntax that cannot be resolved, get the string that will be written to + the documentation file in place of a documentation comment ID. + + + + + Bind an XmlNameAttributeSyntax and update the sets of documented parameters and type parameters. + + + Does not respect DocumentationMode, so do not call unless diagnostics are desired. + + + + + WORKAROUND: + We're taking a dependency on the location and structure of a framework assembly resource. This is not a robust solution. + + Possible alternatives: + 1) Polish our XML parser until it matches MSXML. We don't want to reinvent the wheel. + 2) Build a map that lets us go from XML string positions back to source positions. + This is what the native compiler did, and it was a lot of work. We'd also still need to modify the message. + 3) Do not report a diagnostic. This is very unhelpful. + 4) Report a vague diagnostic (i.e. there's a problem somewhere in this doc comment). This is relatively unhelpful. + 5) Always report the message in English, so that we can pull it apart without needing to consume resource files. + This engenders a lot of ill will. + 6) Report the exception message without modification and (optionally) include the text with respect to which the + position is specified. This would not look sufficiently polished. + + + + + Walks a DocumentationCommentTriviaSyntax, binding the semantically meaningful parts + to produce diagnostics and to replace source crefs with documentation comment IDs. + + + + + Given a DocumentationCommentTriviaSyntax, return the full text, but with + documentation comment IDs substituted into crefs. + + + Still has all of the comment punctuation (///, /**, etc). + + + + + Rewrites nodes in , which is a snapshot of nodes from the original document. + We're mutating the tree as we rewrite, so it's important to grab a snapshot of the + nodes that we're going to reparent before we enumerate them. + + + + + This method boils down to Rewrite(XDocument.Load(fileAttrValue).XPathSelectElements(pathAttrValue)). + Everything else is error handling. + + + + + Respects the DocumentationMode at the source location. + + + + + Respects the DocumentationMode at the source location. + + + + + In some circumstances (e.g. implicit implementation of an interface method by a non-virtual method in a + base type from another assembly) it is necessary for the compiler to generate explicit implementations for + some interface methods. They don't go in the symbol table, but if we are emitting, then we should + generate code for them. + + + + + Synthesized parameterless constructors in structs chain to the "default" constructor + + + + + Bind the (implicit or explicit) constructor initializer of a constructor symbol. + + Constructor method. + Accumulates errors (e.g. access "this" in constructor initializer). + Used to retrieve binder. + A bound expression for the constructor initializer call. + + + + Returns true if the method is a constructor and has a this() constructor initializer. + + + + + Contains methods related to synthesizing bound nodes in initial binding + form that needs lowering, primarily method bodies for compiler-generated methods. + + + + + Generates a submission initialization part of a Script type constructor that represents an interactive submission. + + + The constructor takes a parameter of type Microsoft.CodeAnalysis.Scripting.Session - the session reference. + It adds the object being constructed into the session by calling Microsoft.CSharp.RuntimeHelpers.SessionHelpers.SetSubmission, + and retrieves strongly typed references on all previous submission script classes whose members are referenced by this submission. + The references are stored to fields of the submission (). + + + + + Construct a body for an auto-property accessor (updating or returning the backing field). + + + + + Generate an accessor for a field-like event. + + + + + Generate a thread-safe accessor for a WinRT field-like event. + + Add: + return EventRegistrationTokenTable<Event>.GetOrCreateEventRegistrationTokenTable(ref _tokenTable).AddEventHandler(value); + + Remove: + EventRegistrationTokenTable<Event>.GetOrCreateEventRegistrationTokenTable(ref _tokenTable).RemoveEventHandler(value); + + + + + Generate a thread-safe accessor for a regular field-like event. + + DelegateType tmp0 = _event; //backing field + DelegateType tmp1; + DelegateType tmp2; + do { + tmp1 = tmp0; + tmp2 = (DelegateType)Delegate.Combine(tmp1, value); //Remove for -= + tmp0 = Interlocked.CompareExchange<DelegateType>(ref _event, tmp2, tmp1); + } while ((object)tmp0 != (object)tmp1); + + Note, if System.Threading.Interlocked.CompareExchange<T> is not available, + we emit the following code and mark the method Synchronized (unless it is a struct). + + _event = (DelegateType)Delegate.Combine(_event, value); //Remove for -= + + + + + + Look for a base type method named "Finalize" that is protected (or protected internal), has no parameters, + and returns void. It doesn't need to be virtual or a destructor. + + + You may assume that this would share code and logic with PEMethodSymbol.OverridesRuntimeFinalizer, + but FUNCBRECCS::bindDestructor has its own loop that performs these checks (differently). + + + + + When compiling in metadata-only mode, is not run. This is problematic because + adds synthesized explicit implementations to the list of synthesized definitions. + In lieu of running , this class performs a quick + traversal of the symbol table and performs processing of synthesized symbols if necessary + + + + + Traverse the symbol table and call Module.AddSynthesizedDefinition for each + synthesized explicit implementation stub that has been generated (e.g. when the real + implementation doesn't have the appropriate custom modifiers). + + + + + Represents the state of compilation of one particular type. + This includes, for example, a collection of synthesized methods created during lowering. + + + WARNING: Note that the collection class is not thread-safe and will + need to be revised if emit phase is changed to support multithreading when + translating a particular type. + + + + Synthesized method info + + + Flat array of created methods, non-empty if not-null + + + + Map of wrapper methods created for base access of base type virtual methods from + other classes (like those created for lambdas...); actually each method symbol will + only need one wrapper to call it non-virtually. + + + + + Type symbol being compiled, or null if we compile a synthesized type that doesn't have a symbol (e.g. PrivateImplementationDetails). + + + + + The builder for generating code, or null if not in emit phase. + + + + + Any generated methods that don't suppress debug info will use this + list of debug imports. + + + + + A graph of method->method references for this(...) constructor initializers. + Used to detect and report initializer cycles. + + + + + The type for which this compilation state is being used. + + + + + The type passed to the runtime binder as context. + + + + + Add a 'regular' synthesized method. + + + + + Add a 'wrapper' synthesized method and map it to the original one so it can be reused. + + + Wrapper methods are created for base access of base type virtual methods from + other classes (like those created for lambdas...). + + + + The index of the next wrapped method to be used + + + + Get a 'wrapper' method for the original one. + + + Wrapper methods are created for base access of base type virtual methods from + other classes (like those created for lambdas...). + + + + Free resources allocated for this method collection + + + + Report an error if adding the edge (method1, method2) to the ctor-initializer + graph would add a new cycle to that graph. + + a calling ctor + the chained-to ctor + where to report a cyclic error if needed + a diagnostic bag for receiving the diagnostic + + + + Represents various options that affect compilation, such as + whether to emit an executable or a library, whether to optimize + generated code, and so on. + + + + + Allow unsafe regions (i.e. unsafe modifiers on members and unsafe blocks). + + + + + Global namespace usings. + + + + + Flags applied to the top-level binder created for each syntax tree in the compilation + as well as for the binder of global imports. + + + + + Insert one or more tokens in the list at the specified index. + + A new list with the tokens inserted. + + + + Creates a new token with the specified old trivia replaced with computed new trivia. + + + The trivia to be replaced; descendants of the root token. + A function that computes a replacement trivia for + the argument trivia. The first argument is the original trivia. The second argument is + the same trivia rewritten with replaced structure. + + + + Creates a new token with the specified old trivia replaced with a new trivia. The old trivia may appear in + the token's leading or trailing trivia. + + + The trivia to be replaced. + The new trivia to use in the new tree in place of the old + trivia. + + + + Returns this list as a . + + The type of the list elements in the separated list. + + + + + Gets the first directive of the tree rooted by this node. + + + + + Gets the last directive of the tree rooted by this node. + + + + + Gets the semantic information for an ordering clause in an orderby query clause. + + + + + Gets the semantic information associated with a select or group clause. + + + + + Returns what symbol(s), if any, the given expression syntax bound to in the program. + + An AliasSymbol will never be returned by this method. What the alias refers to will be + returned instead. To get information about aliases, call GetAliasInfo. + + If binding the type name C in the expression "new C(...)" the actual constructor bound to + will be returned (or all constructor if overload resolution failed). This occurs as long as C + unambiguously binds to a single type that has a constructor. If C ambiguously binds to multiple + types, or C binds to a static class, then type(s) are returned. + + + + + Returns what 'Add' method symbol(s), if any, corresponds to the given expression syntax + within . + + + + + Returns what symbol(s), if any, the given constructor initializer syntax bound to in the program. + + + + + Returns what symbol(s), if any, the given attribute syntax bound to in the program. + + + + + Gets the semantic information associated with a documentation comment cref. + + + + + Binds the expression in the context of the specified location and gets symbol information. + This method is used to get symbol information about an expression that did not actually + appear in the source code. + + + + + Binds the CrefSyntax expression in the context of the specified location and gets symbol information. + This method is used to get symbol information about an expression that did not actually + appear in the source code. + + + + + Bind the attribute in the context of the specified location and get semantic information + such as type, symbols and diagnostics. This method is used to get semantic information about an attribute + that did not actually appear in the source code. + + + + + Bind the constructor initializer in the context of the specified location and get semantic information + such as type, symbols and diagnostics. This method is used to get semantic information about a constructor + initializer that did not actually appear in the source code. + + NOTE: This will only work in locations where there is already a constructor initializer. + + + + + Gets type information about a constructor initializer. + + + + + Gets type information about an expression. + + + + + Gets type information about an attribute. + + + + + Binds the expression in the context of the specified location and gets type information. + This method is used to get type information about an expression that did not actually + appear in the source code. + + + + + Returns the list of accessible, non-hidden indexers that could be invoked with the given expression as receiver. + + + + + Gets the semantic information associated with a query clause. + + + + + If resolves to an alias name, return the AliasSymbol corresponding + to A. Otherwise return null. + + + + + Binds the name in the context of the specified location and sees if it resolves to an + alias name. If it does, return the AliasSymbol corresponding to it. Otherwise, return null. + + + + + Analyze control-flow within a part of a method body. + + + + + Analyze control-flow within a part of a method body. + + + + + Analyze data-flow within an expression. + + + + + Analyze data-flow within a part of a method body. + + + + + Analyze data-flow within a part of a method body. + + + + + Get a SemanticModel object that is associated with a method body that did not appear in this source code. + Given must lie within an existing method body of the Root syntax node for this SemanticModel. + Locals and labels declared within this existing method body are not considered to be in scope of the speculated method body. + + + + + Get a SemanticModel object that is associated with a method body that did not appear in this source code. + Given must lie within an existing method body of the Root syntax node for this SemanticModel. + Locals and labels declared within this existing method body are not considered to be in scope of the speculated method body. + + + + + Get a SemanticModel object that is associated with a type syntax node that did not appear in + this source code. This can be used to get detailed semantic information about sub-parts + of a type syntax that did not appear in source code. + + + + + Get a SemanticModel object that is associated with a cref syntax node that did not appear in + this source code. This can be used to get detailed semantic information about sub-parts + of a cref syntax that did not appear in source code. + + + + + Get a SemanticModel object that is associated with a statement that did not appear in + this source code. This can be used to get detailed semantic information about sub-parts + of a statement that did not appear in source code. + + + + + Get a SemanticModel object that is associated with an initializer that did not appear in + this source code. This can be used to get detailed semantic information about sub-parts + of a field initializer or default parameter value that did not appear in source code. + + + + + Get a SemanticModel object that is associated with an expression body that did not appear in + this source code. This can be used to get detailed semantic information about sub-parts + of an expression body that did not appear in source code. + + + + + Get a SemanticModel object that is associated with a constructor initializer that did not appear in + this source code. This can be used to get detailed semantic information about sub-parts + of a constructor initializer that did not appear in source code. + + NOTE: This will only work in locations where there is already a constructor initializer. + + + + + Get a SemanticModel object that is associated with an attribute that did not appear in + this source code. This can be used to get detailed semantic information about sub-parts + of an attribute that did not appear in source code. + + + + + Determines what type of conversion, if any, would be used if a given expression was + converted to a given type. If isExplicitInSource is true, the conversion produced is + that which would be used if the conversion were done for a cast expression. + + + + + Determines what type of conversion, if any, would be used if a given expression was + converted to a given type. If isExplicitInSource is true, the conversion produced is + that which would be used if the conversion were done for a cast expression. + + + + + Given a member declaration syntax, get the corresponding symbol. + + + + + Given a namespace declaration syntax node, get the corresponding namespace symbol for + the declaration assembly. + + + + + Given a type declaration, get the corresponding type symbol. + + + + + Given a delegate declaration, get the corresponding type symbol. + + + + + Given a enum member declaration, get the corresponding field symbol. + + + + + Given a base method declaration syntax, get the corresponding method symbol. + + + + + Given a syntax node that declares a property, indexer or an event, get the corresponding declared symbol. + + + + + Given a syntax node that declares a property, get the corresponding declared symbol. + + + + + Given a syntax node that declares an indexer, get the corresponding declared symbol. + + + + + Given a syntax node that declares a (custom) event, get the corresponding event symbol. + + + + + Given a syntax node of anonymous object creation initializer, get the anonymous object property symbol. + + + + + Given a syntax node of anonymous object creation expression, get the anonymous object type symbol. + + + + + Given a syntax node that declares a property or member accessor, get the corresponding symbol. + + + + + Given a variable declarator syntax, get the corresponding symbol. + + + + + Given a labeled statement syntax, get the corresponding label symbol. + + + + + Given a switch label syntax, get the corresponding label symbol. + + + + + Given a using declaration get the corresponding symbol for the using alias that was introduced. + + + + + Given an extern alias declaration get the corresponding symbol for the alias that was introduced. + + + + + Given a parameter declaration syntax node, get the corresponding symbol. + + + + + Given a type parameter declaration (field or method), get the corresponding symbol + + + + + Given a foreach statement, get the symbol for the iteration variable + + + + + Given a catch declaration, get the symbol for the exception variable + + + + + Get the query range variable declared in a join into clause. + + + + + Get the query range variable declared in a query continuation clause. + + + + + Emit the IL for the compilation into the specified stream. + + Compilation. + Path of the file to which the PE image will be written. + Path of the file to which the compilation's debug info will be written. + Also embedded in the output file. Null to forego PDB generation. + + Path of the file to which the compilation's XML documentation will be written. Null to forego XML generation. + Path of the file from which the compilation's Win32 resources will be read (in RES format). + Null to indicate that there are none. + List of the compilation's managed resources. Null to indicate that there are none. + To cancel the emit process. + Compilation or path is null. + Path is empty or invalid. + An error occurred while reading or writing a file. + + + + This class stores several source parsing related options and offers access to their values. + + + + + The default parse options. + + + + + Gets the language version. + + + + + Gets the names of defined preprocessor symbols. + + + + + Enable some experimental language features for testing. + + + + + A strongly-typed resource class, for looking up localized strings, etc. + + + + + Returns the cached ResourceManager instance used by this class. + + + + + Overrides the current thread's CurrentUICulture property for all + resource lookups using this strongly typed resource class. + + + + + Looks up a localized string similar to Can't reference compilation of type '{0}' from {1} compilation.. + + + + + Looks up a localized string similar to Chaining speculative semantic model is not supported. You should create a speculative model from the non-speculative ParentModel.. + + + + + Looks up a localized string similar to Compilation (C#): . + + + + + Looks up a localized string similar to Could not find file.. + + + + + Looks up a localized string similar to element is expected. + + + + + Looks up a localized string similar to Elements cannot be null.. + + + + + Looks up a localized string similar to '{0}' cannot be both extern and abstract. + + + + + Looks up a localized string similar to '{0}' cannot be both abstract and sealed. + + + + + Looks up a localized string similar to Cannot apply attribute class '{0}' because it is abstract. + + + + + Looks up a localized string similar to Cannot call an abstract base member: '{0}'. + + + + + Looks up a localized string similar to '{0}': abstract event cannot have initializer. + + + + + Looks up a localized string similar to The modifier 'abstract' is not valid on fields. Try using a property instead.. + + + + + Looks up a localized string similar to '{0}' cannot declare a body because it is marked abstract. + + + + + Looks up a localized string similar to '{0}' is abstract but it is contained in non-abstract class '{1}'. + + + + + Looks up a localized string similar to The abstract method '{0}' cannot be marked virtual. + + + + + Looks up a localized string similar to '{0}': an abstract class cannot be sealed or static. + + + + + Looks up a localized string similar to '{0}': accessibility modifiers on accessors may only be used if the property or indexer has both a get and a set accessor. + + + + + Looks up a localized string similar to Accessor '{0}' cannot implement interface member '{1}' for type '{2}'. Use an explicit interface implementation.. + + + + + Looks up a localized string similar to Properties cannot combine accessor lists with expression bodies.. + + + + + Looks up a localized string similar to '{0}' cannot be added to this assembly because it already is an assembly. + + + + + Looks up a localized string similar to An add or remove accessor expected. + + + + + Looks up a localized string similar to An add or remove accessor must have a body. + + + + + Looks up a localized string similar to Cannot take the address of a read-only local variable. + + + + + Looks up a localized string similar to Agnostic assembly cannot have a processor specific module '{0}'.. + + + + + Looks up a localized string similar to Invalid reference alias option: '{0}=' -- missing filename. + + + + + Looks up a localized string similar to Alias '{0}' not found. + + + + + Looks up a localized string similar to The namespace alias qualifier '::' always resolves to a type or namespace so is illegal here. Consider using '.' instead.. + + + + + Looks up a localized string similar to An alias-qualified name is not an expression.. + + + + + Looks up a localized string similar to Operator '{0}' is ambiguous on operands of type '{1}' and '{2}'. + + + + + Looks up a localized string similar to The call is ambiguous between the following methods or properties: '{0}' and '{1}'. + + + + + Looks up a localized string similar to '{0}' is an ambiguous reference between '{1}' and '{2}'. + + + + + Looks up a localized string similar to Ambiguity between '{0}' and '{1}'. + + + + + Looks up a localized string similar to The inherited members '{0}' and '{1}' have the same signature in type '{2}', so they cannot be overridden. + + + + + Looks up a localized string similar to Type of conditional expression cannot be determined because '{0}' and '{1}' implicitly convert to one another. + + + + + Looks up a localized string similar to Ambiguous user defined conversions '{0}' and '{1}' when converting from '{2}' to '{3}'. + + + + + Looks up a localized string similar to Operator '{0}' is ambiguous on an operand of type '{1}'. + + + + + Looks up a localized string similar to '{0}' is ambiguous between '{1}' and '{2}'; use either '@{0}' or '{0}Attribute'. + + + + + Looks up a localized string similar to Cannot use ref or out parameter '{0}' inside an anonymous method, lambda expression, or query expression. + + + + + Looks up a localized string similar to Foreach cannot operate on a '{0}'. Did you intend to invoke the '{0}'?. + + + + + Looks up a localized string similar to Cannot convert {0} to type '{1}' because it is not a delegate type. + + + + + Looks up a localized string similar to An anonymous method expression cannot be converted to an expression tree. + + + + + Looks up a localized string similar to Not all code paths return a value in {0} of type '{1}'. + + + + + Looks up a localized string similar to An anonymous type cannot have multiple properties with the same name. + + + + + Looks up a localized string similar to Cannot use anonymous type in a constant expression. + + + + + Looks up a localized string similar to Cannot assign {0} to anonymous type property. + + + + + Looks up a localized string similar to The __arglist construct is valid only within a variable argument method. + + + + + Looks up a localized string similar to Array elements cannot be of type '{0}'. + + + + + Looks up a localized string similar to A nested array initializer is expected. + + + + + Looks up a localized string similar to An array initializer of length '{0}' is expected. + + + + + Looks up a localized string similar to Array initializers can only be used in a variable or field initializer. Try using a new expression instead.. + + + + + Looks up a localized string similar to Can only use array initializer expressions to assign to array types. Try using a new expression instead.. + + + + + Looks up a localized string similar to '{0}': array elements cannot be of static type. + + + + + Looks up a localized string similar to Array size cannot be specified in a variable declaration (try initializing with a 'new' expression). + + + + + Looks up a localized string similar to The as operator must be used with a reference type or nullable type ('{0}' is a non-nullable value type). + + + + + Looks up a localized string similar to Assembly '{0}' with identity '{1}' uses '{2}' which has a higher version than referenced assembly '{3}' with identity '{4}'. + + + + + Looks up a localized string similar to The /moduleassemblyname option may only be specified when building a target type of 'module'. + + + + + Looks up a localized string similar to Assemblies '{0}' and '{1}' refer to the same metadata but only one is a linked reference (specified using /link option); consider removing one of the references.. + + + + + Looks up a localized string similar to The left-hand side of an assignment must be a variable, property or indexer. + + + + + Looks up a localized string similar to A readonly field cannot be assigned to (except in a constructor or a variable initializer). + + + + + Looks up a localized string similar to Members of readonly field '{0}' cannot be modified (except in a constructor or a variable initializer). + + + + + Looks up a localized string similar to Cannot assign to '{0}' because it is read-only. + + + + + Looks up a localized string similar to Cannot modify members of '{0}' because it is a '{1}'. + + + + + Looks up a localized string similar to Cannot assign to '{0}' because it is a '{1}'. + + + + + Looks up a localized string similar to Property or indexer '{0}' cannot be assigned to -- it is read only. + + + + + Looks up a localized string similar to A static readonly field cannot be assigned to (except in a static constructor or a variable initializer). + + + + + Looks up a localized string similar to Fields of static readonly field '{0}' cannot be assigned to (except in a static constructor or a variable initializer). + + + + + Looks up a localized string similar to The type parameter '{0}' cannot be used with the 'as' operator because it does not have a class type constraint nor a 'class' constraint. + + + + + Looks up a localized string similar to '{0}': an attribute argument cannot use type parameters. + + + + + Looks up a localized string similar to Cannot apply attribute class '{0}' because it is generic. + + + + + Looks up a localized string similar to Attribute '{0}' is not valid on property or event accessors. It is only valid on '{1}' declarations.. + + + + + Looks up a localized string similar to Attribute '{0}' is not valid on this declaration type. It is only valid on '{1}' declarations.. + + + + + Looks up a localized string similar to Attribute parameter '{0}' must be specified.. + + + + + Looks up a localized string similar to Attribute parameter '{0}' or '{1}' must be specified.. + + + + + Looks up a localized string similar to Attributes are not valid in this context.. + + + + + Looks up a localized string similar to Attribute '{0}' is only valid on classes derived from System.Attribute. + + + + + Looks up a localized string similar to Auto-implemented properties inside interfaces cannot have initializers.. + + + + + Looks up a localized string similar to Auto-implemented properties must have get accessors.. + + + + + Looks up a localized string similar to Auto-implemented properties must override all accessors of the overridden property.. + + + + + Looks up a localized string similar to Cannot await in an unsafe context. + + + + + Looks up a localized string similar to '{0}' is inaccessible due to its protection level. + + + + + Looks up a localized string similar to AppConfigPath must be absolute.. + + + + + Looks up a localized string similar to No overload for method '{0}' takes {1} arguments. + + + + + Looks up a localized string similar to Argument {0} may not be passed with the '{1}' keyword. + + + + + Looks up a localized string similar to Argument {0} must be passed with the '{1}' keyword. + + + + + Looks up a localized string similar to Argument {0}: cannot convert from '{1}' to '{2}'. + + + + + Looks up a localized string similar to '{0}' has no applicable method named '{1}' but appears to have an extension method by that name. Extension methods cannot be dynamically dispatched. Consider casting the dynamic arguments or calling the extension method without the extension method syntax.. + + + + + Looks up a localized string similar to The best overloaded Add method '{0}' for the collection initializer has some invalid arguments. + + + + + Looks up a localized string similar to The argument to the '{0}' attribute must be a valid identifier. + + + + + Looks up a localized string similar to Using the generic {1} '{0}' requires {2} type arguments. + + + + + Looks up a localized string similar to Array type specifier, [], must appear before parameter name. + + + + + Looks up a localized string similar to Async methods cannot have ref or out parameters. + + + + + Looks up a localized string similar to Async lambda expressions cannot be converted to expression trees. + + + + + Looks up a localized string similar to The 'async' modifier can only be used in methods that have a body.. + + + + + Looks up a localized string similar to The return type of an async method must be void, Task or Task<T>. + + + + + Looks up a localized string similar to Since this is an async method, the return expression must be of type '{0}' rather than 'Task<{0}>'. + + + + + Looks up a localized string similar to An attribute argument must be a constant expression, typeof expression or array creation expression of an attribute parameter type. + + + + + Looks up a localized string similar to Attribute constructor parameter '{0}' is optional, but no default parameter value was specified.. + + + + + Looks up a localized string similar to Attribute constructor parameter '{0}' has type '{1}', which is not a valid attribute parameter type. + + + + + Looks up a localized string similar to 'await' requires that the type {0} have a suitable GetAwaiter method. + + + + + Looks up a localized string similar to 'await' requires that the type '{0}' have a suitable GetAwaiter method. Are you missing a using directive for 'System'?. + + + + + Looks up a localized string similar to Cannot await '{0}'. + + + + + Looks up a localized string similar to Cannot await 'void'. + + + + + Looks up a localized string similar to 'await' cannot be used as an identifier within an async method or lambda expression. + + + + + Looks up a localized string similar to 'await' requires that the return type '{0}' of '{1}.GetAwaiter()' have suitable IsCompleted, OnCompleted, and GetResult members, and implement INotifyCompletion or ICriticalNotifyCompletion. + + + + + Looks up a localized string similar to Cannot await in a catch clause. + + + + + Looks up a localized string similar to Cannot await in the filter expression of a catch clause. + + + + + Looks up a localized string similar to Cannot await in the body of a finally clause. + + + + + Looks up a localized string similar to Cannot await in the body of a lock statement. + + + + + Looks up a localized string similar to The 'await' operator may only be used in a query expression within the first collection expression of the initial 'from' clause or within the collection expression of a 'join' clause. + + + + + Looks up a localized string similar to The 'await' operator cannot be used in a static script variable initializer.. + + + + + Looks up a localized string similar to The 'await' operator can only be used when contained within a method or lambda expression marked with the 'async' modifier. + + + + + Looks up a localized string similar to The 'await' operator can only be used within an async {0}. Consider marking this {0} with the 'async' modifier.. + + + + + Looks up a localized string similar to The 'await' operator can only be used within an async method. Consider marking this method with the 'async' modifier and changing its return type to 'Task<{0}>'.. + + + + + Looks up a localized string similar to The 'await' operator can only be used within an async method. Consider marking this method with the 'async' modifier and changing its return type to 'Task'.. + + + + + Looks up a localized string similar to Invalid image base number '{0}'. + + + + + Looks up a localized string similar to Invalid base type. + + + + + Looks up a localized string similar to One of the parameters of a binary operator must be the containing type. + + + + + Looks up a localized string similar to Operator '{0}' cannot be applied to operands of type '{1}' and '{2}'. + + + + + Looks up a localized string similar to Overloaded binary operator '{0}' takes two parameters. + + + + + Looks up a localized string similar to In order to be applicable as a short circuit operator a user-defined logical operator ('{0}') must have the same return type and parameter types. + + + + + Looks up a localized string similar to '{0}' is not a valid constraint. A type used as a constraint must be an interface, a non-sealed class or a type parameter.. + + + + + Looks up a localized string similar to The CallerFilePathAttribute may only be applied to parameters with default values. + + + + + Looks up a localized string similar to The CallerLineNumberAttribute may only be applied to parameters with default values. + + + + + Looks up a localized string similar to The CallerMemberNameAttribute may only be applied to parameters with default values. + + + + + Looks up a localized string similar to The right hand side of a fixed statement assignment may not be a cast expression. + + + + + Looks up a localized string similar to The managed coclass wrapper class signature '{0}' for interface '{1}' is not a valid class name signature. + + + + + Looks up a localized string similar to Invalid option '{0}' for /langversion; must be ISO-1, ISO-2, Default or an integer in range 1 to 6.. + + + + + Looks up a localized string similar to {0}. + + + + + Looks up a localized string similar to Invalid '{0}' value: '{1}'.. + + + + + Looks up a localized string similar to Invalid constraint type. A type used as a constraint must be an interface, a non-sealed class or a type parameter.. + + + + + Looks up a localized string similar to The type '{0}' cannot be declared const. + + + + + Looks up a localized string similar to '{0}' does not contain a constructor that takes {1} arguments. + + + + + Looks up a localized string similar to Invalid option '{0}' for /debug; must be full or pdbonly. + + + + + Looks up a localized string similar to Delegate '{0}' does not take {1} arguments. + + + + + Looks up a localized string similar to The delegate '{0}' does not have a valid constructor. + + + + + Looks up a localized string similar to Control cannot leave the body of an anonymous method or lambda expression. + + + + + Looks up a localized string similar to Name of destructor must match name of class. + + + + + Looks up a localized string similar to Preprocessor directives must appear as the first non-whitespace character on a line. + + + + + Looks up a localized string similar to '{0}': user-defined conversions to or from the dynamic type are not allowed. + + + + + Looks up a localized string similar to Cannot use an expression of type '{0}' as an argument to a dynamically dispatched operation.. + + + + + Looks up a localized string similar to Cannot use a lambda expression as an argument to a dynamically dispatched operation without first casting it to a delegate or expression tree type.. + + + + + Looks up a localized string similar to Cannot use a method group as an argument to a dynamically dispatched operation. Did you intend to invoke the method?. + + + + + Looks up a localized string similar to Query expressions over source type 'dynamic' or with a join sequence of type 'dynamic' are not allowed. + + + + + Looks up a localized string similar to The typeof operator cannot be used on the dynamic type. + + + + + Looks up a localized string similar to Embedded statement cannot be a declaration or labeled statement. + + + + + Looks up a localized string similar to A throw statement with no arguments is not allowed outside of a catch clause. + + + + + Looks up a localized string similar to A throw statement with no arguments is not allowed in a finally clause that is nested inside the nearest enclosing catch clause. + + + + + Looks up a localized string similar to The event '{0}' can only appear on the left hand side of += or -= (except when used from within the type '{1}'). + + + + + Looks up a localized string similar to The event '{0}' can only appear on the left hand side of += or -=. + + + + + Looks up a localized string similar to The type caught or thrown must be derived from System.Exception. + + + + + Looks up a localized string similar to Extension method must be defined in a non-generic static class. + + + + + Looks up a localized string similar to '{0}' does not contain a definition for '{1}' and the best extension method overload '{2}' has some invalid arguments. + + + + + Looks up a localized string similar to Extension method must be static. + + + + + Looks up a localized string similar to The extern alias '{0}' was not specified in a /reference option. + + + + + Looks up a localized string similar to Invalid extern alias for '/reference'; '{0}' is not a valid identifier. + + + + + Looks up a localized string similar to Control cannot leave the body of a finally clause. + + + + + Looks up a localized string similar to The type of a local declared in a fixed statement must be a pointer type. + + + + + Looks up a localized string similar to Type and identifier are both required in a foreach statement. + + + + + Looks up a localized string similar to foreach requires that the return type '{0}' of '{1}' must have a suitable public MoveNext method and public Current property. + + + + + Looks up a localized string similar to The return type for ++ or -- operator must match the parameter type or be derived from the parameter type. + + + + + Looks up a localized string similar to The parameter type for ++ or -- operator must be the containing type. + + + + + Looks up a localized string similar to Wrong number of indices inside []; expected {0}. + + + + + Looks up a localized string similar to The '{0}' attribute is valid only on an indexer that is not an explicit interface member declaration. + + + + + Looks up a localized string similar to Cannot apply indexing with [] to an expression of type '{0}'. + + + + + Looks up a localized string similar to '{0}' does not contain a definition for '{1}' and the best extension method overload '{2}' requires a receiver of type '{3}'. + + + + + Looks up a localized string similar to Iterators cannot have ref or out parameters. + + + + + Looks up a localized string similar to The body of '{0}' cannot be an iterator block because '{1}' is not an iterator interface type. + + + + + Looks up a localized string similar to The modifier '{0}' is not valid for this item. + + + + + Looks up a localized string similar to More than one protection modifier. + + + + + Looks up a localized string similar to Member modifier '{0}' must precede the member type and name. + + + + + Looks up a localized string similar to A namespace declaration cannot have modifiers or attributes. + + + + + Looks up a localized string similar to The best overload for '{0}' does not have a parameter named '{1}'. + + + + + Looks up a localized string similar to The delegate '{0}' does not have a parameter named '{1}'. + + + + + Looks up a localized string similar to '{0}' is not a valid named attribute argument. Named attribute arguments must be fields which are not readonly, static, or const, or read-write properties which are public and not static.. + + + + + Looks up a localized string similar to '{0}' is not a valid named attribute argument because it is not a valid attribute parameter type. + + + + + Looks up a localized string similar to A new expression requires (), [], or {} after type. + + + + + Looks up a localized string similar to Declaration is not valid; use '{0} operator <dest-type> (...' instead. + + + + + Looks up a localized string similar to The parameter modifier 'out' cannot be used with 'this' . + + + + + Looks up a localized string similar to Parameter {0} should not be declared with the '{1}' keyword. + + + + + Looks up a localized string similar to A parameter array cannot be used with 'this' modifier on an extension method. + + + + + Looks up a localized string similar to Parameter {0} must be declared with the '{1}' keyword. + + + + + Looks up a localized string similar to Parameter {0} is declared as type '{1}{2}' but should be '{3}{4}'. + + + + + Looks up a localized string similar to Error reading debug information for '{0}'. + + + + + Looks up a localized string similar to Invalid option '{0}' for /platform; must be anycpu, x86, Itanium or x64. + + + + + Looks up a localized string similar to /platform:anycpu32bitpreferred can only be used with /t:exe, /t:winexe and /t:appcontainerexe. + + + + + Looks up a localized string similar to Cannot access protected member '{0}' via a qualifier of type '{1}'; the qualifier must be of type '{2}' (or derived from it). + + + + + Looks up a localized string similar to The parameter modifier 'ref' cannot be used with 'this' . + + + + + Looks up a localized string similar to Invalid option '{0}'; Resource visibility must be either 'public' or 'private'. + + + + + Looks up a localized string similar to '{1} {0}' has the wrong return type. + + + + + Looks up a localized string similar to The first operand of an overloaded shift operator must have the same type as the containing type, and the type of the second operand must be int. + + + + + Looks up a localized string similar to '{0}' is a {1} but is used like a {2}. + + + + + Looks up a localized string similar to '{0}' is a {1}, which is not valid in the given context. + + + + + Looks up a localized string similar to Parameters or locals of type '{0}' cannot be declared in async methods or lambda expressions.. + + + + + Looks up a localized string similar to A stackalloc expression requires [] after type. + + + + + Looks up a localized string similar to Unrecognized option: '{0}'. + + + + + Looks up a localized string similar to Method '{0}' has a parameter modifier 'this' which is not on the first parameter. + + + + + Looks up a localized string similar to The type '{0}' may not be used as a type argument. + + + + + Looks up a localized string similar to The first parameter of an extension method cannot be of type '{0}'. + + + + + Looks up a localized string similar to '{0}': cannot reference a type through an expression; try '{1}' instead. + + + + + Looks up a localized string similar to Operator '{0}' cannot be applied to operand of type '{1}'. + + + + + Looks up a localized string similar to The parameter of a unary operator must be the containing type. + + + + + Looks up a localized string similar to Overloaded unary operator '{0}' takes one parameter. + + + + + Looks up a localized string similar to A 'using namespace' directive can only be applied to namespaces; '{0}' is a type not a namespace. Consider a 'using static' directive instead. + + + + + Looks up a localized string similar to A 'using static' directive can only be applied to types; '{0}' is a namespace not a type. Consider a 'using namespace' directive instead. + + + + + Looks up a localized string similar to A method with vararg cannot be generic, be in a generic type, or have a params parameter. + + + + + Looks up a localized string similar to Expected ; or = (cannot specify constructor arguments in declaration). + + + + + Looks up a localized string similar to Inconsistent accessibility: base class '{1}' is less accessible than class '{0}'. + + + + + Looks up a localized string similar to Inconsistent accessibility: base interface '{1}' is less accessible than interface '{0}'. + + + + + Looks up a localized string similar to Inconsistent accessibility: constraint type '{1}' is less accessible than '{0}'. + + + + + Looks up a localized string similar to Inconsistent accessibility: parameter type '{1}' is less accessible than delegate '{0}'. + + + + + Looks up a localized string similar to Inconsistent accessibility: return type '{1}' is less accessible than delegate '{0}'. + + + + + Looks up a localized string similar to Inconsistent accessibility: event type '{1}' is less accessible than event '{0}'. + + + + + Looks up a localized string similar to Inconsistent accessibility: field type '{1}' is less accessible than field '{0}'. + + + + + Looks up a localized string similar to Inconsistent accessibility: parameter type '{1}' is less accessible than indexer '{0}'. + + + + + Looks up a localized string similar to Inconsistent accessibility: indexer return type '{1}' is less accessible than indexer '{0}'. + + + + + Looks up a localized string similar to Inconsistent accessibility: parameter type '{1}' is less accessible than operator '{0}'. + + + + + Looks up a localized string similar to Inconsistent accessibility: return type '{1}' is less accessible than operator '{0}'. + + + + + Looks up a localized string similar to Inconsistent accessibility: parameter type '{1}' is less accessible than method '{0}'. + + + + + Looks up a localized string similar to Inconsistent accessibility: property type '{1}' is less accessible than property '{0}'. + + + + + Looks up a localized string similar to Inconsistent accessibility: return type '{1}' is less accessible than method '{0}'. + + + + + Looks up a localized string similar to Warning level must be in the range 0-4. + + + + + Looks up a localized string similar to Error reading Win32 resources -- {0}. + + + + + Looks up a localized string similar to Cannot yield a value in the body of a catch clause. + + + + + Looks up a localized string similar to Cannot yield in the body of a finally clause. + + + + + Looks up a localized string similar to Cannot yield a value in the body of a try block with a catch clause. + + + + + Looks up a localized string similar to Base class '{0}' must come before any interfaces. + + + + + Looks up a localized string similar to Type parameter '{0}' inherits conflicting constraints '{1}' and '{2}'. + + + + + Looks up a localized string similar to Use of keyword 'base' is not valid in this context. + + + + + Looks up a localized string similar to Keyword 'base' is not available in the current context. + + + + + Looks up a localized string similar to Keyword 'base' is not available in a static method. + + + + + Looks up a localized string similar to '{0}' is a binary file instead of a text file. + + + + + Looks up a localized string similar to '{0}' is not supported by the language. + + + + + Looks up a localized string similar to Property, indexer, or event '{0}' is not supported by the language; try directly calling accessor method '{1}'. + + + + + Looks up a localized string similar to Property, indexer, or event '{0}' is not supported by the language; try directly calling accessor methods '{1}' or '{2}'. + + + + + Looks up a localized string similar to Methods cannot combine block bodies with expression bodies.. + + + + + Looks up a localized string similar to '{0}' cannot implement '{1}' because it is not supported by the language. + + + + + Looks up a localized string similar to '{0}' is a type not supported by the language. + + + + + Looks up a localized string similar to An expression tree lambda may not contain an out or ref parameter. + + + + + Looks up a localized string similar to By-reference return type 'ref {0}' is not supported.. + + + + + Looks up a localized string similar to 'await' cannot be used in an expression containing the type '{0}'. + + + + + Looks up a localized string similar to Do not directly call your base class Finalize method. It is called automatically from your destructor.. + + + + + Looks up a localized string similar to Destructors and object.Finalize cannot be called directly. Consider calling IDisposable.Dispose if available.. + + + + + Looks up a localized string similar to Cannot pass null for friend assembly name. + + + + + Looks up a localized string similar to '{0}': cannot explicitly call operator or accessor. + + + + + Looks up a localized string similar to '{0}': cannot change access modifiers when overriding '{1}' inherited member '{2}'. + + + + + Looks up a localized string similar to '{0}': return type must be '{2}' to match overridden member '{1}'. + + + + + Looks up a localized string similar to '{0}': type must be '{2}' to match overridden member '{1}'. + + + + + Looks up a localized string similar to Cannot convert anonymous method block without a parameter list to delegate type '{0}' because it has one or more out parameters. + + + + + Looks up a localized string similar to Cannot convert {0} to delegate type '{1}' because the parameter types do not match the delegate parameter types. + + + + + Looks up a localized string similar to Cannot convert {0} to intended delegate type because some of the return types in the block are not implicitly convertible to the delegate return type. + + + + + Looks up a localized string similar to Cannot convert async {0} to delegate type '{1}'. An async {0} may return void, Task or Task<T>, none of which are convertible to '{1}'.. + + + + + Looks up a localized string similar to '{0}': cannot derive from sealed type '{1}'. + + + + + Looks up a localized string similar to Conflicting options specified: Win32 resource file; Win32 icon. + + + + + Looks up a localized string similar to Conflicting options specified: Win32 resource file; Win32 manifest. + + + + + Looks up a localized string similar to The type arguments for method '{0}' cannot be inferred from the usage. Try specifying the type arguments explicitly.. + + + + + Looks up a localized string similar to Cannot create temporary file -- {0}. + + + + + Looks up a localized string similar to Cannot open '{0}' for writing -- '{1}'. + + + + + Looks up a localized string similar to Error opening icon file {0} -- {1}. + + + + + Looks up a localized string similar to Error opening Win32 manifest file {0} -- {1}. + + + + + Looks up a localized string similar to Error opening Win32 resource file '{0}' -- '{1}'. + + + + + Looks up a localized string similar to '{0}': cannot override '{1}' because it is not supported by the language. + + + + + Looks up a localized string similar to '{0}': cannot override; '{1}' is not an event. + + + + + Looks up a localized string similar to '{0}': cannot override because '{1}' is not a function. + + + + + Looks up a localized string similar to '{0}': cannot override because '{1}' is not a property. + + + + + Looks up a localized string similar to '{0}': cannot override inherited member '{1}' because it is not marked virtual, abstract, or override. + + + + + Looks up a localized string similar to '{0}': cannot override inherited member '{1}' because it is sealed. + + + + + Looks up a localized string similar to Cannot read config file '{0}' -- '{1}'. + + + + + Looks up a localized string similar to Error reading resource '{0}' -- '{1}'. + + + + + Looks up a localized string similar to Error reading ruleset file {0} - {1}. + + + + + Looks up a localized string similar to Cannot link resource files when building a module. + + + + + Looks up a localized string similar to Cannot return an expression of type 'void'. + + + + + Looks up a localized string similar to Error reading Win32 manifest file '{0}' -- '{1}'. + + + + + Looks up a localized string similar to The RequiredAttribute attribute is not permitted on C# types. + + + + + Looks up a localized string similar to The operation overflows at compile time in checked mode. + + + + + Looks up a localized string similar to The evaluation of the constant value for '{0}' involves a circular definition. + + + + + Looks up a localized string similar to Circular base class dependency involving '{0}' and '{1}'. + + + + + Looks up a localized string similar to Circular constraint dependency involving '{0}' and '{1}'. + + + + + Looks up a localized string similar to The class type constraint '{0}' must come before any other constraints. + + + + + Looks up a localized string similar to '{0}': containing type does not implement interface '{1}'. + + + + + Looks up a localized string similar to An object, string, or class type expected. + + + + + Looks up a localized string similar to ) expected. + + + + + Looks up a localized string similar to '{0}' does not implement interface member '{1}'. '{2}' cannot implement an interface member because it is not public.. + + + + + Looks up a localized string similar to '{0}' does not implement interface member '{1}'. '{2}' cannot implement an interface member because it is static.. + + + + + Looks up a localized string similar to '{0}' does not implement interface member '{1}'. '{2}' cannot implement '{1}' because it does not have the matching return type of '{3}'.. + + + + + Looks up a localized string similar to Attribute '{0}' given in a source file conflicts with option '{1}'.. + + + + + Looks up a localized string similar to Cannot use alias '{0}' with '::' since the alias references a type. Use '.' instead.. + + + + + Looks up a localized string similar to Cannot initialize type '{0}' with a collection initializer because it does not implement 'System.Collections.IEnumerable'. + + + + + Looks up a localized string similar to '{0}': a class with the ComImport attribute cannot specify a base class. + + + + + Looks up a localized string similar to Since '{1}' has the ComImport attribute, '{0}' must be extern or abstract. + + + + + Looks up a localized string similar to '{0}': a class with the ComImport attribute cannot specify field initializers.. + + + + + Looks up a localized string similar to The Guid attribute must be specified with the ComImport attribute. + + + + + Looks up a localized string similar to A class with the ComImport attribute cannot have a user-defined constructor. + + + + + Looks up a localized string similar to Compilation cancelled by user. + + + + + Looks up a localized string similar to An expression tree lambda may not contain a COM call with ref omitted on arguments. + + + + + Looks up a localized string similar to '{0}' must declare a body because it is not marked abstract, extern, or partial. + + + + + Looks up a localized string similar to The Conditional attribute is not valid on '{0}' because its return type is not void. + + + + + Looks up a localized string similar to The Conditional attribute is not valid on interface members. + + + + + Looks up a localized string similar to Attribute '{0}' is only valid on methods or attribute classes. + + + + + Looks up a localized string similar to The Conditional attribute is not valid on '{0}' because it is an override method. + + + + + Looks up a localized string similar to The Conditional attribute is not valid on '{0}' because it is a constructor, destructor, operator, or explicit interface implementation. + + + + + Looks up a localized string similar to Conditional member '{0}' cannot have an out parameter. + + + + + Looks up a localized string similar to Namespace '{1}' contains a definition conflicting with alias '{0}'. + + + + + Looks up a localized string similar to Alias '{0}' conflicts with {1} definition. + + + + + Looks up a localized string similar to Assembly and module '{0}' cannot target different processors.. + + + + + Looks up a localized string similar to A constant value is expected. + + + + + Looks up a localized string similar to Length of String constant exceeds current memory limit. Try splitting the string into multiple constants.. + + + + + Looks up a localized string similar to Constant value '{0}' cannot be converted to a '{1}'. + + + + + Looks up a localized string similar to Constant value '{0}' cannot be converted to a '{1}' (use 'unchecked' syntax to override). + + + + + Looks up a localized string similar to '{0}': static classes cannot be used as constraints. + + + + + Looks up a localized string similar to Constraints are not allowed on non-generic declarations. + + + + + Looks up a localized string similar to Constraint cannot be a dynamic type '{0}'. + + + + + Looks up a localized string similar to Static classes cannot have instance constructors. + + + + + Looks up a localized string similar to A const field requires a value to be provided. + + + + + Looks up a localized string similar to User-defined conversion must convert to or from the enclosing type. + + + + + Looks up a localized string similar to '{0}': user-defined conversions to or from a base class are not allowed. + + + + + Looks up a localized string similar to '{0}': user-defined conversions to or from a derived class are not allowed. + + + + + Looks up a localized string similar to '{0}': user-defined conversions to or from an interface are not allowed. + + + + + Looks up a localized string similar to Cannot convert to static type '{0}'. + + + + + Looks up a localized string similar to Type parameter '{1}' has the 'struct' constraint so '{1}' cannot be used as a constraint for '{0}'. + + + + + Looks up a localized string similar to Cryptographic failure while creating hashes.. + + + + + Looks up a localized string similar to Bad array declarator: To declare a managed array the rank specifier precedes the variable's identifier. To declare a fixed size buffer field, use the fixed keyword before the field type.. + + + + + Looks up a localized string similar to Inherited interface '{1}' causes a cycle in the interface hierarchy of '{0}'. + + + + + Looks up a localized string similar to The type forwarder for type '{0}' in assembly '{1}' causes a cycle. + + + + + Looks up a localized string similar to Debug entry point must be a definition of a method declared in the current compilation.. + + + + + Looks up a localized string similar to Evaluation of the decimal constant expression failed. + + + + + Looks up a localized string similar to Cannot specify the DefaultMember attribute on a type containing an indexer. + + + + + Looks up a localized string similar to Argument of type '{0}' is not applicable for the DefaultParameterValue attribute. + + + + + Looks up a localized string similar to Optional parameters must appear after all required parameters. + + + + + Looks up a localized string similar to Cannot specify a default value for the 'this' parameter. + + + + + Looks up a localized string similar to Cannot specify a default value for a parameter array. + + + + + Looks up a localized string similar to Default parameter value for '{0}' must be a compile-time constant. + + + + + Looks up a localized string similar to Default values are not valid in this context.. + + + + + Looks up a localized string similar to The type of the argument to the DefaultParameterValue attribute must match the parameter type. + + + + + Looks up a localized string similar to Cannot specify default parameter value in conjunction with DefaultParameterAttribute or OptionalAttribute. + + + + + Looks up a localized string similar to Cannot create delegate with '{0}' because it or a method it overrides has a Conditional attribute. + + + + + Looks up a localized string similar to Cannot bind delegate to '{0}' because it is a member of 'System.Nullable<T>'. + + + + + Looks up a localized string similar to The best overloaded Add method '{0}' for the collection initializer element is obsolete. {1}. + + + + + Looks up a localized string similar to '{0}' is obsolete: '{1}'. + + + + + Looks up a localized string similar to '{0}': cannot implement a dynamic interface '{1}'. + + + + + Looks up a localized string similar to '{0}': cannot derive from the dynamic type. + + + + + Looks up a localized string similar to '{0}' cannot derive from special class '{1}'. + + + + + Looks up a localized string similar to Cannot derive from '{0}' because it is a type parameter. + + + + + Looks up a localized string similar to Static classes cannot contain destructors. + + + + + Looks up a localized string similar to An expression tree lambda may not contain a dictionary initializer.. + + + + + Looks up a localized string similar to The DllImport attribute cannot be applied to a method that is generic or contained in a generic type.. + + + + + Looks up a localized string similar to The DllImport attribute must be specified on a method marked 'static' and 'extern'. + + + + + Looks up a localized string similar to '{0}' does not implement '{1}'. + + + + + Looks up a localized string similar to Do not use 'System.Runtime.CompilerServices.FixedBuffer' attribute. Use the 'fixed' field modifier instead.. + + + + + Looks up a localized string similar to The type name '{0}' does not exist in the type '{1}'. + + + + + Looks up a localized string similar to The type or namespace name '{0}' does not exist in the namespace '{1}' (are you missing an assembly reference?). + + + + + Looks up a localized string similar to The type name '{0}' could not be found in the namespace '{1}'. This type has been forwarded to assembly '{2}' Consider adding a reference to that assembly.. + + + + + Looks up a localized string similar to Property accessor already defined. + + + + + Looks up a localized string similar to The using alias '{0}' appeared previously in this namespace. + + + + + Looks up a localized string similar to Duplicate '{0}' attribute. + + + + + Looks up a localized string similar to Duplicate '{0}' attribute in '{1}'. + + + + + Looks up a localized string similar to Duplicate constraint '{0}' for type parameter '{1}'. + + + + + Looks up a localized string similar to The switch statement contains multiple cases with the label value '{0}'. + + + + + Looks up a localized string similar to A constraint clause has already been specified for type parameter '{0}'. All of the constraints for a type parameter must be specified in a single where clause.. + + + + + Looks up a localized string similar to Duplicate user-defined conversion in type '{0}'. + + + + + Looks up a localized string similar to The parameter name '{0}' conflicts with an automatically-generated parameter name. + + + + + Looks up a localized string similar to Multiple assemblies with equivalent identity have been imported: '{0}' and '{1}'. Remove one of the duplicate references.. + + + + + Looks up a localized string similar to An assembly with the same simple name '{0}' has already been imported. Try removing one of the references (e.g. '{1}') or sign them to enable side-by-side.. + + + + + Looks up a localized string similar to '{0}' is already listed in interface list. + + + + + Looks up a localized string similar to The label '{0}' is a duplicate. + + + + + Looks up a localized string similar to Duplicate '{0}' modifier. + + + + + Looks up a localized string similar to Named argument '{0}' cannot be specified multiple times. + + + + + Looks up a localized string similar to '{0}' duplicate named attribute argument. + + + + + Looks up a localized string similar to The type '{0}' already contains a definition for '{1}'. + + + + + Looks up a localized string similar to The namespace '{1}' already contains a definition for '{0}'. + + + + + Looks up a localized string similar to The parameter name '{0}' is a duplicate. + + + + + Looks up a localized string similar to Cannot specify accessibility modifiers for both accessors of the property or indexer '{0}'. + + + + + Looks up a localized string similar to '{0}' duplicate TypeForwardedToAttribute. + + + + + Looks up a localized string similar to Duplicate type parameter '{0}'. + + + + + Looks up a localized string similar to A parameter can only have one '{0}' modifier. + + + + + Looks up a localized string similar to Cannot define a class or member that utilizes 'dynamic' because the compiler required type '{0}' cannot be found. Are you missing a reference?. + + + + + Looks up a localized string similar to One or more types required to compile a dynamic expression cannot be found. Are you missing a reference?. + + + + + Looks up a localized string similar to Constraint cannot be the dynamic type. + + + + + Looks up a localized string similar to Empty character literal. + + + + + Looks up a localized string similar to Element initializer cannot be empty. + + + + + Looks up a localized string similar to Empty format specifier.. + + + + + Looks up a localized string similar to Expression expected after yield return. + + + + + Looks up a localized string similar to Cannot continue since the edit includes a reference to an embedded type: '{0}'.. + + + + + Looks up a localized string similar to Cannot emit debug information for a source text without encoding.. + + + + + Looks up a localized string similar to Member '{0}' added during the current debug session can only be accessed from within its declaring assembly '{1}'.. + + + + + Looks up a localized string similar to Cannot update '{0}'; attribute '{1}' is missing.. + + + + + Looks up a localized string similar to #endif directive expected. + + + + + Looks up a localized string similar to Single-line comment or end-of-line expected. + + + + + Looks up a localized string similar to #endregion directive expected. + + + + + Looks up a localized string similar to '{0}': the enumerator value is too large to fit in its type. + + + + + Looks up a localized string similar to Enums cannot contain explicit parameterless constructors. + + + + + Looks up a localized string similar to Type or namespace definition, or end-of-file expected. + + + + + Looks up a localized string similar to Error building Win32 resources -- {0}. + + + + + Looks up a localized string similar to #error: '{0}'. + + + + + Looks up a localized string similar to There is an error in a referenced assembly '{0}'.. + + + + + Looks up a localized string similar to A '{0}' character may only be escaped by doubling '{0}{0}' in an interpolated string.. + + + + + Looks up a localized string similar to '{0}': event property must have both add and remove accessors. + + + + + Looks up a localized string similar to '{0}': event must be of a delegate type. + + + + + Looks up a localized string similar to An event in an interface cannot have add or remove accessors. + + + + + Looks up a localized string similar to Expected contextual keyword 'by'. + + + + + Looks up a localized string similar to Expected contextual keyword 'equals'. + + + + + Looks up a localized string similar to Expected contextual keyword 'on'. + + + + + Looks up a localized string similar to Expected catch or finally. + + + + + Looks up a localized string similar to Quoted file name expected. + + + + + Looks up a localized string similar to A query body must end with a select clause or a group clause. + + + + + Looks up a localized string similar to Expected a script (.csx file) but none specified. + + + + + Looks up a localized string similar to Keyword, identifier, or string expected after verbatim specifier: @. + + + + + Looks up a localized string similar to Do not use 'System.Runtime.CompilerServices.DynamicAttribute'. Use the 'dynamic' keyword instead.. + + + + + Looks up a localized string similar to An explicit interface implementation of an event must use event accessor syntax. + + + + + Looks up a localized string similar to Do not use 'System.Runtime.CompilerServices.ExtensionAttribute'. Use the 'this' keyword instead.. + + + + + Looks up a localized string similar to Cannot inherit interface '{0}' with the specified type parameters because it causes method '{1}' to contain overloads which differ only on ref and out. + + + + + Looks up a localized string similar to '{0}' should not have a params parameter since '{1}' does not. + + + + + Looks up a localized string similar to '{0}': explicit interface declaration can only be declared in a class or struct. + + + + + Looks up a localized string similar to '{0}' in explicit interface declaration is not an interface. + + + + + Looks up a localized string similar to '{0}': Auto-implemented properties cannot be used inside a type marked with StructLayout(LayoutKind.Explicit). + + + + + Looks up a localized string similar to '{0}' explicit method implementation cannot implement '{1}' because it is an accessor. + + + + + Looks up a localized string similar to Do not use 'System.ParamArrayAttribute'. Use the 'params' keyword instead.. + + + + + Looks up a localized string similar to '{0}' adds an accessor not found in interface member '{1}'. + + + + + Looks up a localized string similar to Explicit interface implementation '{0}' is missing accessor '{1}'. + + + + + Looks up a localized string similar to Type '{0}' exported from module '{1}' conflicts with type declared in primary module of this assembly.. + + + + + Looks up a localized string similar to Type '{0}' exported from module '{1}' conflicts with type '{2}' exported from module '{3}'.. + + + + + Looks up a localized string similar to Expected expression. + + + + + Looks up a localized string similar to Expression does not have a name.. + + + + + Looks up a localized string similar to Expression or declaration statement expected.. + + + + + Looks up a localized string similar to An expression tree may not contain an anonymous method expression. + + + + + Looks up a localized string similar to An expression tree may not contain an assignment operator. + + + + + Looks up a localized string similar to An expression tree lambda may not contain a coalescing operator with a null literal left-hand side. + + + + + Looks up a localized string similar to An expression tree may not contain a base access. + + + + + Looks up a localized string similar to An expression tree may not contain a dynamic operation. + + + + + Looks up a localized string similar to An expression tree may not contain an indexed property. + + + + + Looks up a localized string similar to An expression tree may not contain a multidimensional array initializer. + + + + + Looks up a localized string similar to An expression tree may not contain a named argument specification. + + + + + Looks up a localized string similar to An expression tree may not contain a call or invocation that uses optional arguments. + + + + + Looks up a localized string similar to An expression tree may not contain an unsafe pointer operation. + + + + + Looks up a localized string similar to Cannot convert lambda to an expression tree whose type argument '{0}' is not a delegate type. + + + + + Looks up a localized string similar to Cannot define a new extension method because the compiler required type '{0}' cannot be found. Are you missing a reference to System.Core.dll?. + + + + + Looks up a localized string similar to An extension Add method is not supported for a collection initializer in an expression lambda.. + + + + + Looks up a localized string similar to Extension methods must be defined in a top level static class; {0} is a nested class. + + + + + Looks up a localized string similar to An extern alias declaration must precede all other elements defined in the namespace. + + + + + Looks up a localized string similar to 'extern alias' is not valid in this context. + + + + + Looks up a localized string similar to '{0}' cannot be extern and declare a body. + + + + + Looks up a localized string similar to '{0}' cannot be extern and have a constructor initializer. + + + + + Looks up a localized string similar to Feature '{0}' is only available in 'experimental' language version.. + + + + + Looks up a localized string similar to Feature '{0}' is not available in C# 1. Please use language version {1} or greater.. + + + + + Looks up a localized string similar to Feature '{0}' is not available in C# 2. Please use language version {1} or greater.. + + + + + Looks up a localized string similar to Feature '{0}' is not available in C# 3. Please use language version {1} or greater.. + + + + + Looks up a localized string similar to Feature '{0}' is not available in C# 4. Please use language version {1} or greater.. + + + + + Looks up a localized string similar to Feature '{0}' is not available in C# 5. Please use language version {1} or greater.. + + + + + Looks up a localized string similar to Feature '{0}' is not available in C# 6. Please use language version {1} or greater.. + + + + + Looks up a localized string similar to An expression tree may not contain '{0}'. + + + + + Looks up a localized string similar to Field or property cannot be of type '{0}'. + + + + + Looks up a localized string similar to Field cannot have void type. + + + + + Looks up a localized string similar to The field has multiple distinct constant values.. + + + + + Looks up a localized string similar to '{0}': cannot have instance property or field initializers in structs. + + + + + Looks up a localized string similar to A field initializer cannot reference the non-static field, method, or property '{0}'. + + + + + Looks up a localized string similar to Source file '{0}' could not be found.. + + + + + Looks up a localized string similar to You cannot use fixed size buffers contained in unfixed expressions. Try using the fixed statement.. + + + + + Looks up a localized string similar to A fixed buffer may only have one dimension.. + + + + + Looks up a localized string similar to A fixed size buffer field must have the array size specifier after the field name. + + + + + Looks up a localized string similar to Cannot use fixed local '{0}' inside an anonymous method, lambda expression, or query expression. + + + + + Looks up a localized string similar to You must provide an initializer in a fixed or using statement declaration. + + + + + Looks up a localized string similar to You can only take the address of an unfixed expression inside of a fixed statement initializer. + + + + + Looks up a localized string similar to Fixed size buffers can only be accessed through locals or fields. + + + + + Looks up a localized string similar to Fixed size buffer fields may only be members of structs. + + + + + Looks up a localized string similar to You cannot use the fixed statement to take the address of an already fixed expression. + + + + + Looks up a localized string similar to Fixed size buffer of length {0} and type '{1}' is too big. + + + + + Looks up a localized string similar to Floating-point constant is outside the range of type '{0}'. + + + + + Looks up a localized string similar to foreach statement cannot operate on variables of type '{0}' because '{0}' does not contain a public definition for '{1}'. + + + + + Looks up a localized string similar to Forwarded type '{0}' conflicts with type declared in primary module of this assembly.. + + + + + Looks up a localized string similar to Type '{0}' forwarded to assembly '{1}' conflicts with type '{2}' exported from module '{3}'.. + + + + + Looks up a localized string similar to Type '{0}' is defined in this assembly, but a type forwarder is specified for it. + + + + + Looks up a localized string similar to Cannot forward type '{0}' because it is a nested type of '{1}'. + + + + + Looks up a localized string similar to Type '{0}' forwarded to assembly '{1}' conflicts with type '{2}' forwarded to assembly '{3}'.. + + + + + Looks up a localized string similar to Friend assembly reference '{0}' is invalid. InternalsVisibleTo declarations cannot have a version, culture, public key token, or processor architecture specified.. + + + + + Looks up a localized string similar to Friend assembly reference '{0}' is invalid. Strong-name signed assemblies must specify a public key in their InternalsVisibleTo declarations.. + + + + + Looks up a localized string similar to Friend access was granted by '{0}', but the public key of the output assembly does not match that specified by the attribute in the granting assembly.. + + + + + Looks up a localized string similar to Friend access was granted by '{0}', but the strong name signing state of the output assembly does not match that of the granting assembly.. + + + + + Looks up a localized string similar to '{0}': static types cannot be used as type arguments. + + + + + Looks up a localized string similar to The type '{3}' cannot be used as type parameter '{2}' in the generic type or method '{0}'. The nullable type '{3}' does not satisfy the constraint of '{1}'.. + + + + + Looks up a localized string similar to The type '{3}' cannot be used as type parameter '{2}' in the generic type or method '{0}'. The nullable type '{3}' does not satisfy the constraint of '{1}'. Nullable types can not satisfy any interface constraints.. + + + + + Looks up a localized string similar to The type '{3}' cannot be used as type parameter '{2}' in the generic type or method '{0}'. There is no implicit reference conversion from '{3}' to '{1}'.. + + + + + Looks up a localized string similar to The type '{3}' cannot be used as type parameter '{2}' in the generic type or method '{0}'. There is no boxing conversion or type parameter conversion from '{3}' to '{1}'.. + + + + + Looks up a localized string similar to The type '{3}' cannot be used as type parameter '{2}' in the generic type or method '{0}'. There is no boxing conversion from '{3}' to '{1}'.. + + + + + Looks up a localized string similar to A generic type cannot derive from '{0}' because it is an attribute class. + + + + + Looks up a localized string similar to Type '{0}' from assembly '{1}' cannot be used across assembly boundaries because it has a generic type parameter that is an embedded interop type.. + + + + + Looks up a localized string similar to Type '{0}' cannot be embedded because it has a generic argument. Consider setting the 'Embed Interop Types' property to false.. + + + + + Looks up a localized string similar to A get or set accessor expected. + + + + + Looks up a localized string similar to Assembly and module attributes are not allowed in this context. + + + + + Looks up a localized string similar to Assembly and module attributes must precede all other elements defined in a file except using clauses and extern alias declarations. + + + + + Looks up a localized string similar to Member definition, statement, or end-of-file expected. + + + + + Looks up a localized string similar to You cannot redefine the global extern alias. + + + + + Looks up a localized string similar to The type or namespace name '{0}' could not be found in the global namespace (are you missing an assembly reference?). + + + + + Looks up a localized string similar to The type name '{0}' could not be found in the global namespace. This type has been forwarded to assembly '{1}' Consider adding a reference to that assembly.. + + + + + Looks up a localized string similar to Expressions and statements can only occur in a method body. + + + + + Looks up a localized string similar to The non-generic {1} '{0}' cannot be used with type arguments. + + + + + Looks up a localized string similar to '{0}' hides inherited abstract member '{1}'. + + + + + Looks up a localized string similar to Identifier expected. + + + + + Looks up a localized string similar to Identifier expected; '{1}' is a keyword. + + + + + Looks up a localized string similar to User-defined operator cannot take an object of the enclosing type and convert to an object of the enclosing type. + + + + + Looks up a localized string similar to An __arglist expression may only appear inside of a call or new expression. + + + + + Looks up a localized string similar to Unrecognized escape sequence. + + + + + Looks up a localized string similar to Fixed size buffer type must be one of the following: bool, byte, short, int, long, char, sbyte, ushort, uint, ulong, float or double. + + + + + Looks up a localized string similar to Unsafe code may not appear in iterators. + + + + + Looks up a localized string similar to params is not valid in this context. + + + + + Looks up a localized string similar to ref and out are not valid in this context. + + + + + Looks up a localized string similar to Only assignment, call, increment, decrement, and new object expressions can be used as a statement. + + + + + Looks up a localized string similar to Unsafe code may only appear if compiling with /unsafe. + + + + + Looks up a localized string similar to __arglist is not valid in this context. + + + + + Looks up a localized string similar to Invalid variance modifier. Only interface and delegate type parameters can be specified as variant.. + + + + + Looks up a localized string similar to The constraints for type parameter '{0}' of method '{1}' must match the constraints for type parameter '{2}' of interface method '{3}'. Consider using an explicit interface implementation instead.. + + + + + Looks up a localized string similar to No best type found for implicitly-typed array. + + + + + Looks up a localized string similar to Implicitly-typed local variables cannot be fixed. + + + + + Looks up a localized string similar to Cannot initialize an implicitly-typed variable with an array initializer. + + + + + Looks up a localized string similar to Cannot assign {0} to an implicitly-typed variable. + + + + + Looks up a localized string similar to Implicitly-typed variables cannot be constant. + + + + + Looks up a localized string similar to Implicitly-typed variables cannot have multiple declarators. + + + + + Looks up a localized string similar to Implicitly-typed variables must be initialized. + + + + + Looks up a localized string similar to Imported type '{0}' is invalid. It contains a circular base class dependency.. + + + + + Looks up a localized string similar to The referenced file '{0}' is not an assembly. + + + + + Looks up a localized string similar to The property or indexer '{0}' cannot be used in this context because the get accessor is inaccessible. + + + + + Looks up a localized string similar to The property or indexer '{0}' cannot be used in this context because the set accessor is inaccessible. + + + + + Looks up a localized string similar to An out parameter cannot have the In attribute. + + + + + Looks up a localized string similar to Two indexers have different names; the IndexerName attribute must be used with the same name on every indexer within a type. + + + + + Looks up a localized string similar to Inconsistent lambda parameter usage; parameter types must be all explicit or all implicit. + + + + + Looks up a localized string similar to The operand of an increment or decrement operator must be a variable, property or indexer. + + + + + Looks up a localized string similar to Indexed property '{0}' must have all arguments optional. + + + + + Looks up a localized string similar to Indexed property '{0}' has non-optional arguments which must be provided. + + + + + Looks up a localized string similar to Indexers cannot have void type. + + + + + Looks up a localized string similar to '{0}': cannot declare indexers in a static class. + + + + + Looks up a localized string similar to Indexers must have at least one parameter. + + + + + Looks up a localized string similar to Constructor '{0}' cannot call itself through another constructor. + + + + + Looks up a localized string similar to 'in' expected. + + + + + Looks up a localized string similar to The best overloaded method match '{0}' for the collection initializer element cannot be used. Collection initializer 'Add' methods cannot have ref or out parameters.. + + + + + Looks up a localized string similar to The best overloaded method match for '{0}' has wrong signature for the initializer element. The initializable Add must be an accessible instance method.. + + + + + Looks up a localized string similar to Structs without explicit constructors cannot contain members with initializers.. + + + + + Looks up a localized string similar to Only auto-implemented properties can have initializers.. + + + + + Looks up a localized string similar to '{0}': cannot declare instance members in a static class. + + + + + Looks up a localized string similar to Cannot create an instance of the static class '{0}'. + + + + + Looks up a localized string similar to An expression is too long or complex to compile. + + + + + Looks up a localized string similar to Division by constant zero. + + + + + Looks up a localized string similar to Type byte, sbyte, short, ushort, int, uint, long, or ulong expected. + + + + + Looks up a localized string similar to A value of an integral type expected. + + + + + Looks up a localized string similar to '{0}': event in interface cannot have initializer. + + + + + Looks up a localized string similar to Conditional member '{0}' cannot implement interface member '{1}' in type '{2}'. + + + + + Looks up a localized string similar to '{0}': interface members cannot have a definition. + + + + + Looks up a localized string similar to '{0}' in explicit interface declaration is not a member of interface. + + + + + Looks up a localized string similar to '{0}': interfaces cannot declare types. + + + + + Looks up a localized string similar to Interfaces cannot contain constructors. + + + + + Looks up a localized string similar to Interfaces cannot contain fields. + + + + + Looks up a localized string similar to Interfaces cannot contain operators. + + + + + Looks up a localized string similar to Embedded interop method '{0}' contains a body.. + + + + + Looks up a localized string similar to Embedded interop struct '{0}' can contain only public instance fields.. + + + + + Looks up a localized string similar to Interop type '{0}' cannot be embedded because it is missing the required '{1}' attribute.. + + + + + Looks up a localized string similar to Cannot embed interop type '{0}' found in both assembly '{1}' and '{2}'. Consider setting the 'Embed Interop Types' property to false.. + + + + + Looks up a localized string similar to Integral constant is too large. + + + + + Looks up a localized string similar to Cannot take the address of the given expression. + + + + + Looks up a localized string similar to Invalid anonymous type member declarator. Anonymous type members must be declared with a member assignment, simple name or member access.. + + + + + Looks up a localized string similar to Invalid rank specifier: expected ',' or ']'. + + + + + Looks up a localized string similar to Assembly culture strings may not contain embedded NUL characters.. + + + + + Looks up a localized string similar to Executables cannot be satellite assemblies; culture should always be empty. + + + + + Looks up a localized string similar to Assembly reference '{0}' is invalid and cannot be resolved. + + + + + Looks up a localized string similar to Invalid value for argument to '{0}' attribute. + + + + + Looks up a localized string similar to '{0}' is of type '{1}'. The type specified in a constant declaration must be sbyte, byte, short, ushort, int, uint, long, ulong, char, float, double, decimal, bool, string, an enum-type, or a reference-type.. + + + + + Looks up a localized string similar to Invalid debug information format: {0}. + + + + + Looks up a localized string similar to Delegate '{0}' has no invoke method or an invoke method with a return type or parameter types that are not supported.. + + + + + Looks up a localized string similar to Expression must be implicitly convertible to Boolean or its type '{0}' must define operator '{1}'.. + + + + + Looks up a localized string similar to Invalid expression term '{0}'. + + + + + Looks up a localized string similar to Invalid file section alignment '{0}'. + + + + + Looks up a localized string similar to Fixed size buffers must have a length greater than zero. + + + + + Looks up a localized string similar to Command-line syntax error: Invalid Guid format '{0}' for option '{1}'. + + + + + Looks up a localized string similar to Invalid type specified as an argument for TypeForwardedTo attribute. + + + + + Looks up a localized string similar to A goto case is only valid inside a switch statement. + + + + + Looks up a localized string similar to Invalid initializer member declarator. + + + + + Looks up a localized string similar to The line number specified for #line directive is missing or invalid. + + + + + Looks up a localized string similar to Invalid token '{0}' in class, struct, or interface member declaration. + + + + + Looks up a localized string similar to Invalid value for named attribute argument '{0}'. + + + + + Looks up a localized string similar to Invalid number. + + + + + Looks up a localized string similar to Invalid output name: {0}. + + + + + Looks up a localized string similar to The pathmap option was incorrectly formatted.. + + + + + Looks up a localized string similar to Invalid preprocessor expression. + + + + + Looks up a localized string similar to The accessibility modifier of the '{0}' accessor must be more restrictive than the property or indexer '{1}'. + + + + + Looks up a localized string similar to Type of conditional expression cannot be determined because there is no implicit conversion between '{0}' and '{1}'. + + + + + Looks up a localized string similar to Invalid real literal.. + + + + + Looks up a localized string similar to Invalid signature public key specified in AssemblySignatureKeyAttribute.. + + + + + Looks up a localized string similar to '{0}' is not a valid format specifier. + + + + + Looks up a localized string similar to Invalid version {0} for /subsystemversion. The version must be 6.02 or greater for ARM or AppContainerExe, and 4.00 or greater otherwise. + + + + + Looks up a localized string similar to The specified version string does not conform to the required format - major[.minor[.build[.revision]]]. + + + + + Looks up a localized string similar to The specified version string does not conform to the required format - major.minor.build.revision. + + + + + Looks up a localized string similar to Yield statements may not appear at the top level in interactive code.. + + + + + Looks up a localized string similar to No such label '{0}' within the scope of the goto statement. + + + + + Looks up a localized string similar to The label '{0}' shadows another label by the same name in a contained scope. + + + + + Looks up a localized string similar to The first operand of an 'is' or 'as' operator may not be a lambda expression, anonymous method, or method group.. + + + + + Looks up a localized string similar to { expected. + + + + + Looks up a localized string similar to 'id#' syntax is no longer supported. Use '$id' instead.. + + + + + Looks up a localized string similar to Linked netmodule metadata must provide a full PE image: '{0}'.. + + + + + Looks up a localized string similar to Literal of type double cannot be implicitly converted to type '{1}'; use an '{0}' suffix to create a literal of this type. + + + + + Looks up a localized string similar to #load is only allowed in scripts. + + + + + Looks up a localized string similar to Local '{0}' or its members cannot have their address taken and be used inside an anonymous method or lambda expression. + + + + + Looks up a localized string similar to A local variable named '{0}' is already defined in this scope. + + + + + Looks up a localized string similar to A local or parameter named '{0}' cannot be declared in this scope because that name is used in an enclosing local scope to define a local or parameter. + + + + + Looks up a localized string similar to '{0}': a parameter or local variable cannot have the same name as a method type parameter. + + + + + Looks up a localized string similar to Embedding the interop type '{0}' from assembly '{1}' causes a name clash in the current assembly. Consider setting the 'Embed Interop Types' property to false.. + + + + + Looks up a localized string similar to '{0}' is not a reference type as required by the lock statement. + + + + + Looks up a localized string similar to Cannot do member lookup in '{0}' because it is a type parameter. + + + + + Looks up a localized string similar to '{0}': an entry point cannot be marked with the 'async' modifier. + + + + + Looks up a localized string similar to Cannot use '{0}' for Main method because it is imported. + + + + + Looks up a localized string similar to '{0}' specified for Main method must be a valid non-generic class or struct. + + + + + Looks up a localized string similar to Could not find '{0}' specified for Main method. + + + + + Looks up a localized string similar to Cannot take the address of, get the size of, or declare a pointer to a managed type ('{0}'). + + + + + Looks up a localized string similar to Unmanaged type '{0}' not valid for fields.. + + + + + Looks up a localized string similar to Unmanaged type '{0}' is only valid for fields.. + + + + + Looks up a localized string similar to Type '{1}' already defines a member called '{0}' with the same parameter types. + + + + + Looks up a localized string similar to Duplicate initialization of member '{0}'. + + + + + Looks up a localized string similar to Member '{0}' cannot be initialized. It is not a field or property.. + + + + + Looks up a localized string similar to '{0}': member names cannot be the same as their enclosing type. + + + + + Looks up a localized string similar to Method must have a return type. + + + + + Looks up a localized string similar to Type '{1}' already reserves a member called '{0}' with the same parameter types. + + + + + Looks up a localized string similar to An expression tree lambda may not contain a method group. + + + + + Looks up a localized string similar to Name '{0}' exceeds the maximum length allowed in metadata.. + + + + + Looks up a localized string similar to Metadata references are not supported.. + + + + + Looks up a localized string similar to No overload for '{0}' matches delegate '{1}'. + + + + + Looks up a localized string similar to Cannot convert method group '{0}' to non-delegate type '{1}'. Did you intend to invoke the method?. + + + + + Looks up a localized string similar to Cannot make reference to variable of type '{0}'. + + + + + Looks up a localized string similar to Method '{0}' cannot implement interface accessor '{1}' for type '{2}'. Use an explicit interface implementation.. + + + + + Looks up a localized string similar to Method name expected. + + + + + Looks up a localized string similar to Method or delegate cannot return type '{0}'. + + + + + Looks up a localized string similar to Argument missing. + + + + + Looks up a localized string similar to Array creation must have array size or array initializer. + + + + + Looks up a localized string similar to The managed coclass wrapper class '{0}' for interface '{1}' cannot be found (are you missing an assembly reference?). + + + + + Looks up a localized string similar to The /pdb option requires that the /debug option also be used. + + + + + Looks up a localized string similar to Command-line syntax error: Missing Guid for option '{1}'. + + + + + Looks up a localized string similar to Source interface '{0}' is missing method '{1}' which is required to embed event '{2}'.. + + + + + Looks up a localized string similar to Reference to '{0}' netmodule missing.. + + + + + Looks up a localized string similar to Missing partial modifier on declaration of type '{0}'; another partial declaration of this type exists. + + + + + Looks up a localized string similar to Quoted file name, single-line comment or end-of-line expected. + + + + + Looks up a localized string similar to Missing compiler required member '{0}.{1}'. + + + + + Looks up a localized string similar to Interface '{0}' has an invalid source interface which is required to embed event '{1}'.. + + + + + Looks up a localized string similar to '{0}': instance field types marked with StructLayout(LayoutKind.Explicit) must have a FieldOffset attribute. + + + + + Looks up a localized string similar to Reference to type '{0}' claims it is defined in '{1}', but it could not be found. + + + + + Looks up a localized string similar to Reference to type '{0}' claims it is defined in this assembly, but it is not defined in source or any added modules. + + + + + Looks up a localized string similar to '{0}' cannot implement '{1}' because '{2}' is a Windows Runtime event and '{3}' is a regular .NET event.. + + + + + Looks up a localized string similar to Failed to emit module '{0}'.. + + + + + Looks up a localized string similar to A parameter cannot have all the specified modifiers; there are too many modifiers on the parameter. + + + + + Looks up a localized string similar to Program has more than one entry point defined. Compile with /main to specify the type that contains the entry point.. + + + + + Looks up a localized string similar to foreach statement cannot operate on variables of type '{0}' because it implements multiple instantiations of '{1}'; try casting to a specific interface instantiation. + + + + + Looks up a localized string similar to Cannot use more than one type in a for, using, fixed, or declaration statement. + + + + + Looks up a localized string similar to In order for '{0}' to be applicable as a short circuit operator, its declaring type '{1}' must define operator true and operator false. + + + + + Looks up a localized string similar to Compilation options '{0}' and '{1}' can't both be specified at the same time.. + + + + + Looks up a localized string similar to Named attribute argument expected. + + + + + Looks up a localized string similar to An array access may not have a named argument specifier. + + + + + Looks up a localized string similar to Named argument specifications must appear after all fixed arguments have been specified. + + + + + Looks up a localized string similar to Named argument '{0}' specifies a parameter for which a positional argument has already been given. + + + + + Looks up a localized string similar to The name '{0}' does not exist in the current context. + + + + + Looks up a localized string similar to The name '{0}' does not exist in the current context (are you missing a reference to assembly '{1}'?). + + + + + Looks up a localized string similar to Extension method groups are not allowed as an argument to 'nameof'.. + + + + + Looks up a localized string similar to Type parameters are not allowed on a method group as an argument to 'nameof'.. + + + + + Looks up a localized string similar to Cannot declare namespace in script code. + + + + + Looks up a localized string similar to A namespace cannot directly contain members such as fields or methods. + + + + + Looks up a localized string similar to Cannot create an array with a negative size. + + + + + Looks up a localized string similar to Cannot use a negative size with stackalloc. + + + + + Looks up a localized string similar to Module name '{0}' stored in '{1}' must match its filename.. + + + + + Looks up a localized string similar to Module '{0}' is already defined in this assembly. Each module must have a unique filename.. + + + + + Looks up a localized string similar to The new() constraint must be the last constraint specified. + + + + + Looks up a localized string similar to The 'new()' constraint cannot be used with the 'struct' constraint. + + + + + Looks up a localized string similar to Interop type '{0}' cannot be embedded. Use the applicable interface instead.. + + + + + Looks up a localized string similar to '{2}' must be a non-abstract type with a public parameterless constructor in order to use it as parameter '{1}' in the generic type or method '{0}'. + + + + + Looks up a localized string similar to Newline in constant. + + + + + Looks up a localized string similar to '{0}': cannot provide arguments when creating an instance of a variable type. + + + + + Looks up a localized string similar to '{0}' is a new virtual member in sealed class '{1}'. + + + + + Looks up a localized string similar to A 'using static' directive cannot be used to declare an alias. + + + + + Looks up a localized string similar to A base class is required for a 'base' reference. + + + + + Looks up a localized string similar to No enclosing loop out of which to break or continue. + + + + + Looks up a localized string similar to Cannot find the interop type that matches the embedded interop type '{0}'. Are you missing an assembly reference?. + + + + + Looks up a localized string similar to The type '{0}' has no constructors defined. + + + + + Looks up a localized string similar to CallerFilePathAttribute cannot be applied because there are no standard conversions from type '{0}' to type '{1}'. + + + + + Looks up a localized string similar to CallerLineNumberAttribute cannot be applied because there are no standard conversions from type '{0}' to type '{1}'. + + + + + Looks up a localized string similar to CallerMemberNameAttribute cannot be applied because there are no standard conversions from type '{0}' to type '{1}'. + + + + + Looks up a localized string similar to A value of type '{0}' cannot be used as a default parameter because there are no standard conversions to type '{1}'. + + + + + Looks up a localized string similar to A value of type '{0}' cannot be used as default parameter for nullable parameter '{1}' because '{0}' is not a simple type. + + + + + Looks up a localized string similar to '{0}': type used in a using statement must be implicitly convertible to 'System.IDisposable'. + + + + + Looks up a localized string similar to There is no argument given that corresponds to the required formal parameter '{0}' of '{1}'. + + + + + Looks up a localized string similar to The call to method '{0}' needs to be dynamically dispatched, but cannot be because it is part of a base access expression. Consider casting the dynamic arguments or eliminating the base access.. + + + + + Looks up a localized string similar to The constructor call needs to be dynamically dispatched, but cannot be because it is part of a constructor initializer. Consider casting the dynamic arguments.. + + + + + Looks up a localized string similar to The indexer access needs to be dynamically dispatched, but cannot be because it is part of a base access expression. Consider casting the dynamic arguments or eliminating the base access.. + + + + + Looks up a localized string similar to Program does not contain a static 'Main' method suitable for an entry point. + + + + + Looks up a localized string similar to Cannot convert type '{0}' to '{1}' via a reference conversion, boxing conversion, unboxing conversion, wrapping conversion, or null type conversion. + + + + + Looks up a localized string similar to Cannot convert type '{0}' to '{1}'. + + + + + Looks up a localized string similar to Missing file specification for '{0}' option. + + + + + Looks up a localized string similar to '{0}': cannot override because '{1}' does not have an overridable get accessor. + + + + + Looks up a localized string similar to Cannot implicitly convert type '{0}' to '{1}'. + + + + + Looks up a localized string similar to Cannot implicitly convert type '{0}' to '{1}'. An explicit conversion exists (are you missing a cast?). + + + + + Looks up a localized string similar to '{0}' does not have a suitable static Main method. + + + + + Looks up a localized string similar to Cannot specify /main if building a module or library. + + + + + Looks up a localized string similar to Metadata file '{0}' could not be found. + + + + + Looks up a localized string similar to Modifiers cannot be placed on event accessor declarations. + + + + + Looks up a localized string similar to Class '{0}' cannot have multiple base classes: '{1}' and '{2}'. + + + + + Looks up a localized string similar to Elements defined in a namespace cannot be explicitly declared as private, protected, or protected internal. + + + + + Looks up a localized string similar to Cannot create an instance of the abstract class or interface '{0}'. + + + + + Looks up a localized string similar to Cannot create an instance of the variable type '{0}' because it does not have the new() constraint. + + + + + Looks up a localized string similar to Type '{0}' in interface list is not an interface. + + + + + Looks up a localized string similar to Non-invocable member '{0}' cannot be used like a method.. + + + + + Looks up a localized string similar to Cannot embed interop types from assembly '{0}' because it is missing the '{1}' attribute.. + + + + + Looks up a localized string similar to Cannot embed interop types from assembly '{0}' because it is missing either the '{1}' attribute or the '{2}' attribute.. + + + + + Looks up a localized string similar to Type '{0}' cannot be embedded because it is a nested type. Consider setting the 'Embed Interop Types' property to false.. + + + + + Looks up a localized string similar to '{0}': cannot override because '{1}' does not have an overridable set accessor. + + + + + Looks up a localized string similar to Source file '{0}' could not be opened -- {1}. + + + + + Looks up a localized string similar to '{0}' does not contain a definition for '{1}'. + + + + + Looks up a localized string similar to '{0}' does not contain a definition for '{1}' and no extension method '{1}' accepting a first argument of type '{0}' could be found (are you missing a using directive or an assembly reference?). + + + + + Looks up a localized string similar to '{0}' does not contain a definition for '{1}' and no extension method '{1}' accepting a first argument of type '{0}' could be found (are you missing a using directive for '{2}'?). + + + + + Looks up a localized string similar to '{0}' is not an attribute class. + + + + + Looks up a localized string similar to The expression being assigned to '{0}' must be constant. + + + + + Looks up a localized string similar to '{0}' is of type '{1}'. A const field of a reference type other than string can only be initialized with null.. + + + + + Looks up a localized string similar to '{0}' is of type '{1}'. A default parameter value of a reference type other than string can only be initialized with null. + + + + + Looks up a localized string similar to This language feature ('{0}') is not yet implemented.. + + + + + Looks up a localized string similar to The type '{0}' is defined in an assembly that is not referenced. You must add a reference to assembly '{1}'.. + + + + + Looks up a localized string similar to The type '{0}' is defined in a module that has not been added. You must add the module '{1}'.. + + + + + Looks up a localized string similar to Keyword 'void' cannot be used in this context. + + + + + Looks up a localized string similar to Invalid parameter type 'void'. + + + + + Looks up a localized string similar to Use of null is not valid in this context. + + + + + Looks up a localized string similar to An expression tree lambda may not contain a null propagating operator.. + + + + + Looks up a localized string similar to '{0}' has no base class and cannot call a base constructor. + + + + + Looks up a localized string similar to The class System.Object cannot have a base class or implement an interface. + + + + + Looks up a localized string similar to Object and collection initializer expressions may not be applied to a delegate creation expression. + + + + + Looks up a localized string similar to Member '{0}' cannot be accessed with an instance reference; qualify it with a type name instead. + + + + + Looks up a localized string similar to An object reference is required for the non-static field, method, or property '{0}'. + + + + + Looks up a localized string similar to A /reference option that declares an extern alias can only have one filename. To specify multiple aliases or filenames, use multiple /reference options.. + + + + + Looks up a localized string similar to Only class types can contain destructors. + + + + + Looks up a localized string similar to End-of-file found, '*/' expected. + + + + + Looks up a localized string similar to Error opening response file '{0}'. + + + + + Looks up a localized string similar to User-defined operators cannot return void. + + + + + Looks up a localized string similar to '{0}': static classes cannot contain user-defined operators. + + + + + Looks up a localized string similar to The operator '{0}' requires a matching operator '{1}' to also be defined. + + + + + Looks up a localized string similar to User-defined operator '{0}' must be declared static and public. + + + + + Looks up a localized string similar to The return type of operator True or False must be bool. + + + + + Looks up a localized string similar to Option '{0}' must be an absolute path.. + + + + + Looks up a localized string similar to Cannot specify only Out attribute on a ref parameter. Use both In and Out attributes, or neither.. + + + + + Looks up a localized string similar to Outputs without source must have the /out option specified. + + + + + Looks up a localized string similar to Could not write to output file '{0}' -- '{1}'. + + + + + Looks up a localized string similar to '{0}' cannot define overloaded methods that differ only on ref and out. + + + + + Looks up a localized string similar to Cannot define overloaded constructor '{0}' because it differs from another constructor only on ref and out. + + + + + Looks up a localized string similar to Do not override object.Finalize. Instead, provide a destructor.. + + + + + Looks up a localized string similar to '{0}': no suitable method found to override. + + + + + Looks up a localized string similar to A member '{0}' marked as override cannot be marked as new or virtual. + + + + + Looks up a localized string similar to Constraints for override and explicit interface implementation methods are inherited from the base method, so they cannot be specified directly. + + + + + Looks up a localized string similar to Overloadable binary operator expected. + + + + + Looks up a localized string similar to Overloadable operator expected. + + + + + Looks up a localized string similar to Overloadable unary operator expected. + + + + + Looks up a localized string similar to The parameter has multiple distinct default values.. + + + + + Looks up a localized string similar to '{0}': static types cannot be used as parameters. + + + + + Looks up a localized string similar to Parameter not valid for the specified unmanaged type.. + + + + + Looks up a localized string similar to The params parameter cannot be declared as ref or out. + + + + + Looks up a localized string similar to A params parameter must be the last parameter in a formal parameter list. + + + + + Looks up a localized string similar to The params parameter must be a single dimensional array. + + + + + Looks up a localized string similar to The out parameter '{0}' must be assigned to before control leaves the current method. + + + + + Looks up a localized string similar to A partial method cannot have out parameters. + + + + + Looks up a localized string similar to Both partial method declarations must be extension methods or neither may be an extension method. + + + + + Looks up a localized string similar to Partial method declarations of '{0}' have inconsistent type parameter constraints. + + + + + Looks up a localized string similar to Partial methods with only a defining declaration or removed conditional methods cannot be used in expression trees. + + + + + Looks up a localized string similar to A partial method cannot have access modifiers or the virtual, abstract, override, new, sealed, or extern modifiers. + + + + + Looks up a localized string similar to No defining declaration found for implementing declaration of partial method '{0}'. + + + + + Looks up a localized string similar to Partial methods must have a void return type. + + + + + Looks up a localized string similar to A partial method may not explicitly implement an interface method. + + + + + Looks up a localized string similar to A partial method must be declared within a partial class or partial struct. + + + + + Looks up a localized string similar to Only methods, classes, structs, or interfaces may be partial. + + + + + Looks up a localized string similar to A partial method may not have multiple implementing declarations. + + + + + Looks up a localized string similar to A partial method may not have multiple defining declarations. + + + + + Looks up a localized string similar to Both partial method declarations must use a params parameter or neither may use a params parameter. + + + + + Looks up a localized string similar to Both partial method declarations must be static or neither may be static. + + + + + Looks up a localized string similar to Cannot create delegate from method '{0}' because it is a partial method without an implementing declaration. + + + + + Looks up a localized string similar to Both partial method declarations must be unsafe or neither may be unsafe. + + + + + Looks up a localized string similar to The 'partial' modifier can only appear immediately before 'class', 'struct', 'interface', or 'void'. + + + + + Looks up a localized string similar to Partial declarations of '{0}' have conflicting accessibility modifiers. + + + + + Looks up a localized string similar to Partial declarations of '{0}' must not specify different base classes. + + + + + Looks up a localized string similar to Partial declarations of '{0}' must be all classes, all structs, or all interfaces. + + + + + Looks up a localized string similar to Partial declarations of '{0}' have inconsistent constraints for type parameter '{1}'. + + + + + Looks up a localized string similar to Partial declarations of '{0}' must have the same type parameter names in the same order. + + + + + Looks up a localized string similar to Partial declarations of '{0}' must have the same type parameter names and variance modifiers in the same order. + + + + + Looks up a localized string similar to Error reading file '{0}' specified for the named argument '{1}' for PermissionSet attribute: '{2}'. + + + + + Looks up a localized string similar to Unable to resolve file path '{0}' specified for the named argument '{1}' for PermissionSet attribute. + + + + + Looks up a localized string similar to An error occurred while writing the output file: {0}. + + + + + Looks up a localized string similar to Neither 'is' nor 'as' is valid on pointer types. + + + + + Looks up a localized string similar to Cannot define/undefine preprocessor symbols after first token in file. + + + + + Looks up a localized string similar to Preprocessor directive expected. + + + + + Looks up a localized string similar to Cannot use #load after first token in file. + + + + + Looks up a localized string similar to Cannot use #r after first token in file. + + + + + Looks up a localized string similar to Predefined type '{0}' is not defined or imported. + + + + + Looks up a localized string similar to SecurityAction value '{0}' is invalid for PrincipalPermission attribute. + + + + + Looks up a localized string similar to '{0}': abstract properties cannot have private accessors. + + + + + Looks up a localized string similar to '{0}': accessibility modifiers may not be used on accessors in an interface. + + + + + Looks up a localized string similar to '{0}': property or indexer cannot have void type. + + + + + Looks up a localized string similar to The property or indexer '{0}' cannot be used in this context because it lacks the get accessor. + + + + + Looks up a localized string similar to '{0}': property or indexer must have at least one accessor. + + + + + Looks up a localized string similar to '{0}': static classes cannot contain protected members. + + + + + Looks up a localized string similar to '{0}': new protected member declared in struct. + + + + + Looks up a localized string similar to The * or -> operator must be applied to a pointer. + + + + + Looks up a localized string similar to A pointer must be indexed by only one value. + + + + + Looks up a localized string similar to Error signing output with public key from container '{0}' -- {1}. + + + + + Looks up a localized string similar to Error signing output with public key from file '{0}' -- {1}. + + + + + Looks up a localized string similar to Public signing was specified and requires a public key, but no public key was specified.. + + + + + Looks up a localized string similar to The range variable '{0}' has already been declared. + + + + + Looks up a localized string similar to The name '{0}' is not in scope on the right side of 'equals'. Consider swapping the expressions on either side of 'equals'.. + + + + + Looks up a localized string similar to Multiple implementations of the query pattern were found for source type '{0}'. Ambiguous call to '{1}'.. + + + + + Looks up a localized string similar to Could not find an implementation of the query pattern for source type '{0}'. '{1}' not found.. + + + + + Looks up a localized string similar to Could not find an implementation of the query pattern for source type '{0}'. '{1}' not found. Consider explicitly specifying the type of the range variable '{2}'.. + + + + + Looks up a localized string similar to Could not find an implementation of the query pattern for source type '{0}'. '{1}' not found. Are you missing a reference to 'System.Core.dll' or a using directive for 'System.Linq'?. + + + + + Looks up a localized string similar to The name '{0}' is not in scope on the left side of 'equals'. Consider swapping the expressions on either side of 'equals'.. + + + + + Looks up a localized string similar to Cannot pass the range variable '{0}' as an out or ref parameter. + + + + + Looks up a localized string similar to Cannot assign {0} to a range variable. + + + + + Looks up a localized string similar to The range variable '{0}' conflicts with a previous declaration of '{0}'. + + + + + Looks up a localized string similar to Range variable '{0}' cannot be assigned to -- it is read only. + + + + + Looks up a localized string similar to The range variable '{0}' cannot have the same name as a method type parameter. + + + + + Looks up a localized string similar to The type of the expression in the {0} clause is incorrect. Type inference failed in the call to '{1}'.. + + + + + Looks up a localized string similar to The type of one of the expressions in the {0} clause is incorrect. Type inference failed in the call to '{1}'.. + + + + + Looks up a localized string similar to An expression of type '{0}' is not allowed in a subsequent from clause in a query expression with source type '{1}'. Type inference failed in the call to '{2}'.. + + + + + Looks up a localized string similar to } expected. + + + + + Looks up a localized string similar to Members of readonly field '{0}' of type '{1}' cannot be assigned with an object initializer because it is of a value type. + + + + + Looks up a localized string similar to Constructor '{0}' cannot call itself. + + + + + Looks up a localized string similar to Type of '{0}' cannot be inferred since its initializer directly or indirectly refers to the definition.. + + + + + Looks up a localized string similar to The type '{2}' must be a reference type in order to use it as parameter '{1}' in the generic type or method '{0}'. + + + + + Looks up a localized string similar to #r is only allowed in scripts. + + + + + Looks up a localized string similar to A ref or out argument must be an assignable variable. + + + + + Looks up a localized string similar to A ref or out parameter cannot have a default value. + + + + + Looks up a localized string similar to A property or indexer may not be passed as an out or ref parameter. + + + + + Looks up a localized string similar to A readonly field cannot be passed ref or out (except in a constructor). + + + + + Looks up a localized string similar to Members of readonly field '{0}' cannot be passed ref or out (except in a constructor). + + + + + Looks up a localized string similar to Cannot pass '{0}' as a ref or out argument because it is read-only. + + + + + Looks up a localized string similar to Cannot pass fields of '{0}' as a ref or out argument because it is a '{1}'. + + + + + Looks up a localized string similar to Cannot pass '{0}' as a ref or out argument because it is a '{1}'. + + + + + Looks up a localized string similar to A static readonly field cannot be passed ref or out (except in a static constructor). + + + + + Looks up a localized string similar to Fields of static readonly field '{0}' cannot be passed ref or out (except in a static constructor). + + + + + Looks up a localized string similar to The 'class' or 'struct' constraint must come before any other constraints. + + + + + Looks up a localized string similar to '{0}': cannot specify both a constraint class and the 'class' or 'struct' constraint. + + + + + Looks up a localized string similar to The assembly name '{0}' is reserved and cannot be used as a reference in an interactive session. + + + + + Looks up a localized string similar to The enumerator name '{0}' is reserved and cannot be used. + + + + + Looks up a localized string similar to Each linked resource and module must have a unique filename. Filename '{0}' is specified more than once in this assembly. + + + + + Looks up a localized string similar to Resource identifier '{0}' has already been used in this assembly. + + + + + Looks up a localized string similar to Since '{0}' returns void, a return keyword must not be followed by an object expression. + + + + + Looks up a localized string similar to Anonymous function converted to a void returning delegate cannot return a value. + + + + + Looks up a localized string similar to An object of a type convertible to '{0}' is required. + + + + + Looks up a localized string similar to '{0}': not all code paths return a value. + + + + + Looks up a localized string similar to Cannot return a value from an iterator. Use the yield return statement to return a value, or yield break to end the iteration.. + + + + + Looks up a localized string similar to Cannot modify the return value of '{0}' because it is not a variable. + + + + + Looks up a localized string similar to '{0}': static types cannot be used as return types. + + + + + Looks up a localized string similar to The type '{1}' exists in both '{0}' and '{2}'. + + + + + Looks up a localized string similar to The namespace '{1}' in '{0}' conflicts with the type '{3}' in '{2}'. + + + + + Looks up a localized string similar to The type '{1}' in '{0}' conflicts with the namespace '{3}' in '{2}'. + + + + + Looks up a localized string similar to '{0}' cannot be sealed because it is not an override. + + + + + Looks up a localized string similar to '{0}': a class cannot be both static and sealed. + + + + + Looks up a localized string similar to Security attribute '{0}' has an invalid SecurityAction value '{1}'. + + + + + Looks up a localized string similar to SecurityAction value '{0}' is invalid for security attributes applied to an assembly. + + + + + Looks up a localized string similar to SecurityAction value '{0}' is invalid for security attributes applied to a type or a method. + + + + + Looks up a localized string similar to Security attribute '{0}' is not valid on this declaration type. Security attributes are only valid on assembly, type and method declarations.. + + + + + Looks up a localized string similar to First argument to a security attribute must be a valid SecurityAction. + + + + + Looks up a localized string similar to Security attribute '{0}' cannot be applied to an Async method.. + + + + + Looks up a localized string similar to Async methods are not allowed in an Interface, Class, or Structure which has the 'SecurityCritical' or 'SecuritySafeCritical' attribute.. + + + + + Looks up a localized string similar to ; expected. + + + + + Looks up a localized string similar to { or ; expected. + + + + + Looks up a localized string similar to Key file '{0}' is missing the private key needed for signing. + + + + + Looks up a localized string similar to A single-line comment may not be used in an interpolated string.. + + + + + Looks up a localized string similar to The type or namespace name '{0}' could not be found (are you missing a using directive or an assembly reference?). + + + + + Looks up a localized string similar to The type name '{0}' could not be found. This type has been forwarded to assembly '{1}'. Consider adding a reference to that assembly.. + + + + + Looks up a localized string similar to '{0}' does not have a predefined size, therefore sizeof can only be used in an unsafe context (consider using System.Runtime.InteropServices.Marshal.SizeOf). + + + + + Looks up a localized string similar to Source file references are not supported.. + + + + + Looks up a localized string similar to Instance of type '{0}' cannot be used inside an anonymous function, query expression, iterator block or async method. + + + + + Looks up a localized string similar to Constraint cannot be special class '{0}'. + + + + + Looks up a localized string similar to stackalloc may not be used in a catch or finally block. + + + + + Looks up a localized string similar to A lambda expression with a statement body cannot be converted to an expression tree. + + + + + Looks up a localized string similar to '{1}': cannot derive from static class '{0}'. + + + + + Looks up a localized string similar to '{0}': static classes cannot implement interfaces. + + + + + Looks up a localized string similar to The constant '{0}' cannot be marked static. + + + + + Looks up a localized string similar to '{0}': a static constructor must be parameterless. + + + + + Looks up a localized string similar to '{0}': access modifiers are not allowed on static constructors. + + + + + Looks up a localized string similar to '{0}': static constructor cannot have an explicit 'this' or 'base' constructor call. + + + + + Looks up a localized string similar to Static class '{0}' cannot derive from type '{1}'. Static classes must derive from object.. + + + + + Looks up a localized string similar to The second operand of an 'is' or 'as' operator may not be static type '{0}'. + + + + + Looks up a localized string similar to Static field or property '{0}' cannot be assigned in an object initializer. + + + + + Looks up a localized string similar to A static member '{0}' cannot be marked as override, virtual, or abstract. + + + + + Looks up a localized string similar to Struct member '{0}' of type '{1}' causes a cycle in the struct layout. + + + + + Looks up a localized string similar to The FieldOffset attribute is not allowed on static or const fields. + + + + + Looks up a localized string similar to The FieldOffset attribute can only be placed on members of types marked with the StructLayout(LayoutKind.Explicit). + + + + + Looks up a localized string similar to Structs cannot contain explicit parameterless constructors. + + + + + Looks up a localized string similar to '{0}': structs cannot call base class constructors. + + + + + Looks up a localized string similar to Sub-expression cannot be used in an argument to nameof.. + + + + + Looks up a localized string similar to Control cannot fall out of switch from final case label ('{0}'). + + + + + Looks up a localized string similar to Control cannot fall through from one case label ('{0}') to another. + + + + + Looks up a localized string similar to A switch expression or case label must be a bool, char, string, integral, enum, or corresponding nullable type. + + + + + Looks up a localized string similar to Command-line syntax error: Missing ':<number>' for '{0}' option. + + + + + Looks up a localized string similar to Command-line syntax error: Missing '{0}' for '{1}' option. + + + + + Looks up a localized string similar to 'MethodImplOptions.Synchronized' cannot be applied to an async method. + + + + + Looks up a localized string similar to Syntax error, '{0}' expected. + + + + + Looks up a localized string similar to System.Void cannot be used from C# -- use typeof(void) to get the void type object. + + + + + Looks up a localized string similar to Since '{0}' is an async method that returns 'Task', a return keyword must not be followed by an object expression. Did you intend to return 'Task<T>'?. + + + + + Looks up a localized string similar to Async lambda expression converted to a 'Task' returning delegate cannot return a value. Did you intend to return 'Task<T>'?. + + + + + Looks up a localized string similar to Keyword 'this' is not available in the current context. + + + + + Looks up a localized string similar to Keyword 'this' is not valid in a static property, static method, or static field initializer. + + + + + Looks up a localized string similar to Keyword 'this' or 'base' expected. + + + + + Looks up a localized string similar to Anonymous methods, lambda expressions, and query expressions inside structs cannot access instance members of 'this'. Consider copying 'this' to a local variable outside the anonymous method, lambda expression or query expression and using the local instead.. + + + + + Looks up a localized string similar to Catch clauses cannot follow the general catch clause of a try statement. + + + + + Looks up a localized string similar to Too many characters in character literal. + + + + + Looks up a localized string similar to Only 65534 locals, including those generated by the compiler, are allowed. + + + + + Looks up a localized string similar to Combined length of user strings used by the program exceeds allowed limit. Try to decrease use of string literals.. + + + + + Looks up a localized string similar to A format specifier may not contain trailing whitespace.. + + + + + Looks up a localized string similar to The {1} '{0}' cannot be used with type arguments. + + + + + Looks up a localized string similar to Type expected. + + + + + Looks up a localized string similar to Type parameter declaration must be an identifier not a type. + + + + + Looks up a localized string similar to Cannot convert null to type parameter '{0}' because it could be a non-nullable value type. Consider using 'default({0})' instead.. + + + + + Looks up a localized string similar to Type parameter '{0}' has the same name as the containing type, or method. + + + + + Looks up a localized string similar to The contextual keyword 'var' may only appear within a local variable declaration or in script code. + + + + + Looks up a localized string similar to The contextual keyword 'var' cannot be used in a range variable declaration. + + + + + Looks up a localized string similar to '{1}' does not define type parameter '{0}'. + + + + + Looks up a localized string similar to Field '{0}' must be fully assigned before control is returned to the caller. + + + + + Looks up a localized string similar to Auto-implemented property '{0}' must be fully assigned before control is returned to the caller.. + + + + + Looks up a localized string similar to Cannot modify the result of an unboxing conversion. + + + + + Looks up a localized string similar to Missing close delimiter '}' for interpolated expression started with '{'.. + + + + + Looks up a localized string similar to A '{0}' character must be escaped (by doubling) in an interpolated string.. + + + + + Looks up a localized string similar to Unexpected use of an aliased name. + + + + + Looks up a localized string similar to Type arguments are not allowed in the nameof operator.. + + + + + Looks up a localized string similar to Unexpected character '{0}'. + + + + + Looks up a localized string similar to Unexpected preprocessor directive. + + + + + Looks up a localized string similar to Unexpected use of a generic name. + + + + + Looks up a localized string similar to Semicolon after method or accessor block is not valid. + + + + + Looks up a localized string similar to Unexpected token '{0}'. + + + + + Looks up a localized string similar to Unexpected use of an unbound generic name. + + + + + Looks up a localized string similar to Invalid variance: The type parameter '{1}' must be {3} valid on '{0}'. '{1}' is {2}.. + + + + + Looks up a localized string similar to '{0}' cannot implement both '{1}' and '{2}' because they may unify for some type parameter substitutions. + + + + + Looks up a localized string similar to '{0}' does not implement inherited abstract member '{1}'. + + + + + Looks up a localized string similar to '{0}' does not implement interface member '{1}'. '{2}' is not public.. + + + + + Looks up a localized string similar to '{0}' does not implement interface member '{1}'. + + + + + Looks up a localized string similar to A previous catch clause already catches all exceptions of this or of a super type ('{0}'). + + + + + Looks up a localized string similar to Async methods cannot have unsafe parameters or return types. + + + + + Looks up a localized string similar to Iterators cannot have unsafe parameters or yield types. + + + + + Looks up a localized string similar to Pointers and fixed size buffers may only be used in an unsafe context. + + + + + Looks up a localized string similar to Unsafe type '{0}' cannot be used in object creation. + + + + + Looks up a localized string similar to Transparent identifier member access failed for field '{0}' of '{1}'. Does the data being queried implement the query pattern?. + + + + + Looks up a localized string similar to Unterminated string literal. + + + + + Looks up a localized string similar to Use of unassigned local variable '{0}'. + + + + + Looks up a localized string similar to Use of possibly unassigned field '{0}'. + + + + + Looks up a localized string similar to Use of unassigned out parameter '{0}'. + + + + + Looks up a localized string similar to Use of possibly unassigned auto-implemented property '{0}'. + + + + + Looks up a localized string similar to The 'this' object cannot be used before all of its fields are assigned to. + + + + + Looks up a localized string similar to A using clause must precede all other elements defined in the namespace except extern alias declarations. + + + + + Looks up a localized string similar to The type '{2}' must be a non-nullable value type in order to use it as parameter '{1}' in the generic type or method '{0}'. + + + + + Looks up a localized string similar to Cannot convert null to '{0}' because it is a non-nullable value type. + + + + + Looks up a localized string similar to Syntax error; value expected. + + + + + Looks up a localized string similar to Extension method '{0}' defined on value type '{1}' cannot be used to create delegates. + + + + + Looks up a localized string similar to Members of property '{0}' of type '{1}' cannot be assigned with an object initializer because it is of a value type. + + + + + Looks up a localized string similar to __arglist is not allowed in the parameter list of async methods. + + + + + Looks up a localized string similar to An expression tree lambda may not contain a method with variable arguments. + + + + + Looks up a localized string similar to __arglist is not allowed in the parameter list of iterators. + + + + + Looks up a localized string similar to An __arglist parameter must be the last parameter in a formal parameter list. + + + + + Looks up a localized string similar to Cannot declare a variable of static type '{0}'. + + + + + Looks up a localized string similar to Cannot use local variable '{0}' before it is declared. + + + + + Looks up a localized string similar to Cannot use local variable '{0}' before it is declared. The declaration of the local variable hides the field '{1}'.. + + + + + Looks up a localized string similar to '{0}': virtual or abstract members cannot be private. + + + + + Looks up a localized string similar to The operation in question is undefined on void pointers. + + + + + Looks up a localized string similar to '{0}': a field cannot be both volatile and readonly. + + + + + Looks up a localized string similar to '{0}': a volatile field cannot be of the type '{1}'. + + + + + Looks up a localized string similar to A Windows Runtime event may not be passed as an out or ref parameter.. + + + + + Looks up a localized string similar to The yield statement cannot be used inside an anonymous method or lambda expression. + + + + + Looks up a localized string similar to Cannot use 'yield' in top-level script code. + + + + + Looks up a localized string similar to Algorithm '{0}' is not supported. + + + + + Looks up a localized string similar to Code page '{0}' is invalid or not installed. + + + + + Looks up a localized string similar to Unexpected error writing debug information -- '{0}'. + + + + + Looks up a localized string similar to File name '{0}' is empty, contains invalid characters, has a drive specification without an absolute path, or is too long. + + + + + Looks up a localized string similar to Invalid target type for /target: must specify 'exe', 'winexe', 'library', or 'module'. + + + + + Looks up a localized string similar to Metadata file '{0}' could not be opened -- {1}. + + + + + Looks up a localized string similar to Cannot create short filename '{0}' when a long filename with the same short filename already exists. + + + + + Looks up a localized string similar to Generic parameter is definition when expected to be reference {0}. + + + + + Looks up a localized string similar to Unused extern alias.. + + + + + Looks up a localized string similar to Unused extern alias. + + + + + Looks up a localized string similar to Unnecessary using directive.. + + + + + Looks up a localized string similar to Unnecessary using directive. + + + + + Looks up a localized string similar to anonymous method. + + + + + Looks up a localized string similar to await in catch blocks and finally blocks. + + + + + Looks up a localized string similar to collection. + + + + + Looks up a localized string similar to contravariant. + + + + + Looks up a localized string similar to contravariantly. + + + + + Looks up a localized string similar to covariant. + + + + + Looks up a localized string similar to covariantly. + + + + + Looks up a localized string similar to + Visual C# Compiler Options + + - OUTPUT FILES - + /out:<file> Specify output file name (default: base name of + file with main class or first file) + /target:exe Build a console executable (default) (Short + form: /t:exe) + /target:winexe Build a Windows executable (Short form: + /t:winexe) + /target:library [rest of string was truncated]";. + + + + + Looks up a localized string similar to directory does not exist. + + + + + Looks up a localized string similar to path is too long or invalid. + + + + + Looks up a localized string similar to anonymous methods. + + + + + Looks up a localized string similar to anonymous types. + + + + + Looks up a localized string similar to async function. + + + + + Looks up a localized string similar to automatically implemented properties. + + + + + Looks up a localized string similar to auto property initializer. + + + + + Looks up a localized string similar to collection initializer. + + + + + Looks up a localized string similar to declaration expression. + + + + + Looks up a localized string similar to default operator. + + + + + Looks up a localized string similar to dictionary initializer. + + + + + Looks up a localized string similar to dynamic. + + + + + Looks up a localized string similar to exception filter. + + + + + Looks up a localized string similar to expression-bodied indexer. + + + + + Looks up a localized string similar to expression-bodied method. + + + + + Looks up a localized string similar to expression-bodied property. + + + + + Looks up a localized string similar to extension method. + + + + + Looks up a localized string similar to extern alias. + + + + + Looks up a localized string similar to fixed size buffers. + + + + + Looks up a localized string similar to generics. + + + + + Looks up a localized string similar to namespace alias qualifier. + + + + + Looks up a localized string similar to implicitly typed array. + + + + + Looks up a localized string similar to implicitly typed local variable. + + + + + Looks up a localized string similar to interpolated strings. + + + + + Looks up a localized string similar to iterators. + + + + + Looks up a localized string similar to lambda expression. + + + + + Looks up a localized string similar to module as an attribute target specifier. + + + + + Looks up a localized string similar to named argument. + + + + + Looks up a localized string similar to nameof operator. + + + + + Looks up a localized string similar to nullable types. + + + + + Looks up a localized string similar to null propagating operator. + + + + + Looks up a localized string similar to object initializer. + + + + + Looks up a localized string similar to optional parameter. + + + + + Looks up a localized string similar to partial method. + + + + + Looks up a localized string similar to partial types. + + + + + Looks up a localized string similar to #pragma. + + + + + Looks up a localized string similar to access modifiers on properties. + + + + + Looks up a localized string similar to query expression. + + + + + Looks up a localized string similar to readonly automatically implemented properties. + + + + + Looks up a localized string similar to static classes. + + + + + Looks up a localized string similar to switch on boolean type. + + + + + Looks up a localized string similar to type variance. + + + + + Looks up a localized string similar to using static. + + + + + Looks up a localized string similar to fixed variable. + + + + + Looks up a localized string similar to foreach iteration variable. + + + + + Looks up a localized string similar to <global namespace>. + + + + + Looks up a localized string similar to invariantly. + + + + + Looks up a localized string similar to lambda expression. + + + + + Looks up a localized string similar to LIB environment variable. + + + + + Looks up a localized string similar to /LIB option. + + + + + Looks up a localized string similar to {0} version {1}. + + + + + Looks up a localized string similar to Copyright (C) Microsoft Corporation. All rights reserved.. + + + + + Looks up a localized string similar to method group. + + + + + Looks up a localized string similar to <namespace>. + + + + + Looks up a localized string similar to <null>. + + + + + Looks up a localized string similar to Operation caused a stack overflow.. + + + + + Looks up a localized string similar to <path list>. + + + + + Looks up a localized string similar to /REFERENCEPATH option. + + + + + Looks up a localized string similar to (Location of symbol related to previous error). + + + + + Looks up a localized string similar to (Location of symbol related to previous warning). + + + + + Looks up a localized string similar to using alias. + + + + + Looks up a localized string similar to event. + + + + + Looks up a localized string similar to extern alias. + + + + + Looks up a localized string similar to field. + + + + + Looks up a localized string similar to label. + + + + + Looks up a localized string similar to method. + + + + + Looks up a localized string similar to namespace. + + + + + Looks up a localized string similar to property. + + + + + Looks up a localized string similar to type. + + + + + Looks up a localized string similar to type parameter. + + + + + Looks up a localized string similar to element. + + + + + Looks up a localized string similar to variable. + + + + + Looks up a localized string similar to <text>. + + + + + Looks up a localized string similar to Microsoft (R) Visual C# Compiler. + + + + + Looks up a localized string similar to using variable. + + + + + Looks up a localized string similar to 'experimental'. + + + + + Looks up a localized string similar to Include tag is invalid . + + + + + Looks up a localized string similar to Failed to insert some or all of included XML . + + + + + Looks up a localized string similar to <!-- Badly formed XML comment ignored for member "{0}" -->. + + + + + Looks up a localized string similar to Badly formed XML file "{0}" cannot be included . + + + + + Looks up a localized string similar to Missing file attribute. + + + + + Looks up a localized string similar to Missing path attribute. + + + + + Looks up a localized string similar to No matching elements were found for the following include tag . + + + + + Looks up a localized string similar to Skipping some types in analyzer assembly {0} due to a ReflectionTypeLoadException : {1}.. + + + + + Looks up a localized string similar to Skip loading types in analyzer assembly that fail due to a ReflectionTypeLoadException. + + + + + Looks up a localized string similar to Called GetDeclarationName for a declaration node that can possibly contain multiple variable declarators.. + + + + + Looks up a localized string similar to items: must be non-empty. + + + + + Looks up a localized string similar to Location must be provided in order to provide minimal type qualification.. + + + + + Looks up a localized string similar to LookupOptions has an invalid combination of options. + + + + + Looks up a localized string similar to Must call SetMethodTestData(ConcurrentDictionary) before calling SetMethodTestData(MethodSymbol, ILBuilder). + + + + + Looks up a localized string similar to Name conflict for name {0}. + + + + + Looks up a localized string similar to SearchCriteria is expected.. + + + + + Looks up a localized string similar to Not a C# symbol.. + + + + + Looks up a localized string similar to Position is not within syntax tree with full span {0}. + + + + + Looks up a localized string similar to Position must be within span of the syntax tree.. + + + + + Looks up a localized string similar to separator is expected. + + + + + Looks up a localized string similar to Syntax node to be speculated cannot belong to a syntax tree from the current compilation.. + + + + + Looks up a localized string similar to Submission can have at most one syntax tree.. + + + + + Looks up a localized string similar to Submission can only include script code.. + + + + + Looks up a localized string similar to Syntax node is not within syntax tree. + + + + + Looks up a localized string similar to Syntax tree already present. + + + + + Looks up a localized string similar to SyntaxTree '{0}' resulted from a #load directive and cannot be removed or replaced directly.. + + + + + Looks up a localized string similar to Syntax tree should be created from a submission.. + + + + + Looks up a localized string similar to SyntaxTree '{0}' not found to remove. + + + + + Looks up a localized string similar to SyntaxTreeSemanticModel must be provided in order to provide minimal type qualification.. + + + + + Looks up a localized string similar to The stream cannot be read from.. + + + + + Looks up a localized string similar to The stream cannot be written to.. + + + + + Looks up a localized string similar to This method can only be used to create tokens - {0} is not a token kind.. + + + + + Looks up a localized string similar to tree must have a root node with SyntaxKind.CompilationUnit. + + + + + Looks up a localized string similar to tree not part of compilation. + + + + + Looks up a localized string similar to Type argument cannot be null. + + + + + Looks up a localized string similar to Use Microsoft.CodeAnalysis.CSharp.SyntaxFactory.Literal to create numeric literal tokens.. + + + + + Looks up a localized string similar to Use Microsoft.CodeAnalysis.CSharp.SyntaxFactory.Literal to create character literal tokens.. + + + + + Looks up a localized string similar to Use Microsoft.CodeAnalysis.CSharp.SyntaxFactory.Identifier or Microsoft.CodeAnalysis.CSharp.SyntaxFactory.VerbatimIdentifier to create identifier tokens.. + + + + + Looks up a localized string similar to Alignment value {0} has a magnitude greater than {1} and may result in a large formatted string.. + + + + + Looks up a localized string similar to Alignment value has a magnitude that may result in a large formatted string. + + + + + Looks up a localized string similar to The result of the expression is always 'null' of type '{0}'. + + + + + Looks up a localized string similar to The result of the expression is always 'null'. + + + + + Looks up a localized string similar to Ambiguous reference in cref attribute: '{0}'. Assuming '{1}', but could have also matched other overloads including '{2}'.. + + + + + Looks up a localized string similar to Ambiguous reference in cref attribute. + + + + + Looks up a localized string similar to An instance of analyzer {0} cannot be created from {1} : {2}.. + + + + + Looks up a localized string similar to An analyzer instance cannot be created. + + + + + Looks up a localized string similar to Attribute '{0}' from module '{1}' will be ignored in favor of the instance appearing in source. + + + + + Looks up a localized string similar to Attribute will be ignored in favor of the instance appearing in source. + + + + + Looks up a localized string similar to Possibly incorrect assignment to local '{0}' which is the argument to a using or lock statement. The Dispose call or unlocking will happen on the original value of the local.. + + + + + Looks up a localized string similar to Possibly incorrect assignment to local which is the argument to a using or lock statement. + + + + + Looks up a localized string similar to Assignment made to same variable; did you mean to assign something else?. + + + + + Looks up a localized string similar to Assignment made to same variable. + + + + + Looks up a localized string similar to This async method lacks 'await' operators and will run synchronously. Consider using the 'await' operator to await non-blocking API calls, or 'await Task.Run(...)' to do CPU-bound work on a background thread.. + + + + + Looks up a localized string similar to Async method lacks 'await' operators and will run synchronously. + + + + + Looks up a localized string similar to Attribute '{0}' is ignored when public signing is specified.. + + + + + Looks up a localized string similar to Attribute is ignored when public signing is specified.. + + + + + Looks up a localized string similar to '{0}' is not a valid attribute location for this declaration. Valid attribute locations for this declaration are '{1}'. All attributes in this block will be ignored.. + + + + + Looks up a localized string similar to Not a valid attribute location for this declaration. + + + + + Looks up a localized string similar to Possible unintended reference comparison; to get a value comparison, cast the left hand side to type '{0}'. + + + + + Looks up a localized string similar to Possible unintended reference comparison; left hand side needs cast. + + + + + Looks up a localized string similar to Possible unintended reference comparison; to get a value comparison, cast the right hand side to type '{0}'. + + + + + Looks up a localized string similar to Possible unintended reference comparison; right hand side needs cast. + + + + + Looks up a localized string similar to Cannot restore warning 'CS{0}' because it was disabled globally. + + + + + Looks up a localized string similar to Cannot restore warning because it was disabled globally. + + + + + Looks up a localized string similar to The language name '{0}' is invalid.. + + + + + Looks up a localized string similar to The language name is invalid. + + + + + Looks up a localized string similar to '{0}' is not a valid warning number. + + + + + Looks up a localized string similar to A number that was passed to the #pragma warning preprocessor directive was not a valid warning number. Verify that the number represents a warning, not an error.. + + + + + Looks up a localized string similar to Not a valid warning number. + + + + + Looks up a localized string similar to XML comment has cref attribute '{0}' that could not be resolved. + + + + + Looks up a localized string similar to XML comment has cref attribute that could not be resolved. + + + + + Looks up a localized string similar to Invalid type for parameter {0} in XML comment cref attribute: '{1}'. + + + + + Looks up a localized string similar to Invalid type for parameter in XML comment cref attribute. + + + + + Looks up a localized string similar to Invalid return type in XML comment cref attribute. + + + + + Looks up a localized string similar to Invalid return type in XML comment cref attribute. + + + + + Looks up a localized string similar to XML comment has syntactically incorrect cref attribute '{0}'. + + + + + Looks up a localized string similar to XML comment has syntactically incorrect cref attribute. + + + + + Looks up a localized string similar to XML comment has cref attribute '{0}' that refers to a type parameter. + + + + + Looks up a localized string similar to XML comment has cref attribute that refers to a type parameter. + + + + + Looks up a localized string similar to Bitwise-or operator used on a sign-extended operand; consider casting to a smaller unsigned type first. + + + + + Looks up a localized string similar to The compiler implicitly widened and sign-extended a variable, and then used the resulting value in a bitwise OR operation. This can result in unexpected behavior.. + + + + + Looks up a localized string similar to Bitwise-or operator used on a sign-extended operand. + + + + + Looks up a localized string similar to Passing '{0}' as ref or out or taking its address may cause a runtime exception because it is a field of a marshal-by-reference class. + + + + + Looks up a localized string similar to Passing a field of a marshal-by-reference class as ref or out or taking its address may cause a runtime exception. + + + + + Looks up a localized string similar to Call System.IDisposable.Dispose() on allocated instance of {0} before all references to it are out of scope.. + + + + + Looks up a localized string similar to Call System.IDisposable.Dispose() on allocated instance before all references to it are out of scope. + + + + + Looks up a localized string similar to Allocated instance of {0} is not disposed along all exception paths. Call System.IDisposable.Dispose() before all references to it are out of scope.. + + + + + Looks up a localized string similar to Allocated instance is not disposed along all exception paths. + + + + + Looks up a localized string similar to Object '{0}' can be disposed more than once.. + + + + + Looks up a localized string similar to Object can be disposed more than once. + + + + + Looks up a localized string similar to The CallerFilePathAttribute applied to parameter '{0}' will have no effect because it applies to a member that is used in contexts that do not allow optional arguments. + + + + + Looks up a localized string similar to The CallerFilePathAttribute will have no effect because it applies to a member that is used in contexts that do not allow optional arguments. + + + + + Looks up a localized string similar to The CallerMemberNameAttribute applied to parameter '{0}' will have no effect. It is overridden by the CallerFilePathAttribute.. + + + + + Looks up a localized string similar to The CallerMemberNameAttribute will have no effect; it is overridden by the CallerFilePathAttribute. + + + + + Looks up a localized string similar to The CallerLineNumberAttribute applied to parameter '{0}' will have no effect because it applies to a member that is used in contexts that do not allow optional arguments. + + + + + Looks up a localized string similar to The CallerLineNumberAttribute will have no effect because it applies to a member that is used in contexts that do not allow optional arguments. + + + + + Looks up a localized string similar to The CallerFilePathAttribute applied to parameter '{0}' will have no effect. It is overridden by the CallerLineNumberAttribute.. + + + + + Looks up a localized string similar to The CallerFilePathAttribute will have no effect; it is overridden by the CallerLineNumberAttribute. + + + + + Looks up a localized string similar to The CallerMemberNameAttribute applied to parameter '{0}' will have no effect. It is overridden by the CallerLineNumberAttribute.. + + + + + Looks up a localized string similar to The CallerMemberNameAttribute will have no effect; it is overridden by the CallerLineNumberAttribute. + + + + + Looks up a localized string similar to The CallerMemberNameAttribute applied to parameter '{0}' will have no effect because it applies to a member that is used in contexts that do not allow optional arguments. + + + + + Looks up a localized string similar to The CallerMemberNameAttribute will have no effect because it applies to a member that is used in contexts that do not allow optional arguments. + + + + + Looks up a localized string similar to Accessing a member on '{0}' may cause a runtime exception because it is a field of a marshal-by-reference class. + + + + + Looks up a localized string similar to This warning occurs when you try to call a method, property, or indexer on a member of a class that derives from MarshalByRefObject, and the member is a value type. Objects that inherit from MarshalByRefObject are typically intended to be marshaled by reference across an application domain. If any code ever attempts to directly access the value-type member of such an object across an application domain, a runtime exception will occur. To resolve the warning, first copy the member into a local variable and c [rest of string was truncated]";. + + + + + Looks up a localized string similar to Accessing a member on a field of a marshal-by-reference class may cause a runtime exception. + + + + + Looks up a localized string similar to Ignoring /win32manifest for module because it only applies to assemblies. + + + + + Looks up a localized string similar to Ignoring /win32manifest for module because it only applies to assemblies. + + + + + Looks up a localized string similar to Arrays as attribute arguments is not CLS-compliant. + + + + + Looks up a localized string similar to Arrays as attribute arguments is not CLS-compliant. + + + + + Looks up a localized string similar to '{0}' cannot be marked as CLS-compliant because the assembly does not have a CLSCompliant attribute. + + + + + Looks up a localized string similar to Type or member cannot be marked as CLS-compliant because the assembly does not have a CLSCompliant attribute. + + + + + Looks up a localized string similar to '{0}' does not need a CLSCompliant attribute because the assembly does not have a CLSCompliant attribute. + + + + + Looks up a localized string similar to Type or member does not need a CLSCompliant attribute because the assembly does not have a CLSCompliant attribute. + + + + + Looks up a localized string similar to Argument type '{0}' is not CLS-compliant. + + + + + Looks up a localized string similar to Argument type is not CLS-compliant. + + + + + Looks up a localized string similar to '{0}' has no accessible constructors which use only CLS-compliant types. + + + + + Looks up a localized string similar to Type has no accessible constructors which use only CLS-compliant types. + + + + + Looks up a localized string similar to '{0}': base type '{1}' is not CLS-compliant. + + + + + Looks up a localized string similar to A base type was marked as not having to be compliant with the Common Language Specification (CLS) in an assembly that was marked as being CLS compliant. Either remove the attribute that specifies the assembly is CLS compliant or remove the attribute that indicates the type is not CLS compliant.. + + + + + Looks up a localized string similar to Base type is not CLS-compliant. + + + + + Looks up a localized string similar to Type of '{0}' is not CLS-compliant. + + + + + Looks up a localized string similar to A public, protected, or protected internal variable must be of a type that is compliant with the Common Language Specification (CLS).. + + + + + Looks up a localized string similar to Type is not CLS-compliant. + + + + + Looks up a localized string similar to Identifier '{0}' is not CLS-compliant. + + + + + Looks up a localized string similar to Identifier is not CLS-compliant. + + + + + Looks up a localized string similar to Identifier '{0}' differing only in case is not CLS-compliant. + + + + + Looks up a localized string similar to Identifier differing only in case is not CLS-compliant. + + + + + Looks up a localized string similar to '{0}' is not CLS-compliant because base interface '{1}' is not CLS-compliant. + + + + + Looks up a localized string similar to Type is not CLS-compliant because base interface is not CLS-compliant. + + + + + Looks up a localized string similar to '{0}': CLS-compliant interfaces must have only CLS-compliant members. + + + + + Looks up a localized string similar to CLS-compliant interfaces must have only CLS-compliant members. + + + + + Looks up a localized string similar to Return type of '{0}' is not CLS-compliant. + + + + + Looks up a localized string similar to Return type is not CLS-compliant. + + + + + Looks up a localized string similar to Constraint type '{0}' is not CLS-compliant. + + + + + Looks up a localized string similar to Constraint type is not CLS-compliant. + + + + + Looks up a localized string similar to '{0}' cannot be marked as CLS-compliant because it is a member of non-CLS-compliant type '{1}'. + + + + + Looks up a localized string similar to Type cannot be marked as CLS-compliant because it is a member of non-CLS-compliant type. + + + + + Looks up a localized string similar to CLSCompliant attribute has no meaning when applied to parameters. Try putting it on the method instead.. + + + + + Looks up a localized string similar to CLSCompliant attribute has no meaning when applied to parameters. + + + + + Looks up a localized string similar to CLS compliance checking will not be performed on '{0}' because it is not visible from outside this assembly. + + + + + Looks up a localized string similar to CLS compliance checking will not be performed because it is not visible from outside this assembly. + + + + + Looks up a localized string similar to CLSCompliant attribute has no meaning when applied to return types. Try putting it on the method instead.. + + + + + Looks up a localized string similar to CLSCompliant attribute has no meaning when applied to return types. + + + + + Looks up a localized string similar to Added modules must be marked with the CLSCompliant attribute to match the assembly. + + + + + Looks up a localized string similar to Added modules must be marked with the CLSCompliant attribute to match the assembly. + + + + + Looks up a localized string similar to '{0}': only CLS-compliant members can be abstract. + + + + + Looks up a localized string similar to Only CLS-compliant members can be abstract. + + + + + Looks up a localized string similar to You must specify the CLSCompliant attribute on the assembly, not the module, to enable CLS compliance checking. + + + + + Looks up a localized string similar to You must specify the CLSCompliant attribute on the assembly, not the module, to enable CLS compliance checking. + + + + + Looks up a localized string similar to You cannot specify the CLSCompliant attribute on a module that differs from the CLSCompliant attribute on the assembly. + + + + + Looks up a localized string similar to You cannot specify the CLSCompliant attribute on a module that differs from the CLSCompliant attribute on the assembly. + + + + + Looks up a localized string similar to Methods with variable arguments are not CLS-compliant. + + + + + Looks up a localized string similar to Methods with variable arguments are not CLS-compliant. + + + + + Looks up a localized string similar to Overloaded method '{0}' differing only in ref or out, or in array rank, is not CLS-compliant. + + + + + Looks up a localized string similar to Overloaded method differing only in ref or out, or in array rank, is not CLS-compliant. + + + + + Looks up a localized string similar to Overloaded method '{0}' differing only by unnamed array types is not CLS-compliant. + + + + + Looks up a localized string similar to This error occurs if you have an overloaded method that takes a jagged array and the only difference between the method signatures is the element type of the array. To avoid this error, consider using a rectangular array rather than a jagged array; use an additional parameter to disambiguate the function call; rename one or more of the overloaded methods; or, if CLS Compliance is not needed, remove the CLSCompliantAttribute attribute.. + + + + + Looks up a localized string similar to Overloaded method differing only by unnamed array types is not CLS-compliant. + + + + + Looks up a localized string similar to CLS-compliant field '{0}' cannot be volatile. + + + + + Looks up a localized string similar to CLS-compliant field cannot be volatile. + + + + + Looks up a localized string similar to Option '{0}' overrides attribute '{1}' given in a source file or added module. + + + + + Looks up a localized string similar to This warning occurs if the assembly attributes AssemblyKeyFileAttribute or AssemblyKeyNameAttribute found in source conflict with the /keyfile or /keycontainer command line option or key file name or key container specified in the Project Properties.. + + + + + Looks up a localized string similar to Option overrides attribute given in a source file or added module. + + + + + Looks up a localized string similar to Comparing with null of type '{0}' always produces 'false'. + + + + + Looks up a localized string similar to Comparing with null of struct type always produces 'false'. + + + + + Looks up a localized string similar to '{0}' interface marked with 'CoClassAttribute' not marked with 'ComImportAttribute'. + + + + + Looks up a localized string similar to Interface marked with 'CoClassAttribute' not marked with 'ComImportAttribute'. + + + + + Looks up a localized string similar to Comparison made to same variable; did you mean to compare something else?. + + + + + Looks up a localized string similar to Comparison made to same variable. + + + + + Looks up a localized string similar to Different checksum values given for '{0}'. + + + + + Looks up a localized string similar to Different #pragma checksum values given. + + + + + Looks up a localized string similar to Referenced assembly '{0}' targets a different processor.. + + + + + Looks up a localized string similar to Referenced assembly targets a different processor. + + + + + Looks up a localized string similar to The fully qualified name for '{0}' is too long for debug information. Compile without '/debug' option.. + + + + + Looks up a localized string similar to Fully qualified name is too long for debug information. + + + + + Looks up a localized string similar to The default value specified for parameter '{0}' will have no effect because it applies to a member that is used in contexts that do not allow optional arguments. + + + + + Looks up a localized string similar to The default value specified will have no effect because it applies to a member that is used in contexts that do not allow optional arguments. + + + + + Looks up a localized string similar to Invalid value for '/define'; '{0}' is not a valid identifier. + + + + + Looks up a localized string similar to Invalid value for '/define'; not a valid identifier. + + + + + Looks up a localized string similar to Delay signing was specified and requires a public key, but no public key was specified. + + + + + Looks up a localized string similar to Delay signing was specified and requires a public key, but no public key was specified. + + + + + Looks up a localized string similar to The best overloaded Add method '{0}' for the collection initializer element is obsolete.. + + + + + Looks up a localized string similar to The best overloaded Add method for the collection initializer element is obsolete. + + + + + Looks up a localized string similar to The best overloaded Add method '{0}' for the collection initializer element is obsolete. {1}. + + + + + Looks up a localized string similar to The best overloaded Add method for the collection initializer element is obsolete. + + + + + Looks up a localized string similar to '{0}' is obsolete. + + + + + Looks up a localized string similar to Type or member is obsolete. + + + + + Looks up a localized string similar to '{0}' is obsolete: '{1}'. + + + + + Looks up a localized string similar to Type or member is obsolete. + + + + + Looks up a localized string similar to Expression will always cause a System.NullReferenceException because the default value of '{0}' is null. + + + + + Looks up a localized string similar to Expression will always cause a System.NullReferenceException because the type's default value is null. + + + + + Looks up a localized string similar to XML comment has a duplicate param tag for '{0}'. + + + + + Looks up a localized string similar to XML comment has a duplicate param tag. + + + + + Looks up a localized string similar to XML comment has a duplicate typeparam tag for '{0}'. + + + + + Looks up a localized string similar to XML comment has a duplicate typeparam tag. + + + + + Looks up a localized string similar to The using directive for '{0}' appeared previously in this namespace. + + + + + Looks up a localized string similar to Using directive appeared previously in this namespace. + + + + + Looks up a localized string similar to The dynamically dispatched call to method '{0}' may fail at runtime because one or more applicable overloads are conditional methods.. + + + + + Looks up a localized string similar to Dynamically dispatched call may fail at runtime because one or more applicable overloads are conditional methods. + + + + + Looks up a localized string similar to Empty switch block. + + + + + Looks up a localized string similar to Empty switch block. + + + + + Looks up a localized string similar to Single-line comment or end-of-line expected. + + + + + Looks up a localized string similar to Single-line comment or end-of-line expected after #pragma directive. + + + + + Looks up a localized string similar to '{0}' defines operator == or operator != but does not override Object.Equals(object o). + + + + + Looks up a localized string similar to Type defines operator == or operator != but does not override Object.Equals(object o). + + + + + Looks up a localized string similar to '{0}' defines operator == or operator != but does not override Object.GetHashCode(). + + + + + Looks up a localized string similar to Type defines operator == or operator != but does not override Object.GetHashCode(). + + + + + Looks up a localized string similar to '{0}' overrides Object.Equals(object o) but does not override Object.GetHashCode(). + + + + + Looks up a localized string similar to Type overrides Object.Equals(object o) but does not override Object.GetHashCode(). + + + + + Looks up a localized string similar to {0}. See also error CS{1}.. + + + + + Looks up a localized string similar to The compiler emits this warning when it overrides an error with a warning. For information about the problem, search for the error code mentioned.. + + + + + Looks up a localized string similar to Warning is overriding an error. + + + + + Looks up a localized string similar to Explicit interface implementation '{0}' matches more than one interface member. Which interface member is actually chosen is implementation-dependent. Consider using a non-explicit implementation instead.. + + + + + Looks up a localized string similar to Explicit interface implementation matches more than one interface member. + + + + + Looks up a localized string similar to Constructor '{0}' is marked external. + + + + + Looks up a localized string similar to Constructor is marked external. + + + + + Looks up a localized string similar to Method, operator, or accessor '{0}' is marked external and has no attributes on it. Consider adding a DllImport attribute to specify the external implementation.. + + + + + Looks up a localized string similar to Method, operator, or accessor is marked external and has no attributes on it. + + + + + Looks up a localized string similar to Unable to include XML fragment '{1}' of file '{0}' -- {2}. + + + + + Looks up a localized string similar to Unable to include XML fragment. + + + + + Looks up a localized string similar to Source file '{0}' specified multiple times. + + + + + Looks up a localized string similar to Source file specified multiple times. + + + + + Looks up a localized string similar to Invalid filename specified for preprocessor directive. Filename is too long or not a valid filename.. + + + + + Looks up a localized string similar to Invalid filename specified for preprocessor directive. + + + + + Looks up a localized string similar to Filter expression is a constant, consider removing the filter. + + + + + Looks up a localized string similar to Filter expression is a constant. + + + + + Looks up a localized string similar to Introducing a 'Finalize' method can interfere with destructor invocation. Did you intend to declare a destructor?. + + + + + Looks up a localized string similar to This warning occurs when you create a class with a method whose signature is public virtual void Finalize. + + If such a class is used as a base class and if the deriving class defines a destructor, the destructor will override the base class Finalize method, not Finalize.. + + + + + Looks up a localized string similar to Introducing a 'Finalize' method can interfere with destructor invocation. + + + + + Looks up a localized string similar to Defining an alias named 'global' is ill-advised since 'global::' always references the global namespace and not an alias. + + + + + Looks up a localized string similar to Defining an alias named 'global' is ill-advised. + + + + + Looks up a localized string similar to The 'goto case' value is not implicitly convertible to type '{0}'. + + + + + Looks up a localized string similar to The 'goto case' value is not implicitly convertible to the switch type. + + + + + Looks up a localized string similar to Expected identifier or numeric literal.. + + + + + Looks up a localized string similar to Expected identifier or numeric literal. + + + + + Looks up a localized string similar to Invalid #pragma checksum syntax; should be #pragma checksum "filename" "{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}" "XXXX...". + + + + + Looks up a localized string similar to Invalid #pragma checksum syntax. + + + + + Looks up a localized string similar to Expected disable or restore. + + + + + Looks up a localized string similar to Expected disable or restore after #pragma warning. + + + + + Looks up a localized string similar to Unrecognized #pragma directive. + + + + + Looks up a localized string similar to Unrecognized #pragma directive. + + + + + Looks up a localized string similar to Assignment in conditional expression is always constant; did you mean to use == instead of = ?. + + + + + Looks up a localized string similar to Assignment in conditional expression is always constant. + + + + + Looks up a localized string similar to Assembly reference '{0}' is invalid and cannot be resolved. + + + + + Looks up a localized string similar to This warning indicates that an attribute, such as InternalsVisibleToAttribute, was not specified correctly.. + + + + + Looks up a localized string similar to Assembly reference is invalid and cannot be resolved. + + + + + Looks up a localized string similar to '{0}' is not a recognized attribute location. Valid attribute locations for this declaration are '{1}'. All attributes in this block will be ignored.. + + + + + Looks up a localized string similar to Not a recognized attribute location. + + + + + Looks up a localized string similar to Invalid XML include element -- {0}. + + + + + Looks up a localized string similar to Invalid XML include element. + + + + + Looks up a localized string similar to '{0}' has the wrong signature to be an entry point. + + + + + Looks up a localized string similar to Method has the wrong signature to be an entry point. + + + + + Looks up a localized string similar to Invalid number. + + + + + Looks up a localized string similar to Invalid number. + + + + + Looks up a localized string similar to Invalid search path '{0}' specified in '{1}' -- '{2}'. + + + + + Looks up a localized string similar to Invalid search path specified. + + + + + Looks up a localized string similar to The specified version string does not conform to the recommended format - major.minor.build.revision. + + + + + Looks up a localized string similar to The specified version string does not conform to the recommended format - major.minor.build.revision. + + + + + Looks up a localized string similar to The given expression is never of the provided ('{0}') type. + + + + + Looks up a localized string similar to 'is' expression's given expression is never of the provided type. + + + + + Looks up a localized string similar to The given expression is always of the provided ('{0}') type. + + + + + Looks up a localized string similar to 'is' expression's given expression is always of the provided type. + + + + + Looks up a localized string similar to Using '{0}' to test compatibility with '{1}' is essentially identical to testing compatibility with '{2}' and will succeed for all non-null values. + + + + + Looks up a localized string similar to Using 'is' to test compatibility with 'dynamic' is essentially identical to testing compatibility with 'Object'. + + + + + Looks up a localized string similar to The 'l' suffix is easily confused with the digit '1' -- use 'L' for clarity. + + + + + Looks up a localized string similar to The 'l' suffix is easily confused with the digit '1'. + + + + + Looks up a localized string similar to '{0}': an entry point cannot be generic or in a generic type. + + + + + Looks up a localized string similar to An entry point cannot be generic or in a generic type. + + + + + Looks up a localized string similar to The entry point of the program is global script code; ignoring '{0}' entry point.. + + + + + Looks up a localized string similar to The entry point of the program is global script code; ignoring entry point. + + + + + Looks up a localized string similar to Parameter '{0}' has no matching param tag in the XML comment for '{1}' (but other parameters do). + + + + + Looks up a localized string similar to Parameter has no matching param tag in the XML comment (but other parameters do). + + + + + Looks up a localized string similar to Type parameter '{0}' has no matching typeparam tag in the XML comment on '{1}' (but other type parameters do). + + + + + Looks up a localized string similar to Type parameter has no matching typeparam tag in the XML comment (but other type parameters do). + + + + + Looks up a localized string similar to Missing XML comment for publicly visible type or member '{0}'. + + + + + Looks up a localized string similar to The /doc compiler option was specified, but one or more constructs did not have comments.. + + + + + Looks up a localized string similar to Missing XML comment for publicly visible type or member. + + + + + Looks up a localized string similar to The predefined type '{0}' is defined in multiple assemblies in the global alias; using definition from '{1}'. + + + + + Looks up a localized string similar to This error occurs when a predefined system type such as System.Int32 is found in two assemblies. One way this can happen is if you are referencing mscorlib or System.Runtime.dll from two different places, such as trying to run two versions of the .NET Framework side-by-side.. + + + + + Looks up a localized string similar to Predefined type is defined in multiple assemblies in the global alias. + + + + + Looks up a localized string similar to Member '{0}' implements interface member '{1}' in type '{2}'. There are multiple matches for the interface member at run-time. It is implementation dependent which method will be called.. + + + + + Looks up a localized string similar to This warning can be generated when two interface methods are differentiated only by whether a particular parameter is marked with ref or with out. It is best to change your code to avoid this warning because it is not obvious or guaranteed which method is called at runtime. + + Although C# distinguishes between out and ref, the CLR sees them as the same. When deciding which method implements the interface, the CLR just picks one. + + Give the compiler some way to differentiate the methods. For example, you ca [rest of string was truncated]";. + + + + + Looks up a localized string similar to Member implements interface member with multiple matches at run-time. + + + + + Looks up a localized string similar to Member '{1}' overrides '{0}'. There are multiple override candidates at run-time. It is implementation dependent which method will be called.. + + + + + Looks up a localized string similar to Member overrides base member with multiple override candidates at run-time. + + + + + Looks up a localized string similar to Indexing an array with a negative index (array indices always start at zero). + + + + + Looks up a localized string similar to Indexing an array with a negative index. + + + + + Looks up a localized string similar to The member '{0}' does not hide an inherited member. The new keyword is not required.. + + + + + Looks up a localized string similar to Member does not hide an inherited member; new keyword is not required. + + + + + Looks up a localized string similar to '{0}' hides inherited member '{1}'. To make the current member override that implementation, add the override keyword. Otherwise add the new keyword.. + + + + + Looks up a localized string similar to Member hides inherited member; missing override keyword. + + + + + Looks up a localized string similar to '{0}' hides inherited member '{1}'. Use the new keyword if hiding was intended.. + + + + + Looks up a localized string similar to A variable was declared with the same name as a variable in a base class. However, the new keyword was not used. This warning informs you that you should use new; the variable is declared as if new had been used in the declaration.. + + + + + Looks up a localized string similar to Member hides inherited member; missing new keyword. + + + + + Looks up a localized string similar to The assembly {0} does not contain any analyzers.. + + + + + Looks up a localized string similar to Assembly does not contain any analyzers. + + + + + Looks up a localized string similar to Ignoring /noconfig option because it was specified in a response file. + + + + + Looks up a localized string similar to Ignoring /noconfig option because it was specified in a response file. + + + + + Looks up a localized string similar to Feature '{0}' is not part of the standardized ISO C# language specification, and may not be accepted by other compilers. + + + + + Looks up a localized string similar to Feature is not part of the standardized ISO C# language specification, and may not be accepted by other compilers. + + + + + Looks up a localized string similar to Member '{0}' overrides obsolete member '{1}'. Add the Obsolete attribute to '{0}'.. + + + + + Looks up a localized string similar to Member overrides obsolete member. + + + + + Looks up a localized string similar to No value for RuntimeMetadataVersion found. No assembly containing System.Object was found nor was a value for RuntimeMetadataVersion specified through options.. + + + + + Looks up a localized string similar to No value for RuntimeMetadataVersion found. + + + + + Looks up a localized string similar to No source files specified.. + + + + + Looks up a localized string similar to No source files specified. + + + + + Looks up a localized string similar to The result of the expression is always '{0}' since a value of type '{1}' is never equal to 'null' of type '{2}'. + + + + + Looks up a localized string similar to The result of the expression is always the same since a value of this type is never equal to 'null'. + + + + + Looks up a localized string similar to The result of the expression is always '{0}' since a value of type '{1}' is never equal to 'null' of type '{2}'. + + + + + Looks up a localized string similar to The result of the expression is always the same since a value of this type is never equal to 'null'. + + + + + Looks up a localized string similar to Obsolete member '{0}' overrides non-obsolete member '{1}'. + + + + + Looks up a localized string similar to Obsolete member overrides non-obsolete member. + + + + + Looks up a localized string similar to '{0}' does not implement the '{1}' pattern. '{2}' has the wrong signature.. + + + + + Looks up a localized string similar to Type does not implement the collection pattern; member has the wrong signature. + + + + + Looks up a localized string similar to '{0}' does not implement the '{1}' pattern. '{2}' is ambiguous with '{3}'.. + + + + + Looks up a localized string similar to Type does not implement the collection pattern; members are ambiguous. + + + + + Looks up a localized string similar to '{0}' does not implement the '{1}' pattern. '{2}' is either static or not public.. + + + + + Looks up a localized string similar to Type does not implement the collection pattern; member is either static or not public. + + + + + Looks up a localized string similar to Local name '{0}' is too long for PDB. Consider shortening or compiling without /debug.. + + + + + Looks up a localized string similar to Local name is too long for PDB. + + + + + Looks up a localized string similar to Possible mistaken empty statement. + + + + + Looks up a localized string similar to Possible mistaken empty statement. + + + + + Looks up a localized string similar to '{0}': new protected member declared in sealed class. + + + + + Looks up a localized string similar to New protected member declared in sealed class. + + + + + Looks up a localized string similar to Referenced assembly '{0}' has different culture setting of '{1}'.. + + + + + Looks up a localized string similar to Referenced assembly has different culture setting. + + + + + Looks up a localized string similar to Referenced assembly '{0}' does not have a strong name.. + + + + + Looks up a localized string similar to Referenced assembly does not have a strong name. + + + + + Looks up a localized string similar to A reference was created to embedded interop assembly '{0}' because of an indirect reference to that assembly created by assembly '{1}'. Consider changing the 'Embed Interop Types' property on either assembly.. + + + + + Looks up a localized string similar to You have added a reference to an assembly using /link (Embed Interop Types property set to True). This instructs the compiler to embed interop type information from that assembly. However, the compiler cannot embed interop type information from that assembly because another assembly that you have referenced also references that assembly using /reference (Embed Interop Types property set to False). + + To embed interop type information for both assemblies, use /link for references to each assembly (set the Em [rest of string was truncated]";. + + + + + Looks up a localized string similar to A reference was created to embedded interop assembly because of an indirect assembly reference. + + + + + Looks up a localized string similar to The type '{1}' in '{0}' conflicts with the imported type '{3}' in '{2}'. Using the type defined in '{0}'.. + + + + + Looks up a localized string similar to Type conflicts with imported type. + + + + + Looks up a localized string similar to The type '{1}' in '{0}' conflicts with the imported namespace '{3}' in '{2}'. Using the type defined in '{0}'.. + + + + + Looks up a localized string similar to Type conflicts with imported namespace. + + + + + Looks up a localized string similar to The namespace '{1}' in '{0}' conflicts with the imported type '{3}' in '{2}'. Using the namespace defined in '{0}'.. + + + + + Looks up a localized string similar to Namespace conflicts with imported type. + + + + + Looks up a localized string similar to There is no defined ordering between fields in multiple declarations of partial struct '{0}'. To specify an ordering, all instance fields must be in the same declaration.. + + + + + Looks up a localized string similar to There is no defined ordering between fields in multiple declarations of partial struct. + + + + + Looks up a localized string similar to Source file has exceeded the limit of 16,707,565 lines representable in the PDB; debug information will be incorrect. + + + + + Looks up a localized string similar to Source file has exceeded the limit of 16,707,565 lines representable in the PDB; debug information will be incorrect. + + + + + Looks up a localized string similar to Type parameter '{0}' has the same name as the type parameter from outer type '{1}'. + + + + + Looks up a localized string similar to Type parameter has the same name as the type parameter from outer type. + + + + + Looks up a localized string similar to Unable to load Analyzer assembly {0} : {1}. + + + + + Looks up a localized string similar to Unable to load Analyzer assembly. + + + + + Looks up a localized string similar to Field '{0}' is never assigned to, and will always have its default value {1}. + + + + + Looks up a localized string similar to Field is never assigned to, and will always have its default value. + + + + + Looks up a localized string similar to Assuming assembly reference '{0}' used by '{1}' matches identity '{2}' of '{3}', you may need to supply runtime policy. + + + + + Looks up a localized string similar to The two assemblies differ in release and/or version number. For unification to occur, you must specify directives in the application's .config file, and you must provide the correct strong name of an assembly.. + + + + + Looks up a localized string similar to Assuming assembly reference matches identity. + + + + + Looks up a localized string similar to Assuming assembly reference '{0}' used by '{1}' matches identity '{2}' of '{3}', you may need to supply runtime policy. + + + + + Looks up a localized string similar to The two assemblies differ in release and/or version number. For unification to occur, you must specify directives in the application's .config file, and you must provide the correct strong name of an assembly.. + + + + + Looks up a localized string similar to Assuming assembly reference matches identity. + + + + + Looks up a localized string similar to The command line switch '{0}' is not yet implemented and was ignored.. + + + + + Looks up a localized string similar to Command line switch is not yet implemented. + + + + + Looks up a localized string similar to XML comment on '{1}' has a paramref tag for '{0}', but there is no parameter by that name. + + + + + Looks up a localized string similar to XML comment has a paramref tag, but there is no parameter by that name. + + + + + Looks up a localized string similar to XML comment has a param tag for '{0}', but there is no parameter by that name. + + + + + Looks up a localized string similar to XML comment has a param tag, but there is no parameter by that name. + + + + + Looks up a localized string similar to XML comment on '{1}' has a typeparamref tag for '{0}', but there is no type parameter by that name. + + + + + Looks up a localized string similar to XML comment has a typeparamref tag, but there is no type parameter by that name. + + + + + Looks up a localized string similar to XML comment has a typeparam tag for '{0}', but there is no type parameter by that name. + + + + + Looks up a localized string similar to XML comment has a typeparam tag, but there is no type parameter by that name. + + + + + Looks up a localized string similar to Because this call is not awaited, execution of the current method continues before the call is completed. Consider applying the 'await' operator to the result of the call.. + + + + + Looks up a localized string similar to The current method calls an async method that returns a Task or a Task<TResult> and doesn't apply the await operator to the result. The call to the async method starts an asynchronous task. However, because no await operator is applied, the program continues without waiting for the task to complete. In most cases, that behavior isn't what you expect. Usually other aspects of the calling method depend on the results of the call or, minimally, the called method is expected to complete before you return from t [rest of string was truncated]";. + + + + + Looks up a localized string similar to Because this call is not awaited, execution of the current method continues before the call is completed. + + + + + Looks up a localized string similar to XML comment is not placed on a valid language element. + + + + + Looks up a localized string similar to XML comment is not placed on a valid language element. + + + + + Looks up a localized string similar to Within cref attributes, nested types of generic types should be qualified.. + + + + + Looks up a localized string similar to Within cref attributes, nested types of generic types should be qualified. + + + + + Looks up a localized string similar to Unreachable code detected. + + + + + Looks up a localized string similar to Unreachable code detected. + + + + + Looks up a localized string similar to A previous catch clause already catches all exceptions. All non-exceptions thrown will be wrapped in a System.Runtime.CompilerServices.RuntimeWrappedException.. + + + + + Looks up a localized string similar to This warning is caused when a catch() block has no specified exception type after a catch (System.Exception e) block. The warning advises that the catch() block will not catch any exceptions. + + A catch() block after a catch (System.Exception e) block can catch non-CLS exceptions if the RuntimeCompatibilityAttribute is set to false in the AssemblyInfo.cs file: [assembly: RuntimeCompatibilityAttribute(WrapNonExceptionThrows = false)]. If this attribute is not set explicitly to false, all thrown non-CLS excep [rest of string was truncated]";. + + + + + Looks up a localized string similar to A previous catch clause already catches all exceptions. + + + + + Looks up a localized string similar to The event '{0}' is never used. + + + + + Looks up a localized string similar to Event is never used. + + + + + Looks up a localized string similar to The field '{0}' is never used. + + + + + Looks up a localized string similar to Field is never used. + + + + + Looks up a localized string similar to The field '{0}' is assigned but its value is never used. + + + + + Looks up a localized string similar to Field is assigned but its value is never used. + + + + + Looks up a localized string similar to This label has not been referenced. + + + + + Looks up a localized string similar to This label has not been referenced. + + + + + Looks up a localized string similar to The variable '{0}' is declared but never used. + + + + + Looks up a localized string similar to Variable is declared but never used. + + + + + Looks up a localized string similar to The variable '{0}' is assigned but its value is never used. + + + + + Looks up a localized string similar to Variable is assigned but its value is never used. + + + + + Looks up a localized string similar to Comparison to integral constant is useless; the constant is outside the range of type '{0}'. + + + + + Looks up a localized string similar to Comparison to integral constant is useless; the constant is outside the range of the type. + + + + + Looks up a localized string similar to '{0}': a reference to a volatile field will not be treated as volatile. + + + + + Looks up a localized string similar to A volatile field should not normally be passed using a ref or out parameter, since it will not be treated as volatile within the scope of the function. There are exceptions to this, such as when calling an interlocked API.. + + + + + Looks up a localized string similar to A reference to a volatile field will not be treated as volatile. + + + + + Looks up a localized string similar to #warning: '{0}'. + + + + + Looks up a localized string similar to #warning directive. + + + + + Looks up a localized string similar to XML comment has badly formed XML -- '{0}'. + + + + + Looks up a localized string similar to XML comment has badly formed XML. + + + + + Looks up a localized string similar to Badly formed XML in included comments file -- '{0}'. + + + + + Looks up a localized string similar to Badly formed XML in included comments file. + + + + + Looks up a localized string similar to Wrong number of type arguments. + + + + + Looks up a localized string similar to Expected a {0} SemanticModel.. + + + + + Looks up a localized string similar to The literal string ']]>' is not allowed in element content.. + + + + + Looks up a localized string similar to Duplicate '{0}' attribute. + + + + + Looks up a localized string similar to End tag '{0}' does not match the start tag '{1}'.. + + + + + Looks up a localized string similar to Expected an end tag for element '{0}'.. + + + + + Looks up a localized string similar to End tag was not expected at this location.. + + + + + Looks up a localized string similar to Expected '>' or '/>' to close tag '{0}'.. + + + + + Looks up a localized string similar to Unexpected character at this location.. + + + + + Looks up a localized string similar to An identifier was expected.. + + + + + Looks up a localized string similar to Incorrect syntax was used in a comment.. + + + + + Looks up a localized string similar to An invalid character was found inside an entity reference.. + + + + + Looks up a localized string similar to The character(s) '{0}' cannot be used at this location.. + + + + + Looks up a localized string similar to Invalid unicode character.. + + + + + Looks up a localized string similar to Whitespace is not allowed at this location.. + + + + + Looks up a localized string similar to The character '<' cannot be used in an attribute value.. + + + + + Looks up a localized string similar to Missing equals sign between attribute and attribute value.. + + + + + Looks up a localized string similar to Reference to undefined entity '{0}'.. + + + + + Looks up a localized string similar to Missing closing quotation mark for string literal.. + + + + + Looks up a localized string similar to Non-ASCII quotations marks may not be used around string literals.. + + + + + Looks up a localized string similar to A string literal was expected, but no opening quotation mark was found.. + + + + + Looks up a localized string similar to Required white space was missing.. + + + + + A Declaration summarizes the declaration structure of a source file. Each entity declaration + in the program that is a container (specifically namespaces, classes, interfaces, structs, + and delegate declarations) is represented by a node in this tree. At the top level, the + compilation unit is treated as a declaration of the unnamed namespace. + + Special treatment is required for namespace declarations, because a single namespace + declaration can declare more than one namespace. For example, in the declaration + + namespace A.B.C {} + + we see that namespaces A and B and C are declared. This declaration is represented as three + declarations. All three of these ContainerDeclaration objects contain a reference to the + syntax tree for the declaration. + + A "single" declaration represents a specific namespace or type declaration at a point in + source code. A "root" declaration is a special single declaration which summarizes the + contents of an entire file's types and namespaces. Each source file is represented as a tree + of single declarations. + + A "merged" declaration merges together one or more declarations for the same symbol. For + example, the root namespace has multiple single declarations (one in each source file) but + there is a single merged declaration for them all. Similarly partial classes may have + multiple declarations, grouped together under the umbrella of a merged declaration. In the + common trivial case, a merged declaration for a single declaration contains only that single + declaration. The whole program, consisting of the set of all declarations in all of the + source files, is represented by a tree of merged declarations. + + + + + A declaration table is a device which keeps track of type and namespace declarations from + parse trees. It is optimized for the case where there is one set of declarations that stays + constant, and a specific root namespace declaration corresponding to the currently edited + file which is being added and removed repeatedly. It maintains a cache of information for + "merging" the root declarations into one big summary declaration; this cache is efficiently + re-used provided that the pattern of adds and removes is as we expect. + + + + + Creates a root declaration that contains a Script class declaration (possibly in a namespace) and namespace declarations. + Top-level declarations in script code are nested in Script class. + + + + + A visitor that generates the part of the documentation comment after the initial type + and colon. + + + + + Matches symbols from an assembly in one compilation to + the corresponding assembly in another. Assumes that only + one assembly has changed between the two compilations. + + + + + Match local declarations to names to generate a map from + declaration to local slot. The names are indexed by slot and the + assumption is that declarations are in the same order as slots. + + + + + Return a version of the baseline with all definitions mapped to this compilation. + Definitions from the initial generation, from metadata, are not mapped since + the initial generation is always included as metadata. That is, the symbols from + types, methods, ... in the TypesAdded, MethodsAdded, ... collections are replaced + by the corresponding symbols from the current compilation. + + + + + Represents a reference to a generic method instantiation, closed over type parameters, + e.g. MyNamespace.Class.Method{T}() + + + + + Represents a reference to a generic type instantiation that is not nested. + e.g. MyNamespace.A{int} + + + + + Represents a reference to a generic type instantiation that is nested in a non-generic type. + e.g. A.B{int} + + + + + Represents a reference to a generic type instantiation. + Subclasses represent nested and namespace types. + + + + + The behavior of the C# command-line compiler is as follows: + 1) If the /out switch is specified, then the explicit assembly name is used. + 2) Otherwise, + a) if the assembly is executable, then the assembly name is derived from + the name of the file containing the entrypoint; + b) otherwise, the assembly name is derived from the name of the first input + file. + + Since we don't know which method is the entrypoint until well after the + SourceAssemblySymbol is created, in case 2a, its name will not reflect the + name of the file containing the entrypoint. We leave it to our caller to + provide that name explicitly. + + + In cases 1 and 2b, we expect (metadataName == sourceAssembly.MetadataName). + + + + + The compiler-generated implementation type for each fixed-size buffer. + + + + + Ignore accessibility when resolving well-known type + members, in particular for generic type arguments + (e.g.: binding to internal types in the EE). + + + + + Override the dynamic operation context type for all dynamic calls in the module. + + + + + True if this module is an ENC update. + + + + + Set the underlying implementation type for a given fixed-size buffer field. + + + + + Represents a reference to a field of a generic type instantiation. + e.g. + A{int}.Field + A{int}.B{string}.C.Field + + + + + Represents a generic method of a generic type instantiation, closed over type parameters. + e.g. + A{T}.M{S}() + A.B{T}.C.M{S}() + + + + + Represents a reference to an instantiation of a generic type nested in an instantiation of another generic type. + e.g. + A{int}.B{string} + A.B{int}.C.D{string} + + + + + Represents a method of a generic type instantiation. + e.g. + A{int}.M() + A.B{int}.C.M() + + + + + Represents a reference to a type nested in an instantiation of a generic type. + e.g. + A{int}.B + A.B{int}.C.D + + + + + Used only for testing. + + + + + Returns true if the type can be embedded. If the type is defined in a linked (/l-ed) + assembly, but doesn't meet embeddable type requirements, this function returns false + and reports appropriate diagnostics. + + + + + A diagnostic, along with the location where it occurred. + + + + + Add a diagnostic to the bag. + + + + + + + + + Add a diagnostic to the bag. + + + + + + + + + + Adds diagnostics from useSiteDiagnostics into diagnostics and returns True if there were any errors. + + + + Don't call this during a parse--it loads resources + + + Don't call this during a parse--it loads resources + + + Don't call this during a parse--it loads resources + + + + When converting an anonymous function to a delegate type, there are some diagnostics + that will occur regardless of the delegate type - particularly those that do not + depend on the substituted types (e.g. name uniqueness). Even though we need to + produce a diagnostic in such cases, we do not need to abandon overload resolution - + we can choose the overload that is best without regard to such diagnostics. + + True if seeing the ErrorCode should prevent a delegate conversion + from completing successfully. + + + + WARNING: will resolve lazy diagnostics - do not call this before the member lists are completed + or you could trigger infinite recursion. + + + + + An abstract flow pass that takes some shortcuts in analyzing finally blocks, in order to enable + the analysis to take place without tracking exceptions or repeating the analysis of a finally block + for each exit from a try statement. The shortcut results in a slightly less precise + (but still conservative) analysis, but that less precise analysis is all that is required for + the language specification. The most significant shortcut is that we do not track the state + where exceptions can arise. That does not affect the soundness for most analyses, but for those + analyses whose soundness would be affected (e.g. "data flows out"), we track "unassignments" to keep + the analysis sound. + + + + + To scan the whole body, we start outside (before) the region. + + + + + A region analysis walker that computes the set of variables that are always assigned a value + in the region. A variable is "always assigned" in a region if an analysis of the region that + starts with the variable unassigned ends with the variable assigned. + + + + + This class implements the region control flow analysis operations. Region control flow + analysis provides information about statements which enter and leave a region. The analysis + is done lazily. When created, it performs no analysis, but simply caches the arguments. + Then, the first time one of the analysis results is used it computes that one result and + caches it. Each result is computed using a custom algorithm. + + + + + A collection of statements outside the region that jump into the region. + + + + + A collection of statements inside the region that jump to locations outside the region. + + + + + Returns true if and only if the endpoint of the last statement in the region is reachable or the region contains no + statements. + + + + + A collection of return (or yield break) statements found within the region that return from the enclosing method or lambda. + + + + + Returns true iff analysis was successful. Analysis can fail if the region does not properly span a single expression, + a single statement, or a contiguous series of statements within the enclosing block. + + + + + Produce a duplicate of this flow analysis state. + + + + + + Perform control flow analysis, reporting all necessary diagnostics. Returns true if the end of + the body might be reachable... + + + + + Analyze the body, reporting all necessary diagnostics. Returns true if the end of the + body might be reachable. + + + + + + This class implements the region data flow analysis operations. Region data flow analysis + provides information how data flows into and out of a region. The analysis is done lazily. + When created, it performs no analysis, but simply caches the arguments. Then, the first time + one of the analysis results is used it computes that one result and caches it. Each result + is computed using a custom algorithm. + + + + + A collection of the local variables that are declared within the region. Note that the region must be + bounded by a method's body or a field's initializer, so method parameter symbols are never included + in the result, but lambda parameters might appear in the result. + + + + + A collection of the local variables for which a value assigned outside the region may be used inside the region. + + + + + A collection of the local variables for which a value assigned inside the region may be used outside the region. + Note that every reachable assignment to a ref or out variable will be included in the results. + + + + + A collection of the local variables for which a value is always assigned inside the region. + + + + + A collection of the local variables that are read inside the region. + + + + + A collection of local variables that are written inside the region. + + + + + A collection of the local variables that are read outside the region. + + + + + A collection of local variables that are written outside the region. + + + + + A collection of the non-constant local variables and parameters that have been referenced in anonymous functions + and therefore must be moved to a field of a frame class. + + + + + A collection of the non-constant local variables and parameters that have had their address (or the address of one + of their fields) taken using the '&' operator. + + + If there are any of these in the region, then a method should not be extracted. + + + + + Returns true iff analysis was successful. Analysis can fail if the region does not properly span a single expression, + a single statement, or a contiguous series of statements within the enclosing block. + + + + + Some variables that should be considered initially assigned. Used for region analysis. + + + + + Variables that were used anywhere, in the sense required to suppress warnings about + unused variables. + + + + + Variables that were initialized or written anywhere. + + + + + Map from variables that had their addresses taken, to the location of the first corresponding + address-of expression. + + + Doesn't include fixed statement address-of operands. + + + + + Variables that were captured by anonymous functions. + + + + + The current source assembly. + + + + + A mapping from local variables to the index of their slot in a flow analysis local state. + + + + + A set of address-of expressions for which the operand is not definitely assigned. + + + + + A mapping from the local variable slot to the symbol for the local variable itself. This + is used in the implementation of region analysis (support for extract method) to compute + the set of variables "always assigned" in a region of code. + + + + + Variable slots are allocated to local variables sequentially and never reused. This is + the index of the next slot number to use. + + + + + Tracks variables for which we have already reported a definite assignment error. This + allows us to report at most one such error per variable. + + + + + Reflects the enclosing method or lambda at the current location (in the bound tree). + + + + + A cache for remember which structs are empty. + + + + + true if we should check to ensure that out parameters are assigned on every exit point. + + + + + The topmost method of this analysis. + + + + + Constructor to be used for region analysis, for which a struct type should never be considered empty. + + + + + Perform data flow analysis, reporting all necessary diagnostics. + + + + + Analyze the body, reporting all necessary diagnostics. + + + + + Check if the variable is captured and, if so, add it to this._capturedVariables. + + The variable to be checked + If variable.Kind is RangeVariable, its underlying lambda parameter. Else null. + + + + Add the variable to the captured set. For range variables we only add it if inside the region. + + + + + + This reflects the Dev10 compiler's rules for when a variable initialization is considered a "use" + for the purpose of suppressing the warning about unused variables. + + + + + Locals are given slots when their declarations are encountered. We only need give slots + to local variables, out parameters, and the "this" variable of a struct constructs. + Other variables are not given slots, and are therefore not tracked by the analysis. This + returns -1 for a variable that is not tracked, for fields of structs that have the same + assigned status as the container, and for structs that (recursively) contain no data members. + We do not need to track references to + variables that occur before the variable is declared, as those are reported in an + earlier phase as "use before declaration". That allows us to avoid giving slots to local + variables before processing their declarations. + + + + + Force a variable to have a slot. Returns -1 if the variable has an empty struct type. + + + + + Return the slot for a variable, or -1 if it is not tracked (because, for example, it is an empty struct). + + + + + + + Check that the given variable is definitely assigned. If not, produce an error. + + + + + + + Report a given variable as not definitely assigned. Once a variable has been so + reported, we suppress further reports of that variable. + + + + + + + Mark a variable as assigned (or unassigned). + + Node being assigned to. + The value being assigned. + True if target location is considered written to. + Target kind (by-ref or not). + True if target location is considered read from. + + + + Does the struct variable at the given slot have all of its instance fields assigned? + + + + + Variables declared in a using statement are always considered used, so this is just an assert. + + + + + Produce a duplicate of this flow analysis state. + + + + + + A region analysis walker that computes the set of variables whose values flow into (are used + in) the region. A variable assigned outside is used inside if an analysis that leaves the + variable unassigned on entry to the region would cause the generation of "unassigned" errors + within the region. + + + + + A region analysis walker that computes the set of variables for + which their assigned values flow out of the region. + A variable assigned inside is used outside if an analysis that + treats assignments in the region as unassigning the variable would + cause "unassigned" errors outside the region. + + + + + A small cache for remembering empty struct types for flow analysis. + + + + + When set, we ignore private reference fields of structs loaded from metadata. + + + + + Create a cache for computing whether or not a struct type is "empty". + + Enable compatibility with the native compiler, which + ignores inaccessible fields of reference type for structs loaded from metadata. + if is true, set to the compilation from + which to check accessibility. + + + + Determine if the given type is an empty struct type. + + + + + Determine if the given type is an empty struct type,. "typesWithMembersOfThisType" contains + a list of types that have members (directly or indirectly) of this type. + to remove circularity. + + + + + Get all instance fields of a struct. They are not necessarily returned in order. + + + + + Get all instance fields of a struct. They are not necessarily returned in order. + + + + + + When deciding what struct fields to drop on the floor, the native compiler looks + through arrays, and does not ignore value types or type parameters. + + + + + Is it possible that the given symbol can be accessed somewhere in the given assembly? + For the purposes of this test, we assume that code in the given assembly might derive from + any type. So protected members are considered potentially accessible. + + + + + Specialized EmptyStructTypeCache that reports all structs as not empty + + + + + A region analysis walker that records jumps into the region. Works by overriding NoteBranch, which is + invoked by a superclass when the two endpoints of a jump have been identified. + + + + + A region analysis walker that records jumps out of the region. + + + + + The flow analysis pass. This pass reports required diagnostics for unreachable + statements and uninitialized variables (through the call to FlowAnalysisWalker.Analyze), + and inserts a final return statement if the end of a void-returning method is reachable. + + the method to be analyzed + the method's body + the receiver of the reported diagnostics + indicates whether this Script had a trailing expression + the original method body is the last statement in the block + the rewritten block for the method (with a return statement possibly inserted) + + + + Produce a duplicate of this flow analysis state. + + + + + + Is the code reachable? + + + + + The compilation in which the analysis is taking place. This is needed to determine which + conditional methods will be compiled and which will be omitted. + + + + + The method whose body is being analyzed, or the field whose initializer is being analyzed. + It is used for + references to method parameters. Thus, 'member' should not be used directly, but + 'MethodParameters', 'MethodThisParameter' and 'AnalyzeOutParameters(...)' should be used + instead. + + + + + The bound node of the method or initializer being analyzed. + + + + + The flow analysis state at each label, computed by merging the state from branches to + that label with the state when we fall into the label. Entries are created when the + label is encountered. One case deserves special attention: when the destination of the + branch is a label earlier in the code, it is possible (though rarely occurs in practice) + that we are changing the state at a label that we've already analyzed. In that case we + run another pass of the analysis to allow those changes to propagate. This repeats until + no further changes to the state of these labels occurs. This can result in quadratic + performance in unlikely but possible code such as this: "int x; if (cond) goto l1; x = + 3; l5: print x; l4: goto l5; l3: goto l4; l2: goto l3; l1: goto l2;" + + + + + Set to true after an analysis scan if the analysis was incomplete due to a backward + "goto" branch changing some analysis result. In this case the caller scans again (until + this is false). Since the analysis proceeds by monotonically changing the state computed + at each label, this must terminate. + + + + + See property PendingBranches + + + + + All of the labels seen so far in this forward scan of the body + + + + + If we are tracking exceptions, then by convention the first entry in the pending branches + buffer contains a summary of the states that can arise from exceptions. + + + + + Pending escapes generated in the current scope (or more deeply nested scopes). When jump + statements (goto, break, continue, return) are processed, they are placed in the + pendingBranches buffer to be processed later by the code handling the destination + statement. As a special case, the processing of try-finally statements might modify the + contents of the pendingBranches buffer to take into account the behavior of + "intervening" finally clauses. + + + + + The definite assignment and/or reachability state at the point currently being analyzed. + + + + + Where all diagnostics are deposited. + + + + + A cache of the state at the backward branch point of each loop. This is not needed + during normal flow analysis, but is needed for DataFlowsOut region analysis. + + + + + Subclasses may override EnterRegion to perform any actions at the entry to the region. + + + + + Subclasses may override LeaveRegion to perform any action at the end of the region. + + + + + A pending branch. There are created for a return, break, continue, goto statement, + yield return, yield break, await expression, and if PreciseAbstractFlowPass.trackExceptions + is true for other + constructs that can cause an exception to be raised such as a throw statement or method + invocation. + The idea is that we don't know if the branch will eventually reach its destination + because of an intervening finally block that cannot complete normally. So we store them + up and handle them as we complete processing each construct. At the end of a block, if + there are any pending branches to a label in that block we process the branch. Otherwise + we relay it up to the enclosing construct as a pending branch of the enclosing + construct. + + + + + Perform a single pass of flow analysis. Note that after this pass, + this.backwardBranchChanged indicates if a further pass is required. + + + + + If a method is currently being analyzed returns its parameters, returns an empty array + otherwise. + + + + + If a method is currently being analyzed returns its 'this' parameter, returns null + otherwise. + + + + + Specifies whether or not method's out parameters should be analyzed. If there's more + than one location in the method being analyzed, then the method is partial and we prefer + to report an out parameter in partial method error. + + location to be used + true if the out parameters of the method should be analyzed + + + + Return the flow analysis state associated with a label. + + + + + + + Return to the caller the set of pending return statements. + + + + + + Set the current state to one that indicates that it is unreachable. + + + + + Visit a boolean condition expression. + + + + + + Visit a general expression, where we will only need to determine if variables are + assigned (or not). That is, we will not be needing AssignedWhenTrue and + AssignedWhenFalse. + + + + + + Visit a statement. + + + + + Called at the point in a loop where the backwards branch would go to. + + + + + Called at the point in a loop where the backward branch is placed. + + + + + Used to resolve break statements in each statement form that has a break statement + (loops, switch). + + + + + Used to resolve continue statements in each statement form that supports it. + + + + + Subclasses override this if they want to take special actions on processing a goto + statement, when both the jump and the label have been located. + + + + + To handle a label, we resolve all branches to that label. Returns true if the state of + the label changes as a result. + + Target label + Statement containing the target label + + + + Since branches cannot branch into constructs, only out, we save the pending branches + when visiting more nested constructs. When tracking exceptions, we store the current + state as the exception state for the following code. + + + + + We use this to restore the old set of pending branches after visiting a construct that contains nested statements. + + The old pending branches, which are to be merged with the current ones + + + + Since each language construct must be handled according to the rules of the language specification, + the default visitor reports that the construct for the node is not implemented in the compiler. + + + + + Certain (struct) types are known by the compiler to be immutable. In these cases calling a method on + the type is known (by flow analysis) not to write the receiver. + + + + + + + If the operand is definitely assigned, we may want to perform a read (in addition to + a write) so that the operand can show up as ReadInside/DataFlowsIn. + + + + + A region analysis walker that records reads and writes of all variables, both inside and outside the region. + + + + + Note that a variable is read. + + The variable + If variable.Kind is RangeVariable, its underlying lambda parameter. Else null. + + + + When we read a field from a struct, the receiver isn't seen as being read until we get to the + end of the field access expression, because we only read the relevant piece of the struct. + But we want the receiver to be considered to be read in the region in that case. + For example, if an rvalue expression is x.y.z and the region is x.y, we want x to be included + in the ReadInside set. That is implemented here. + + + + + Compute the underlying lambda parameter symbol for a range variable, if any. + + The bound node for the expansion of the range variable + + + + Represents region analysis context attributes such as compilation, region, etc... + + + + Compilation to use + + + Containing symbol if available, null otherwise + + + Bound node, not null + + + Region to be used + + + Region to be used + + + True if the input was bad, such as no first and last nodes + + + + Construct context + + + + + A region analysis walker that computes whether or not the region completes normally. It does this by determining + if the point at which the region ends is reachable. + + + + + An analysis that computes the set of variables that may be used + before being assigned anywhere within a method. + + + + + An analysis that computes the set of variables that may be used + before being assigned anywhere within a method. + + + + + A region analysis walker that records declared variables. + + + + + Specifies the language version. + + + + + C# language version 1.0. + + + + + C# language version 2.0. + + + + + C# language version 3.0. + + + Features: LINQ. + + + + + C# language version 4.0. + + + Features: dynamic. + + + + + C# language version 5.0. + + + Features: async. + + + + + C# language version 6.0. + + + Features: + + Using of a static class + Auto-property initializers + Expression-bodied methods and properties + Null-propagating operator ?. + Exception filters + + + + + + The purpose of this rewriter is to replace await-containing catch and finally handlers + with surrogate replacements that keep actual handler code in regular code blocks. + That allows these constructs to be further lowered at the async lowering pass. + + + + + Lower a block of code by performing local rewritings. + The goal is to not have exception handlers that contain awaits in them. + + 1) Await containing finally blocks: + The general strategy is to rewrite await containing handlers into synthetic handlers. + Synthetic handlers are not handlers in IL sense so it is ok to have awaits in them. + Since synthetic handlers are just blocks, we have to deal with pending exception/branch/return manually + (this is the hard part of the rewrite). + + try{ + code; + }finally{ + handler; + } + + Into ===> + + Exception ex = null; + int pendingBranch = 0; + + try{ + code; // any gotos/returns are rewritten to code that pends the necessary info and goes to finallyLabel + goto finallyLabel; + }catch (ex){ // essentially pend the currently active exception + }; + + finallyLabel: + { + handler; + if (ex != null) throw ex; // unpend the exception + unpend branches/return + } + + 2) Await containing catches: + try{ + code; + }catch (Exception ex){ + handler; + throw; + } + + + Into ===> + + Object pendingException; + int pendingCatch = 0; + + try{ + code; + }catch (Exception temp){ // essentially pend the currently active exception + pendingException = temp; + pendingCatch = 1; + }; + + switch(pendingCatch): + { + case 1: + { + Exception ex = (Exception)pendingException; + handler; + throw pendingException + } + } + + + + + Rewrites Try/Catch part of the Try/Catch/Finally + + + + + Analyzes method body for try blocks with awaits in finally blocks + Also collects labels that such blocks contain. + + + + + Returns true if a finally of the given try contains awaits + + + + + Returns true if a catch contains awaits + + + + + Returns true if body contains await in a finally block. + + + + + Labels reachable from within this frame without invoking its finally. + null if there are no such labels. + + + + + Async methods have both a return type (void, Task, or Task<T>) and a 'result' type, which is the + operand type of any return expressions in the async method. The result type is void in the case of + Task-returning and void-returning async methods, and T in the case of Task<T>-returning async + methods. + + System.Runtime.CompilerServices provides a collection of async method builders that are used in the + generated code of async methods to create and manipulate the async method's task. There are three + distinct async method builder types, one of each async return type: AsyncVoidMethodBuilder, + AsyncTaskMethodBuilder, and AsyncTaskMethodBuilder<T>. + + AsyncMethodBuilderMemberCollection provides a common mechanism for accessing the well-known members of + each async method builder type. This avoids having to inspect the return style of the current async method + to pick the right async method builder member during async rewriting. + + + + + The builder's constructed type. + + + + + The result type of the constructed task: T for Task<T>, void otherwise. + + + + + Binds an exception to the method builder. + + + + + Marks the method builder as successfully completed, and sets the result if method is Task<T>-returning. + + + + + Schedules the state machine to proceed to the next action when the specified awaiter completes. + + + + + Schedules the state machine to proceed to the next action when the specified awaiter completes. This method can be called from partially trusted code. + + + + + Begins running the builder with the associated state machine. + + + + + Associates the builder with the specified state machine. + + + + + Get the constructed task for a Task-returning or Task<T>-returning async method. + + + + + The method being rewritten. + + + + + The field of the generated async class used to store the async method builder: an instance of + , , or depending on the + return type of the async method. + + + + + A collection of well-known members for the current async method builder. + + + + + The exprReturnLabel is used to label the return handling code at the end of the async state-machine + method. Return expressions are rewritten as unconditional branches to exprReturnLabel. + + + + + The label containing a return from the method when the async method has not completed. + + + + + The field of the generated async class used in generic task returning async methods to store the value + of rewritten return expressions. The return-handling code then uses SetResult on the async method builder + to make the result available to the caller. + + + + + Generate the body for MoveNext(). + + + + + Rewrite an async method into a state machine type. + + + + + Returns true if all types and members we need are present and good + + + + + The class that represents a translated async method. + + + + + If an expression node that declares synthesized short-lived locals (currently only sequence) contains an await, these locals become long-lived since their + values may be read by code that follows the await. We promote these variables to long-lived of kind . + + + + + This pass detects and reports diagnostics that do not affect lambda convertibility. + This part of the partial class focuses on features that cannot be used in expression trees. + CAVEAT: Errors may be produced for ObsoleteAttribute, but such errors don't affect lambda convertibility. + + + This pass detects and reports diagnostics that do not affect lambda convertibility. + This part of the partial class focuses on expression and operator warnings. + + + + + This is for when we are taking the address of a field. + Distinguish from . + + + + + This is for when we are dotting into a field. + Distinguish from . + + NOTE: dev11 also calls this on string initializers in fixed statements, + but never accomplishes anything since string is a reference type. This + is probably a bug, but fixing it would be a breaking change. + + + + + Based on OutputContext::IsNonAgileField. + + + + + Returns the expression if the statement is actually an expression (ExpressionStatementSyntax with no trailing semicolon). + + + + + The constructor of the class that is the translation of an iterator method. + + + + + A synthesized Finally method containing finalization code for a resumable try statement. + Finalization code for such try may run when: + 1) control flow goes out of try scope by dropping through + 2) control flow goes out of try scope by conditionally or unconditionally branching outside of one ore more try/finally frames. + 3) enumerator is disposed by the owner. + 4) enumerator is being disposed after an exception. + + It is easier to manage partial or complete finalization when every finally is factored out as a separate method. + + NOTE: Finally is a private void nonvirtual instance method with no parameters. + It is a valid JIT inlining target as long as JIT may consider inlining profitable. + + + + + The field of the generated iterator class that underlies the Current property. + + + + + Tells us if a particular try contains yield returns + + + + + When this is more that 0, returns are emitted as "methodValue = value; goto exitLabel;" + + + + + The current iterator finally frame in the tree of finally frames. + By default there is a root finally frame. + Root frame does not have a handler, but may contain nested frames. + + + + + Finally state of the next Finally frame if such created. + Finally state is a negative decreasing number starting with -3. (-2 is used for something else). + Root frame has finally state -1. + + The Finally state is the state that we are in when "between states". + Regular states are positive and are the only states that can be resumed to. + The purpose of distinct finally states is to have enough information about + which finally handlers must run when we need to finalize iterator after a fault. + + + + + Produces a Try/Finally if frame has a handler (otherwise a regular block). + Handler goes into the Finally. + If there are nested frames, they are emitted into the try block. + This way the handler for the current frame is guaranteed to run even if + nested handlers throw exceptions. + + { + switch(state) + { + case state1: + case state2: + case state3: + case state4: + try + { + switch(state) + { + case state3: + case state4: + try + { + ... more nested state dispatches if any .... + } + finally + { + // handler for a try where state3 and state4 can be observed + handler_3_4() + } + break; + } + } + finally + { + // handler for a try where state1 and state2 can be observed + handler_1_2() + } + break; + + case state5: + ... another dispatch of nested states to their finally blocks ... + break; + } + } + + + + + + Analyzes method body for yields in try blocks and labels that they contain. + + + + + Returns true if given try or any of its nested try blocks contain yields + + + + + Returns true if body contains yield returns within try blocks. + + + + + Labels reachable from within this frame without invoking its finally. + null if there are none such labels. + + + + + Rewrite an iterator method into a state machine class. + + + + + Returns true if all types and members we need are present and good + + + + + Check that the property and its getter exist and collect any use-site errors. + + + + + The class that represents a translated iterator method. + + + + + Analyzes method body for labels. + + + + + The closure doesn't declare any variables. + Display class is a singleton and may be shared with other top-level methods. + + + + + The closure only contains a reference to the containing class instance ("this"). + We don't emit a display class, lambdas are emitted directly to the containing class as its instance methods. + + + + + General closure. + Display class may only contain lambdas defined in the same top-level method. + + + + + Visit the expression, but do so in a way that ensures that its type is precise. That means that any + sometimes-unnecessary conversions (such as an implicit reference conversion) are retained. + + + + + A field of a frame class that represents a variable that has been captured in a lambda. + + + + + The rewriter for removing lambda expressions from method bodies and introducing closure classes + as containers for captured variables along the lines of the example in section 6.5.3 of the + C# language specification. + + The entry point is the public method . It operates as follows: + + First, an analysis of the whole method body is performed that determines which variables are + captured, what their scopes are, and what the nesting relationship is between scopes that + have captured variables. The result of this analysis is left in . + + Then we make a frame, or compiler-generated class, represented by an instance of + for each scope with captured variables. The generated frames are kept + in . Each frame is given a single field for each captured + variable in the corresponding scope. These are maintained in . + + Finally, we walk and rewrite the input bound tree, keeping track of the following: + (1) The current set of active frame pointers, in + (2) The current method being processed (this changes within a lambda's body), in + (3) The "this" symbol for the current method in , and + (4) The symbol that is used to access the innermost frame pointer (it could be a local variable or "this" parameter) + + There are a few key transformations done in the rewriting. + (1) Lambda expressions are turned into delegate creation expressions, and the body of the lambda is + moved into a new, compiler-generated method of a selected frame class. + (2) On entry to a scope with captured variables, we create a frame object and store it in a local variable. + (3) References to captured variables are transformed into references to fields of a frame class. + + In addition, the rewriting deposits into a (, ) + pair for each generated method. + + produces its output in two forms. First, it returns a new bound statement + for the caller to use for the body of the original method. Second, it returns a collection of + (, ) pairs for additional methods that the lambda rewriter produced. + These additional methods contain the bodies of the lambdas moved into ordinary methods of their + respective frame classes, and the caller is responsible for processing them just as it does with + the returned bound node. For example, the caller will typically perform iterator method and + asynchronous method transformations, and emit IL instructions into an assembly. + + + + + Perform a first analysis pass in preparation for removing all lambdas from a method body. The entry point is Analyze. + The results of analysis are placed in the fields seenLambda, blockParent, variableBlock, captured, and captures. + + + + + Set to true while we are analyzing the interior of an expression lambda. + + + + + Set to true of any lambda expressions were seen in the analyzed method body. + + + + + For each scope that defines variables, identifies the nearest enclosing scope that defines variables. + + + + + For each captured variable, identifies the scope in which it will be moved to a frame class. This is + normally the node where the variable is introduced, but method parameters are moved + to a frame class within the body of the method. + + + + + The syntax nodes associated with each captured variable. + + + + + For each lambda in the code, the set of variables that it captures. + + + + + Blocks that are positioned between a block declaring some lifted variables + and a block that contains the lambda that lifts said variables. + If such block itself requires a closure, then it must lift parent frame pointer into the closure + in addition to whatever else needs to be lifted. + + NOTE: This information is computed in addition to the regular analysis of the tree and only needed for rewriting. + If someone only needs diagnostics or information about captures, this information is not necessary. + needs to be called to compute this. + + + + + Optimized locations of lambdas. + + Lambda does not need to be placed in a frame that corresponds to its lexical scope if lambda does not reference any local state in that scope. + It is advantageous to place lambdas higher in the scope tree, ideally in the innermost scope of all scopes that contain variables captured by a given lambda. + Doing so reduces indirections needed when captured locals are accessed. For example locals from the innermost scope can be accessed with no indirection at all. + + NOTE: This information is computed in addition to the regular analysis of the tree and only needed for rewriting. + If someone only needs diagnostics or information about captures, this information is not necessary. + needs to be called to compute this. + + + + + Create the optimized plan for the location of lambda methods and whether scopes need access to parent scopes + + + + + Compute the nesting depth of a given block. + Top-most block (where method locals and parameters are defined) are at the depth 0. + + + + + Rewrite the given node to eliminate lambda expressions. Also returned are the method symbols and their + bound bodies for the extracted lambda bodies. These would typically be emitted by the caller such as + MethodBodyCompiler. See this class' documentation + for a more thorough explanation of the algorithm and its use by clients. + + The bound node to be rewritten + The type of the top-most frame + The "this" parameter in the top-most frame, or null if static method + The containing method of the node to be rewritten + Index of the method symbol in its containing type member list. + Information on lambdas defined in needed for debugging. + Information on closures defined in needed for debugging. + Slot allocator. + The caller's buffer into which we produce additional methods to be emitted by the caller + Diagnostic bag for diagnostics + The rewritten tree should include assignments of the original locals to the lifted proxies + + + + Create the frame types. + + + + + Produce a bound expression representing a pointer to a frame of a particular frame type. + + The syntax to attach to the bound nodes produced + The type of frame to be returned + A bound node that computes the pointer to the required frame + + + + Produce a bound expression representing a pointer to a frame of a particular frame class. + Note that for generic frames, the frameClass parameter is the generic definition, but + the resulting expression will be constructed with the current type parameters. + + The syntax to attach to the bound nodes produced + The class type of frame to be returned + A bound node that computes the pointer to the required frame + + + + Introduce a frame around the translation of the given node. + + The node whose translation should be translated to contain a frame + The frame for the translated node + A function that computes the translation of the node. It receives lists of added statements and added symbols + The translated statement, as returned from F + + + + A class that represents the set of variables in a scope that have been + captured by lambdas within that scope. + + + + + A method that results from the translation of a single lambda expression. + + + + + Lower a block of code by performing local rewritings. + + + + + Returns true if the initializer is a field initializer which should be optimized out + + + + + Generates a lowered form of the assignment operator for the given left and right sub-expressions. + Left and right sub-expressions must be in lowered form. + + + + + Generates a lowered form of the assignment operator for the given left and right sub-expressions. + Left and right sub-expressions must be in lowered form. + + + + + Spec section 7.9: if the left operand is int or uint, mask the right operand with 0x1F; + if the left operand is long or ulong, mask the right operand with 0x3F. + + + + + This rather confusing method tries to reproduce the functionality of ExpressionBinder::bindPtrAddMul and + ExpressionBinder::bindPtrMul. The basic idea is that we have a numeric expression, x, and a pointer type, + T*, and we want to multiply x by sizeof(T). Unfortunately, we need to stick in some conversions to make + everything work. + + 1) If x is an int, then convert it to an IntPtr (i.e. a native int). Dev10 offers no explanation (ExpressionBinder::bindPtrMul). + 2) Do overload resolution based on the (possibly converted) type of X and int (the type of sizeof(T)). + 3) If the result type of the chosen multiplication operator is signed, convert the product to IntPtr; + otherwise, convert the product to UIntPtr. + + + + + Rewrites arguments of an invocation according to the receiving method or indexer. + It is assumed that each argument has already been lowered, but we may need + additional rewriting for the arguments, such as generating a params array, re-ordering + arguments based on map, inserting arguments for optional parameters, etc. + is the method used for values of any optional parameters. + For indexers, this method must be an accessor, and for methods it must be the method + itself. is needed for indexers since getter and setter + may have distinct optional parameter values. + + + + + Process tempStores and add them as side-effects to arguments where needed. The return + value tells how many temps are actually needed. For unnecessary temps the corresponding + temp store will be cleared. + + + + + Gets the default value for the . + + + A syntax node corresponding to the invocation. + + + A parameter to get the default value for. + + + Indicates if caller info is to be enabled when processing this optional parameter. + The value means the decision is to be made based on the shape of the node. + + + DELIBERATE SPEC VIOLATION: When processing an implicit invocation of an Add method generated + for an element-initializer in a collection-initializer, the parameter + is set to . It means that if the optional parameter is annotated with , + or , and there is no explicit argument corresponding to it, + we will provide caller information as a value of this parameter. + This is done to match the native compiler behavior and user requests (see http://roslyn.codeplex.com/workitem/171). This behavior + does not match the C# spec that currently requires to provide caller information only in explicit invocations and query expressions. + + + + + In the expanded form of a compound assignment (or increment/decrement), the LHS appears multiple times. + If we aren't careful, this can result in repeated side-effects. This creates (ordered) temps for all of the + subexpressions that could result in side-effects and returns a side-effect-free expression that can be used + in place of the LHS in the expanded form. + + The LHS sub-expression of the compound assignment (or increment/decrement). + Populated with a list of assignment expressions that initialize the temporary locals. + Populated with a list of temporary local symbols. + True if the compound assignment is a dynamic operation. + + A side-effect-free expression representing the LHS. + The returned node needs to be lowered but its children are already lowered. + + + + + Variables local to current frame do not need temps when re-read multiple times + as long as there is no code that may write to locals in between accesses and they + are not captured. + + Example: + l += foo(ref l); + + even though l is a local, we must access it via a temp since "foo(ref l)" may change it + on between accesses. + + + + + If the condition has a constant value, then just use the selected branch. + e.g. "true ? x : y" becomes "x". + + + + + Helper method to generate a lowered conversion. + + + + + Helper method to generate a lowered conversion from the given to the given . + + + If we're converting a default parameter value to the parameter type, then the conversion can actually fail + (e.g. if the default value was specified by an attribute and was, therefore, not checked by the compiler). + Set acceptFailingConversion if you want to see default(rewrittenType) in such cases. + The error will be suppressed only for conversions from or . + + + + + Helper method to generate a lowered conversion from the given to the given . + + + If we're converting a default parameter value to the parameter type, then the conversion can actually fail + (e.g. if the default value was specified by an attribute and was, therefore, not checked by the compiler). + Set acceptFailingConversion if you want to see default(rewrittenType) in such cases. + The error will be suppressed only for conversions from or . + + + + + Helper method to generate a lowered conversion from the given rewrittenOperand to the given rewrittenType with the given conversion kind. + + + Conversion kind must not be a user defined conversion, use the other overload which takes a 'Conversion' parameter for generating synthesized user defined conversions. + + + + + If we have a WinRT type event, we need to encapsulate the adder call + (which returns an EventRegistrationToken) with a call to + WindowsRuntimeMarshal.AddEventHandler or RemoveEventHandler, but these + require us to create a new Func representing the adder and another + Action representing the Remover. + + The rewritten call looks something like: + + WindowsRuntimeMarshal.AddEventHandler<EventHandler> + (new Func<EventHandler, EventRegistrationToken>(@object.add), + new Action<EventRegistrationToken>(@object.remove), handler); + + Where @object is a compiler-generated local temp if needed. + + + TODO: use or delete isDynamic. + + + + + Basically, what we need to know is, if an exception occurred within the fixed statement, would + additional code in the current method be executed before its stack frame was popped? + + + + + If two (or more) fixed statements are nested, then we want to avoid having the outer + fixed statement re-traverse the lowered bound tree of the inner one. We accomplish + this by having each fixed statement cache a set of unmatched gotos that can be + reused by any containing fixed statements. + + + + + Look for gotos without corresponding labels in the lowered body of a fixed statement. + + + Assumes continue, break, etc have already been rewritten to gotos. + + + + + This is the entry point for foreach-loop lowering. It delegates to + RewriteEnumeratorForEachStatement + RewriteSingleDimensionalArrayForEachStatement + RewriteMultiDimensionalArrayForEachStatement + RewriteStringForEachStatement + + + We are diverging from the C# 4 spec (and Dev10) to follow the C# 5 spec. + The iteration variable will be declared *inside* each loop iteration, + rather than outside the loop. + + + + + Lower a foreach loop that will enumerate a collection using an enumerator. + + E e = ((C)(x)).GetEnumerator() + try { + while (e.MoveNext()) { + V v = (V)(T)e.Current; + // body + } + } + finally { + // clean up e + } + + + + + Synthesize a no-argument call to a given method, possibly applying a conversion to the receiver. + + If the receiver is of struct type and the method is an interface method, then skip the conversion + and just call the interface method directly - the code generator will detect this and generate a + constrained virtual call. + + A syntax node to attach to the synthesized bound node. + Receiver of method call. + Method to invoke. + Conversion to be applied to the receiver if not calling an interface method on a struct. + Type of the receiver after applying the conversion. + A BoundExpression representing the call. + + + + Lower a foreach loop that will enumerate the characters of a string. + + string s = x; + for (int p = 0; p < s.Length; p = p + 1) { + V v = (V)s.Chars[p]; + // body + } + + + We will follow Dev10 in diverging from the C# 4 spec by ignoring string's + implementation of IEnumerable and just indexing into its characters. + + NOTE: We're assuming that sequence points have already been generated. + Otherwise, lowering to for-loops would generated spurious ones. + + + + + Lower a foreach loop that will enumerate a single-dimensional array. + + A[] a = x; + for (int p = 0; p < a.Length; p = p + 1) { + V v = (V)a[p]; + // body + } + + + We will follow Dev10 in diverging from the C# 4 spec by ignoring Array's + implementation of IEnumerable and just indexing into its elements. + + NOTE: We're assuming that sequence points have already been generated. + Otherwise, lowering to for-loops would generated spurious ones. + + + + + Lower a foreach loop that will enumerate a multi-dimensional array. + + A[...] a = x; + int q_0 = a.GetUpperBound(0), q_1 = a.GetUpperBound(1), ...; + for (int p_0 = a.GetLowerBound(0); p_0 <= q_0; p_0 = p_0 + 1) + for (int p_1 = a.GetLowerBound(1); p_1 <= q_1; p_1 = p_1 + 1) + ... + { V v = (V)a[p_0, p_1, ...]; /* body */ } + + + We will follow Dev10 in diverging from the C# 4 spec by ignoring Array's + implementation of IEnumerable and just indexing into its elements. + + NOTE: We're assuming that sequence points have already been generated. + Otherwise, lowering to nested for-loops would generated spurious ones. + + + + + So that the binding info can return an appropriate SemanticInfo.Converted type for the collection + expression of a foreach node, it is wrapped in a BoundConversion to the collection type in the + initial bound tree. However, we may be able to optimize away (or entirely disregard) the conversion + so we pull out the bound node for the underlying expression. + + + + + Add sequence point |here|: + + foreach (Type var in |expr|) { } + + + Hit once, before looping begins. + + + + + Add sequence point |here|: + + foreach (|Type var| in expr) { } + + + Hit every iteration. + + + + + Add sequence point |here|: + + |foreach| (Type var in expr) { } + + + Hit once, before looping begins. + + + + + Lowers a lock statement to a try-finally block that calls Monitor.Enter and Monitor.Exit + before and after the body, respectively. + + + + + The strategy of this rewrite is to do rewrite "locally". + We analyze arguments of the concat in a shallow fashion assuming that + lowering and optimizations (including this one) is already done for the arguments. + Based on the arguments we select the most appropriate pattern for the current node. + + NOTE: it is not guaranteed that the node that we chose will be the most optimal since we have only + local information - i.e. we look at the arguments, but we do not know about siblings. + When we move to the parent, the node may be rewritten by this or some another optimization. + + Example: + result = ( "abc" + "def" + null ?? expr1 + "moo" + "baz" ) + expr2 + + Will rewrite into: + result = Concat("abcdef", expr2) + + However there will be transient nodes like Concat(expr1 + "moo") that will not be present in the + resulting tree. + + + + + + digs into known concat operators and unwraps their arguments + otherwise returns the expression as-is + + Generally we only need to recognize same node patterns that we create as a result of concatenation rewrite. + + + + + folds two concat operands into one expression if possible + otherwise returns null + + + + + folds two concat constants into one if possible + otherwise returns null. + It is generally always possible to concat constants, unless resulting string would be too large. + + + + + Strangely enough there is such a thing as unary concatenation and it must be rewritten. + + + + + Most of the above optimizations are not applicable in expression trees as the operator + must stay a binary operator. We cannot do much beyond constant folding which is done in binder. + + + + + Checks whether the expression represents a boxing conversion of a special value type. + If it does, it tries to return a string-based representation instead in order + to avoid allocations. If it can't, the original expression is returned. + + + + + Gets whether the type of an argument used in string concatenation can + be optimized by first calling ToString on it before passing the argument + to the String.Concat function. + + The type symbol of the argument. + + true if ToString may be used; false if using ToString could lead to observable differences in behavior. + + + + + Is there any code to execute in the given statement that could have side-effects, + such as throwing an exception? This implementation is conservative, in the sense + that it may return true when the statement actually may have no side effects. + + + + + This rewriter lowers pre-/post- increment/decrement operations (initially represented as + unary operators). We use BoundSequenceExpressions because we need to capture the RHS of the + assignment in a temp variable. + + + This rewriter assumes that it will be run before decimal rewriting (so that it does not have + to lower decimal constants and operations) and call rewriting (so that it does not have to + lower property accesses). + + + + + The rewrites are as follows: suppose the operand x is a variable of type X. The + chosen increment/decrement operator is modelled as a static method on a type T, + which takes a value of type T and returns the result of incrementing or decrementing + that value. + + x++ + X temp = x + x = (X)(T.Increment((T)temp)) + return temp + x-- + X temp = x + x = (X)(T.Decrement((T)temp)) + return temp + ++x + X temp = (X)(T.Increment((T)x)) + x = temp + return temp + --x + X temp = (X)(T.Decrement((T)x)) + x = temp + return temp + + Note: + Dev11 implements dynamic prefix operators incorrectly. + + result = ++x.P is emitted as result = SetMember{"P"}(t, UnaryOperation{Inc}(GetMember{"P"}(x))) + + The difference is that Dev11 relies on SetMember returning the same value as it was given as an argument. + Failing to do so changes the semantics of ++/-- operator which is undesirable. We emit the same pattern for + both dynamic and static operators. + + For example, we might have a class X with user-defined implicit conversions + to and from short, but no user-defined increment or decrement operators. We + would bind x++ as "X temp = x; x = (X)(short)((int)(short)temp + 1); return temp;" + + The unary operator expression representing the increment/decrement. + A bound sequence that uses a temp to achieve the correct side effects and return value. + + + + Transform an expression from a form suitable as an lvalue to a form suitable as an rvalue. + + The children of this node must already be lowered. + Fully lowered node. + + + + Rewrite a using statement into a try finally statement. Two forms are possible: + 1) using (expr) stmt + 2) using (C c = expr) stmt + + The former is handled by RewriteExpressionUsingStatement and the latter is handled by + RewriteDeclarationUsingStatement (called in a loop, once for each local declared). + + + It would be more in line with our usual pattern to rewrite using to try-finally + in the ControlFlowRewriter, but if we don't do it here the BoundMultipleLocalDeclarations + will be rewritten into a form that makes them harder to separate. + + + + + Lower "using (expression) statement" to a try-finally block. + + + + + Lower "using (ResourceType resource = expression) statement" to a try-finally block. + + + Assumes that the local symbol will be declared (i.e. in the LocalsOpt array) of an enclosing block. + Assumes that using statements with multiple locals have already been split up into multiple using statements. + + + + + The dynamic operation factories below return this struct so that the caller + have the option of separating the call-site initialization from its invocation. + + Most callers just call to get the combo but some (object and array initializers) + hoist all call-site initialization code and emit multiple invocations of the same site. + + + + + Corresponds to . + + + + + Corresponds to . + + + + + Rewrite the replacement expression for the hoisted local so all synthesized field are accessed as members + of the appropriate frame. + + + + + A walker that computes the set of local variables of an iterator/async + method that must be hoisted to the state machine. + + + Data flow analysis is used to calculate the locals. At yield/await we mark all variables as "unassigned". + When a read from an unassigned variables is reported we add the variable to the captured set. + "this" parameter is captured if a reference to "this", "base" or an instance field is encountered. + Variables used in finally also need to be captured if there is a yield in the corresponding try block. + + + + + True if we need to generate the code to do the bookkeeping so we can "finalize" the state machine + by executing code from its current state through the enclosing finally blocks. This is true for + iterators and false for async. + + + + + Generate return statements from the state machine method body. + + + + + The "state" of the state machine that is the translation of the iterator method. + + + + + Cached "state" of the state machine within the MoveNext method. We work with a copy of + the state to avoid shared mutable state between threads. (Two threads can be executing + in a Task's MoveNext method because an awaited task may complete after the awaiter has + tested whether the subtask is complete but before the awaiter has returned) + + + + + For each distinct label, the set of states that need to be dispatched to that label. + Note that there is a dispatch occurring at every try-finally statement, so this + variable takes on a new set of values inside each try block. + + + + + A mapping from each state of the state machine to the new state that will be used to execute + finally blocks in case the state machine is disposed. The Dispose method computes the new state + and then runs MoveNext. Not used if !this.useFinalizerBookkeeping. + + + + + A try block might have no state (transitions) within it, in which case it does not need + to have a state to represent finalization. This flag tells us whether the current try + block that we are within has a finalizer state. Initially true as we have the (trivial) + finalizer state of -1 at the top level. Not used if !this.useFinalizerBookkeeping. + + + + + If hasFinalizerState is true, this is the state for finalization from anywhere in this + try block. Initially set to -1, representing the no-op finalization required at the top + level. Not used if !this.useFinalizerBookkeeping. + + + + + A pool of fields used to hoist locals. They appear in this set when not in scope, + so that members of this set may be allocated to locals when the locals come into scope. + + + + + Fields allocated for temporary variables are given unique names distinguished by a number at the end. + This counter ensures they are unique within a given translated method. + + + + + Used to enumerate the instance fields of a struct. + + + + + The set of local variables and parameters that were hoisted and need a proxy. + + + + + Translate a statement that declares a given set of locals. Also allocates and frees hoisted temps as + required for the translation. + + The set of locals declared in the original version of this statement + A delegate to return the translation of the body of this statement + + + + Must remain in sync with . + + + + + Must remain in sync with . + + + + + Might the given type be, or contain, managed references? This is used to determine which + fields allocated to temporaries should be cleared when the underlying variable goes out of scope, so + that they do not cause unnecessary object retention. + + + + + The try statement is the most complex part of the state machine transformation. + Since the CLR will not allow a 'goto' into the scope of a try statement, we must + generate the dispatch to the state's label stepwise. That is done by translating + the try statements from the inside to the outside. Within a try statement, we + start with an empty dispatch table (representing the mapping from state numbers + to labels). During translation of the try statement's body, the dispatch table + will be filled in with the data necessary to dispatch once we're inside the try + block. We generate that at the head of the translated try statement. Then, we + copy all of the states from that table into the table for the enclosing construct, + but associate them with a label just before the translated try block. That way + the enclosing construct will generate the code necessary to get control into the + try block for all of those states. + + + + + Represents a synthesized state machine field. + + + + + True if the initial values of locals in the rewritten method need to be preserved. (e.g. enumerable iterator methods) + + + + + Add fields to the state machine class that control the state machine. + + + + + Initialize the state machine class. + + + + + Generate implementation-specific state machine initialization for the kickoff method body. + + + + + Generate implementation-specific state machine member method implementations. + + + + + State machine interface method implementation. + + + + + Represents a state machine MoveNext method. + Handles special behavior around inheriting some attributes from the original async/iterator method. + + + + + Represents a state machine method other than a MoveNext method. + All such methods are considered debugger hidden. + + + + + Tracks synthesized fields that are needed in a submission being compiled. + + + For every other submission referenced by this submission we add a field, so that we can access members of the target submission. + A field is also needed for the host object, if provided. + + + + + A helper class for synthesizing quantities of code. + + + + + Thrown by the bound node factory when there is a failure to synthesize code. + An appropriate diagnostic is included that should be reported. Currently + the only diagnostic handled through this mechanism is a missing special/well-known + member. + + + + + A binder suitable for performing overload resolution to synthesize a call to a helper method. + + + + + A binder used only for performing overload resolution of runtime helper methods. + + + + + Create a bound node factory. Note that the use of the factory to get special or well-known members + that do not exist will result in an exception of type being thrown. + + The top-level method that will contain the code + The syntax node to which generated code should be attributed + The state of compilation of the enclosing type + A bag where any diagnostics should be output + + + The top-level method that will contain the code + The enclosing class + The syntax node to which generated code should be attributed + The state of compilation of the enclosing type + A bag where any diagnostics should be output + + + + Get the symbol for a well-known member. The use of this method to get a well-known member + that does not exist will result in an exception of type MissingPredefinedMember being thrown + containing an appropriate diagnostic for the caller to report. + + The desired well-known member + If true, the method may return null for a missing member without an exception + A symbol for the well-known member, or null if it is missing and isOptions == true + + + + Get the symbol for a special member. The use of this method to get a special member + that does not exist will result in an exception of type MissingPredefinedMember being thrown + containing an appropriate diagnostic for the caller to report. + + The desired special member + A symbol for the special member. + + + + Check for (and assert that there are no) duplicate case labels in the switch. + + + + + + Helper that will use Array.Empty if available and elements have 0 length + NOTE: it is valid only if we know that the API that is being called will not + retain or use the array argument for any purpose (like locking or key in a hash table) + Typical example of valid use is Linq.Expressions factories - they do not make any + assumptions about array arguments and do not keep them or rely on their identity. + + + + + Takes an expression and returns the bound local expression "temp" + and the bound assignment expression "temp = expr". + + + + + Compiles a list of all labels that are targeted by gotos within a + node, but are not declared within the node. + + + + + newPosition represents the position we are in the final SourceText. As we consume and reuse + nodes from the old tree we will update our position in the new text accordingly. + Likewise, when we must lex tokens out of the new tree we will update as well. + + NOTE(cyrusn): We do not need an oldPosition because it is redundant given the + oldTreeCursor. The oldPosition is implicitly defined by the position of the cursor. + + + + + Affected range of a change is the range within which nodes can be affected by a change + and cannot be reused. Because of lookahead effective range of a change is larger than + the change itself. + + + + + THe cursor represents a location in the tree that we can move around to indicate where + we are in the original tree as we're incrementally parsing. When it is at a node or + token, it can either move forward to that entity's next sibling. It can also move down + to a node's first child or first token. + + Once the cursor hits the end of file, it's done. Note: the cursor will skip any other + zero length nodes in the tree. + + + + + An error/warning directive tells the compiler to indicate a syntactic error/warning + at the current location. + + Format: #error Error message string + Resulting message: from the first non-whitespace character after the directive + keyword until the end of the directive (aka EOD) at the line break or EOF. + Resulting span: [first non-whitespace char, EOD) + + Examples (pipes indicate span): + #error |foo| + #error |foo| + #error |foo | + #error |foo baz| + #error |//foo| + #error |/*foo*/| + #error |/*foo| + + The '#' token. + The 'error' or 'warning' token. + True if the error/warning should be recorded. + An ErrorDirective or WarningDirective node. + + + + These aren't acceptable in place of ASCII quotation marks in XML, + but we want to consume them (and produce an appropriate error) if + they occur in a place where a quotation mark is legal. + + + + + ACASEY: This grammar is derived from the behavior and sources of the native compiler. + Tokens start with underscores (I've cheated for _PredefinedTypeToken, which is not actually a + SyntaxKind), "*" indicates "0 or more", "?" indicates "0 or 1", and parentheses are for grouping. + + Cref = CrefType _DotToken CrefMember + | CrefType + | CrefMember + | CrefFirstType _OpenParenToken CrefParameterList? _CloseParenToken + CrefName = _IdentifierToken (_LessThanToken _IdentifierToken (_CommaToken _IdentifierToken)* _GreaterThanToken)? + CrefFirstType = ((_IdentifierToken _ColonColonToken)? CrefName) + | _PredefinedTypeToken + CrefType = CrefFirstType (_DotToken CrefName)* + CrefMember = CrefName (_OpenParenToken CrefParameterList? _CloseParenToken)? + | _ThisKeyword (_OpenBracketToken CrefParameterList _CloseBracketToken)? + | _OperatorKeyword _OperatorToken (_OpenParenToken CrefParameterList? _CloseParenToken)? + | (_ImplicitKeyword | _ExplicitKeyword) _OperatorKeyword CrefParameterType (_OpenParenToken CrefParameterList? _CloseParenToken)? + CrefParameterList = CrefParameter (_CommaToken CrefParameter)* + CrefParameter = (_RefKeyword | _OutKeyword)? CrefParameterType + CrefParameterType = CrefParameterType2 _QuestionToken? _AsteriskToken* (_OpenBracketToken _CommaToken* _CloseBracketToken)* + CrefParameterType2 = (((_IdentifierToken _ColonColonToken)? CrefParameterType3) | _PredefinedTypeToken) (_DotToken CrefParameterType3)* + CrefParameterType3 = _IdentifierToken (_LessThanToken CrefParameterType (_CommaToken CrefParameterType)* _GreaterThanToken)? + + NOTE: type parameters, not type arguments + NOTE: the first production of Cref is preferred to the other two + NOTE: pointer, array, and nullable types only work in parameters + NOTE: CrefParameterType2 and CrefParameterType3 correspond to CrefType and CrefName, respectively. + Since the only difference is that they accept non-identifier type arguments, this is accomplished + using parameters on the parsing methods (rather than whole new methods). + + + + + Parse the custom cref syntax for a named member (method, property, etc), + an indexer, an overloadable operator, or a user-defined conversion. + + + + + Parse a named member (method, property, etc), with optional type + parameters and regular parameters. + + + + + Parse an indexer member, with optional parameters. + + + + + Parse an overloadable operator, with optional parameters. + + + + + Parse a user-defined conversion, with optional parameters. + + + + + Parse a parenthesized parameter list. + + + + + Parse a bracketed parameter list. + + + + + Parse the parameter list (if any) of a cref member (name, indexer, operator, or conversion). + + + + + True if the current token could be the beginning of a cref parameter. + + + + + Parse an element of a cref parameter list. + + + "ref" and "out" work, but "params", "this", and "__arglist" don't. + + + + + Parse an identifier, optionally followed by an angle-bracketed list of type parameters. + + True to give an error when a non-identifier + type argument is seen, false to accept. No change in the shape of the tree. + + + + Parse a type. May include an alias, a predefined type, and/or a qualified name. + + + Pointer, nullable, or array types are only allowed if is false. + Leaves a dot and a name unconsumed if the name is not followed by another dot + and checkForMember is true. + + True to give an error when a non-identifier + type argument is seen, false to accept. No change in the shape of the tree. + True means that the last name should not be consumed + if it is followed by a parameter list. + + + + Parse a type. May include an alias, a predefined type, and/or a qualified name. + + + No pointer, nullable, or array types. + Leaves a dot and a name unconsumed if the name is not followed by another dot + and checkForMember is true. + + True to give an error when a non-identifier + type argument is seen, false to accept. No change in the shape of the tree. + True means that the last name should not be consumed + if it is followed by a parameter list. + + + + Once the name part of a type (including type parameter/argument lists) is parsed, + we need to consume ?, *, and rank specifiers. + + + + + Ends at appropriate quotation mark, EOF, or EndOfDocumentationComment. + + + + + Convenience method for checking the mode. + + + + + Ends at appropriate quotation mark, EOF, or EndOfDocumentationComment. + + + + + Set of well-known SyntaxTokens commonly found within XML doc comments. + + + + + Look up a well known SyntaxToken for a given XML element tag or attribute. + This is a performance optimization to avoid creating duplicate tokens for the same content. + + The text of the tag or attribute. + The leading trivia of the token. + The SyntaxToken representing the well-known tag or attribute or null if it's not well-known. + + + + Returns true if the lookahead tokens compose extern alias directive. + + + + + Parses any block or expression bodies that are present. Also parses + the trailing semicolon if one is present. + + + + + WARNING: it is possible that "list" is really the underlying builder of a SeparateSyntaxListBuilder, + so it is important that we not add anything to the list. + + + + + True if current identifier token is not really some contextual keyword + + + + + + Definitely not a type name. + + + + + Definitely a type name: either a predefined type (int, string, etc.) or an array type name (ending with a bracket). + + + + + Might be a generic (qualified) type name or a method name. + + + + + Might be a generic (qualified) type name or an expression or a method name. + + + + + Might be a non-generic (qualified) type name or an expression. + + + + + A type name with alias prefix (Alias::Name) + + + + + Nullable type (ending with ?). + + + + + Might be a pointer type or a multiplication. + + + + + Parses any statement but a declaration statement. Returns null if the lookahead looks like a declaration. + + + Variable declarations in global code are parsed as field declarations so we need to fallback if we encounter a declaration statement. + + + + + true if the current token can be the first token of a typed identifier (a type name followed by an identifier), + false if it definitely can't be, + null if we need to scan further to find out. + + + + + "Safe" substring using start and end positions rather than start and length. + If things are out of bounds just returns the empty string. That should only + be used by clients to assist in error recovery. + original string + index of first character to be included + index of last character to be included + + + + + Take the given text and treat it as the contents of a string literal, returning a token for that. + + The text for the full string literal, including the quotes and contents + The text for the string literal's contents, excluding surrounding quotes + True if the string contents should be scanned using the rules for verbatim strings + The token kind to be assigned to the resulting token + + + + This method is essentially the same as ScanIdentifier_SlowPath, + except that it can handle XML entities. Since ScanIdentifier + is hot code and since this method does extra work, it seem + worthwhile to separate it from the common case. + + + + + + + Scans a new-line sequence (either a single new-line character or a CR-LF combo). + + A trivia node with the new-line text + + + + Scans all of the whitespace (not new-lines) into a trivia node until it runs out. + + A trivia node with the whitespace text + + + + Lexer entry point for LexMode.XmlDocComment + + + + + Lexer entry point for LexMode.XmlElementTag + + + + + Determines whether this Unicode character can start a XMLName. + + The Unicode character. + + + + Determines if this Unicode character can be part of an XML Name. + + The Unicode character. + + + + Lexer entry point for LexMode.XmlAttributeText + + + + + Lexer entry point for LexerMode.XmlCharacter. + + + + + Scan a single XML character (or entity). Assumes that leading trivia has already + been consumed. + + + + + Lexer entry point for LexerMode.XmlCrefQuote, LexerMode.XmlCrefDoubleQuote, + LexerMode.XmlNameQuote, and LexerMode.XmlNameDoubleQuote. + + + + + Scan a single cref attribute token. Assumes that leading trivia has already + been consumed. + + + Within this method, characters that are not XML meta-characters can be seamlessly + replaced with the corresponding XML entities. + + + + + Given a character, advance the input if either the character or the + corresponding XML entity appears next in the text window. + + + + + + + Convenience property for determining whether we are currently lexing the + value of a cref or name attribute. + + + + + Convenience property for determining whether we are currently lexing the + value of a name attribute. + + + + + Diagnostics that occur within cref attributes need to be + wrapped with ErrorCode.WRN_ErrorOverride. + + + + + Diagnostics that occur within cref attributes need to be + wrapped with ErrorCode.WRN_ErrorOverride. + + + + + Lexer entry point for LexMode.XmlCDataSectionText + + + + + Lexer entry point for LexMode.XmlCommentText + + + + + Lexer entry point for LexMode.XmlProcessingInstructionText + + + + + Collects XML doc comment exterior trivia, and therefore is a no op unless we are in the Start or Exterior of an XML doc comment. + + List in which to collect the trivia + + + + Collects whitespace and new line trivia for XML doc comments. Does not see XML doc comment exterior trivia, and is a no op unless we are in the interior. + + List in which to collect the trivia + + + + Turn a (parsed) interpolated string nonterminal into an interpolated string token. + + + + + + Scan past the hole inside an interpolated string literal, leaving the current character on the '}' (if any) + + + + + Keeps a sliding buffer over the SourceText of a file for the lexer. Also + provides the lexer with the ability to keep track of a current "lexeme" + by leaving a marker and advancing ahead the offset. The lexer can then + decide to "keep" the lexeme by erasing the marker, or abandon the current + lexeme by moving the offset back to the marker. + + + + + In many cases, e.g. PeekChar, we need the ability to indicate that there are + no characters left and we have reached the end of the stream, or some other + invalid or not present character was asked for. Due to perf concerns, things + like nullable or out variables are not viable. Instead we need to choose a + char value which can never be legal. + + In .NET, all characters are represented in 16 bits using the UTF-16 encoding. + Fortunately for us, there are a variety of different bit patterns which + are *not* legal UTF-16 characters. 0xffff (char.MaxValue) is one of these + characters -- a legal Unicode code point, but not a legal UTF-16 bit pattern. + + + + + The current absolute position in the text file. + + + + + The current offset inside the window (relative to the window start). + + + + + The buffer backing the current window. + + + + + Returns the start of the current lexeme relative to the window start. + + + + + Number of characters in the character window. + + + + + The absolute position of the start of the current lexeme in the given + SourceText. + + + + + The number of characters in the current lexeme. + + + + + Start parsing a new lexeme. + + + + + After reading , a consumer can determine + if the InvalidCharacter was in the user's source or a sentinel. + + Comments and string literals are allowed to contain any Unicode character. + + + + + + Advance the current position by one. No guarantee that this + position is valid. + + + + + Advance the current position by n. No guarantee that this position + is valid. + + + + + Grab the next character and advance the position. + + + The next character, if there were no characters + remaining. + + + + + Gets the next character if there are any characters in the + SourceText. May advance the window if we are at the end. + + + The next character if any are available. InvalidCharacter otherwise. + + + + + Gets the character at the given offset to the current position if + the position is valid within the SourceText. + + + The next character if any are available. InvalidCharacter otherwise. + + + + + Given that the next character is an ampersand ('&'), attempt to interpret the + following characters as an XML entity. On success, populate the out parameters + with the low and high UTF-16 surrogates for the character represented by the + entity. + + e.g. '<' for &lt;. + e.g. '\uDC00' for &#x10000; (ch == '\uD800'). + True if a valid XML entity was consumed. + + NOTE: Always advances, even on failure. + + + + + If the next characters in the window match the given string, + then advance past those characters. Otherwise, do nothing. + + + + + Because syntax nodes need to be constructed with context information - to allow us to + determine whether or not they can be reused during incremental parsing - the syntax + factory needs a view of some internal parser state. + + + Read-only outside SyntaxParser (not enforced for perf reasons). + Reference type so that the factory stays up-to-date. + + + + + If a method goes from async to non-async, or vice versa, then every occurrence of "await" + within the method (but not within a lambda) needs to be reinterpreted, to determine whether + it is a keyword or an identifier. + + + + + If the end of a query expression statement is commented out, then the following statement may + appear to be part of the query. When this occurs, identifiers within the following statement + may need to be reinterpreted as query keywords. + + + + + Converts skippedSyntax node into tokens and adds these as trivia on the target token. + Also adds the first error (in depth-first preorder) found in the skipped syntax tree to the target token. + + + + + This function searches for the given location node within the subtree rooted at root node. + If it finds it, the function computes the offset span of that child node within the root and returns true, + otherwise it returns false. + + Root node + Node to search in the subtree rooted at root node + Offset of the location node within the subtree rooted at child + + + + + NOTE: we are specifically diverging from dev11 to improve the user experience. + Since treating the "async" keyword as an identifier in older language + versions can never result in a correct program, we instead accept it as a + keyword regardless of the language version and produce an error if the version + is insufficient. + + + + Class which represents an expression that has a binary operator. + + + ExpressionSyntax node representing the expression on the left of the binary operator. + + + SyntaxToken representing the operator of the binary expression. + + + ExpressionSyntax node representing the expression on the right of the binary operator. + + + Class which represents the syntax node for identifier name. + + + SyntaxToken representing the keyword for the kind of the identifier name. + + + + Gets the separator at the given index in this list. + + The index. + + + + + WARN WARN WARN: This should be used with extreme caution - the underlying builder does + not give any indication that it is from a separated syntax list but the constraints + (node, token, node, token, ...) should still be maintained. + + + In order to avoid creating a separate pool of SeparatedSyntaxListBuilders, we expose + our underlying SyntaxListBuilder to SyntaxListPool. + + + + + Find the slot that contains the given offset. + + The target offset. Must be between 0 and . + The slot index of the slot containing the given offset. + + This implementation uses a binary search to find the first slot that contains + the given offset. + + + + + Enumerates all nodes of the tree rooted by this node (including this node). + + + + + Should only be called during construction. + + + This should probably be an extra constructor parameter, but we don't need more constructor overloads. + + + + + Gets the syntax node represented the structure of this trivia, if any. The HasStructure property can be used to + determine if this trivia has structure. + + + A CSharpSyntaxNode derived from StructuredTriviaSyntax, with the structured view of this trivia node. + If this trivia node does not have structure, returns null. + + + Some types of trivia have structure that can be accessed as additional syntax nodes. + These forms of trivia include: + directives, where the structure describes the structure of the directive. + documentation comments, where the structure describes the XML structure of the comment. + skipped tokens, where the structure describes the tokens that were skipped by the parser. + + + + + Provides caching functionality for green nonterminals with up to 3 children. + Example: + When constructing a node with given kind, flags, child1 and child2, we can look up + in the cache whether we already have a node that contains same kind, flags, + child1 and child2 and use that. + + For the purpose of children comparison, reference equality is used as a much cheaper + alternative to the structural/recursive equality. This implies that in order to de-duplicate + a node to a cache node, the children of two nodes must be already de-duplicated. + When adding a node to the cache we verify that cache does contain node's children, + since otherwise there is no reason for the node to be used. + Tokens/nulls are for this purpose considered deduplicated. Indeed most of the tokens + are deduplicated via quick-scanner caching, so we just assume they all are. + + As a result of above, "fat" nodes with 4 or more children or their recursive parents + will never be in the cache. This naturally limits the typical single cache item to be + a relatively simple expression. We do not want the cache to be completely unbounded + on the item size. + While it still may be possible to store a gigantic nested binary expression, + it should be a rare occurrence. + + We only consider "normal" nodes to be cacheable. + Nodes with diagnostics/annotations/directives/skipped, etc... have more complicated identity + and are not likely to be repetitive. + + + + + + Returns the string representation of this token, not including its leading and trailing trivia. + + The string representation of this token, not including its leading and trailing trivia. + The length of the returned string is always the same as Span.Length + + + Provides the base class from which the classes that represent name syntax nodes are derived. This is an abstract class. + + + Provides the base class from which the classes that represent simple name syntax nodes are derived. This is an abstract class. + + + SyntaxToken representing the identifier of the simple name. + + + Class which represents the syntax node for qualified name. + + + NameSyntax node representing the name on the left side of the dot token of the qualified name. + + + SyntaxToken representing the dot. + + + SimpleNameSyntax node representing the name on the right side of the dot token of the qualified name. + + + Class which represents the syntax node for generic name. + + + SyntaxToken representing the name of the identifier of the generic name. + + + TypeArgumentListSyntax node representing the list of type arguments of the generic name. + + + Class which represents the syntax node for type argument list. + + + SyntaxToken representing less than. + + + SeparatedSyntaxList of TypeSyntax node representing the type arguments. + + + SyntaxToken representing greater than. + + + Class which represents the syntax node for alias qualified name. + + + IdentifierNameSyntax node representing the name of the alias + + + SyntaxToken representing colon colon. + + + SimpleNameSyntax node representing the name that is being alias qualified. + + + Provides the base class from which the classes that represent type syntax nodes are derived. This is an abstract class. + + + Class which represents the syntax node for predefined types. + + + SyntaxToken which represents the keyword corresponding to the predefined type. + + + Class which represents the syntax node for the array type. + + + TypeSyntax node representing the type of the element of the array. + + + SyntaxList of ArrayRankSpecifierSyntax nodes representing the list of rank specifiers for the array. + + + Class which represents the syntax node for pointer type. + + + TypeSyntax node that represents the element type of the pointer. + + + SyntaxToken representing the asterisk. + + + Class which represents the syntax node for a nullable type. + + + TypeSyntax node representing the type of the element. + + + SyntaxToken representing the question mark. + + + Class which represents a placeholder in the type argument list of an unbound generic type. + + + SyntaxToken representing the omitted type argument. + + + Provides the base class from which the classes that represent expression syntax nodes are derived. This is an abstract class. + + + Class which represents the syntax node for parenthesized expression. + + + SyntaxToken representing the open parenthesis. + + + ExpressionSyntax node representing the expression enclosed within the parenthesis. + + + SyntaxToken representing the close parenthesis. + + + Class which represents the syntax node for prefix unary expression. + + + SyntaxToken representing the kind of the operator of the prefix unary expression. + + + ExpressionSyntax representing the operand of the prefix unary expression. + + + Class which represents the syntax node for an "await" expression. + + + SyntaxToken representing the kind "await" keyword. + + + ExpressionSyntax representing the operand of the "await" operator. + + + Class which represents the syntax node for postfix unary expression. + + + ExpressionSyntax representing the operand of the postfix unary expression. + + + SyntaxToken representing the kind of the operator of the postfix unary expression. + + + Class which represents the syntax node for member access expression. + + + ExpressionSyntax node representing the object that the member belongs to. + + + SyntaxToken representing the kind of the operator in the member access expression. + + + SimpleNameSyntax node representing the member being accessed. + + + Class which represents the syntax node for conditional access expression. + + + ExpressionSyntax node representing the object conditionally accessed. + + + SyntaxToken representing the question mark. + + + ExpressionSyntax node representing the access expression to be executed when the object is not null. + + + Class which represents the syntax node for member binding expression. + + + SyntaxToken representing dot. + + + SimpleNameSyntax node representing the member being bound to. + + + Class which represents the syntax node for element binding expression. + + + BracketedArgumentListSyntax node representing the list of arguments of the element binding expression. + + + Class which represents the syntax node for implicit element access expression. + + + BracketedArgumentListSyntax node representing the list of arguments of the implicit element access expression. + + + Class which represents an expression that has an assignment operator. + + + ExpressionSyntax node representing the expression on the left of the assignment operator. + + + SyntaxToken representing the operator of the assignment expression. + + + ExpressionSyntax node representing the expression on the right of the assignment operator. + + + Class which represents the syntax node for conditional expression. + + + ExpressionSyntax node representing the condition of the conditional expression. + + + SyntaxToken representing the question mark. + + + ExpressionSyntax node representing the expression to be executed when the condition is true. + + + SyntaxToken representing the colon. + + + ExpressionSyntax node representing the expression to be executed when the condition is false. + + + Provides the base class from which the classes that represent instance expression syntax nodes are derived. This is an abstract class. + + + Class which represents the syntax node for a this expression. + + + SyntaxToken representing the this keyword. + + + Class which represents the syntax node for a base expression. + + + SyntaxToken representing the base keyword. + + + Class which represents the syntax node for a literal expression. + + + SyntaxToken representing the keyword corresponding to the kind of the literal expression. + + + Class which represents the syntax node for MakeRef expression. + + + SyntaxToken representing the MakeRefKeyword. + + + SyntaxToken representing open parenthesis. + + + Argument of the primary function. + + + SyntaxToken representing close parenthesis. + + + Class which represents the syntax node for RefType expression. + + + SyntaxToken representing the RefTypeKeyword. + + + SyntaxToken representing open parenthesis. + + + Argument of the primary function. + + + SyntaxToken representing close parenthesis. + + + Class which represents the syntax node for RefValue expression. + + + SyntaxToken representing the RefValueKeyword. + + + SyntaxToken representing open parenthesis. + + + Typed reference expression. + + + Comma separating the arguments. + + + The type of the value. + + + SyntaxToken representing close parenthesis. + + + Class which represents the syntax node for Checked or Unchecked expression. + + + SyntaxToken representing the checked or unchecked keyword. + + + SyntaxToken representing open parenthesis. + + + Argument of the primary function. + + + SyntaxToken representing close parenthesis. + + + Class which represents the syntax node for Default expression. + + + SyntaxToken representing the DefaultKeyword. + + + SyntaxToken representing open parenthesis. + + + Argument of the primary function. + + + SyntaxToken representing close parenthesis. + + + Class which represents the syntax node for TypeOf expression. + + + SyntaxToken representing the TypeOfKeyword. + + + SyntaxToken representing open parenthesis. + + + The expression to return type of. + + + SyntaxToken representing close parenthesis. + + + Class which represents the syntax node for SizeOf expression. + + + SyntaxToken representing the SizeOfKeyword. + + + SyntaxToken representing open parenthesis. + + + Argument of the primary function. + + + SyntaxToken representing close parenthesis. + + + Class which represents the syntax node for invocation expression. + + + ExpressionSyntax node representing the expression part of the invocation. + + + ArgumentListSyntax node representing the list of arguments of the invocation expression. + + + Class which represents the syntax node for element access expression. + + + ExpressionSyntax node representing the expression which is accessing the element. + + + BracketedArgumentListSyntax node representing the list of arguments of the element access expression. + + + Provides the base class from which the classes that represent argument list syntax nodes are derived. This is an abstract class. + + + SeparatedSyntaxList of ArgumentSyntax nodes representing the list of arguments. + + + Class which represents the syntax node for the list of arguments. + + + SyntaxToken representing open parenthesis. + + + SeparatedSyntaxList of ArgumentSyntax representing the list of arguments. + + + SyntaxToken representing close parenthesis. + + + Class which represents the syntax node for bracketed argument list. + + + SyntaxToken representing open bracket. + + + SeparatedSyntaxList of ArgumentSyntax representing the list of arguments. + + + SyntaxToken representing close bracket. + + + Class which represents the syntax node for argument. + + + NameColonSyntax node representing the optional name arguments. + + + SyntaxToken representing the optional ref or out keyword. + + + ExpressionSyntax node representing the argument. + + + Class which represents the syntax node for name colon syntax. + + + IdentifierNameSyntax representing the identifier name. + + + SyntaxToken representing colon. + + + Class which represents the syntax node for cast expression. + + + SyntaxToken representing the open parenthesis. + + + TypeSyntax node representing the type the expression is being casted to. + + + SyntaxToken representing the close parenthesis. + + + ExpressionSyntax node representing the expression that is being casted. + + + Provides the base class from which the classes that represent anonymous function expressions are derived. + + + Gets the "async" token. + + + ExpressionSyntax or BlockSyntax representing the body of the lambda expression. + + + Class which represents the syntax node for anonymous method expression. + + + Gets the "async" token. + + + SyntaxToken representing the delegate keyword. + + + List of parameters of the anonymous method expression, or null if there no parameters are specified. + + + BlockSyntax node representing the body of the anonymous method. + + + Provides the base class from which the classes that represent lambda expressions are derived. + + + SyntaxToken representing equals greater than. + + + Class which represents the syntax node for a simple lambda expression. + + + Gets the "async" token. + + + ParameterSyntax node representing the parameter of the lambda expression. + + + SyntaxToken representing equals greater than. + + + SyntaxNode representing the body of the lambda expression. + + + Class which represents the syntax node for parenthesized lambda expression. + + + Gets the "async" token. + + + ParameterListSyntax node representing the list of parameters for the lambda expression. + + + SyntaxToken representing equals greater than. + + + SyntaxNode representing the body of the lambda expression. + + + Class which represents the syntax node for initializer expression. + + + SyntaxToken representing the open brace. + + + SeparatedSyntaxList of ExpressionSyntax representing the list of expressions in the initializer expression. + + + SyntaxToken representing the close brace. + + + Class which represents the syntax node for object creation expression. + + + SyntaxToken representing the new keyword. + + + TypeSyntax representing the type of the object being created. + + + ArgumentListSyntax representing the list of arguments passed as part of the object creation expression. + + + InitializerExpressionSyntax representing the initializer expression for the object being created. + + + NameEqualsSyntax representing the optional name of the member being initialized. + + + ExpressionSyntax representing the value the member is initialized with. + + + Class which represents the syntax node for anonymous object creation expression. + + + SyntaxToken representing the new keyword. + + + SyntaxToken representing the open brace. + + + SeparatedSyntaxList of AnonymousObjectMemberDeclaratorSyntax representing the list of object member initializers. + + + SyntaxToken representing the close brace. + + + Class which represents the syntax node for array creation expression. + + + SyntaxToken representing the new keyword. + + + ArrayTypeSyntax node representing the type of the array. + + + InitializerExpressionSyntax node representing the initializer of the array creation expression. + + + Class which represents the syntax node for implicit array creation expression. + + + SyntaxToken representing the new keyword. + + + SyntaxToken representing the open bracket. + + + SyntaxList of SyntaxToken representing the commas in the implicit array creation expression. + + + SyntaxToken representing the close bracket. + + + InitializerExpressionSyntax representing the initializer expression of the implicit array creation expression. + + + Class which represents the syntax node for stackalloc array creation expression. + + + SyntaxToken representing the stackalloc keyword. + + + TypeSyntax node representing the type of the stackalloc array. + + + Gets the identifier. + + + Gets the identifier. + + + Gets the identifier. + + + Gets the identifier. + + + Gets the identifier. + + + Class which represents a placeholder in an array size list. + + + SyntaxToken representing the omitted array size expression. + + + The first part of an interpolated string, $" or $@" + + + List of parts of the interpolated string, each one is either a literal part or an interpolation. + + + The closing quote of the interpolated string. + + + The text contents of a part of the interpolated string. + + + The text contents of the format specifier for an interpolation. + + + Represents the base class for all statements syntax classes. + + + Gets the modifier list. + + + Gets the identifier. + + + Represents a labeled statement syntax. + + + Gets the identifier. + + + Gets a SyntaxToken that represents the colon succeeding the statement's label. + + + + Represents a goto statement syntax + + + + + Gets a SyntaxToken that represents the goto keyword. + + + + + Gets a SyntaxToken that represents the case or default keywords if any exists. + + + + + Gets a constant expression for a goto case statement. + + + + + Gets a SyntaxToken that represents the semi-colon at the end of the statement. + + + + Gets the identifier. + + + + Represents an if statement syntax. + + + + + Gets a SyntaxToken that represents the if keyword. + + + + + Gets a SyntaxToken that represents the open parenthesis before the if statement's condition expression. + + + + + Gets an ExpressionSyntax that represents the condition of the if statement. + + + + + Gets a SyntaxToken that represents the close parenthesis after the if statement's condition expression. + + + + + Gets a StatementSyntax the represents the statement to be executed when the condition is true. + + + + + Gets an ElseClauseSyntax that represents the statement to be executed when the condition is false if such statement exists. + + + + Represents an else statement syntax. + + + + Gets a syntax token + + + + Represents a switch statement syntax. + + + + Gets a SyntaxToken that represents the switch keyword. + + + + + Gets a SyntaxToken that represents the open parenthesis preceding the switch expression. + + + + + Gets an ExpressionSyntax representing the expression of the switch statement. + + + + + Gets a SyntaxToken that represents the close parenthesis succeeding the switch expression. + + + + + Gets a SyntaxToken that represents the open braces preceding the switch sections. + + + + + Gets a SyntaxList of SwitchSectionSyntax's that represents the switch sections of the switch statement. + + + + + Gets a SyntaxToken that represents the open braces succeeding the switch sections. + + + + Represents a switch section syntax of a switch statement. + + + + Gets a SyntaxList of SwitchLabelSyntax's the represents the possible labels that control can transfer to within the section. + + + + + Gets a SyntaxList of StatementSyntax's the represents the statements to be executed when control transfer to a label the belongs to the section. + + + + Represents a switch label within a switch statement. + + + + Gets a SyntaxToken that represents a case or default keywords that belongs to a switch label. + + + + + Gets a SyntaxToken that represents the colon that terminates the switch label. + + + + Represents a case label within a switch statement. + + + Gets the case keyword token. + + + + Gets an ExpressionSyntax that represents the constant expression that gets matched for the case label. + + + + Represents a default label within a switch statement. + + + Gets the default keyword token. + + + Gets the attribute declaration list. + + + + Represents an ExternAlias directive syntax, e.g. "extern alias MyAlias;" with specifying "/r:MyAlias=SomeAssembly.dll " on the compiler command line. + + + + SyntaxToken representing the extern keyword. + + + SyntaxToken representing the alias keyword. + + + Gets the identifier. + + + SyntaxToken representing the semicolon token. + + + Member declaration syntax. + + + Gets the optional semicolon token. + + + Class representing one or more attributes applied to a language construct. + + + Gets the open bracket token. + + + Gets the optional construct targeted by the attribute. + + + Gets the attribute declaration list. + + + Gets the close bracket token. + + + Class representing what language construct an attribute targets. + + + Gets the identifier. + + + Gets the colon token. + + + Attribute syntax. + + + Gets the name. + + + Attribute argument list syntax. + + + Gets the open paren token. + + + Gets the arguments syntax list. + + + Gets the close paren token. + + + Attribute argument syntax. + + + Gets the expression. + + + Class representing an identifier name followed by an equals token. + + + Gets the identifier name. + + + Type parameter list syntax. + + + Gets the < token. + + + Gets the parameter list. + + + Gets the > token. + + + Type parameter syntax. + + + Gets the attribute declaration list. + + + Gets the identifier. + + + Base class for type declaration syntax. + + + Gets the attribute declaration list. + + + Gets the modifier list. + + + Gets the identifier. + + + Gets the base type list. + + + Gets the open brace token. + + + Gets the close brace token. + + + Gets the optional semicolon token. + + + Base class for type declaration syntax (class, struct, interface). + + + Gets the type keyword token ("class", "struct", "interface"). + + + Gets the type constraint list. + + + Gets the member declarations. + + + Class type declaration syntax. + + + Gets the class keyword token. + + + Struct type declaration syntax. + + + Gets the struct keyword token. + + + Interface type declaration syntax. + + + Gets the interface keyword token. + + + Enum type declaration syntax. + + + Gets the enum keyword token. + + + Gets the members declaration list. + + + Gets the optional semicolon token. + + + Delegate declaration syntax. + + + Gets the attribute declaration list. + + + Gets the modifier list. + + + Gets the "delegate" keyword. + + + Gets the return type. + + + Gets the identifier. + + + Gets the parameter list. + + + Gets the constraint clause list. + + + Gets the semicolon token. + + + Gets the attribute declaration list. + + + Gets the identifier. + + + Base list syntax. + + + Gets the colon token. + + + Gets the base type references. + + + Provides the base class from which the classes that represent base type syntax nodes are derived. This is an abstract class. + + + Type parameter constraint clause. + + + Gets the identifier. + + + Gets the colon token. + + + Gets the constraints list. + + + Base type for type parameter constraint syntax. + + + Constructor constraint syntax. + + + Gets the "new" keyword. + + + Gets the open paren keyword. + + + Gets the close paren keyword. + + + Base type for class or struct constraint syntax. + + + Gets the constraint keyword ("class" or "struct"). + + + Type constraint syntax. + + + Gets the type syntax. + + + Gets the attribute declaration list. + + + Gets the modifier list. + + + Gets the attribute declaration list. + + + Gets the modifier list. + + + Gets the attribute declaration list. + + + Gets the modifier list. + + + Base type for method declaration syntax. + + + Gets the attribute declaration list. + + + Gets the modifier list. + + + Gets the parameter list. + + + Gets the optional semicolon token. + + + Method declaration syntax. + + + Gets the return type syntax. + + + Gets the identifier. + + + Gets the constraint clause list. + + + Gets the optional semicolon token. + + + Operator declaration syntax. + + + Gets the return type. + + + Gets the "operator" keyword. + + + Gets the operator token. + + + Conversion operator declaration syntax. + + + Gets the "implicit" or "explicit" token. + + + Gets the "operator" token. + + + Gets the type. + + + Gets the optional semicolon token. + + + Constructor declaration syntax. + + + Gets the identifier. + + + Gets the optional semicolon token. + + + Constructor initializer syntax. + + + Gets the colon token. + + + Gets the "this" or "base" keyword. + + + Destructor declaration syntax. + + + Gets the tilde token. + + + Gets the identifier. + + + Gets the optional semicolon token. + + + Base type for property declaration syntax. + + + Gets the attribute declaration list. + + + Gets the modifier list. + + + Gets the type syntax. + + + Gets the optional explicit interface specifier. + + + Gets the identifier. + + + The syntax for the expression body of an expression-bodied member. + + + Gets the identifier. + + + Gets the parameter list. + + + Gets the attribute declaration list. + + + Gets the modifier list. + + + Gets the keyword token, or identifier if an erroneous accessor declaration. + + + Gets the optional body block which may be empty, but it is null if there are no braces. + + + Gets the optional semicolon token. + + + Base type for parameter list syntax. + + + Gets the parameter list. + + + Parameter list syntax. + + + Gets the open paren token. + + + Gets the close paren token. + + + Parameter list syntax with surrounding brackets. + + + Gets the open bracket token. + + + Gets the close bracket token. + + + Parameter syntax. + + + Gets the attribute declaration list. + + + Gets the modifier list. + + + Gets the identifier. + + + Gets the attribute declaration list. + + + Gets the modifier list. + + + + A symbol referenced by a cref attribute (e.g. in a <see> or <seealso> documentation comment tag). + For example, the M in <see cref="M" />. + + + + + A symbol reference that definitely refers to a type. + For example, "int", "A::B", "A.B", "A<T>", but not "M()" (has parameter list) or "this" (indexer). + NOTE: TypeCrefSyntax, QualifiedCrefSyntax, and MemberCrefSyntax overlap. The syntax in a TypeCrefSyntax + will always be bound as type, so it's safer to use QualifiedCrefSyntax or MemberCrefSyntax if the symbol + might be a non-type member. + + + + + A symbol reference to a type or non-type member that is qualified by an enclosing type or namespace. + For example, cref="System.String.ToString()". + NOTE: TypeCrefSyntax, QualifiedCrefSyntax, and MemberCrefSyntax overlap. The syntax in a TypeCrefSyntax + will always be bound as type, so it's safer to use QualifiedCrefSyntax or MemberCrefSyntax if the symbol + might be a non-type member. + + + + + The unqualified part of a CrefSyntax. + For example, "ToString()" in "object.ToString()". + NOTE: TypeCrefSyntax, QualifiedCrefSyntax, and MemberCrefSyntax overlap. The syntax in a TypeCrefSyntax + will always be bound as type, so it's safer to use QualifiedCrefSyntax or MemberCrefSyntax if the symbol + might be a non-type member. + + + + + A MemberCrefSyntax specified by a name (an identifier, predefined type keyword, or an alias-qualified name, + with an optional type parameter list) and an optional parameter list. + For example, "M", "M<T>" or "M(int)". + Also, "A::B()" or "string()". + + + + + A MemberCrefSyntax specified by a this keyword and an optional parameter list. + For example, "this" or "this[int]". + + + + + A MemberCrefSyntax specified by an operator keyword, an operator symbol and an optional parameter list. + For example, "operator +" or "operator -[int]". + NOTE: the operator must be overloadable. + + + + Gets the operator token. + + + + A MemberCrefSyntax specified by an implicit or explicit keyword, an operator keyword, a destination type, and an optional parameter list. + For example, "implicit operator int" or "explicit operator MyType(int)". + + + + + A list of cref parameters with surrounding punctuation. + Unlike regular parameters, cref parameters do not have names. + + + + Gets the parameter list. + + + + A parenthesized list of cref parameters. + + + + Gets the open paren token. + + + Gets the close paren token. + + + + A bracketed list of cref parameters. + + + + Gets the open bracket token. + + + Gets the close bracket token. + + + + An element of a BaseCrefParameterListSyntax. + Unlike a regular parameter, a cref parameter has only an optional ref or out keyword and a type - + there is no name and there are no attributes or other modifiers. + + + + Class which represents the syntax node for alias qualified name. + + + IdentifierNameSyntax node representing the name of the alias + + + SyntaxToken representing colon colon. + + + SimpleNameSyntax node representing the name that is being alias qualified. + + + Attribute syntax. + + + + Return the name used in syntax for the attribute. This is typically the class + name without the "Attribute" suffix. (For certain diagnostics, the native + compiler uses the attribute name from syntax rather than the class name.) + + + + Gets the name. + + + Class representing what language construct an attribute targets. + + + Gets the identifier. + + + Gets the colon token. + + + + Returns #r directives specified in the compilation. + + + + + Returns #load directives specified in the compilation. + + + + Gets the attribute declaration list. + + + + Adds C# specific parts to the line directive map. + + + + Gets the modifier list. + + + Delegate declaration syntax. + + + Gets the attribute declaration list. + + + Gets the modifier list. + + + Gets the "delegate" keyword. + + + Gets the return type. + + + Gets the identifier. + + + Gets the parameter list. + + + Gets the constraint clause list. + + + Gets the semicolon token. + + + + Returns true if the property is allowed by the rules of the + language to be an arbitrary expression, not just a statement expression. + + + True if, for example, this expression statement represents the last expression statement + of the interactive top-level code. + + + + Class which represents the syntax node for generic name. + + + SyntaxToken representing the name of the identifier of the generic name. + + + TypeArgumentListSyntax node representing the list of type arguments of the generic name. + + + Class which represents the syntax node for identifier name. + + + SyntaxToken representing the keyword for the kind of the identifier name. + + + Gets the identifier. + + + Class which represents the syntax node for anonymous method expression. + + + Gets the "async" token. + + + SyntaxToken representing the delegate keyword. + + + List of parameters of the anonymous method expression, or null if there no parameters are specified. + + + BlockSyntax node representing the body of the anonymous method. + + + + This class contains a variety of helper methods for determining whether a + position is within the scope (and not just the span) of a node. In general, + general, the scope extends from the first token up to, but not including, + the last token. For example, the open brace of a block is within the scope + of the block, but the close brace is not. + + + + + A position is considered to be inside a block if it is on or after + the open brace and strictly before the close brace. + + + + + A position is inside a property body only if it is inside an expression body. + All block bodies for properties are part of the accessor declaration (a type + of BaseMethodDeclaration), not the property declaration. + + + + + A position is inside a property body only if it is inside an expression body. + All block bodies for properties are part of the accessor declaration (a type + of BaseMethodDeclaration), not the property declaration. + + + + + A position is inside a body if it is inside the block or expression + body. + + A position is considered to be inside a block if it is on or after + the open brace and strictly before the close brace. A position is + considered to be inside an expression body if it is on or after + the '=>' and strictly before the semicolon. + + + + + Returns true if position is within the given node and before the first excluded token. + + + + + Used to determine whether it would be appropriate to use the binder for the statement (if any). + Not used to determine whether the position is syntactically within the statement. + + + + + Used to determine whether it would be appropriate to use the binder for the statement (if any). + Not used to determine whether the position is syntactically within the statement. + + + + + Used to determine whether it would be appropriate to use the binder for the statement (if any). + Not used to determine whether the position is syntactically within the statement. + + + + Gets the parameter list. + + + Method declaration syntax. + + + Gets the return type syntax. + + + Gets the identifier. + + + Gets the constraint clause list. + + + Gets the optional semicolon token. + + + Gets the optional semicolon token. + + + Provides the base class from which the classes that represent name syntax nodes are derived. This is an abstract class. + + + + Returns the unqualified (right-most) part of a qualified or alias-qualified name, or the name itself if already unqualified. + + The unqualified (right-most) part of a qualified or alias-qualified name, or the name itself if already unqualified. + If called on an instance of returns the value of the property. + If called on an instance of returns the value of the property. + If called on an instance of returns the instance itself. + + + + + Return the name in string form, without trivia or generic arguments, for use in diagnostics. + + + + + This inspection is entirely syntactic. We are not trying to find the alias corresponding to the assembly symbol + containing the explicitly implemented interface symbol - there may be more than one. We just want to know + how the name was qualified in source so that we can make a similar qualification (for uniqueness purposes). + + + + Parameter list syntax. + + + Gets the open paren token. + + + Gets the close paren token. + + + Parameter syntax. + + + Gets the attribute declaration list. + + + Gets the modifier list. + + + Gets the identifier. + + + Class which represents the syntax node for qualified name. + + + NameSyntax node representing the name on the left side of the dot token of the qualified name. + + + SyntaxToken representing the dot. + + + SimpleNameSyntax node representing the name on the right side of the dot token of the qualified name. + + + Provides the base class from which the classes that represent simple name syntax nodes are derived. This is an abstract class. + + + SyntaxToken representing the identifier of the simple name. + + + + It's a non terminal Trivia CSharpSyntaxNode that has a tree underneath it. + + + + + Get parent trivia. + + + + + Returns whether the specified token is also the end of the line. This will + be true for , , + and all preprocessor directives. + + + + Base class for type declaration syntax (class, struct, interface). + + + Gets the type keyword token ("class", "struct", "interface"). + + + Gets the type constraint list. + + + Gets the member declarations. + + + Provides the base class from which the classes that represent type syntax nodes are derived. This is an abstract class. + + + Class which represents the syntax node for type argument list. + + + SyntaxToken representing less than. + + + SeparatedSyntaxList of TypeSyntax node representing the type arguments. + + + SyntaxToken representing greater than. + + + Class which represents the syntax node for predefined types. + + + SyntaxToken which represents the keyword corresponding to the predefined type. + + + Class which represents the syntax node for the array type. + + + TypeSyntax node representing the type of the element of the array. + + + SyntaxList of ArrayRankSpecifierSyntax nodes representing the list of rank specifiers for the array. + + + Class which represents the syntax node for pointer type. + + + TypeSyntax node that represents the element type of the pointer. + + + SyntaxToken representing the asterisk. + + + Class which represents the syntax node for a nullable type. + + + TypeSyntax node representing the type of the element. + + + SyntaxToken representing the question mark. + + + Class which represents a placeholder in the type argument list of an unbound generic type. + + + SyntaxToken representing the omitted type argument. + + + Provides the base class from which the classes that represent expression syntax nodes are derived. This is an abstract class. + + + Class which represents the syntax node for parenthesized expression. + + + SyntaxToken representing the open parenthesis. + + + ExpressionSyntax node representing the expression enclosed within the parenthesis. + + + SyntaxToken representing the close parenthesis. + + + Class which represents the syntax node for prefix unary expression. + + + SyntaxToken representing the kind of the operator of the prefix unary expression. + + + ExpressionSyntax representing the operand of the prefix unary expression. + + + Class which represents the syntax node for an "await" expression. + + + SyntaxToken representing the kind "await" keyword. + + + ExpressionSyntax representing the operand of the "await" operator. + + + Class which represents the syntax node for postfix unary expression. + + + ExpressionSyntax representing the operand of the postfix unary expression. + + + SyntaxToken representing the kind of the operator of the postfix unary expression. + + + Class which represents the syntax node for member access expression. + + + ExpressionSyntax node representing the object that the member belongs to. + + + SyntaxToken representing the kind of the operator in the member access expression. + + + SimpleNameSyntax node representing the member being accessed. + + + Class which represents the syntax node for conditional access expression. + + + ExpressionSyntax node representing the object conditionally accessed. + + + SyntaxToken representing the question mark. + + + ExpressionSyntax node representing the access expression to be executed when the object is not null. + + + Class which represents the syntax node for member binding expression. + + + SyntaxToken representing dot. + + + SimpleNameSyntax node representing the member being bound to. + + + Class which represents the syntax node for element binding expression. + + + BracketedArgumentListSyntax node representing the list of arguments of the element binding expression. + + + Class which represents the syntax node for implicit element access expression. + + + BracketedArgumentListSyntax node representing the list of arguments of the implicit element access expression. + + + Class which represents an expression that has a binary operator. + + + ExpressionSyntax node representing the expression on the left of the binary operator. + + + SyntaxToken representing the operator of the binary expression. + + + ExpressionSyntax node representing the expression on the right of the binary operator. + + + Class which represents an expression that has an assignment operator. + + + ExpressionSyntax node representing the expression on the left of the assignment operator. + + + SyntaxToken representing the operator of the assignment expression. + + + ExpressionSyntax node representing the expression on the right of the assignment operator. + + + Class which represents the syntax node for conditional expression. + + + ExpressionSyntax node representing the condition of the conditional expression. + + + SyntaxToken representing the question mark. + + + ExpressionSyntax node representing the expression to be executed when the condition is true. + + + SyntaxToken representing the colon. + + + ExpressionSyntax node representing the expression to be executed when the condition is false. + + + Provides the base class from which the classes that represent instance expression syntax nodes are derived. This is an abstract class. + + + Class which represents the syntax node for a this expression. + + + SyntaxToken representing the this keyword. + + + Class which represents the syntax node for a base expression. + + + SyntaxToken representing the base keyword. + + + Class which represents the syntax node for a literal expression. + + + SyntaxToken representing the keyword corresponding to the kind of the literal expression. + + + Class which represents the syntax node for MakeRef expression. + + + SyntaxToken representing the MakeRefKeyword. + + + SyntaxToken representing open parenthesis. + + + Argument of the primary function. + + + SyntaxToken representing close parenthesis. + + + Class which represents the syntax node for RefType expression. + + + SyntaxToken representing the RefTypeKeyword. + + + SyntaxToken representing open parenthesis. + + + Argument of the primary function. + + + SyntaxToken representing close parenthesis. + + + Class which represents the syntax node for RefValue expression. + + + SyntaxToken representing the RefValueKeyword. + + + SyntaxToken representing open parenthesis. + + + Typed reference expression. + + + Comma separating the arguments. + + + The type of the value. + + + SyntaxToken representing close parenthesis. + + + Class which represents the syntax node for Checked or Unchecked expression. + + + SyntaxToken representing the checked or unchecked keyword. + + + SyntaxToken representing open parenthesis. + + + Argument of the primary function. + + + SyntaxToken representing close parenthesis. + + + Class which represents the syntax node for Default expression. + + + SyntaxToken representing the DefaultKeyword. + + + SyntaxToken representing open parenthesis. + + + Argument of the primary function. + + + SyntaxToken representing close parenthesis. + + + Class which represents the syntax node for TypeOf expression. + + + SyntaxToken representing the TypeOfKeyword. + + + SyntaxToken representing open parenthesis. + + + The expression to return type of. + + + SyntaxToken representing close parenthesis. + + + Class which represents the syntax node for SizeOf expression. + + + SyntaxToken representing the SizeOfKeyword. + + + SyntaxToken representing open parenthesis. + + + Argument of the primary function. + + + SyntaxToken representing close parenthesis. + + + Class which represents the syntax node for invocation expression. + + + ExpressionSyntax node representing the expression part of the invocation. + + + ArgumentListSyntax node representing the list of arguments of the invocation expression. + + + Class which represents the syntax node for element access expression. + + + ExpressionSyntax node representing the expression which is accessing the element. + + + BracketedArgumentListSyntax node representing the list of arguments of the element access expression. + + + Provides the base class from which the classes that represent argument list syntax nodes are derived. This is an abstract class. + + + SeparatedSyntaxList of ArgumentSyntax nodes representing the list of arguments. + + + Class which represents the syntax node for the list of arguments. + + + SyntaxToken representing open parenthesis. + + + SeparatedSyntaxList of ArgumentSyntax representing the list of arguments. + + + SyntaxToken representing close parenthesis. + + + Class which represents the syntax node for bracketed argument list. + + + SyntaxToken representing open bracket. + + + SeparatedSyntaxList of ArgumentSyntax representing the list of arguments. + + + SyntaxToken representing close bracket. + + + Class which represents the syntax node for argument. + + + NameColonSyntax node representing the optional name arguments. + + + SyntaxToken representing the optional ref or out keyword. + + + ExpressionSyntax node representing the argument. + + + Class which represents the syntax node for name colon syntax. + + + IdentifierNameSyntax representing the identifier name. + + + SyntaxToken representing colon. + + + Class which represents the syntax node for cast expression. + + + SyntaxToken representing the open parenthesis. + + + TypeSyntax node representing the type the expression is being casted to. + + + SyntaxToken representing the close parenthesis. + + + ExpressionSyntax node representing the expression that is being casted. + + + Provides the base class from which the classes that represent anonymous function expressions are derived. + + + Gets the "async" token. + + + ExpressionSyntax or BlockSyntax representing the body of the lambda expression. + + + Provides the base class from which the classes that represent lambda expressions are derived. + + + SyntaxToken representing equals greater than. + + + Class which represents the syntax node for a simple lambda expression. + + + Gets the "async" token. + + + ParameterSyntax node representing the parameter of the lambda expression. + + + SyntaxToken representing equals greater than. + + + SyntaxNode representing the body of the lambda expression. + + + Class which represents the syntax node for parenthesized lambda expression. + + + Gets the "async" token. + + + ParameterListSyntax node representing the list of parameters for the lambda expression. + + + SyntaxToken representing equals greater than. + + + SyntaxNode representing the body of the lambda expression. + + + Class which represents the syntax node for initializer expression. + + + SyntaxToken representing the open brace. + + + SeparatedSyntaxList of ExpressionSyntax representing the list of expressions in the initializer expression. + + + SyntaxToken representing the close brace. + + + Class which represents the syntax node for object creation expression. + + + SyntaxToken representing the new keyword. + + + TypeSyntax representing the type of the object being created. + + + ArgumentListSyntax representing the list of arguments passed as part of the object creation expression. + + + InitializerExpressionSyntax representing the initializer expression for the object being created. + + + NameEqualsSyntax representing the optional name of the member being initialized. + + + ExpressionSyntax representing the value the member is initialized with. + + + Class which represents the syntax node for anonymous object creation expression. + + + SyntaxToken representing the new keyword. + + + SyntaxToken representing the open brace. + + + SeparatedSyntaxList of AnonymousObjectMemberDeclaratorSyntax representing the list of object member initializers. + + + SyntaxToken representing the close brace. + + + Class which represents the syntax node for array creation expression. + + + SyntaxToken representing the new keyword. + + + ArrayTypeSyntax node representing the type of the array. + + + InitializerExpressionSyntax node representing the initializer of the array creation expression. + + + Class which represents the syntax node for implicit array creation expression. + + + SyntaxToken representing the new keyword. + + + SyntaxToken representing the open bracket. + + + SyntaxList of SyntaxToken representing the commas in the implicit array creation expression. + + + SyntaxToken representing the close bracket. + + + InitializerExpressionSyntax representing the initializer expression of the implicit array creation expression. + + + Class which represents the syntax node for stackalloc array creation expression. + + + SyntaxToken representing the stackalloc keyword. + + + TypeSyntax node representing the type of the stackalloc array. + + + Gets the identifier. + + + Gets the identifier. + + + Gets the identifier. + + + Gets the identifier. + + + Gets the identifier. + + + Class which represents a placeholder in an array size list. + + + SyntaxToken representing the omitted array size expression. + + + The first part of an interpolated string, $" or $@" + + + List of parts of the interpolated string, each one is either a literal part or an interpolation. + + + The closing quote of the interpolated string. + + + The text contents of a part of the interpolated string. + + + The text contents of the format specifier for an interpolation. + + + Represents the base class for all statements syntax classes. + + + Gets the identifier. + + + Represents a labeled statement syntax. + + + Gets the identifier. + + + Gets a SyntaxToken that represents the colon succeeding the statement's label. + + + + Represents a goto statement syntax + + + + + Gets a SyntaxToken that represents the goto keyword. + + + + + Gets a SyntaxToken that represents the case or default keywords if any exists. + + + + + Gets a constant expression for a goto case statement. + + + + + Gets a SyntaxToken that represents the semi-colon at the end of the statement. + + + + Gets the identifier. + + + + Represents an if statement syntax. + + + + + Gets a SyntaxToken that represents the if keyword. + + + + + Gets a SyntaxToken that represents the open parenthesis before the if statement's condition expression. + + + + + Gets an ExpressionSyntax that represents the condition of the if statement. + + + + + Gets a SyntaxToken that represents the close parenthesis after the if statement's condition expression. + + + + + Gets a StatementSyntax the represents the statement to be executed when the condition is true. + + + + + Gets an ElseClauseSyntax that represents the statement to be executed when the condition is false if such statement exists. + + + + Represents an else statement syntax. + + + + Gets a syntax token + + + + Represents a switch statement syntax. + + + + Gets a SyntaxToken that represents the switch keyword. + + + + + Gets a SyntaxToken that represents the open parenthesis preceding the switch expression. + + + + + Gets an ExpressionSyntax representing the expression of the switch statement. + + + + + Gets a SyntaxToken that represents the close parenthesis succeeding the switch expression. + + + + + Gets a SyntaxToken that represents the open braces preceding the switch sections. + + + + + Gets a SyntaxList of SwitchSectionSyntax's that represents the switch sections of the switch statement. + + + + + Gets a SyntaxToken that represents the open braces succeeding the switch sections. + + + + Represents a switch section syntax of a switch statement. + + + + Gets a SyntaxList of SwitchLabelSyntax's the represents the possible labels that control can transfer to within the section. + + + + + Gets a SyntaxList of StatementSyntax's the represents the statements to be executed when control transfer to a label the belongs to the section. + + + + Represents a switch label within a switch statement. + + + + Gets a SyntaxToken that represents a case or default keywords that belongs to a switch label. + + + + + Gets a SyntaxToken that represents the colon that terminates the switch label. + + + + Represents a case label within a switch statement. + + + Gets the case keyword token. + + + + Gets an ExpressionSyntax that represents the constant expression that gets matched for the case label. + + + + Represents a default label within a switch statement. + + + Gets the default keyword token. + + + + Represents an ExternAlias directive syntax, e.g. "extern alias MyAlias;" with specifying "/r:MyAlias=SomeAssembly.dll " on the compiler command line. + + + + SyntaxToken representing the extern keyword. + + + SyntaxToken representing the alias keyword. + + + Gets the identifier. + + + SyntaxToken representing the semicolon token. + + + Member declaration syntax. + + + Class representing one or more attributes applied to a language construct. + + + Gets the open bracket token. + + + Gets the optional construct targeted by the attribute. + + + Gets the attribute declaration list. + + + Gets the close bracket token. + + + Attribute argument list syntax. + + + Gets the open paren token. + + + Gets the arguments syntax list. + + + Gets the close paren token. + + + Attribute argument syntax. + + + Gets the expression. + + + Class representing an identifier name followed by an equals token. + + + Gets the identifier name. + + + Type parameter list syntax. + + + Gets the < token. + + + Gets the parameter list. + + + Gets the > token. + + + Type parameter syntax. + + + Gets the attribute declaration list. + + + Gets the identifier. + + + Base class for type declaration syntax. + + + Gets the attribute declaration list. + + + Gets the modifier list. + + + Gets the identifier. + + + Gets the base type list. + + + Gets the open brace token. + + + Gets the close brace token. + + + Gets the optional semicolon token. + + + Class type declaration syntax. + + + Gets the class keyword token. + + + Struct type declaration syntax. + + + Gets the struct keyword token. + + + Interface type declaration syntax. + + + Gets the interface keyword token. + + + Enum type declaration syntax. + + + Gets the enum keyword token. + + + Gets the members declaration list. + + + Gets the optional semicolon token. + + + Gets the attribute declaration list. + + + Gets the identifier. + + + Base list syntax. + + + Gets the colon token. + + + Gets the base type references. + + + Provides the base class from which the classes that represent base type syntax nodes are derived. This is an abstract class. + + + Type parameter constraint clause. + + + Gets the identifier. + + + Gets the colon token. + + + Gets the constraints list. + + + Base type for type parameter constraint syntax. + + + Constructor constraint syntax. + + + Gets the "new" keyword. + + + Gets the open paren keyword. + + + Gets the close paren keyword. + + + Base type for class or struct constraint syntax. + + + Gets the constraint keyword ("class" or "struct"). + + + Type constraint syntax. + + + Gets the type syntax. + + + Gets the attribute declaration list. + + + Gets the modifier list. + + + Gets the attribute declaration list. + + + Gets the modifier list. + + + Gets the attribute declaration list. + + + Gets the modifier list. + + + Base type for method declaration syntax. + + + Gets the attribute declaration list. + + + Gets the modifier list. + + + Gets the parameter list. + + + Gets the optional semicolon token. + + + Operator declaration syntax. + + + Gets the return type. + + + Gets the "operator" keyword. + + + Gets the operator token. + + + Conversion operator declaration syntax. + + + Gets the "implicit" or "explicit" token. + + + Gets the "operator" token. + + + Gets the type. + + + Gets the optional semicolon token. + + + Constructor declaration syntax. + + + Gets the identifier. + + + Gets the optional semicolon token. + + + Constructor initializer syntax. + + + Gets the colon token. + + + Gets the "this" or "base" keyword. + + + Destructor declaration syntax. + + + Gets the tilde token. + + + Gets the identifier. + + + Gets the optional semicolon token. + + + Base type for property declaration syntax. + + + Gets the attribute declaration list. + + + Gets the modifier list. + + + Gets the type syntax. + + + Gets the optional explicit interface specifier. + + + The syntax for the expression body of an expression-bodied member. + + + Gets the identifier. + + + Gets the attribute declaration list. + + + Gets the modifier list. + + + Gets the keyword token, or identifier if an erroneous accessor declaration. + + + Gets the optional body block which may be empty, but it is null if there are no braces. + + + Gets the optional semicolon token. + + + Base type for parameter list syntax. + + + Gets the parameter list. + + + Parameter list syntax with surrounding brackets. + + + Gets the open bracket token. + + + Gets the close bracket token. + + + Gets the attribute declaration list. + + + Gets the modifier list. + + + + A symbol referenced by a cref attribute (e.g. in a <see> or <seealso> documentation comment tag). + For example, the M in <see cref="M" />. + + + + + A symbol reference that definitely refers to a type. + For example, "int", "A::B", "A.B", "A<T>", but not "M()" (has parameter list) or "this" (indexer). + NOTE: TypeCrefSyntax, QualifiedCrefSyntax, and MemberCrefSyntax overlap. The syntax in a TypeCrefSyntax + will always be bound as type, so it's safer to use QualifiedCrefSyntax or MemberCrefSyntax if the symbol + might be a non-type member. + + + + + A symbol reference to a type or non-type member that is qualified by an enclosing type or namespace. + For example, cref="System.String.ToString()". + NOTE: TypeCrefSyntax, QualifiedCrefSyntax, and MemberCrefSyntax overlap. The syntax in a TypeCrefSyntax + will always be bound as type, so it's safer to use QualifiedCrefSyntax or MemberCrefSyntax if the symbol + might be a non-type member. + + + + + The unqualified part of a CrefSyntax. + For example, "ToString()" in "object.ToString()". + NOTE: TypeCrefSyntax, QualifiedCrefSyntax, and MemberCrefSyntax overlap. The syntax in a TypeCrefSyntax + will always be bound as type, so it's safer to use QualifiedCrefSyntax or MemberCrefSyntax if the symbol + might be a non-type member. + + + + + A MemberCrefSyntax specified by a name (an identifier, predefined type keyword, or an alias-qualified name, + with an optional type parameter list) and an optional parameter list. + For example, "M", "M<T>" or "M(int)". + Also, "A::B()" or "string()". + + + + + A MemberCrefSyntax specified by a this keyword and an optional parameter list. + For example, "this" or "this[int]". + + + + + A MemberCrefSyntax specified by an operator keyword, an operator symbol and an optional parameter list. + For example, "operator +" or "operator -[int]". + NOTE: the operator must be overloadable. + + + + Gets the operator token. + + + + A MemberCrefSyntax specified by an implicit or explicit keyword, an operator keyword, a destination type, and an optional parameter list. + For example, "implicit operator int" or "explicit operator MyType(int)". + + + + + A list of cref parameters with surrounding punctuation. + Unlike regular parameters, cref parameters do not have names. + + + + Gets the parameter list. + + + + A parenthesized list of cref parameters. + + + + Gets the open paren token. + + + Gets the close paren token. + + + + A bracketed list of cref parameters. + + + + Gets the open bracket token. + + + Gets the close bracket token. + + + + An element of a BaseCrefParameterListSyntax. + Unlike a regular parameter, a cref parameter has only an optional ref or out keyword and a type - + there is no name and there are no attributes or other modifiers. + + + + + Defines a set of methods to determine how Unicode characters are treated by the C# compiler. + + + + + Returns true if the Unicode character is a hexadecimal digit. + + The Unicode character. + true if the character is a hexadecimal digit 0-9, A-F, a-f. + + + + Returns true if the Unicode character is a decimal digit. + + The Unicode character. + true if the Unicode character is a decimal digit. + + + + Returns the value of a hexadecimal Unicode character. + + The Unicode character. + + + + Returns the value of a decimal Unicode character. + + The Unicode character. + + + + Returns true if the Unicode character represents a whitespace. + + The Unicode character. + + + + Returns true if the Unicode character is a newline character. + + The Unicode character. + + + + Returns true if the Unicode character can be the starting character of a C# identifier. + + The Unicode character. + + + + Returns true if the Unicode character can be a part of a C# identifier. + + The Unicode character. + + + + Check that the name is a valid identifier. + + + + + Spec section 2.4.2 says that identifiers are compared without regard + to leading "@" characters or unicode formatting characters. As in dev10, + this is actually accomplished by dropping such characters during parsing. + Unfortunately, metadata names can still contain these characters and will + not be referenceable from source if they do (lookup will fail since the + characters will have been dropped from the search string). + See DevDiv #14432 for more. + + + + + A custom equality comparer for + + + PERF: The framework specializes EqualityComparer for enums, but only if the underlying type is System.Int32 + Since SyntaxKind's underlying type is System.UInt16, ObjectEqualityComparer will be chosen instead. + + + + + Some preprocessor keywords are only keywords when they appear after a + hash sign (#). For these keywords, the lexer will produce tokens with + Kind = SyntaxKind.IdentifierToken and ContextualKind set to the keyword + SyntaxKind. + + + This wrinkle is specifically not publicly exposed. + + + + + Member declarations that can appear in global code (other than type declarations). + + + + + Returns true if the node is the alias of an AliasQualifiedNameSyntax + + + + + Returns true if the node is the object of an invocation expression. + + + + + Returns true if the node is the object of an element access expression. + + + + + Returns true if the node is in a tree location that is expected to be a type + + + + + + + Returns true if a node is in a tree location that is expected to be either a namespace or type + + + + + + + Is the node the name of a named argument of an invocation, object creation expression, + constructor initializer, or element access, but not an attribute. + + + + + Is the expression the initializer in a fixed statement? + + + + + Displays a value in the C# style. + + + Separate from because we want to link this functionality into + the Formatter project and we don't want it to be public there. + + + + + + Returns a string representation of an object of primitive type. + + A value to display as a string. + Options used to customize formatting of an object value. + A string representation of an object of primitive type (or null if the type is not supported). + + Handles , , , + , , , , , + , , , , , + and null. + + + + + Returns true if the character should be replaced and sets + to the replacement text if the + character is replaced with text other than the Unicode escape sequence. + + + + + Returns a C# string literal with the given value. + + The value that the resulting string literal should have. + Options used to customize formatting of an object value. + A string literal with the given value. + + Optionally escapes non-printable characters. + + + + + Returns a C# character literal with the given value. + + The value that the resulting character literal should have. + Options used to customize formatting of an object value. + A character literal with the given value. + + + + Displays a symbol in the C# style. + + + + + + Displays a symbol in the C# style, based on a . + + The symbol to be displayed. + The formatting options to apply. If null is passed, will be used. + A formatted string that can be displayed to the user. + + The return value is not expected to be syntactically valid C#. + + + + + Displays a symbol in the C# style, based on a . + Based on the context, qualify type and member names as little as possible without + introducing ambiguities. + + The symbol to be displayed. + Semantic information about the context in which the symbol is being displayed. + A position within the or . + The formatting options to apply. If null is passed, will be used. + A formatted string that can be displayed to the user. + + The return value is not expected to be syntactically valid C#. + + + + + Convert a symbol to an array of string parts, each of which has a kind. Useful for + colorizing the display string. + + The symbol to be displayed. + The formatting options to apply. If null is passed, will be used. + A list of display parts. + + Parts are not localized until they are converted to strings. + + + + + Convert a symbol to an array of string parts, each of which has a kind. Useful for + colorizing the display string. + + The symbol to be displayed. + Semantic information about the context in which the symbol is being displayed. + A position within the or . + The formatting options to apply. If null is passed, will be used. + A list of display parts. + + Parts are not localized until they are converted to strings. + + + + + Returns a string representation of an object of primitive type. + + A value to display as a string. + Whether or not to quote string literals. + Whether or not to display integral literals in hexadecimal. + A string representation of an object of primitive type (or null if the type is not supported). + + Handles , , , + , , , , , + , , , , , + and null. + + + + + Returns a C# string literal with the given value. + + The value that the resulting string literal should have. + True to put (double) quotes around the string literal. + A string literal with the given value. + + Escapes non-printable characters. + + + + + Returns a C# character literal with the given value. + + The value that the resulting character literal should have. + True to put (single) quotes around the character literal. + A character literal with the given value. + + Escapes non-printable characters. + + + + + Some error messages are particularly confusing if multiple placeholders are substituted + with the same string. For example, "cannot convert from 'Foo' to 'Foo'". Usually, this + occurs because there are two types in different contexts with the same qualified name. + The solution is to provide additional qualification on each symbol - either a source + location, an assembly path, or an assembly identity. + + + Performs the same function as ErrArgFlags::Unique in the native compiler. + + + + + Virtual dispatch based on a symbol's particular class. + + Additional argument type + Result type + + + + Call the correct VisitXXX method in this class based on the particular type of symbol that is passed in. + Return default(TResult) if symbol is null + + + + + The default Visit method called when visiting any and + if visiting specific symbol method VisitXXX is not overridden + + The visited symbol + Additional argument + + + + + Called when visiting an ; Override this method with + specific implementation; Calling default if it's not + overridden + + The visited symbol + Additional argument + + + + + Called when visiting a ; Override this method with specific + implementation; Calling default if it's not overridden + + The visited symbol + Additional argument + + + + + Called when visiting a ; Should override this method if + want to visit members of the namespace; Calling + and loop over each member; calling on it Or override this with + specific implementation; Calling if it's not + overridden + + The visited symbol + Additional argument + + + + + Called when visiting a ; Override this with specific + implementation; Calling if it's not overridden + + The visited symbol + Additional argument + + + + + Called when visiting an ; Override this with specific + implementation; Calling if it's not overridden + + The visited symbol + Additional argument + + + + + Called when visiting a ; Override this with specific + implementation; Calling if it's not overridden + + The visited symbol + Additional argument + + + + + Called when visiting an + Error symbol is created when there is compiler error; Override this with specific + implementation; Calling if it's not overridden + + The visited symbol + Additional argument + + + + + Called when visiting a ; Override this with specific + implementation; Calling if it's not overridden + + The visited symbol + Additional argument + + + + + Called when visiting a ; Override this with specific + implementation; Calling if it's not overridden + + The visited symbol + Additional argument + + + + + Called when visiting a ; Override this with specific + implementation; Calling default if it's not overridden + + The visited symbol + Additional argument + + + + + Called when visiting a ; Override this with specific + implementation; Calling default if it's not overridden + + The visited symbol + Additional argument + + + + + Called when visiting a ; Override this with specific + implementation; Calling default if it's not overridden + + The visited symbol + Additional argument + + + + + Called when visiting an ; Override this with specific + implementation; Calling default if it's not overridden + + The visited symbol + Additional argument + + + + + Called when visiting a ; Override this with specific + implementation; Calling default if it's not overridden + + The visited symbol + Additional argument + + + + + Called when visiting a ; Override this with specific + implementation; Calling default if it's not overridden + + The visited symbol + Additional argument + + + + + Called when visiting a ; Override this with specific + implementation; Calling default if it's not overridden + + The visited symbol + Additional argument + + + + + Called when visiting an ; Override this with specific + implementation; Calling default if it's not overridden + + The visited symbol + Additional argument + + + + + Called when visiting a ; Override this with specific + implementation; Calling default if it's not overridden + + The visited symbol + Additional argument + + + + + Returns the System.String that represents the current TypedConstant. + + A System.String that represents the current TypedConstant. + + + + Determine whether there is any substitution of type parameters that will + make two types identical. + + + + + Determine whether there is any substitution of type parameters that will + make two types identical. + + LHS + RHS + + Substitutions performed so far (or null for none). + Keys are type parameters, values are types (possibly type parameters). + Will be updated with new substitutions by the callee. + Should be ignored when false is returned. + + True if there exists a type map such that Map(LHS) == Map(RHS). + + Derived from Dev10's BSYMMGR::UnifyTypes. + Two types will not unify if they have different custom modifiers. + + + + + Return true if the given type contains the specified type parameter. + + + + + Represents a non-terminal node in the syntax tree. + + + + + Used by structured trivia which has "parent == null", and therefore must know its + SyntaxTree explicitly when created. + + + + + Creates a clone of a red node that can be used as a root of given syntaxTree. + New node has no parents, position == 0, and syntaxTree as specified. + + + + + Returns a non-null that owns this node. + If this node was created with an explicit non-null , returns that tree. + Otherwise, if this node has a non-null parent, then returns the parent's . + Otherwise, returns a newly created rooted at this node, preserving this node's reference identity. + + + + + The node that contains this node in its Children collection. + + + + + Returns the of the node. + + + + + The language name that this node is syntax of. + + + + + The list of trivia that appears before this node in the source code. + + + + + The list of trivia that appears after this node in the source code. + + + + + Returns the string representation of this node, not including its leading and trailing trivia. + + The string representation of this node, not including its leading and trailing trivia. + The length of the returned string is always the same as Span.Length + + + + Returns full string representation of this node including its leading and trailing trivia. + + The full string representation of this node including its leading and trailing trivia. + The length of the returned string is always the same as FullSpan.Length + + + + Writes the full text of this node to the specified TextWriter. + + + + + Serialize the syntax node into a byte stream. + + + + + Deserialize a syntax node from the byte stream. + + + + + Determines whether this node is structurally equivalent to another. + + + + + Gets a for this node. + + + + + Gets a SyntaxReference for this syntax node. SyntaxReferences can be used to + regain access to a syntax node without keeping the entire tree and source text in + memory. + + + + + Gets a list of all the diagnostics in the sub tree that has this node as its root. + This method does not filter diagnostics based on #pragmas and compiler options + like nowarn, warnaserror etc. + + + + + Gets the first directive of the tree rooted by this node. + + + + + Gets the last directive of the tree rooted by this node. + + + + + Returns child node or token that contains given position. + + + + + Gets the first token of the tree rooted by this node. + + True if zero width tokens should be included, false by + default. + True if skipped tokens should be included, false by default. + True if directives should be included, false by default. + True if documentation comments should be + included, false by default. + + + + + Gets the first token of the tree rooted by this node. + + Only tokens for which this predicate returns true are included. Pass null to include + all tokens. + Steps into trivia if this is not null. Only trivia for which this delegate returns + true are included. + + + + + Gets the last non-zero-width token of the tree rooted by this node. + + True if zero width tokens should be included, false by + default. + True if skipped tokens should be included, false by default. + True if directives should be included, false by default. + True if documentation comments should be + included, false by default. + + + + + Finds a token according to the following rules: + 1) If position matches the End of the node/s FullSpan and the node is CompilationUnit, + then EoF is returned. + + 2) If node.FullSpan.Contains(position) then the token that contains given position is + returned. + + 3) Otherwise an ArgumentOutOfRangeException is thrown + + + + + Finds a token according to the following rules: + 1) If position matches the End of the node/s FullSpan and the node is CompilationUnit, + then EoF is returned. + + 2) If node.FullSpan.Contains(position) then the token that contains given position is + returned. + + 3) Otherwise an ArgumentOutOfRangeException is thrown + + + + + Finds a descendant trivia of this node at the specified position, where the position is + within the span of the node. + + The character position of the trivia relative to the beginning of + the file. + Specifies a function that determines per trivia node, whether to + descend into structured trivia of that node. + + + + + Finds a descendant trivia of this node whose span includes the supplied position. + + The character position of the trivia relative to the beginning of + the file. + Whether to search inside structured trivia. + + + + Determine if this node is structurally equivalent to another. + + + + + + + Represents a which descends an entire graph and + may replace or remove visited SyntaxNodes in depth-first order. + + + + + The parsed representation of a C# source document. + + + + + The options used by the parser to produce the syntax tree. + + + + + Produces a clone of a which will have current syntax tree as its parent. + + Caller must guarantee that if the same instance of makes multiple calls + to this function, only one result is observable. + + Type of the syntax node. + The original syntax node. + A clone of the original syntax node that has current as its parent. + + + + Gets the root node of the syntax tree. + + + + + Gets the root node of the syntax tree if it is already available. + + + + + Gets the root node of the syntax tree asynchronously. + + + By default, the work associated with this method will be executed immediately on the current thread. + Implementations that wish to schedule this work differently should override . + + + + + Gets the root of the syntax tree statically typed as . + + + Ensure that is true for this tree prior to invoking this method. + + Throws this exception if is false. + + + + Determines if two trees are the same, disregarding trivia differences. + + The tree to compare against. + + If true then the trees are equivalent if the contained nodes and tokens declaring metadata visible symbolic information are equivalent, + ignoring any differences of nodes inside method bodies or initializer expressions, otherwise all nodes and tokens must be equivalent. + + + + + Stores positions where preprocessor state changes. Sorted by position. + The updated state can be found in array at the same index. + + + + + Preprocessor states corresponding to positions in . + + + + + Creates a new syntax tree from a syntax node. + + + + + Creates a new syntax tree from a syntax node with text that should correspond to the syntax node. + + This is used by the ExpressionEvaluator. + + + + + Internal helper for class to create a new syntax tree rooted at the given root node. + This method does not create a clone of the given root, but instead preserves it's reference identity. + + NOTE: This method is only intended to be used from property. + NOTE: Do not use this method elsewhere, instead use method for creating a syntax tree. + + + + + Produces a syntax tree by parsing the source text. + + + + + Produces a syntax tree by parsing the source text. + + + + + Creates a new syntax based off this tree using a new source text. + + + If the new source text is a minor change from the current source text an incremental parse will occur + reusing most of the current syntax tree internal data. Otherwise, a full parse will occur using the new + source text. + + + + + Produces a pessimistic list of spans that denote the regions of text in this tree that + are changed from the text of the old tree. + + The old tree. Cannot be null. + The list is pessimistic because it may claim more or larger regions than actually changed. + + + + Gets a list of text changes that when applied to the old tree produce this tree. + + The old tree. Cannot be null. + The list of changes may be different than the original changes that produced this tree. + + + + Gets the location in terms of path, line and column for a given span. + + Span within the tree. + Cancellation token. + + that contains path, line and column information. + + The values are not affected by line mapping directives (#line). + + + + Gets the location in terms of path, line and column after applying source line mapping directives (#line). + + Span within the tree. + Cancellation token. + + A valid that contains path, line and column information. + + If the location path is mapped the resulting path is the path specified in the corresponding #line, + otherwise it's . + + + A location path is considered mapped if the first #line directive that precedes it and that + either specifies an explicit file path or is #line default exists and specifies an explicit path. + + + + + + Gets a for a . FileLinePositionSpans are used + primarily for diagnostics and source locations. + + The source to convert. + When the method returns, contains a boolean value indicating whether this span is considered hidden or not. + A resulting . + + + + Gets a boolean value indicating whether there are any hidden regions in the tree. + + True if there is at least one hidden region. + + + + Given the error code and the source location, get the warning state based on #pragma warning directives. + + Error code. + Source location. + + + + Gets a for the specified text . + + + + + Gets a list of all the diagnostics in the sub tree that has the specified node as its root. + + + This method does not filter diagnostics based on #pragmas and compiler options + like /nowarn, /warnaserror etc. + + + + + Gets a list of all the diagnostics associated with the token and any related trivia. + + + This method does not filter diagnostics based on #pragmas and compiler options + like /nowarn, /warnaserror etc. + + + + + Gets a list of all the diagnostics associated with the trivia. + + + This method does not filter diagnostics based on #pragmas and compiler options + like /nowarn, /warnaserror etc. + + + + + Gets a list of all the diagnostics in either the sub tree that has the specified node as its root or + associated with the token and its related trivia. + + + This method does not filter diagnostics based on #pragmas and compiler options + like /nowarn, /warnaserror etc. + + + + + Gets a list of all the diagnostics in the syntax tree. + + + This method does not filter diagnostics based on #pragmas and compiler options + like /nowarn, /warnaserror etc. + + + + + Represents a visitor that visits only the single CSharpSyntaxNode + passed into its Visit method and produces + a value of the type specified by the parameter. + + + The type of the return value this visitor's Visit method. + + + + Called when the visitor visits a IdentifierNameSyntax node. + + + Called when the visitor visits a QualifiedNameSyntax node. + + + Called when the visitor visits a GenericNameSyntax node. + + + Called when the visitor visits a TypeArgumentListSyntax node. + + + Called when the visitor visits a AliasQualifiedNameSyntax node. + + + Called when the visitor visits a PredefinedTypeSyntax node. + + + Called when the visitor visits a ArrayTypeSyntax node. + + + Called when the visitor visits a ArrayRankSpecifierSyntax node. + + + Called when the visitor visits a PointerTypeSyntax node. + + + Called when the visitor visits a NullableTypeSyntax node. + + + Called when the visitor visits a OmittedTypeArgumentSyntax node. + + + Called when the visitor visits a ParenthesizedExpressionSyntax node. + + + Called when the visitor visits a PrefixUnaryExpressionSyntax node. + + + Called when the visitor visits a AwaitExpressionSyntax node. + + + Called when the visitor visits a PostfixUnaryExpressionSyntax node. + + + Called when the visitor visits a MemberAccessExpressionSyntax node. + + + Called when the visitor visits a ConditionalAccessExpressionSyntax node. + + + Called when the visitor visits a MemberBindingExpressionSyntax node. + + + Called when the visitor visits a ElementBindingExpressionSyntax node. + + + Called when the visitor visits a ImplicitElementAccessSyntax node. + + + Called when the visitor visits a BinaryExpressionSyntax node. + + + Called when the visitor visits a AssignmentExpressionSyntax node. + + + Called when the visitor visits a ConditionalExpressionSyntax node. + + + Called when the visitor visits a ThisExpressionSyntax node. + + + Called when the visitor visits a BaseExpressionSyntax node. + + + Called when the visitor visits a LiteralExpressionSyntax node. + + + Called when the visitor visits a MakeRefExpressionSyntax node. + + + Called when the visitor visits a RefTypeExpressionSyntax node. + + + Called when the visitor visits a RefValueExpressionSyntax node. + + + Called when the visitor visits a CheckedExpressionSyntax node. + + + Called when the visitor visits a DefaultExpressionSyntax node. + + + Called when the visitor visits a TypeOfExpressionSyntax node. + + + Called when the visitor visits a SizeOfExpressionSyntax node. + + + Called when the visitor visits a InvocationExpressionSyntax node. + + + Called when the visitor visits a ElementAccessExpressionSyntax node. + + + Called when the visitor visits a ArgumentListSyntax node. + + + Called when the visitor visits a BracketedArgumentListSyntax node. + + + Called when the visitor visits a ArgumentSyntax node. + + + Called when the visitor visits a NameColonSyntax node. + + + Called when the visitor visits a CastExpressionSyntax node. + + + Called when the visitor visits a AnonymousMethodExpressionSyntax node. + + + Called when the visitor visits a SimpleLambdaExpressionSyntax node. + + + Called when the visitor visits a ParenthesizedLambdaExpressionSyntax node. + + + Called when the visitor visits a InitializerExpressionSyntax node. + + + Called when the visitor visits a ObjectCreationExpressionSyntax node. + + + Called when the visitor visits a AnonymousObjectMemberDeclaratorSyntax node. + + + Called when the visitor visits a AnonymousObjectCreationExpressionSyntax node. + + + Called when the visitor visits a ArrayCreationExpressionSyntax node. + + + Called when the visitor visits a ImplicitArrayCreationExpressionSyntax node. + + + Called when the visitor visits a StackAllocArrayCreationExpressionSyntax node. + + + Called when the visitor visits a QueryExpressionSyntax node. + + + Called when the visitor visits a QueryBodySyntax node. + + + Called when the visitor visits a FromClauseSyntax node. + + + Called when the visitor visits a LetClauseSyntax node. + + + Called when the visitor visits a JoinClauseSyntax node. + + + Called when the visitor visits a JoinIntoClauseSyntax node. + + + Called when the visitor visits a WhereClauseSyntax node. + + + Called when the visitor visits a OrderByClauseSyntax node. + + + Called when the visitor visits a OrderingSyntax node. + + + Called when the visitor visits a SelectClauseSyntax node. + + + Called when the visitor visits a GroupClauseSyntax node. + + + Called when the visitor visits a QueryContinuationSyntax node. + + + Called when the visitor visits a OmittedArraySizeExpressionSyntax node. + + + Called when the visitor visits a InterpolatedStringExpressionSyntax node. + + + Called when the visitor visits a InterpolatedStringTextSyntax node. + + + Called when the visitor visits a InterpolationSyntax node. + + + Called when the visitor visits a InterpolationAlignmentClauseSyntax node. + + + Called when the visitor visits a InterpolationFormatClauseSyntax node. + + + Called when the visitor visits a GlobalStatementSyntax node. + + + Called when the visitor visits a BlockSyntax node. + + + Called when the visitor visits a LocalDeclarationStatementSyntax node. + + + Called when the visitor visits a VariableDeclarationSyntax node. + + + Called when the visitor visits a VariableDeclaratorSyntax node. + + + Called when the visitor visits a EqualsValueClauseSyntax node. + + + Called when the visitor visits a ExpressionStatementSyntax node. + + + Called when the visitor visits a EmptyStatementSyntax node. + + + Called when the visitor visits a LabeledStatementSyntax node. + + + Called when the visitor visits a GotoStatementSyntax node. + + + Called when the visitor visits a BreakStatementSyntax node. + + + Called when the visitor visits a ContinueStatementSyntax node. + + + Called when the visitor visits a ReturnStatementSyntax node. + + + Called when the visitor visits a ThrowStatementSyntax node. + + + Called when the visitor visits a YieldStatementSyntax node. + + + Called when the visitor visits a WhileStatementSyntax node. + + + Called when the visitor visits a DoStatementSyntax node. + + + Called when the visitor visits a ForStatementSyntax node. + + + Called when the visitor visits a ForEachStatementSyntax node. + + + Called when the visitor visits a UsingStatementSyntax node. + + + Called when the visitor visits a FixedStatementSyntax node. + + + Called when the visitor visits a CheckedStatementSyntax node. + + + Called when the visitor visits a UnsafeStatementSyntax node. + + + Called when the visitor visits a LockStatementSyntax node. + + + Called when the visitor visits a IfStatementSyntax node. + + + Called when the visitor visits a ElseClauseSyntax node. + + + Called when the visitor visits a SwitchStatementSyntax node. + + + Called when the visitor visits a SwitchSectionSyntax node. + + + Called when the visitor visits a CaseSwitchLabelSyntax node. + + + Called when the visitor visits a DefaultSwitchLabelSyntax node. + + + Called when the visitor visits a TryStatementSyntax node. + + + Called when the visitor visits a CatchClauseSyntax node. + + + Called when the visitor visits a CatchDeclarationSyntax node. + + + Called when the visitor visits a CatchFilterClauseSyntax node. + + + Called when the visitor visits a FinallyClauseSyntax node. + + + Called when the visitor visits a CompilationUnitSyntax node. + + + Called when the visitor visits a ExternAliasDirectiveSyntax node. + + + Called when the visitor visits a UsingDirectiveSyntax node. + + + Called when the visitor visits a NamespaceDeclarationSyntax node. + + + Called when the visitor visits a AttributeListSyntax node. + + + Called when the visitor visits a AttributeTargetSpecifierSyntax node. + + + Called when the visitor visits a AttributeSyntax node. + + + Called when the visitor visits a AttributeArgumentListSyntax node. + + + Called when the visitor visits a AttributeArgumentSyntax node. + + + Called when the visitor visits a NameEqualsSyntax node. + + + Called when the visitor visits a TypeParameterListSyntax node. + + + Called when the visitor visits a TypeParameterSyntax node. + + + Called when the visitor visits a ClassDeclarationSyntax node. + + + Called when the visitor visits a StructDeclarationSyntax node. + + + Called when the visitor visits a InterfaceDeclarationSyntax node. + + + Called when the visitor visits a EnumDeclarationSyntax node. + + + Called when the visitor visits a DelegateDeclarationSyntax node. + + + Called when the visitor visits a EnumMemberDeclarationSyntax node. + + + Called when the visitor visits a BaseListSyntax node. + + + Called when the visitor visits a SimpleBaseTypeSyntax node. + + + Called when the visitor visits a TypeParameterConstraintClauseSyntax node. + + + Called when the visitor visits a ConstructorConstraintSyntax node. + + + Called when the visitor visits a ClassOrStructConstraintSyntax node. + + + Called when the visitor visits a TypeConstraintSyntax node. + + + Called when the visitor visits a FieldDeclarationSyntax node. + + + Called when the visitor visits a EventFieldDeclarationSyntax node. + + + Called when the visitor visits a ExplicitInterfaceSpecifierSyntax node. + + + Called when the visitor visits a MethodDeclarationSyntax node. + + + Called when the visitor visits a OperatorDeclarationSyntax node. + + + Called when the visitor visits a ConversionOperatorDeclarationSyntax node. + + + Called when the visitor visits a ConstructorDeclarationSyntax node. + + + Called when the visitor visits a ConstructorInitializerSyntax node. + + + Called when the visitor visits a DestructorDeclarationSyntax node. + + + Called when the visitor visits a PropertyDeclarationSyntax node. + + + Called when the visitor visits a ArrowExpressionClauseSyntax node. + + + Called when the visitor visits a EventDeclarationSyntax node. + + + Called when the visitor visits a IndexerDeclarationSyntax node. + + + Called when the visitor visits a AccessorListSyntax node. + + + Called when the visitor visits a AccessorDeclarationSyntax node. + + + Called when the visitor visits a ParameterListSyntax node. + + + Called when the visitor visits a BracketedParameterListSyntax node. + + + Called when the visitor visits a ParameterSyntax node. + + + Called when the visitor visits a IncompleteMemberSyntax node. + + + Called when the visitor visits a SkippedTokensTriviaSyntax node. + + + Called when the visitor visits a DocumentationCommentTriviaSyntax node. + + + Called when the visitor visits a TypeCrefSyntax node. + + + Called when the visitor visits a QualifiedCrefSyntax node. + + + Called when the visitor visits a NameMemberCrefSyntax node. + + + Called when the visitor visits a IndexerMemberCrefSyntax node. + + + Called when the visitor visits a OperatorMemberCrefSyntax node. + + + Called when the visitor visits a ConversionOperatorMemberCrefSyntax node. + + + Called when the visitor visits a CrefParameterListSyntax node. + + + Called when the visitor visits a CrefBracketedParameterListSyntax node. + + + Called when the visitor visits a CrefParameterSyntax node. + + + Called when the visitor visits a XmlElementSyntax node. + + + Called when the visitor visits a XmlElementStartTagSyntax node. + + + Called when the visitor visits a XmlElementEndTagSyntax node. + + + Called when the visitor visits a XmlEmptyElementSyntax node. + + + Called when the visitor visits a XmlNameSyntax node. + + + Called when the visitor visits a XmlPrefixSyntax node. + + + Called when the visitor visits a XmlTextAttributeSyntax node. + + + Called when the visitor visits a XmlCrefAttributeSyntax node. + + + Called when the visitor visits a XmlNameAttributeSyntax node. + + + Called when the visitor visits a XmlTextSyntax node. + + + Called when the visitor visits a XmlCDataSectionSyntax node. + + + Called when the visitor visits a XmlProcessingInstructionSyntax node. + + + Called when the visitor visits a XmlCommentSyntax node. + + + Called when the visitor visits a IfDirectiveTriviaSyntax node. + + + Called when the visitor visits a ElifDirectiveTriviaSyntax node. + + + Called when the visitor visits a ElseDirectiveTriviaSyntax node. + + + Called when the visitor visits a EndIfDirectiveTriviaSyntax node. + + + Called when the visitor visits a RegionDirectiveTriviaSyntax node. + + + Called when the visitor visits a EndRegionDirectiveTriviaSyntax node. + + + Called when the visitor visits a ErrorDirectiveTriviaSyntax node. + + + Called when the visitor visits a WarningDirectiveTriviaSyntax node. + + + Called when the visitor visits a BadDirectiveTriviaSyntax node. + + + Called when the visitor visits a DefineDirectiveTriviaSyntax node. + + + Called when the visitor visits a UndefDirectiveTriviaSyntax node. + + + Called when the visitor visits a LineDirectiveTriviaSyntax node. + + + Called when the visitor visits a PragmaWarningDirectiveTriviaSyntax node. + + + Called when the visitor visits a PragmaChecksumDirectiveTriviaSyntax node. + + + Called when the visitor visits a ReferenceDirectiveTriviaSyntax node. + + + Called when the visitor visits a LoadDirectiveTriviaSyntax node. + + + Called when the visitor visits a ShebangDirectiveTriviaSyntax node. + + + + Represents a visitor that visits only the single CSharpSyntaxNode + passed into its Visit method. + + + + Called when the visitor visits a IdentifierNameSyntax node. + + + Called when the visitor visits a QualifiedNameSyntax node. + + + Called when the visitor visits a GenericNameSyntax node. + + + Called when the visitor visits a TypeArgumentListSyntax node. + + + Called when the visitor visits a AliasQualifiedNameSyntax node. + + + Called when the visitor visits a PredefinedTypeSyntax node. + + + Called when the visitor visits a ArrayTypeSyntax node. + + + Called when the visitor visits a ArrayRankSpecifierSyntax node. + + + Called when the visitor visits a PointerTypeSyntax node. + + + Called when the visitor visits a NullableTypeSyntax node. + + + Called when the visitor visits a OmittedTypeArgumentSyntax node. + + + Called when the visitor visits a ParenthesizedExpressionSyntax node. + + + Called when the visitor visits a PrefixUnaryExpressionSyntax node. + + + Called when the visitor visits a AwaitExpressionSyntax node. + + + Called when the visitor visits a PostfixUnaryExpressionSyntax node. + + + Called when the visitor visits a MemberAccessExpressionSyntax node. + + + Called when the visitor visits a ConditionalAccessExpressionSyntax node. + + + Called when the visitor visits a MemberBindingExpressionSyntax node. + + + Called when the visitor visits a ElementBindingExpressionSyntax node. + + + Called when the visitor visits a ImplicitElementAccessSyntax node. + + + Called when the visitor visits a BinaryExpressionSyntax node. + + + Called when the visitor visits a AssignmentExpressionSyntax node. + + + Called when the visitor visits a ConditionalExpressionSyntax node. + + + Called when the visitor visits a ThisExpressionSyntax node. + + + Called when the visitor visits a BaseExpressionSyntax node. + + + Called when the visitor visits a LiteralExpressionSyntax node. + + + Called when the visitor visits a MakeRefExpressionSyntax node. + + + Called when the visitor visits a RefTypeExpressionSyntax node. + + + Called when the visitor visits a RefValueExpressionSyntax node. + + + Called when the visitor visits a CheckedExpressionSyntax node. + + + Called when the visitor visits a DefaultExpressionSyntax node. + + + Called when the visitor visits a TypeOfExpressionSyntax node. + + + Called when the visitor visits a SizeOfExpressionSyntax node. + + + Called when the visitor visits a InvocationExpressionSyntax node. + + + Called when the visitor visits a ElementAccessExpressionSyntax node. + + + Called when the visitor visits a ArgumentListSyntax node. + + + Called when the visitor visits a BracketedArgumentListSyntax node. + + + Called when the visitor visits a ArgumentSyntax node. + + + Called when the visitor visits a NameColonSyntax node. + + + Called when the visitor visits a CastExpressionSyntax node. + + + Called when the visitor visits a AnonymousMethodExpressionSyntax node. + + + Called when the visitor visits a SimpleLambdaExpressionSyntax node. + + + Called when the visitor visits a ParenthesizedLambdaExpressionSyntax node. + + + Called when the visitor visits a InitializerExpressionSyntax node. + + + Called when the visitor visits a ObjectCreationExpressionSyntax node. + + + Called when the visitor visits a AnonymousObjectMemberDeclaratorSyntax node. + + + Called when the visitor visits a AnonymousObjectCreationExpressionSyntax node. + + + Called when the visitor visits a ArrayCreationExpressionSyntax node. + + + Called when the visitor visits a ImplicitArrayCreationExpressionSyntax node. + + + Called when the visitor visits a StackAllocArrayCreationExpressionSyntax node. + + + Called when the visitor visits a QueryExpressionSyntax node. + + + Called when the visitor visits a QueryBodySyntax node. + + + Called when the visitor visits a FromClauseSyntax node. + + + Called when the visitor visits a LetClauseSyntax node. + + + Called when the visitor visits a JoinClauseSyntax node. + + + Called when the visitor visits a JoinIntoClauseSyntax node. + + + Called when the visitor visits a WhereClauseSyntax node. + + + Called when the visitor visits a OrderByClauseSyntax node. + + + Called when the visitor visits a OrderingSyntax node. + + + Called when the visitor visits a SelectClauseSyntax node. + + + Called when the visitor visits a GroupClauseSyntax node. + + + Called when the visitor visits a QueryContinuationSyntax node. + + + Called when the visitor visits a OmittedArraySizeExpressionSyntax node. + + + Called when the visitor visits a InterpolatedStringExpressionSyntax node. + + + Called when the visitor visits a InterpolatedStringTextSyntax node. + + + Called when the visitor visits a InterpolationSyntax node. + + + Called when the visitor visits a InterpolationAlignmentClauseSyntax node. + + + Called when the visitor visits a InterpolationFormatClauseSyntax node. + + + Called when the visitor visits a GlobalStatementSyntax node. + + + Called when the visitor visits a BlockSyntax node. + + + Called when the visitor visits a LocalDeclarationStatementSyntax node. + + + Called when the visitor visits a VariableDeclarationSyntax node. + + + Called when the visitor visits a VariableDeclaratorSyntax node. + + + Called when the visitor visits a EqualsValueClauseSyntax node. + + + Called when the visitor visits a ExpressionStatementSyntax node. + + + Called when the visitor visits a EmptyStatementSyntax node. + + + Called when the visitor visits a LabeledStatementSyntax node. + + + Called when the visitor visits a GotoStatementSyntax node. + + + Called when the visitor visits a BreakStatementSyntax node. + + + Called when the visitor visits a ContinueStatementSyntax node. + + + Called when the visitor visits a ReturnStatementSyntax node. + + + Called when the visitor visits a ThrowStatementSyntax node. + + + Called when the visitor visits a YieldStatementSyntax node. + + + Called when the visitor visits a WhileStatementSyntax node. + + + Called when the visitor visits a DoStatementSyntax node. + + + Called when the visitor visits a ForStatementSyntax node. + + + Called when the visitor visits a ForEachStatementSyntax node. + + + Called when the visitor visits a UsingStatementSyntax node. + + + Called when the visitor visits a FixedStatementSyntax node. + + + Called when the visitor visits a CheckedStatementSyntax node. + + + Called when the visitor visits a UnsafeStatementSyntax node. + + + Called when the visitor visits a LockStatementSyntax node. + + + Called when the visitor visits a IfStatementSyntax node. + + + Called when the visitor visits a ElseClauseSyntax node. + + + Called when the visitor visits a SwitchStatementSyntax node. + + + Called when the visitor visits a SwitchSectionSyntax node. + + + Called when the visitor visits a CaseSwitchLabelSyntax node. + + + Called when the visitor visits a DefaultSwitchLabelSyntax node. + + + Called when the visitor visits a TryStatementSyntax node. + + + Called when the visitor visits a CatchClauseSyntax node. + + + Called when the visitor visits a CatchDeclarationSyntax node. + + + Called when the visitor visits a CatchFilterClauseSyntax node. + + + Called when the visitor visits a FinallyClauseSyntax node. + + + Called when the visitor visits a CompilationUnitSyntax node. + + + Called when the visitor visits a ExternAliasDirectiveSyntax node. + + + Called when the visitor visits a UsingDirectiveSyntax node. + + + Called when the visitor visits a NamespaceDeclarationSyntax node. + + + Called when the visitor visits a AttributeListSyntax node. + + + Called when the visitor visits a AttributeTargetSpecifierSyntax node. + + + Called when the visitor visits a AttributeSyntax node. + + + Called when the visitor visits a AttributeArgumentListSyntax node. + + + Called when the visitor visits a AttributeArgumentSyntax node. + + + Called when the visitor visits a NameEqualsSyntax node. + + + Called when the visitor visits a TypeParameterListSyntax node. + + + Called when the visitor visits a TypeParameterSyntax node. + + + Called when the visitor visits a ClassDeclarationSyntax node. + + + Called when the visitor visits a StructDeclarationSyntax node. + + + Called when the visitor visits a InterfaceDeclarationSyntax node. + + + Called when the visitor visits a EnumDeclarationSyntax node. + + + Called when the visitor visits a DelegateDeclarationSyntax node. + + + Called when the visitor visits a EnumMemberDeclarationSyntax node. + + + Called when the visitor visits a BaseListSyntax node. + + + Called when the visitor visits a SimpleBaseTypeSyntax node. + + + Called when the visitor visits a TypeParameterConstraintClauseSyntax node. + + + Called when the visitor visits a ConstructorConstraintSyntax node. + + + Called when the visitor visits a ClassOrStructConstraintSyntax node. + + + Called when the visitor visits a TypeConstraintSyntax node. + + + Called when the visitor visits a FieldDeclarationSyntax node. + + + Called when the visitor visits a EventFieldDeclarationSyntax node. + + + Called when the visitor visits a ExplicitInterfaceSpecifierSyntax node. + + + Called when the visitor visits a MethodDeclarationSyntax node. + + + Called when the visitor visits a OperatorDeclarationSyntax node. + + + Called when the visitor visits a ConversionOperatorDeclarationSyntax node. + + + Called when the visitor visits a ConstructorDeclarationSyntax node. + + + Called when the visitor visits a ConstructorInitializerSyntax node. + + + Called when the visitor visits a DestructorDeclarationSyntax node. + + + Called when the visitor visits a PropertyDeclarationSyntax node. + + + Called when the visitor visits a ArrowExpressionClauseSyntax node. + + + Called when the visitor visits a EventDeclarationSyntax node. + + + Called when the visitor visits a IndexerDeclarationSyntax node. + + + Called when the visitor visits a AccessorListSyntax node. + + + Called when the visitor visits a AccessorDeclarationSyntax node. + + + Called when the visitor visits a ParameterListSyntax node. + + + Called when the visitor visits a BracketedParameterListSyntax node. + + + Called when the visitor visits a ParameterSyntax node. + + + Called when the visitor visits a IncompleteMemberSyntax node. + + + Called when the visitor visits a SkippedTokensTriviaSyntax node. + + + Called when the visitor visits a DocumentationCommentTriviaSyntax node. + + + Called when the visitor visits a TypeCrefSyntax node. + + + Called when the visitor visits a QualifiedCrefSyntax node. + + + Called when the visitor visits a NameMemberCrefSyntax node. + + + Called when the visitor visits a IndexerMemberCrefSyntax node. + + + Called when the visitor visits a OperatorMemberCrefSyntax node. + + + Called when the visitor visits a ConversionOperatorMemberCrefSyntax node. + + + Called when the visitor visits a CrefParameterListSyntax node. + + + Called when the visitor visits a CrefBracketedParameterListSyntax node. + + + Called when the visitor visits a CrefParameterSyntax node. + + + Called when the visitor visits a XmlElementSyntax node. + + + Called when the visitor visits a XmlElementStartTagSyntax node. + + + Called when the visitor visits a XmlElementEndTagSyntax node. + + + Called when the visitor visits a XmlEmptyElementSyntax node. + + + Called when the visitor visits a XmlNameSyntax node. + + + Called when the visitor visits a XmlPrefixSyntax node. + + + Called when the visitor visits a XmlTextAttributeSyntax node. + + + Called when the visitor visits a XmlCrefAttributeSyntax node. + + + Called when the visitor visits a XmlNameAttributeSyntax node. + + + Called when the visitor visits a XmlTextSyntax node. + + + Called when the visitor visits a XmlCDataSectionSyntax node. + + + Called when the visitor visits a XmlProcessingInstructionSyntax node. + + + Called when the visitor visits a XmlCommentSyntax node. + + + Called when the visitor visits a IfDirectiveTriviaSyntax node. + + + Called when the visitor visits a ElifDirectiveTriviaSyntax node. + + + Called when the visitor visits a ElseDirectiveTriviaSyntax node. + + + Called when the visitor visits a EndIfDirectiveTriviaSyntax node. + + + Called when the visitor visits a RegionDirectiveTriviaSyntax node. + + + Called when the visitor visits a EndRegionDirectiveTriviaSyntax node. + + + Called when the visitor visits a ErrorDirectiveTriviaSyntax node. + + + Called when the visitor visits a WarningDirectiveTriviaSyntax node. + + + Called when the visitor visits a BadDirectiveTriviaSyntax node. + + + Called when the visitor visits a DefineDirectiveTriviaSyntax node. + + + Called when the visitor visits a UndefDirectiveTriviaSyntax node. + + + Called when the visitor visits a LineDirectiveTriviaSyntax node. + + + Called when the visitor visits a PragmaWarningDirectiveTriviaSyntax node. + + + Called when the visitor visits a PragmaChecksumDirectiveTriviaSyntax node. + + + Called when the visitor visits a ReferenceDirectiveTriviaSyntax node. + + + Called when the visitor visits a LoadDirectiveTriviaSyntax node. + + + Called when the visitor visits a ShebangDirectiveTriviaSyntax node. + + + + Represents a that descends an entire graph + visiting each CSharpSyntaxNode and its child SyntaxNodes and s in depth-first order. + + + + + A class containing factory methods for constructing syntax nodes, tokens and trivia. + + + + Creates a new AnonymousMethodExpressionSyntax instance. + + + + A trivia with kind EndOfLineTrivia containing both the carriage return and line feed characters. + + + + + A trivia with kind EndOfLineTrivia containing a single line feed character. + + + + + A trivia with kind EndOfLineTrivia containing a single carriage return character. + + + + + A trivia with kind WhitespaceTrivia containing a single space character. + + + + + A trivia with kind WhitespaceTrivia containing a single tab character. + + + + + An elastic trivia with kind EndOfLineTrivia containing both the carriage return and line feed characters. + Elastic trivia are used to denote trivia that was not produced by parsing source text, and are usually not + preserved during formatting. + + + + + An elastic trivia with kind EndOfLineTrivia containing a single line feed character. Elastic trivia are used + to denote trivia that was not produced by parsing source text, and are usually not preserved during + formatting. + + + + + An elastic trivia with kind EndOfLineTrivia containing a single carriage return character. Elastic trivia + are used to denote trivia that was not produced by parsing source text, and are usually not preserved during + formatting. + + + + + An elastic trivia with kind WhitespaceTrivia containing a single space character. Elastic trivia are used to + denote trivia that was not produced by parsing source text, and are usually not preserved during formatting. + + + + + An elastic trivia with kind WhitespaceTrivia containing a single tab character. Elastic trivia are used to + denote trivia that was not produced by parsing source text, and are usually not preserved during formatting. + + + + + An elastic trivia with kind WhitespaceTrivia containing no characters. Elastic marker trivia are included + automatically by factory methods when trivia is not specified. Syntax formatting will replace elastic + markers with appropriate trivia. + + + + + Creates a trivia with kind EndOfLineTrivia containing the specified text. + + The text of the end of line. Any text can be specified here, however only carriage return and + line feed characters are recognized by the parser as end of line. + + + + Creates a trivia with kind EndOfLineTrivia containing the specified text. Elastic trivia are used to + denote trivia that was not produced by parsing source text, and are usually not preserved during formatting. + + The text of the end of line. Any text can be specified here, however only carriage return and + line feed characters are recognized by the parser as end of line. + + + + Creates a trivia with kind WhitespaceTrivia containing the specified text. + + The text of the whitespace. Any text can be specified here, however only specific + whitespace characters are recognized by the parser. + + + + Creates a trivia with kind WhitespaceTrivia containing the specified text. Elastic trivia are used to + denote trivia that was not produced by parsing source text, and are usually not preserved during formatting. + + The text of the whitespace. Any text can be specified here, however only specific + whitespace characters are recognized by the parser. + + + + Creates a trivia with kind either SingleLineCommentTrivia or MultiLineCommentTrivia containing the specified + text. + + The entire text of the comment including the leading '//' token for single line comments + or stop or start tokens for multiline comments. + + + + Creates a trivia with kind DisabledTextTrivia. Disabled text corresponds to any text between directives that + is not considered active. + + + + + Creates a trivia with kind PreprocessingMessageTrivia. + + + + + Trivia nodes represent parts of the program text that are not parts of the + syntactic grammar, such as spaces, newlines, comments, preprocessor + directives, and disabled code. + + + A representing the specific kind of . One of + , , + , , + , + + + The actual text of this token. + + + + + Creates a token corresponding to a syntax kind. This method can be used for token syntax kinds whose text + can be inferred by the kind alone. + + A syntax kind value for a token. These have the suffix Token or Keyword. + + + + + Creates a token corresponding to syntax kind. This method can be used for token syntax kinds whose text can + be inferred by the kind alone. + + A list of trivia immediately preceding the token. + A syntax kind value for a token. These have the suffix Token or Keyword. + A list of trivia immediately following the token. + + + + Creates a token corresponding to syntax kind. This method gives control over token Text and ValueText. + + For example, consider the text '<see cref="operator &#43;"/>'. To create a token for the value of + the operator symbol (&#43;), one would call + Token(default(SyntaxTriviaList), SyntaxKind.PlusToken, "&#43;", "+", default(SyntaxTriviaList)). + + A list of trivia immediately preceding the token. + A syntax kind value for a token. These have the suffix Token or Keyword. + The text from which this token was created (e.g. lexed). + How C# should interpret the text of this token. + A list of trivia immediately following the token. + + + + Creates a missing token corresponding to syntax kind. A missing token is produced by the parser when an + expected token is not found. A missing token has no text and normally has associated diagnostics. + + A syntax kind value for a token. These have the suffix Token or Keyword. + + + + Creates a missing token corresponding to syntax kind. A missing token is produced by the parser when an + expected token is not found. A missing token has no text and normally has associated diagnostics. + + A list of trivia immediately preceding the token. + A syntax kind value for a token. These have the suffix Token or Keyword. + A list of trivia immediately following the token. + + + + Creates a token with kind IdentifierToken containing the specified text. + The raw text of the identifier name, including any escapes or leading '@' + character. + + + + + Creates a token with kind IdentifierToken containing the specified text. + + A list of trivia immediately preceding the token. + The raw text of the identifier name, including any escapes or leading '@' + character. + A list of trivia immediately following the token. + + + + Creates a verbatim token with kind IdentifierToken containing the specified text. + + A list of trivia immediately preceding the token. + The raw text of the identifier name, including any escapes or leading '@' + character as it is in source. + The canonical value of the token's text. + A list of trivia immediately following the token. + + + + Creates a token with kind IdentifierToken containing the specified text. + + A list of trivia immediately preceding the token. + An alternative SyntaxKind that can be inferred for this token in special + contexts. These are usually keywords. + The raw text of the identifier name, including any escapes or leading '@' + character. + The text of the identifier name without escapes or leading '@' character. + A list of trivia immediately following the token. + + + + + Creates a token with kind NumericLiteralToken from a 4-byte signed integer value. + + The 4-byte signed integer value to be represented by the returned token. + + + + Creates a token with kind NumericLiteralToken from the text and corresponding 4-byte signed integer value. + + The raw text of the literal. + The 4-byte signed integer value to be represented by the returned token. + + + + Creates a token with kind NumericLiteralToken from the text and corresponding 4-byte signed integer value. + + A list of trivia immediately preceding the token. + The raw text of the literal. + The 4-byte signed integer value to be represented by the returned token. + A list of trivia immediately following the token. + + + + Creates a token with kind NumericLiteralToken from a 4-byte unsigned integer value. + + The 4-byte unsigned integer value to be represented by the returned token. + + + + Creates a token with kind NumericLiteralToken from the text and corresponding 4-byte unsigned integer value. + + The raw text of the literal. + The 4-byte unsigned integer value to be represented by the returned token. + + + + Creates a token with kind NumericLiteralToken from the text and corresponding 4-byte unsigned integer value. + + A list of trivia immediately preceding the token. + The raw text of the literal. + The 4-byte unsigned integer value to be represented by the returned token. + A list of trivia immediately following the token. + + + + Creates a token with kind NumericLiteralToken from an 8-byte signed integer value. + + The 8-byte signed integer value to be represented by the returned token. + + + + Creates a token with kind NumericLiteralToken from the text and corresponding 8-byte signed integer value. + + The raw text of the literal. + The 8-byte signed integer value to be represented by the returned token. + + + + Creates a token with kind NumericLiteralToken from the text and corresponding 8-byte signed integer value. + + A list of trivia immediately preceding the token. + The raw text of the literal. + The 8-byte signed integer value to be represented by the returned token. + A list of trivia immediately following the token. + + + + Creates a token with kind NumericLiteralToken from an 8-byte unsigned integer value. + + The 8-byte unsigned integer value to be represented by the returned token. + + + + Creates a token with kind NumericLiteralToken from the text and corresponding 8-byte unsigned integer value. + + The raw text of the literal. + The 8-byte unsigned integer value to be represented by the returned token. + + + + Creates a token with kind NumericLiteralToken from the text and corresponding 8-byte unsigned integer value. + + A list of trivia immediately preceding the token. + The raw text of the literal. + The 8-byte unsigned integer value to be represented by the returned token. + A list of trivia immediately following the token. + + + + Creates a token with kind NumericLiteralToken from a 4-byte floating point value. + + The 4-byte floating point value to be represented by the returned token. + + + + Creates a token with kind NumericLiteralToken from the text and corresponding 4-byte floating point value. + + The raw text of the literal. + The 4-byte floating point value to be represented by the returned token. + + + + Creates a token with kind NumericLiteralToken from the text and corresponding 4-byte floating point value. + + A list of trivia immediately preceding the token. + The raw text of the literal. + The 4-byte floating point value to be represented by the returned token. + A list of trivia immediately following the token. + + + + Creates a token with kind NumericLiteralToken from an 8-byte floating point value. + + The 8-byte floating point value to be represented by the returned token. + + + + Creates a token with kind NumericLiteralToken from the text and corresponding 8-byte floating point value. + + The raw text of the literal. + The 8-byte floating point value to be represented by the returned token. + + + + Creates a token with kind NumericLiteralToken from the text and corresponding 8-byte floating point value. + + A list of trivia immediately preceding the token. + The raw text of the literal. + The 8-byte floating point value to be represented by the returned token. + A list of trivia immediately following the token. + + + + Creates a token with kind NumericLiteralToken from a decimal value. + + The decimal value to be represented by the returned token. + + + + Creates a token with kind NumericLiteralToken from the text and corresponding decimal value. + + The raw text of the literal. + The decimal value to be represented by the returned token. + + + + Creates a token with kind NumericLiteralToken from the text and corresponding decimal value. + + A list of trivia immediately preceding the token. + The raw text of the literal. + The decimal value to be represented by the returned token. + A list of trivia immediately following the token. + + + + Creates a token with kind StringLiteralToken from a string value. + + The string value to be represented by the returned token. + + + + Creates a token with kind StringLiteralToken from the text and corresponding string value. + + The raw text of the literal, including quotes and escape sequences. + The string value to be represented by the returned token. + + + + Creates a token with kind StringLiteralToken from the text and corresponding string value. + + A list of trivia immediately preceding the token. + The raw text of the literal, including quotes and escape sequences. + The string value to be represented by the returned token. + A list of trivia immediately following the token. + + + + Creates a token with kind CharacterLiteralToken from a character value. + + The character value to be represented by the returned token. + + + + Creates a token with kind CharacterLiteralToken from the text and corresponding character value. + + The raw text of the literal, including quotes and escape sequences. + The character value to be represented by the returned token. + + + + Creates a token with kind CharacterLiteralToken from the text and corresponding character value. + + A list of trivia immediately preceding the token. + The raw text of the literal, including quotes and escape sequences. + The character value to be represented by the returned token. + A list of trivia immediately following the token. + + + + Creates a token with kind BadToken. + + A list of trivia immediately preceding the token. + The raw text of the bad token. + A list of trivia immediately following the token. + + + + Creates a token with kind XmlTextLiteralToken. + + A list of trivia immediately preceding the token. + The raw text of the literal. + The xml text value. + A list of trivia immediately following the token. + + + + Creates a token with kind XmlEntityLiteralToken. + + A list of trivia immediately preceding the token. + The raw text of the literal. + The xml entity value. + A list of trivia immediately following the token. + + + + Creates an xml documentation comment that abstracts xml syntax creation. + + + A list of xml node syntax that will be the content within the xml documentation comment + (e.g. a summary element, a returns element, exception element and so on). + + + + + Creates a summary element within an xml documentation comment. + + A list of xml node syntax that will be the content within the summary element. + + + + Creates a summary element within an xml documentation comment. + + A list of xml node syntax that will be the content within the summary element. + + + + Creates a see element within an xml documentation comment. + + A cref syntax node that points to the referenced item (e.g. a class, struct). + + + + Creates a seealso element within an xml documentation comment. + + A cref syntax node that points to the referenced item (e.g. a class, struct). + + + + Creates a seealso element within an xml documentation comment. + + The uri of the referenced item. + A list of xml node syntax that will be used as the link text for the referenced item. + + + + Creates a threadsafty element within an xml documentation comment. + + + + + Creates a threadsafety element within an xml documentation comment. + + Indicates whether static member of this type are safe for multi-threaded operations. + Indicates whether instance members of this type are safe for multi-threaded operations. + + + + Creates a syntax node for a name attribute in a xml element within a xml documentation comment. + + The value of the name attribute. + + + + Creates a syntax node for a priliminary element within a xml documentation comment. + + + + + Creates a syntax node for a cref attribute within a xml documentation comment. + + The used for the xml cref attribute syntax. + + + + Creates a syntax node for a cref attribute within a xml documentation comment. + + The used for the xml cref attribute syntax. + The kind of the quote for the referenced item in the cref attribute. + + + + Creates a remarks element within an xml documentation comment. + + A list of xml node syntax that will be the content within the remarks element. + + + + Creates a remarks element within an xml documentation comment. + + A list of xml node syntax that will be the content within the remarks element. + + + + Creates a returns element within an xml documentation comment. + + A list of xml node syntax that will be the content within the returns element. + + + + Creates a returns element within an xml documentation comment. + + A list of xml node syntax that will be the content within the returns element. + + + + Creates the the syntax representation of an xml value element (e.g. for xml documentation comments). + + A list of xml syntax nodes that represents the content of the value element. + + + + Creates the the syntax representation of an xml value element (e.g. for xml documentation comments). + + A list of xml syntax nodes that represents the content of the value element. + + + + Creates the syntax representation of an exception element within xml documentation comments. + + Syntax representation of the reference to the exception type. + A list of syntax nodes that represents the content of the exception element. + + + + Creates the syntax representation of an exception element within xml documentation comments. + + Syntax representation of the reference to the exception type. + A list of syntax nodes that represents the content of the exception element. + + + + Creates the syntax representation of a permission element within xml documentation comments. + + Syntax representation of the reference to the permission type. + A list of syntax nodes that represents the content of the permission element. + + + + Creates the syntax representation of a permission element within xml documentation comments. + + Syntax representation of the reference to the permission type. + A list of syntax nodes that represents the content of the permission element. + + + + Creates the syntax representation of an example element within xml documentation comments. + + A list of syntax nodes that represents the content of the example element. + + + + Creates the syntax representation of an example element within xml documentation comments. + + A list of syntax nodes that represents the content of the example element. + + + + Creates the syntax representation of a para element within xml documentation comments. + + A list of syntax nodes that represents the content of the para element. + + + + Creates the syntax representation of a para element within xml documentation comments. + + A list of syntax nodes that represents the content of the para element. + + + + Creates the syntax representation of a param element within xml documentation comments (e.g. for + documentation of method parameters). + + The name of the parameter. + A list of syntax nodes that represents the content of the param element (e.g. + the description and meaning of the parameter). + + + + Creates the syntax representation of a param element within xml documentation comments (e.g. for + documentation of method parameters). + + The name of the parameter. + A list of syntax nodes that represents the content of the param element (e.g. + the description and meaning of the parameter). + + + + Creates the syntax representation of a paramref element within xml documentation comments (e.g. for + referencing particular parameters of a method). + + The name of the referenced parameter. + + + + Creates the syntax representation of a see element within xml documentation comments, + that points to the 'null' language keyword. + + + + + Creates the syntax representation of a see element within xml documentation comments, + that points to a language keyword. + + The language keyword to which the see element points to. + + + + Creates the syntax representation of a placeholder element within xml documentation comments. + + A list of syntax nodes that represents the content of the placeholder element. + + + + Creates the syntax representation of a placeholder element within xml documentation comments. + + A list of syntax nodes that represents the content of the placeholder element. + + + + Creates the syntax representation of a named empty xml element within xml documentation comments. + + The name of the empty xml element. + + + + Creates the syntax representation of a named xml element within xml documentation comments. + + The name of the empty xml element. + A list of syntax nodes that represents the content of the xml element. + + + + Creates the syntax representation of a named xml element within xml documentation comments. + + The name of the empty xml element. + A list of syntax nodes that represents the content of the xml element. + + + + Creates the syntax representation of an xml text attribute. + + The name of the xml text attribute. + The value of the xml text attribute. + + + + Creates the syntax representation of an xml text attribute. + + The name of the xml text attribute. + A list of tokens used for the value of the xml text attribute. + + + + Creates the syntax representation of an xml text attribute. + + The name of the xml text attribute. + The kind of the quote token to be used to quote the value (e.g. " or '). + A list of tokens used for the value of the xml text attribute. + + + + Creates the syntax representation of an xml text attribute. + + The name of the xml text attribute. + The kind of the quote token to be used to quote the value (e.g. " or '). + A list of tokens used for the value of the xml text attribute. + + + + Creates the syntax representation of an xml element that spans multiple text lines. + + The name of the xml element. + A list of syntax nodes that represents the content of the xml multi line element. + + + + Creates the syntax representation of an xml element that spans multiple text lines. + + The name of the xml element. + A list of syntax nodes that represents the content of the xml multi line element. + + + + Creates the syntax representation of an xml text that contains a newline token with a documentation comment + exterior trivia at the end (continued documentation comment). + + The raw text within the new line. + + + + Creates the syntax representation of an xml newline token with a documentation comment exterior trivia at + the end (continued documentation comment). + + The raw text within the new line. + + + + Creates a token with kind XmlTextLiteralNewLineToken. + + A list of trivia immediately preceding the token. + The raw text of the literal. + The xml text new line value. + A list of trivia immediately following the token. + + + + Creates the syntax representation of an xml newline token for xml documentation comments. + + The raw text within the new line. + + If set to true, a documentation comment exterior token will be added to the trailing trivia + of the new token. + + + + Generates the syntax representation of a xml text node (e.g. for xml documentation comments). + + The string literal used as the text of the xml text node. + + + + Generates the syntax representation of a xml text node (e.g. for xml documentation comments). + + A list of text tokens used as the text of the xml text node. + + + + Generates the syntax representation of an xml text literal. + + The text used within the xml text literal. + + + + Generates the syntax representation of an xml text literal. + + The raw text of the literal. + The text used within the xml text literal. + + + + Helper method that replaces less-than and greater-than characters with brackets. + + The original token that is to be replaced. + The new rewritten token. + Returns the new rewritten token with replaced characters. + + + + Creates a trivia with kind DocumentationCommentExteriorTrivia. + + The raw text of the literal. + + + + Creates an empty list of syntax nodes. + + The specific type of the element nodes. + + + + Creates a singleton list of syntax nodes. + + The specific type of the element nodes. + The single element node. + + + + + Creates a list of syntax nodes. + + The specific type of the element nodes. + A sequence of element nodes. + + + + Creates an empty list of tokens. + + + + + Creates a singleton list of tokens. + + The single token. + + + + Creates a list of tokens. + + An array of tokens. + + + + Creates a list of tokens. + + + + + + + Creates a trivia from a StructuredTriviaSyntax node. + + + + + Creates an empty list of trivia. + + + + + Creates a singleton list of trivia. + + A single trivia. + + + + Creates a list of trivia. + + An array of trivia. + + + + Creates a list of trivia. + + A sequence of trivia. + + + + Creates an empty separated list. + + The specific type of the element nodes. + + + + Creates a singleton separated list. + + The specific type of the element nodes. + A single node. + + + + Creates a separated list of nodes from a sequence of nodes, synthesizing comma separators in between. + + The specific type of the element nodes. + A sequence of syntax nodes. + + + + Creates a separated list of nodes from a sequence of nodes and a sequence of separator tokens. + + The specific type of the element nodes. + A sequence of syntax nodes. + A sequence of token to be interleaved between the nodes. The number of tokens must + be one less than the number of nodes. + + + + Creates a separated list from a sequence of nodes and tokens, starting with a node and alternating between additional nodes and separator tokens. + + The specific type of the element nodes. + A sequence of nodes or tokens, alternating between nodes and separator tokens. + + + + Creates a separated list from a , where the list elements start with a node and then alternate between + additional nodes and separator tokens. + + The specific type of the element nodes. + The list of nodes and tokens. + + + + Creates an empty . + + + + + Create a from a sequence of . + + The sequence of nodes and tokens + + + + Create a from one or more . + + The nodes and tokens + + + + Creates an IdentifierNameSyntax node. + + The identifier name. + + + + Create a new syntax tree from a syntax node. + + + + + Produces a syntax tree by parsing the source text. + + + + + Produces a syntax tree by parsing the source text. + + + + + Parse a list of trivia rules for leading trivia. + + + + + Parse a list of trivia rules for leading trivia. + + + + + Parse a list of trivia using the parsing rules for trailing trivia. + + + + + Parse a C# language token. + + The text of the token including leading and trailing trivia. + Optional offset into text. + + + + Parse a sequence of C# language tokens. + + The text of all the tokens. + An integer to use as the starting position of the first token. + Optional offset into text. + Parse options. + + + + Parse a NameSyntax node using the grammar rule for names. + + + + + Parse a TypeNameSyntax node using the grammar rule for type names. + + + + + Parse an ExpressionSyntax node using the lowest precedence grammar rule for expressions. + + The text of the expression. + Optional offset into text. + The optional parse options to use. If no options are specified default options are + used. + True if extra tokens in the input should be treated as an error + + + + Parse a StatementSyntaxNode using grammar rule for statements. + + The text of the statement. + Optional offset into text. + The optional parse options to use. If no options are specified default options are + used. + True if extra tokens in the input should be treated as an error + + + + Parse a CompilationUnitSyntax using the grammar rule for an entire compilation unit (file). To produce a + SyntaxTree instance, use CSharpSyntaxTree.ParseText instead. + + The text of the compilation unit. + Optional offset into text. + The optional parse options to use. If no options are specified default options are + used. + + + + Parse a ParameterListSyntax node. + + The text of the parenthesized parameter list. + Optional offset into text. + The optional parse options to use. If no options are specified default options are + used. + True if extra tokens in the input should be treated as an error + + + + Parse a BracketedParameterListSyntax node. + + The text of the bracketed parameter list. + Optional offset into text. + The optional parse options to use. If no options are specified default options are + used. + True if extra tokens in the input should be treated as an error + + + + Parse an ArgumentListSyntax node. + + The text of the parenthesized argument list. + Optional offset into text. + The optional parse options to use. If no options are specified default options are + used. + True if extra tokens in the input should be treated as an error + + + + Parse a BracketedArgumentListSyntax node. + + The text of the bracketed argument list. + Optional offset into text. + The optional parse options to use. If no options are specified default options are + used. + True if extra tokens in the input should be treated as an error + + + + Parse an AttributeArgumentListSyntax node. + + The text of the attribute argument list. + Optional offset into text. + The optional parse options to use. If no options are specified default options are + used. + True if extra tokens in the input should be treated as an error + + + + Helper method for wrapping a string in an SourceText. + + + + + Determines if two trees are the same, disregarding trivia differences. + + The original tree. + The new tree. + + If true then the trees are equivalent if the contained nodes and tokens declaring + metadata visible symbolic information are equivalent, ignoring any differences of nodes inside method bodies + or initializer expressions, otherwise all nodes and tokens must be equivalent. + + + + + Determines if two syntax nodes are the same, disregarding trivia differences. + + The old node. + The new node. + + If true then the nodes are equivalent if the contained nodes and tokens declaring + metadata visible symbolic information are equivalent, ignoring any differences of nodes inside method bodies + or initializer expressions, otherwise all nodes and tokens must be equivalent. + + + + + Determines if two syntax nodes are the same, disregarding trivia differences. + + The old node. + The new node. + + If specified called for every child syntax node (not token) that is visited during the comparison. + If it returns true the child is recursively visited, otherwise the child and its subtree is disregarded. + + + + + Determines if two syntax tokens are the same, disregarding trivia differences. + + The old token. + The new token. + + + + Determines if two lists of tokens are the same, disregarding trivia differences. + + The old token list. + The new token list. + + + + Determines if two lists of syntax nodes are the same, disregarding trivia differences. + + The old list. + The new list. + + If true then the nodes are equivalent if the contained nodes and tokens declaring + metadata visible symbolic information are equivalent, ignoring any differences of nodes inside method bodies + or initializer expressions, otherwise all nodes and tokens must be equivalent. + + + + + Determines if two lists of syntax nodes are the same, disregarding trivia differences. + + The old list. + The new list. + + If specified called for every child syntax node (not token) that is visited during the comparison. + If it returns true the child is recursively visited, otherwise the child and its subtree is disregarded. + + + + + Determines if two lists of syntax nodes are the same, disregarding trivia differences. + + The old list. + The new list. + + If true then the nodes are equivalent if the contained nodes and tokens declaring + metadata visible symbolic information are equivalent, ignoring any differences of nodes inside method bodies + or initializer expressions, otherwise all nodes and tokens must be equivalent. + + + + + Determines if two lists of syntax nodes are the same, disregarding trivia differences. + + The old list. + The new list. + + If specified called for every child syntax node (not token) that is visited during the comparison. + If it returns true the child is recursively visited, otherwise the child and its subtree is disregarded. + + + + + Gets the containing expression that is actually a language expression and not just typed + as an ExpressionSyntax for convenience. For example, NameSyntax nodes on the right side + of qualified names and member access expressions are not language expressions, yet the + containing qualified names or member access expressions are indeed expressions. + + + + + Gets the containing expression that is actually a language expression and not just typed + as an ExpressionSyntax for convenience. For example, NameSyntax nodes on the right side + of qualified names and member access expressions are not language expressions, yet the + containing qualified names or member access expressions are indeed expressions. + Similarly, if the input node is a cref part that is not independently meaningful, then + the result will be the full cref. + + + + + Given a conditional binding expression, find corresponding conditional access node. + + + + + Converts a generic name expression into one without the generic arguments. + + + + + + + Determines whether the given text is considered a syntactically complete submission. + Throws if the tree was not compiled as an interactive submission. + + + + Creates a new CaseSwitchLabelSyntax instance. + + + Creates a new DefaultSwitchLabelSyntax instance. + + + Creates a new BlockSyntax instance. + + + Creates a new BlockSyntax instance. + + + Creates a new UsingDirectiveSyntax instance. + + + Creates a new IdentifierNameSyntax instance. + + + Creates a new QualifiedNameSyntax instance. + + + Creates a new QualifiedNameSyntax instance. + + + Creates a new GenericNameSyntax instance. + + + Creates a new GenericNameSyntax instance. + + + Creates a new GenericNameSyntax instance. + + + Creates a new TypeArgumentListSyntax instance. + + + Creates a new TypeArgumentListSyntax instance. + + + Creates a new AliasQualifiedNameSyntax instance. + + + Creates a new AliasQualifiedNameSyntax instance. + + + Creates a new AliasQualifiedNameSyntax instance. + + + Creates a new PredefinedTypeSyntax instance. + + + Creates a new ArrayTypeSyntax instance. + + + Creates a new ArrayTypeSyntax instance. + + + Creates a new ArrayRankSpecifierSyntax instance. + + + Creates a new ArrayRankSpecifierSyntax instance. + + + Creates a new PointerTypeSyntax instance. + + + Creates a new PointerTypeSyntax instance. + + + Creates a new NullableTypeSyntax instance. + + + Creates a new NullableTypeSyntax instance. + + + Creates a new OmittedTypeArgumentSyntax instance. + + + Creates a new OmittedTypeArgumentSyntax instance. + + + Creates a new ParenthesizedExpressionSyntax instance. + + + Creates a new ParenthesizedExpressionSyntax instance. + + + Creates a new PrefixUnaryExpressionSyntax instance. + + + Creates a new PrefixUnaryExpressionSyntax instance. + + + Creates a new AwaitExpressionSyntax instance. + + + Creates a new AwaitExpressionSyntax instance. + + + Creates a new PostfixUnaryExpressionSyntax instance. + + + Creates a new PostfixUnaryExpressionSyntax instance. + + + Creates a new MemberAccessExpressionSyntax instance. + + + Creates a new MemberAccessExpressionSyntax instance. + + + Creates a new ConditionalAccessExpressionSyntax instance. + + + Creates a new ConditionalAccessExpressionSyntax instance. + + + Creates a new MemberBindingExpressionSyntax instance. + + + Creates a new MemberBindingExpressionSyntax instance. + + + Creates a new ElementBindingExpressionSyntax instance. + + + Creates a new ElementBindingExpressionSyntax instance. + + + Creates a new ImplicitElementAccessSyntax instance. + + + Creates a new ImplicitElementAccessSyntax instance. + + + Creates a new BinaryExpressionSyntax instance. + + + Creates a new BinaryExpressionSyntax instance. + + + Creates a new AssignmentExpressionSyntax instance. + + + Creates a new AssignmentExpressionSyntax instance. + + + Creates a new ConditionalExpressionSyntax instance. + + + Creates a new ConditionalExpressionSyntax instance. + + + Creates a new ThisExpressionSyntax instance. + + + Creates a new ThisExpressionSyntax instance. + + + Creates a new BaseExpressionSyntax instance. + + + Creates a new BaseExpressionSyntax instance. + + + Creates a new LiteralExpressionSyntax instance. + + + Creates a new LiteralExpressionSyntax instance. + + + Creates a new MakeRefExpressionSyntax instance. + + + Creates a new MakeRefExpressionSyntax instance. + + + Creates a new RefTypeExpressionSyntax instance. + + + Creates a new RefTypeExpressionSyntax instance. + + + Creates a new RefValueExpressionSyntax instance. + + + Creates a new RefValueExpressionSyntax instance. + + + Creates a new CheckedExpressionSyntax instance. + + + Creates a new CheckedExpressionSyntax instance. + + + Creates a new DefaultExpressionSyntax instance. + + + Creates a new DefaultExpressionSyntax instance. + + + Creates a new TypeOfExpressionSyntax instance. + + + Creates a new TypeOfExpressionSyntax instance. + + + Creates a new SizeOfExpressionSyntax instance. + + + Creates a new SizeOfExpressionSyntax instance. + + + Creates a new InvocationExpressionSyntax instance. + + + Creates a new InvocationExpressionSyntax instance. + + + Creates a new ElementAccessExpressionSyntax instance. + + + Creates a new ElementAccessExpressionSyntax instance. + + + Creates a new ArgumentListSyntax instance. + + + Creates a new ArgumentListSyntax instance. + + + Creates a new BracketedArgumentListSyntax instance. + + + Creates a new BracketedArgumentListSyntax instance. + + + Creates a new ArgumentSyntax instance. + + + Creates a new ArgumentSyntax instance. + + + Creates a new NameColonSyntax instance. + + + Creates a new NameColonSyntax instance. + + + Creates a new NameColonSyntax instance. + + + Creates a new CastExpressionSyntax instance. + + + Creates a new CastExpressionSyntax instance. + + + Creates a new AnonymousMethodExpressionSyntax instance. + + + Creates a new AnonymousMethodExpressionSyntax instance. + + + Creates a new AnonymousMethodExpressionSyntax instance. + + + Creates a new SimpleLambdaExpressionSyntax instance. + + + Creates a new SimpleLambdaExpressionSyntax instance. + + + Creates a new ParenthesizedLambdaExpressionSyntax instance. + + + Creates a new ParenthesizedLambdaExpressionSyntax instance. + + + Creates a new ParenthesizedLambdaExpressionSyntax instance. + + + Creates a new InitializerExpressionSyntax instance. + + + Creates a new InitializerExpressionSyntax instance. + + + Creates a new ObjectCreationExpressionSyntax instance. + + + Creates a new ObjectCreationExpressionSyntax instance. + + + Creates a new ObjectCreationExpressionSyntax instance. + + + Creates a new AnonymousObjectMemberDeclaratorSyntax instance. + + + Creates a new AnonymousObjectMemberDeclaratorSyntax instance. + + + Creates a new AnonymousObjectCreationExpressionSyntax instance. + + + Creates a new AnonymousObjectCreationExpressionSyntax instance. + + + Creates a new ArrayCreationExpressionSyntax instance. + + + Creates a new ArrayCreationExpressionSyntax instance. + + + Creates a new ArrayCreationExpressionSyntax instance. + + + Creates a new ImplicitArrayCreationExpressionSyntax instance. + + + Creates a new ImplicitArrayCreationExpressionSyntax instance. + + + Creates a new ImplicitArrayCreationExpressionSyntax instance. + + + Creates a new StackAllocArrayCreationExpressionSyntax instance. + + + Creates a new StackAllocArrayCreationExpressionSyntax instance. + + + Creates a new QueryExpressionSyntax instance. + + + Creates a new QueryBodySyntax instance. + + + Creates a new QueryBodySyntax instance. + + + Creates a new FromClauseSyntax instance. + + + Creates a new FromClauseSyntax instance. + + + Creates a new FromClauseSyntax instance. + + + Creates a new FromClauseSyntax instance. + + + Creates a new LetClauseSyntax instance. + + + Creates a new LetClauseSyntax instance. + + + Creates a new LetClauseSyntax instance. + + + Creates a new JoinClauseSyntax instance. + + + Creates a new JoinClauseSyntax instance. + + + Creates a new JoinClauseSyntax instance. + + + Creates a new JoinClauseSyntax instance. + + + Creates a new JoinIntoClauseSyntax instance. + + + Creates a new JoinIntoClauseSyntax instance. + + + Creates a new JoinIntoClauseSyntax instance. + + + Creates a new WhereClauseSyntax instance. + + + Creates a new WhereClauseSyntax instance. + + + Creates a new OrderByClauseSyntax instance. + + + Creates a new OrderByClauseSyntax instance. + + + Creates a new OrderingSyntax instance. + + + Creates a new OrderingSyntax instance. + + + Creates a new SelectClauseSyntax instance. + + + Creates a new SelectClauseSyntax instance. + + + Creates a new GroupClauseSyntax instance. + + + Creates a new GroupClauseSyntax instance. + + + Creates a new QueryContinuationSyntax instance. + + + Creates a new QueryContinuationSyntax instance. + + + Creates a new QueryContinuationSyntax instance. + + + Creates a new OmittedArraySizeExpressionSyntax instance. + + + Creates a new OmittedArraySizeExpressionSyntax instance. + + + Creates a new InterpolatedStringExpressionSyntax instance. + + + Creates a new InterpolatedStringExpressionSyntax instance. + + + Creates a new InterpolatedStringExpressionSyntax instance. + + + Creates a new InterpolatedStringTextSyntax instance. + + + Creates a new InterpolatedStringTextSyntax instance. + + + Creates a new InterpolationSyntax instance. + + + Creates a new InterpolationSyntax instance. + + + Creates a new InterpolationSyntax instance. + + + Creates a new InterpolationAlignmentClauseSyntax instance. + + + Creates a new InterpolationFormatClauseSyntax instance. + + + Creates a new InterpolationFormatClauseSyntax instance. + + + Creates a new GlobalStatementSyntax instance. + + + Creates a new BlockSyntax instance. + + + Creates a new BlockSyntax instance. + + + Creates a new LocalDeclarationStatementSyntax instance. + + + Creates a new LocalDeclarationStatementSyntax instance. + + + Creates a new LocalDeclarationStatementSyntax instance. + + + Creates a new VariableDeclarationSyntax instance. + + + Creates a new VariableDeclarationSyntax instance. + + + Creates a new VariableDeclaratorSyntax instance. + + + Creates a new VariableDeclaratorSyntax instance. + + + Creates a new VariableDeclaratorSyntax instance. + + + Creates a new EqualsValueClauseSyntax instance. + + + Creates a new EqualsValueClauseSyntax instance. + + + Creates a new ExpressionStatementSyntax instance. + + + Creates a new ExpressionStatementSyntax instance. + + + Creates a new EmptyStatementSyntax instance. + + + Creates a new EmptyStatementSyntax instance. + + + Creates a new LabeledStatementSyntax instance. + + + Creates a new LabeledStatementSyntax instance. + + + Creates a new LabeledStatementSyntax instance. + + + Creates a new GotoStatementSyntax instance. + + + Creates a new GotoStatementSyntax instance. + + + Creates a new GotoStatementSyntax instance. + + + Creates a new BreakStatementSyntax instance. + + + Creates a new BreakStatementSyntax instance. + + + Creates a new ContinueStatementSyntax instance. + + + Creates a new ContinueStatementSyntax instance. + + + Creates a new ReturnStatementSyntax instance. + + + Creates a new ReturnStatementSyntax instance. + + + Creates a new ThrowStatementSyntax instance. + + + Creates a new ThrowStatementSyntax instance. + + + Creates a new YieldStatementSyntax instance. + + + Creates a new YieldStatementSyntax instance. + + + Creates a new WhileStatementSyntax instance. + + + Creates a new WhileStatementSyntax instance. + + + Creates a new DoStatementSyntax instance. + + + Creates a new DoStatementSyntax instance. + + + Creates a new ForStatementSyntax instance. + + + Creates a new ForStatementSyntax instance. + + + Creates a new ForStatementSyntax instance. + + + Creates a new ForEachStatementSyntax instance. + + + Creates a new ForEachStatementSyntax instance. + + + Creates a new ForEachStatementSyntax instance. + + + Creates a new UsingStatementSyntax instance. + + + Creates a new UsingStatementSyntax instance. + + + Creates a new UsingStatementSyntax instance. + + + Creates a new FixedStatementSyntax instance. + + + Creates a new FixedStatementSyntax instance. + + + Creates a new CheckedStatementSyntax instance. + + + Creates a new CheckedStatementSyntax instance. + + + Creates a new UnsafeStatementSyntax instance. + + + Creates a new UnsafeStatementSyntax instance. + + + Creates a new LockStatementSyntax instance. + + + Creates a new LockStatementSyntax instance. + + + Creates a new IfStatementSyntax instance. + + + Creates a new IfStatementSyntax instance. + + + Creates a new IfStatementSyntax instance. + + + Creates a new ElseClauseSyntax instance. + + + Creates a new ElseClauseSyntax instance. + + + Creates a new SwitchStatementSyntax instance. + + + Creates a new SwitchStatementSyntax instance. + + + Creates a new SwitchStatementSyntax instance. + + + Creates a new SwitchSectionSyntax instance. + + + Creates a new SwitchSectionSyntax instance. + + + Creates a new CaseSwitchLabelSyntax instance. + + + Creates a new CaseSwitchLabelSyntax instance. + + + Creates a new DefaultSwitchLabelSyntax instance. + + + Creates a new DefaultSwitchLabelSyntax instance. + + + Creates a new TryStatementSyntax instance. + + + Creates a new TryStatementSyntax instance. + + + Creates a new TryStatementSyntax instance. + + + Creates a new CatchClauseSyntax instance. + + + Creates a new CatchClauseSyntax instance. + + + Creates a new CatchClauseSyntax instance. + + + Creates a new CatchDeclarationSyntax instance. + + + Creates a new CatchDeclarationSyntax instance. + + + Creates a new CatchDeclarationSyntax instance. + + + Creates a new CatchFilterClauseSyntax instance. + + + Creates a new CatchFilterClauseSyntax instance. + + + Creates a new FinallyClauseSyntax instance. + + + Creates a new FinallyClauseSyntax instance. + + + Creates a new CompilationUnitSyntax instance. + + + Creates a new CompilationUnitSyntax instance. + + + Creates a new CompilationUnitSyntax instance. + + + Creates a new ExternAliasDirectiveSyntax instance. + + + Creates a new ExternAliasDirectiveSyntax instance. + + + Creates a new ExternAliasDirectiveSyntax instance. + + + Creates a new UsingDirectiveSyntax instance. + + + Creates a new UsingDirectiveSyntax instance. + + + Creates a new UsingDirectiveSyntax instance. + + + Creates a new NamespaceDeclarationSyntax instance. + + + Creates a new NamespaceDeclarationSyntax instance. + + + Creates a new NamespaceDeclarationSyntax instance. + + + Creates a new AttributeListSyntax instance. + + + Creates a new AttributeListSyntax instance. + + + Creates a new AttributeListSyntax instance. + + + Creates a new AttributeTargetSpecifierSyntax instance. + + + Creates a new AttributeTargetSpecifierSyntax instance. + + + Creates a new AttributeSyntax instance. + + + Creates a new AttributeSyntax instance. + + + Creates a new AttributeArgumentListSyntax instance. + + + Creates a new AttributeArgumentListSyntax instance. + + + Creates a new AttributeArgumentSyntax instance. + + + Creates a new AttributeArgumentSyntax instance. + + + Creates a new NameEqualsSyntax instance. + + + Creates a new NameEqualsSyntax instance. + + + Creates a new NameEqualsSyntax instance. + + + Creates a new TypeParameterListSyntax instance. + + + Creates a new TypeParameterListSyntax instance. + + + Creates a new TypeParameterSyntax instance. + + + Creates a new TypeParameterSyntax instance. + + + Creates a new TypeParameterSyntax instance. + + + Creates a new ClassDeclarationSyntax instance. + + + Creates a new ClassDeclarationSyntax instance. + + + Creates a new ClassDeclarationSyntax instance. + + + Creates a new ClassDeclarationSyntax instance. + + + Creates a new StructDeclarationSyntax instance. + + + Creates a new StructDeclarationSyntax instance. + + + Creates a new StructDeclarationSyntax instance. + + + Creates a new StructDeclarationSyntax instance. + + + Creates a new InterfaceDeclarationSyntax instance. + + + Creates a new InterfaceDeclarationSyntax instance. + + + Creates a new InterfaceDeclarationSyntax instance. + + + Creates a new InterfaceDeclarationSyntax instance. + + + Creates a new EnumDeclarationSyntax instance. + + + Creates a new EnumDeclarationSyntax instance. + + + Creates a new EnumDeclarationSyntax instance. + + + Creates a new EnumDeclarationSyntax instance. + + + Creates a new DelegateDeclarationSyntax instance. + + + Creates a new DelegateDeclarationSyntax instance. + + + Creates a new DelegateDeclarationSyntax instance. + + + Creates a new DelegateDeclarationSyntax instance. + + + Creates a new EnumMemberDeclarationSyntax instance. + + + Creates a new EnumMemberDeclarationSyntax instance. + + + Creates a new EnumMemberDeclarationSyntax instance. + + + Creates a new BaseListSyntax instance. + + + Creates a new BaseListSyntax instance. + + + Creates a new SimpleBaseTypeSyntax instance. + + + Creates a new TypeParameterConstraintClauseSyntax instance. + + + Creates a new TypeParameterConstraintClauseSyntax instance. + + + Creates a new TypeParameterConstraintClauseSyntax instance. + + + Creates a new TypeParameterConstraintClauseSyntax instance. + + + Creates a new ConstructorConstraintSyntax instance. + + + Creates a new ConstructorConstraintSyntax instance. + + + Creates a new ClassOrStructConstraintSyntax instance. + + + Creates a new ClassOrStructConstraintSyntax instance. + + + Creates a new TypeConstraintSyntax instance. + + + Creates a new FieldDeclarationSyntax instance. + + + Creates a new FieldDeclarationSyntax instance. + + + Creates a new FieldDeclarationSyntax instance. + + + Creates a new EventFieldDeclarationSyntax instance. + + + Creates a new EventFieldDeclarationSyntax instance. + + + Creates a new EventFieldDeclarationSyntax instance. + + + Creates a new ExplicitInterfaceSpecifierSyntax instance. + + + Creates a new ExplicitInterfaceSpecifierSyntax instance. + + + Creates a new MethodDeclarationSyntax instance. + + + Creates a new MethodDeclarationSyntax instance. + + + Creates a new MethodDeclarationSyntax instance. + + + Creates a new MethodDeclarationSyntax instance. + + + Creates a new OperatorDeclarationSyntax instance. + + + Creates a new OperatorDeclarationSyntax instance. + + + Creates a new OperatorDeclarationSyntax instance. + + + Creates a new ConversionOperatorDeclarationSyntax instance. + + + Creates a new ConversionOperatorDeclarationSyntax instance. + + + Creates a new ConversionOperatorDeclarationSyntax instance. + + + Creates a new ConstructorDeclarationSyntax instance. + + + Creates a new ConstructorDeclarationSyntax instance. + + + Creates a new ConstructorDeclarationSyntax instance. + + + Creates a new ConstructorDeclarationSyntax instance. + + + Creates a new ConstructorInitializerSyntax instance. + + + Creates a new ConstructorInitializerSyntax instance. + + + Creates a new DestructorDeclarationSyntax instance. + + + Creates a new DestructorDeclarationSyntax instance. + + + Creates a new DestructorDeclarationSyntax instance. + + + Creates a new DestructorDeclarationSyntax instance. + + + Creates a new PropertyDeclarationSyntax instance. + + + Creates a new PropertyDeclarationSyntax instance. + + + Creates a new PropertyDeclarationSyntax instance. + + + Creates a new PropertyDeclarationSyntax instance. + + + Creates a new ArrowExpressionClauseSyntax instance. + + + Creates a new ArrowExpressionClauseSyntax instance. + + + Creates a new EventDeclarationSyntax instance. + + + Creates a new EventDeclarationSyntax instance. + + + Creates a new EventDeclarationSyntax instance. + + + Creates a new EventDeclarationSyntax instance. + + + Creates a new IndexerDeclarationSyntax instance. + + + Creates a new IndexerDeclarationSyntax instance. + + + Creates a new IndexerDeclarationSyntax instance. + + + Creates a new AccessorListSyntax instance. + + + Creates a new AccessorListSyntax instance. + + + Creates a new AccessorDeclarationSyntax instance. + + + Creates a new AccessorDeclarationSyntax instance. + + + Creates a new AccessorDeclarationSyntax instance. + + + Creates a new ParameterListSyntax instance. + + + Creates a new ParameterListSyntax instance. + + + Creates a new BracketedParameterListSyntax instance. + + + Creates a new BracketedParameterListSyntax instance. + + + Creates a new ParameterSyntax instance. + + + Creates a new ParameterSyntax instance. + + + Creates a new IncompleteMemberSyntax instance. + + + Creates a new IncompleteMemberSyntax instance. + + + Creates a new SkippedTokensTriviaSyntax instance. + + + Creates a new SkippedTokensTriviaSyntax instance. + + + Creates a new DocumentationCommentTriviaSyntax instance. + + + Creates a new DocumentationCommentTriviaSyntax instance. + + + Creates a new TypeCrefSyntax instance. + + + Creates a new QualifiedCrefSyntax instance. + + + Creates a new QualifiedCrefSyntax instance. + + + Creates a new NameMemberCrefSyntax instance. + + + Creates a new NameMemberCrefSyntax instance. + + + Creates a new IndexerMemberCrefSyntax instance. + + + Creates a new IndexerMemberCrefSyntax instance. + + + Creates a new OperatorMemberCrefSyntax instance. + + + Creates a new OperatorMemberCrefSyntax instance. + + + Creates a new OperatorMemberCrefSyntax instance. + + + Creates a new ConversionOperatorMemberCrefSyntax instance. + + + Creates a new ConversionOperatorMemberCrefSyntax instance. + + + Creates a new ConversionOperatorMemberCrefSyntax instance. + + + Creates a new CrefParameterListSyntax instance. + + + Creates a new CrefParameterListSyntax instance. + + + Creates a new CrefBracketedParameterListSyntax instance. + + + Creates a new CrefBracketedParameterListSyntax instance. + + + Creates a new CrefParameterSyntax instance. + + + Creates a new CrefParameterSyntax instance. + + + Creates a new XmlElementSyntax instance. + + + Creates a new XmlElementSyntax instance. + + + Creates a new XmlElementStartTagSyntax instance. + + + Creates a new XmlElementStartTagSyntax instance. + + + Creates a new XmlElementStartTagSyntax instance. + + + Creates a new XmlElementEndTagSyntax instance. + + + Creates a new XmlElementEndTagSyntax instance. + + + Creates a new XmlEmptyElementSyntax instance. + + + Creates a new XmlEmptyElementSyntax instance. + + + Creates a new XmlEmptyElementSyntax instance. + + + Creates a new XmlNameSyntax instance. + + + Creates a new XmlNameSyntax instance. + + + Creates a new XmlNameSyntax instance. + + + Creates a new XmlPrefixSyntax instance. + + + Creates a new XmlPrefixSyntax instance. + + + Creates a new XmlPrefixSyntax instance. + + + Creates a new XmlTextAttributeSyntax instance. + + + Creates a new XmlTextAttributeSyntax instance. + + + Creates a new XmlTextAttributeSyntax instance. + + + Creates a new XmlCrefAttributeSyntax instance. + + + Creates a new XmlCrefAttributeSyntax instance. + + + Creates a new XmlNameAttributeSyntax instance. + + + Creates a new XmlNameAttributeSyntax instance. + + + Creates a new XmlNameAttributeSyntax instance. + + + Creates a new XmlTextSyntax instance. + + + Creates a new XmlTextSyntax instance. + + + Creates a new XmlCDataSectionSyntax instance. + + + Creates a new XmlCDataSectionSyntax instance. + + + Creates a new XmlProcessingInstructionSyntax instance. + + + Creates a new XmlProcessingInstructionSyntax instance. + + + Creates a new XmlProcessingInstructionSyntax instance. + + + Creates a new XmlCommentSyntax instance. + + + Creates a new XmlCommentSyntax instance. + + + Creates a new IfDirectiveTriviaSyntax instance. + + + Creates a new IfDirectiveTriviaSyntax instance. + + + Creates a new ElifDirectiveTriviaSyntax instance. + + + Creates a new ElifDirectiveTriviaSyntax instance. + + + Creates a new ElseDirectiveTriviaSyntax instance. + + + Creates a new ElseDirectiveTriviaSyntax instance. + + + Creates a new EndIfDirectiveTriviaSyntax instance. + + + Creates a new EndIfDirectiveTriviaSyntax instance. + + + Creates a new RegionDirectiveTriviaSyntax instance. + + + Creates a new RegionDirectiveTriviaSyntax instance. + + + Creates a new EndRegionDirectiveTriviaSyntax instance. + + + Creates a new EndRegionDirectiveTriviaSyntax instance. + + + Creates a new ErrorDirectiveTriviaSyntax instance. + + + Creates a new ErrorDirectiveTriviaSyntax instance. + + + Creates a new WarningDirectiveTriviaSyntax instance. + + + Creates a new WarningDirectiveTriviaSyntax instance. + + + Creates a new BadDirectiveTriviaSyntax instance. + + + Creates a new BadDirectiveTriviaSyntax instance. + + + Creates a new DefineDirectiveTriviaSyntax instance. + + + Creates a new DefineDirectiveTriviaSyntax instance. + + + Creates a new DefineDirectiveTriviaSyntax instance. + + + Creates a new UndefDirectiveTriviaSyntax instance. + + + Creates a new UndefDirectiveTriviaSyntax instance. + + + Creates a new UndefDirectiveTriviaSyntax instance. + + + Creates a new LineDirectiveTriviaSyntax instance. + + + Creates a new LineDirectiveTriviaSyntax instance. + + + Creates a new LineDirectiveTriviaSyntax instance. + + + Creates a new PragmaWarningDirectiveTriviaSyntax instance. + + + Creates a new PragmaWarningDirectiveTriviaSyntax instance. + + + Creates a new PragmaWarningDirectiveTriviaSyntax instance. + + + Creates a new PragmaChecksumDirectiveTriviaSyntax instance. + + + Creates a new PragmaChecksumDirectiveTriviaSyntax instance. + + + Creates a new ReferenceDirectiveTriviaSyntax instance. + + + Creates a new ReferenceDirectiveTriviaSyntax instance. + + + Creates a new LoadDirectiveTriviaSyntax instance. + + + Creates a new LoadDirectiveTriviaSyntax instance. + + + Creates a new ShebangDirectiveTriviaSyntax instance. + + + Creates a new ShebangDirectiveTriviaSyntax instance. + + + + A SyntaxReference implementation that lazily translates the result (CSharpSyntaxNode) of the + original syntax reference to a syntax reference for its NamespaceDeclarationSyntax. + + + + + this is a basic do-nothing implementation of a syntax reference + + + + + Gets the expression-body syntax from an expression-bodied member. The + given syntax must be for a member which could contain an expression-body. + + + + + Creates a new syntax token with all whitespace and end of line trivia replaced with + regularly formatted trivia. + + The token to normalize. + A sequence of whitespace characters that defines a single level of indentation. + If true the replaced trivia is elastic trivia. + + + + Creates a new syntax token with all whitespace and end of line trivia replaced with + regularly formatted trivia. + + The token to normalize. + An optional sequence of whitespace characters that defines a + single level of indentation. + An optional sequence of whitespace characters used for end of line. + If true the replaced trivia is elastic trivia. + + + + Creates a new syntax trivia list with all whitespace and end of line trivia replaced with + regularly formatted trivia. + + The trivia list to normalize. + A sequence of whitespace characters that defines a single level of indentation. + If true the replaced trivia is elastic trivia. + + + + Creates a new syntax trivia list with all whitespace and end of line trivia replaced with + regularly formatted trivia. + + The trivia list to normalize. + An optional sequence of whitespace characters that defines a + single level of indentation. + An optional sequence of whitespace characters used for end of line. + If true the replaced trivia is elastic trivia. + + + + Updates the given SimpleNameSyntax node with the given identifier token. + This function is a wrapper that calls WithIdentifier on derived syntax nodes. + + + + The given simple name updated with the given identifier. + + + + Returns true if the specified node represents a lambda. + + + + + Given a node that represents a lambda body returns a node that represents the lambda. + + + + + See SyntaxNode.GetCorrespondingLambdaBody. + + + + + Returns true if the specified represents a body of a lambda. + + + + + When queries are translated into expressions select and group-by expressions such that + 1) select/group-by expression is the same identifier as the "source" identifier and + 2) at least one Where or OrderBy clause but no other clause is present in the contained query body or + the expression in question is a group-by expression and the body has no clause + + do not translate into lambdas. + By "source" identifier we mean the identifier specified in the from clause that initiates the query or the query continuation that includes the body. + + The above condition can be derived from the language specification (chapter 7.16.2) as follows: + - In order for 7.16.2.5 "Select clauses" to be applicable the following conditions must hold: + - There has to be at least one clause in the body, otherwise the query is reduced into a final form by 7.16.2.3 "Degenerate query expressions". + - Only where and order-by clauses may be present in the query body, otherwise a transformation in 7.16.2.4 "From, let, where, join and orderby clauses" + produces pattern that doesn't match the requirements of 7.16.2.5. + + - In order for 7.16.2.6 "Groupby clauses" to be applicable the following conditions must hold: + - Only where and order-by clauses may be present in the query body, otherwise a transformation in 7.16.2.4 "From, let, where, join and orderby clauses" + produces pattern that doesn't match the requirements of 7.16.2.5. + + + + + In C# lambda bodies are expressions or block statements. In both cases it's a single node. + In VB a lambda body might be a sequence of nodes (statements). + We define this function to minimize differences between C# and VB implementation. + + + + + If the specified node represents a lambda returns a node (or nodes) that represent its body (bodies). + + + + + Compares content of two nodes ignoring lambda bodies and trivia. + + + + + "Pair lambda" is a synthesized lambda that creates an instance of an anonymous type representing a pair of values. + + + + + Returns true if the specified node can represent a closure scope -- that is a scope of a captured variable. + Doesn't validate whether or not the node actually declares any captured variable. + + + + + This method is used to keep the code that generates binders in sync + with the code that searches for binders. We don't want the searcher + to skip over any nodes that could have associated binders, especially + if changes are made later. + + "Local binder" is a vague term that refers to binders that represent + scopes for names (e.g. BlockBinders) rather than binders that tweak + default behaviors (e.g. FieldInitializerBinders). Local binders are + created by LocalBinderFactory. + + + + + Given an initializer expression infer the name of anonymous property. + Returns default(SyntaxToken) if unsuccessful + + + + + An enumerator for diagnostic lists. + + + + + Moves the enumerator to the next diagnostic instance in the diagnostic list. + + Returns true if enumerator moved to the next diagnostic, false if the + enumerator was at the end of the diagnostic list. + + + + The current diagnostic that the enumerator is pointing at. + + + + + Gets the expression-body syntax from an expression-bodied member. The + given syntax must be for a member which could contain an expression-body. + + + + + DiagnosticAnalyzer for C# compiler's syntax/semantic/compilation diagnostics. + + + + + Returns the index of the first node of a specified kind in the node list. + + Node list. + The to find. + Returns non-negative index if the list contains a node which matches , -1 otherwise. + + + + True if the list has at least one node of the specified kind. + + + + + Returns the index of the first node of a specified kind in the node list. + + Node list. + The to find. + Returns non-negative index if the list contains a node which matches , -1 otherwise. + + + + True if the list has at least one node of the specified kind. + + + + + Returns the index of the first trivia of a specified kind in the trivia list. + + Trivia list. + The to find. + Returns non-negative index if the list contains a trivia which matches , -1 otherwise. + + + + True if the list has at least one trivia of the specified kind. + + + + + Returns the index of the first token of a specified kind in the token list. + + Token list. + The to find. + Returns non-negative index if the list contains a token which matches , -1 otherwise. + + + + Tests whether a list contains a token of a particular kind. + + + The to test for. + Returns true if the list contains a token which matches + +
+
diff --git a/packages/Microsoft.CodeAnalysis.CSharp.1.3.2/lib/netstandard1.3/Microsoft.CodeAnalysis.CSharp.dll b/packages/Microsoft.CodeAnalysis.CSharp.1.3.2/lib/netstandard1.3/Microsoft.CodeAnalysis.CSharp.dll new file mode 100644 index 0000000..20ab202 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.CSharp.1.3.2/lib/netstandard1.3/Microsoft.CodeAnalysis.CSharp.dll differ diff --git a/packages/Microsoft.CodeAnalysis.CSharp.1.1.1/lib/net45/Microsoft.CodeAnalysis.CSharp.xml b/packages/Microsoft.CodeAnalysis.CSharp.1.3.2/lib/netstandard1.3/Microsoft.CodeAnalysis.CSharp.xml similarity index 98% rename from packages/Microsoft.CodeAnalysis.CSharp.1.1.1/lib/net45/Microsoft.CodeAnalysis.CSharp.xml rename to packages/Microsoft.CodeAnalysis.CSharp.1.3.2/lib/netstandard1.3/Microsoft.CodeAnalysis.CSharp.xml index b40f265..031167d 100644 --- a/packages/Microsoft.CodeAnalysis.CSharp.1.1.1/lib/net45/Microsoft.CodeAnalysis.CSharp.xml +++ b/packages/Microsoft.CodeAnalysis.CSharp.1.3.2/lib/netstandard1.3/Microsoft.CodeAnalysis.CSharp.xml @@ -1,32762 +1,33254 @@ - - - - Microsoft.CodeAnalysis.CSharp - - - - - A Binder converts names in to symbols and syntax nodes into bound trees. It is context - dependent, relative to a location in source code. - - - This portion of the binder converts a AnonymousObjectCreationExpressionSyntax into - a bound anonymous object creation node - - - This portion of the binder converts an AwaitExpressionSyntax into a BoundExpression - - - This portion of the binder converts an into a . - - - This portion of the binder converts an into a . - - - This portion of the binder converts a QueryExpressionSyntax into a BoundExpression - - - This portion of the binder reports errors arising from resolving queries. - - - This portion of the binder converts StatementSyntax nodes into BoundStatements - - - - - Get the next binder in which to look up a name, if not found by this binder. - - - - - if we are in an explicitly checked context (within checked block or expression). - if we are in an explicitly unchecked context (within unchecked block or expression). - otherwise. - - - - - True if instructions that check overflow should be generated. - - - Spec 7.5.12: - For non-constant expressions (expressions that are evaluated at run-time) that are not - enclosed by any checked or unchecked operators or statements, the default overflow checking - context is unchecked unless external factors (such as compiler switches and execution - environment configuration) call for checked evaluation. - - - - - True if the compiler should check for overflow while evaluating constant expressions. - - - Spec 7.5.12: - For constant expressions (expressions that can be fully evaluated at compile-time), - the default overflow checking context is always checked. Unless a constant expression - is explicitly placed in an unchecked context, overflows that occur during the compile-time - evaluation of the expression always cause compile-time errors. - - - - - Some nodes have special binder's for their contents (like Block's) - - - - - Get locals declared immediately in scope represented by the node. - - - - - The member containing the binding context. Note that for the purposes of the compiler, - a lambda expression is considered a "member" of its enclosing method, field, or lambda. - - - - - Is the contained code within a member method body? - - - May be false in lambdas that are outside of member method bodies, e.g. lambdas in - field initializers. - - - - - Is the contained code within an iterator block? - - - Will be false in a lambda in an iterator. - - - - - Is the contained code within the syntactic span of an - iterator method? - - - Will be true in a lambda in an iterator. - - - - - If we are inside a context where a break statement is legal, - returns the that a break statement would branch to. - Returns null otherwise. - - - - - If we are inside a context where a continue statement is legal, - returns the that a continue statement would branch to. - Returns null otherwise. - - - - - Get the element type of this iterator. - - Node to report diagnostics, if any, such as "yield statement cannot be used - inside a lambda expression" - Where to place any diagnostics - Element type of the current iterator, or an error type. - - - - The Imports for all containing namespace declarations (innermost-to-outermost, including global). - - - - - The type containing the binding context - - - - - Returns true if the binder is binding top-level script code. - - - - - Issue an error or warning for a symbol if it is Obsolete. If there is not enough - information to report diagnostics, then store the symbols so that diagnostics - can be reported at a later stage. - - - - - True if the symbol is definitely obsolete. - False if the symbol is definitely not obsolete. - Unknown if the symbol may be obsolete. - - NOTE: The return value reflects obsolete-ness, not whether or not the diagnostic was reported. - - - - - Expression lvalue and rvalue requirements. - - - - - Expression is the RHS of an assignment operation. - - - The following are rvalues: values, variables, null literals, properties - and indexers with getters, events. The following are not rvalues: - namespaces, types, method groups, anonymous functions. - - - - - Expression is the RHS of an assignment operation - and may be a method group. - - - - - Expression is the LHS of a simple assignment operation. - - - - - Expression is the operand of an increment - or decrement operation. - - - - - Expression is the LHS of a compound assignment - operation (such as +=). - - - - - Expression is an out parameter. - - - - - Expression is the operand of an address-of operation (&). - - - - - Expression is the receiver of a fixed buffer field access - - - - - Report diagnostics that should be reported when using a synthesized attribute. - - - - - Outside of checked, unchecked expression/block. - - - - - Within unchecked expression/block. - - - - - Within checked expression/block. - - - - - We represent the set of query variables in scope at a particular point by a RangeVariableMap. - Each query variable in scope has a key in this map. If the corresponding value is empty, then - that query variable is represented directly by a lambda parameter. If it is non-empty, then - to get the value of that query variable one starts with the first parameter of the current - lambda (the first parameter is always the transparent one), and dot through its members using - the names in the value list, in reverse order. So, for example, if the query variable "x" has - a value in this map of ["Item2", "Item1", "Item1"], then the way to compute the value of that - query variable is starting with the current lambda's first parameter P, compute "P.Item1.Item1.Item2". - See also WithQueryLambdaParametersBinder. - - - - - Actually, defines if an error ERR_AnonymousTypeNotAvailable is to be generated; - - Dev10 rules (which are based on BindingContext::InMethod()) are difficult to - reproduce, so this implementation checks both current symbol as well as syntax nodes. - - - - - Returns the type to be used as a field type; generates errors in case the type is not - supported for anonymous type fields. - - - - - Gets the rewritten attribute constructor arguments, i.e. the arguments - are in the order of parameters, which may differ from the source - if named constructor arguments are used. - - For example: - void Foo(int x, int y, int z, int w = 3); - - Foo(0, z: 2, y: 1); - - Arguments returned: 0, 1, 2, 3 - - Rewritten attribute constructor arguments - - CONSIDER: Can we share some code will call rewriting in the local rewriter? - - - - - Walk a custom attribute argument bound node and return a TypedConstant. Verify that the expression is a constant expression. - - - - - Return true iff an await with this subexpression would be legal where the expression appears. - - - - - Assuming we are in an async method, return true if we're in a context where await would be illegal. - Specifically, return true if we're in a lock, catch, or finally. - - - - - Reports an error if the await expression did not occur in an async context. - - True if the expression contains errors. - - - - Report diagnostics if the await expression occurs in a context where it is not allowed. - - True if errors were found. - - - - Finds and validates the required members of an awaitable expression, as described in spec 7.7.7.1. - - True if the expression is awaitable; false otherwise. - - - - Validates the awaited expression, returning true if no errors are found. - - - - - Finds the GetAwaiter method of an awaitable expression. - - - Spec 7.7.7.1: - An awaitable expression t has an accessible instance or extension method called GetAwaiter with no - parameters and no type parameters, and a return type A that meets the additional requirements for an - Awaiter. - NOTE: this is an error in the spec. An extension method of the form - Awaiter<T> GetAwaiter<T>(this Task<T>) may be used. - - - - - Finds the IsCompleted property of an Awaiter type. - - - Spec 7.7.7.1: - An Awaiter A has an accessible, readable instance property IsCompleted of type bool. - - - - - Checks that the Awaiter implements System.Runtime.CompilerServices.INotifyCompletion. - - - Spec 7.7.7.1: - An Awaiter A implements the interface System.Runtime.CompilerServices.INotifyCompletion. - - - - - Finds the GetResult method of an Awaiter type. - - - Spec 7.7.7.1: - An Awaiter A has an accessible instance method GetResult with no parameters and no type parameters. - - - - - Return a collection of bound constraint clauses indexed by type parameter - ordinal. All constraint clauses are bound, even if there are multiple constraints - for the same type parameter, or constraints for unrecognized type parameters. - Extra constraints are not included in the returned collection however. - - - - - Bind and return a single type parameter constraint clause. - - - - - Returns true if the type is a valid constraint type. - Otherwise returns false and generates a diagnostic. - - - - - This method implements the algorithm in spec section 7.6.5.1. - - For method group conversions, there are situations in which the conversion is - considered to exist ("Otherwise the algorithm produces a single best method M having - the same number of parameters as D and the conversion is considered to exist"), but - application of the conversion fails. These are the "final validation" steps of - overload resolution. - - - True if there is any error. - - - - - Performs the following checks: - - Spec 7.6.5: Invocation expressions (definition of Final Validation) - The method is validated in the context of the method group: If the best method is a static method, - the method group must have resulted from a simple-name or a member-access through a type. If the best - method is an instance method, the method group must have resulted from a simple-name, a member-access - through a variable or value, or a base-access. If neither of these requirements is true, a binding-time - error occurs. - (Note that the spec omits to mention, in the case of an instance method invoked through a simple name, that - the invocation must appear within the body of an instance method) - - Spec 7.5.4: Compile-time checking of dynamic overload resolution - If F is a static method, the method group must have resulted from a simple-name, a member-access through a type, - or a member-access whose receiver can't be classified as a type or value until after overload resolution (see §7.6.4.1). - If F is an instance method, the method group must have resulted from a simple-name, a member-access through a variable or value, - or a member-access whose receiver can't be classified as a type or value until after overload resolution (see §7.6.4.1). - - - True if there is any error. - - - - - Was the receiver expression compiler-generated? - - - - - This method implements the checks in spec section 15.2. - - - - - This method combines final validation (section 7.6.5.1) and delegate compatibility (section 15.2). - - CSharpSyntaxNode of the expression requiring method group conversion. - Conversion to be performed. - Optional receiver. - Method invoked as extension method. - Target delegate type. - Where diagnostics should be added. - True if a diagnostic has been added. - - - - This method is a wrapper around MethodGroupConversionHasErrors. As a preliminary step, - it checks whether a conversion exists. - - - - - We can't use BindNamespaceOrTypeSymbol, since it doesn't return inaccessible symbols (directly). - - - Guaranteed not to return null. - - CONSIDER: As in dev11, we don't handle ambiguity at this level. Hypothetically, - we could just pick one, though an "ideal" solution would probably involve a search - down all ambiguous branches. - - - - - Perform lookup (optionally, in a specified container). If nothing is found and the member name matches the containing type - name, then use the instance constructors of the type instead. The resulting symbols are sorted since tie-breaking is based - on order and we want cref binding to be repeatable. - - - Never returns null. - - - - - Given a list of viable lookup results (based on the name, arity, and containing symbol), - attempt to select one. - - - - - At this point, we have a list of viable symbols and no parameter list with which to perform - overload resolution. We'll just return the first symbol, giving a diagnostic if there are - others. - Caveat: If there are multiple candidates and only one is from source, then the source symbol - wins and no diagnostic is reported. - - - - - Replace any named type in the symbol list with its instance constructors. - Construct all candidates with the implicitly-declared CrefTypeParameterSymbols. - - - - - Given a list of method and/or property candidates, choose the first one (if any) with a signature - that matches the parameter list in the cref. Return null if there isn't one. - - - Produces a diagnostic for ambiguous matches, but not for unresolved members - WRN_BadXMLRef is - handled in BindMemberCref. - - - - - If the member is generic, construct it with the CrefTypeParameterSymbols that should be in scope. - - - - - Keep in sync with CSharpSemanticModel.GetSpeculativelyBoundExpression. - - - - - Determines whether "this" reference is available within the current context. - - The reference was explicitly specified in syntax. - True if "this" is not available due to the current method/property/field initializer being static. - True if a reference to "this" is available. - - - - Returns true if the node is in a position where an unbound type - such as (C<,>) is allowed. - - - - - Generates a new with no known type - - - - - Generates a new with no known type, and the given bound child. - - - - - Generates a new with no known type, and the given bound children. - - - - - Generates a new with no known type, given lookup resultKind. - - - - - Generates a new with no known type, given lookup resultKind and the given bound child. - - - - - Generates a new with no known type, given lookup resultKind and the given bound children. - - - - - Generates a new with no known type, given lookupResultKind and given symbols for GetSemanticInfo API. - - - - - Generates a new with no known type, given lookupResultKind and given symbols for GetSemanticInfo API, - and the given bound child. - - - - - Generates a new with no known type, given lookupResultKind and given symbols for GetSemanticInfo API, - and the given bound children. - - - - - Generates a new with no known type, given lookupResultKind and given symbols for GetSemanticInfo API, - and the given bound children. - - - - - Helper method to generate a bound expression with HasErrors set to true. - Returned bound expression is guaranteed to have a non-null type, except when is an unbound lambda. - If already has errors and meets the above type requirements, then it is returned unchanged. - Otherwise, if is a BoundBadExpression, then it is updated with the and non-null type. - Otherwise, a new wrapping is returned. - - - Returned expression need not be a , but is guaranteed to have HasErrors set to true. - - - - - Bind the expression and verify the expression matches the combination of lvalue and - rvalue requirements given by valueKind. If the expression was bound successfully, but - did not meet the requirements, the return value will be a that - (typically) wraps the subexpression. - - - - - This function is only needed for SemanticModel to perform binding for erroneous cases. - - - - - Binds a simple identifier. - - - - - This implements the casting behavior described in section 6.2.3 of the spec: - - - If the nullable conversion is from S to T?, the conversion is evaluated as the underlying conversion - from S to T followed by a wrapping from T to T?. - - This particular check is done in the binder because it involves conversion processing rules (like overflow - checking and constant folding) which are not handled by Conversions. - - - - - Gets the NameSyntax associated with the syntax node - If no syntax is attached it sets the nameString to plain text - name and returns a null NameSyntax - - Syntax node - Plain text name - - - - Gets the plain text name associated with the expression syntax node - - Expression syntax node - Plain text name - - - - This method walks through the array's InitializerExpressionSyntax and binds all the initializer expressions recursively. - NOTE: It doesn't convert the bound initializer expressions to array's element type. - NOTE: This is done separately in ConvertAndBindArrayInitialization method below. - - Initializer Syntax. - Bound expression builder. - Diagnostics. - Current array dimension being processed. - Rank of the array type. - - - - Given an array of bound initializer expressions, this method converts these bound expressions - to array's element type and generates a BoundArrayInitialization with the converted initializers. - - Diagnostics. - Initializer Syntax. - Array type. - Known array bounds. - Current array dimension being processed. - Array of bound initializer expressions. - - Index into the array of bound initializer expressions to fetch the next bound expression. - - - - - - Bind the (implicit or explicit) constructor initializer of a constructor symbol (in source). - - - Null for implicit, - BaseConstructorInitializerSyntax.ArgumentList, or - ThisConstructorInitializerSyntax.ArgumentList, or - BaseClassWithArgumentsSyntax.ArgumentList for explicit. - Constructor containing the initializer. - Accumulates errors (e.g. unable to find constructor to invoke). - A bound expression for the constructor initializer call. - - This method should be kept consistent with Compiler.BindConstructorInitializer (e.g. same error codes). - - - - - Given the type containing constructors, gets the list of candidate instance constructors and uses overload resolution to determine which one should be called. - - The containing type of the constructors. - The already bound arguments to the constructor. - The name to use in diagnostics if overload resolution fails. - The location at which to report overload resolution result diagnostics. - True to suppress overload resolution result diagnostics (but not argument diagnostics). - Where diagnostics will be reported. - If this method returns true, then it will contain a valid MethodResolutionResult. - Otherwise, it may contain a MethodResolutionResult for an inaccessible constructor (in which case, it will incorrectly indicate success) or nothing at all. - Candidate instance constructors of type used for overload resolution. - It is always legal to access a protected base class constructor - via a constructor initializer, but not from an object creation expression. - True if overload resolution successfully chose an accessible constructor. - - The two-pass algorithm (accessible constructors, then all constructors) is the reason for the unusual signature - of this method (i.e. not populating a pre-existing ). - Presently, rationalizing this behavior is not worthwhile. - - - - - Binds a member access expression - - - - - Attempt to bind the LHS of a member access expression. If this is a Color Color case (spec 7.6.4.1), - then return a BoundExpression if we can easily disambiguate or a BoundTypeOrValueExpression if we - cannot. If this is not a Color Color case, then return null. - - - - - Bind the RHS of a member access expression, given the bound LHS. - It is assumed that CheckValue has not been called on the LHS. - - - - - Create a value from the expression that can be used as a left-hand-side - of a member access. This method special-cases method and property - groups only. All other expressions are returned as is. - - - - - Report the error from member access lookup. Or, if there - was no explicit error from lookup, report "no such member". - - - - - Return true if the given type is or implements a WinRTAsyncInterface. - - - - - Return a BoundExpression representing the invalid member. - - - - - Combine the receiver and arguments of an extension method - invocation into a single argument list to allow overload resolution - to treat the invocation as a static method invocation with no receiver. - - - - - Binds a static or instance member access. - - - - - Given a viable LookupResult, report any ambiguity errors and return either a single - non-method symbol or a method or property group. If the result set represents a - collection of methods or a collection of properties where at least one of the properties - is an indexed property, then 'methodOrPropertyGroup' is populated with the method or - property group and the method returns null. Otherwise, the method returns a single - symbol and 'methodOrPropertyGroup' is empty. (Since the result set is viable, there - must be at least one symbol.) If the result set is ambiguous - either containing multiple - members of different member types, or multiple properties but no indexed properties - - then a diagnostic is reported for the ambiguity and a single symbol is returned. - - - - - Perform lookup and overload resolution on methods defined directly on the class and any - extension methods in scope. Lookup will occur for extension methods in all nested scopes - as necessary until an appropriate method is found. If analyzedArguments is null, the first - method group is returned, without overload resolution being performed. That method group - will either be the methods defined on the receiver class directly (no extension methods) - or the first set of extension methods. - - - - - Represents a small change from the enclosing/next binder. - Can specify a BindingLocation and a ContainingMemberOrLambda. - - - - - Represents a small change from the enclosing/next binder. - Can specify a receiver Expression for containing conditional member access. - - - - - It seems to be common to do both of these things at once, so provide a way to do so - without adding two links to the binder chain. - - - - - In regular C#, all field initializers are assignments to fields and the assigned expressions - may not reference instance members. - - - - - In script C#, some field initializers are assignments to fields and others are global - statements. There are no restrictions on accessing instance members. - - - - - Helper method to create a synthesized method invocation expression. - - Syntax Node. - Receiver for the method call. - Method to be invoked on the receiver. - Arguments to the method call. - Diagnostics. - Optional type arguments syntax. - Optional type arguments. - The syntax for the query clause generating this invocation expression, if any. - True to allow invocation of fields and properties of delegate type. Only methods are allowed otherwise. - False to prevent selecting a params method in unexpanded form. - Synthesized method invocation expression. - - - - Bind an expression as a method invocation. - - - - - Bind an expression as a method invocation. - - - - - Perform overload resolution on the method group or expression (BoundMethodGroup) - and arguments and return a BoundExpression representing the invocation. - - Invocation syntax node. - The syntax for the invoked method, including receiver. - Name of the invoked method. - Overload resolution result for method group executed by caller. - Arguments bound by the caller. - Method group if the invocation represents a potentially overloaded member. - Delegate type if method group represents a delegate. - Diagnostics. - The syntax for the query clause generating this invocation expression, if any. - BoundCall or error expression representing the invocation. - - - Invocation syntax node. - The syntax for the invoked method, including receiver. - - - - Replace a BoundTypeOrValueExpression with a BoundExpression for either a type (if useType is true) - or a value (if useType is false). Any other node is unmodified. - - - Call this once overload resolution has succeeded on the method group of which the BoundTypeOrValueExpression - is the receiver. Generally, useType will be true if the chosen method is static and false otherwise. - - - - - Return the delegate type if this expression represents a delegate. - - - - - Returns true if syntax form is OK (so no errors were reported) - - - - - Helper method that checks whether there is an invocable 'nameof' in scope. - - - - - Performs name lookup for simple generic or non-generic name - within an optional qualifier namespace or type symbol. - If LookupOption.AttributeTypeOnly is set, then it performs - attribute type lookup which involves attribute name lookup - with and without "Attribute" suffix. - - - - - Look for any symbols in scope with the given name and arity. - - - Makes a second attempt if the results are not viable, in order to produce more detailed failure information (symbols and diagnostics). - - - - - If qualifierOpt is null, look for any symbols in - scope with the given name and arity. - Otherwise look for symbols that are members of the specified qualifierOpt. - - - - - Look for symbols that are members of the specified namespace or type. - - - - - Lookup a member name in a submission chain. - - - We start with the current submission class and walk the submission chain back to the first submission. - The search has two phases - 1) We are looking for any symbol matching the given name, arity, and options. If we don't find any the search is over. - If we find and overloadable symbol(s) (a method or an indexer) we start looking for overloads of this kind - (lookingForOverloadsOfKind) of symbol in phase 2. - 2) If a visited submission contains a matching member of a kind different from lookingForOverloadsOfKind we stop - looking further. Otherwise, if we find viable overload(s) we add them into the result. - - Note that indexers are not supported in script but we deal with them here to handle errors. - - - - - Lookup extension methods by name and arity in the given binder and - check viability in this binder. The lookup is performed on a single - binder because extension method search stops at the first applicable - method group from the nearest enclosing namespace. - - - - - Lookup attribute name in the given binder. By default two name lookups are performed: - (1) With the provided name - (2) With an Attribute suffix added to the provided name - Lookup with Attribute suffix is performed only if LookupOptions.VerbatimAttributeName is not set. - - If either lookup is ambiguous, we return the corresponding result with ambiguous symbols. - Else if exactly one result is single viable attribute type, we return that result. - Otherwise, we return a non-viable result with LookupResult.NotAnAttributeType or an empty result. - - - - - Return the extension methods from this specific binding scope that match the name and optional - arity. Since the lookup of extension methods is iterative, proceeding one binding scope at a time, - GetCandidateExtensionMethods should not defer to the next binding scope. Instead, the caller is - responsible for walking the nested binding scopes from innermost to outermost. This method is overridden - to search the available members list in binding types that represent types, namespaces, and usings. - - - - - If the type implements one of a select few WinRT interfaces, the interface type is - projected to the CLR collection type (e.g., IVector to IList). - When importing a winmd type it may implement one or more winmd collection - interfaces. When the collection interfaces are projected, we may need - to add the projected members to the imported type so that calls to those - members succeed as normal. This method adds the interface methods to - the lookup, if necessary. The CLR understands that a call to the .NET interface - should be projected onto the WinRT interface method. - - - - - This helper is used to determine whether this symbol hides / is hidden - based on its signature, as opposed to its name. - - - CONSIDER: It might be nice to generalize this - maybe an extension method - on Symbol (e.g. IsOverloadable or HidesByName). - - - - - Distinguish from , which performs an analogous task for Add*LookupSymbolsInfo*. - - - - - Used by Add*LookupSymbolsInfo* to determine whether the symbol is of interest. - Distinguish from , which performs an analogous task for LookupSymbols*. - - - Does not consider - that is left to the caller. - - - - - A symbol is accessible for referencing in a cref if it is in the same assembly as the reference - or the symbols's effective visibility is not private. - - - - - Check whether "symbol" is accessible from this binder. - Also checks protected access via "accessThroughType". - - - - - Check whether "symbol" is accessible from this binder. - Also checks protected access via "accessThroughType", and sets "failedThroughTypeCheck" if fails - the protected access check. - - - - - Should only be called by , - which will already have checked for . - - - - - Look for names in scope - - - - - Look for names of members - - - - - Don't call this one directly - call one of the helpers. - - - - - For "receiver.event += expr", produce "receiver.add_event(expr)". - For "receiver.event -= expr", produce "receiver.remove_event(expr)". - - - Performs some validation of the accessor that couldn't be done in CheckEventValueKind, because - the specific accessor wasn't known. - - - - - If one of the (unconverted) operands has constant value null and the other has - a null constant value other than null, then they are definitely not equal - and we can give a constant value for either == or !=. This is a spec violation - that we retain from Dev10. - - The operator kind. Nothing will happen if it is not a lifted equality operator. - The left-hand operand of the operation (possibly wrapped in a conversion). - The right-hand operand of the operation (possibly wrapped in a conversion). - - If the operator represents lifted equality, then constant value true if both arguments have constant - value null, constant value false if exactly one argument has constant value null, and null otherwise. - If the operator represents lifted inequality, then constant value false if both arguments have constant - value null, constant value true if exactly one argument has constant value null, and null otherwise. - - - SPEC VIOLATION: according to the spec (section 7.19) constant expressions cannot - include implicit nullable conversions or nullable subexpressions. However, Dev10 - specifically folds over lifted == and != (see ExpressionBinder::TryFoldingNullableEquality). - Dev 10 does do compile-time evaluation of simple lifted operators, but it does so - in a rewriting pass (see NullableRewriter) - they are not treated as constant values. - - - - - Returns ConstantValue.Bad if, and only if, compound string length is out of supported limit. - The parameter contains value corresponding to the - left node, or zero, which will trigger inference. Upon return, it will - be adjusted to correspond future result node. - - - - - From ExpressionBinder::EnsureQMarkTypesCompatible: - - The v2.0 specification states that the types of the second and third operands T and S of a ternary operator - must be TT and TS such that either (a) TT==TS, or (b), TT->TS or TS->TT but not both. - - Unfortunately that is not what we implemented in v2.0. Instead, we implemented - that either (a) TT=TS or (b) T->TS or S->TT but not both. That is, we looked at the - convertibility of the expressions, not the types. - - - Changing that to the algorithm in the standard would be a breaking change. - - b ? (Func<int>)(delegate(){return 1;}) : (delegate(){return 2;}) - - and - - b ? 0 : myenum - - would suddenly stop working. (The first because o2 has no type, the second because 0 goes to - any enum but enum doesn't go to int.) - - It gets worse. We would like the 3.0 language features which require type inference to use - a consistent algorithm, and that furthermore, the algorithm be smart about choosing the best - of a set of types. However, the language committee has decided that this algorithm will NOT - consume information about the convertibility of expressions. Rather, it will gather up all - the possible types and then pick the "largest" of them. - - To maintain backwards compatibility while still participating in the spirit of consistency, - we implement an algorithm here which picks the type based on expression convertibility, but - if there is a conflict, then it chooses the larger type rather than producing a type error. - This means that b?0:myshort will have type int rather than producing an error (because 0->short, - myshort->int). - - - - - Constant folding for conditional (aka ternary) operators. - - - - - This is a clone of the Dev10 logic for reporting query errors. - - - - - This is the set of parameters and local variables that were used as arguments to - lock or using statements in enclosing scopes. - - - using (x) { } // x counts - using (IDisposable y = null) { } // y does not count - - - - - Noteworthy override is in MemberSemanticModel.IncrementalBinder (used for caching). - - - - - Report an error if this is an awaitable async method invocation that is not being awaited. - - - The checks here are equivalent to StatementBinder::CheckForUnobservedAwaitable() in the native compiler. - - - - - Wrap the initializer in a BoundFixedLocalCollectionInitializer so that the rewriter will have the - information it needs (e.g. conversions, helper methods). - - - - - The purpose of this method is to determine if the expression is classified by the - specification as a *variable*. If it is not then this code gives an appropriate error message. - - To determine the appropriate error message we need to know two things: - - (1) why do we want to know if this is a variable? Because we are trying to assign it, - increment it, or pass it by reference? - - (2) Are we trying to determine if the left hand side of a dot is a variable in order - to determine if the field or property on the right hand side of a dot is assignable? - - - - - Check the expression is of the required lvalue and rvalue specified by valueKind. - The method returns the original expression if the expression is of the required - type. Otherwise, an appropriate error is added to the diagnostics bag and the - method returns a BoundBadExpression node. The method returns the original - expression without generating any error if the expression has errors. - - - - - There are two BadEventUsage error codes and this method decides which one should - be used for a given event. - - - - - SPEC: When a property or indexer declared in a struct-type is the target of an - SPEC: assignment, the instance expression associated with the property or indexer - SPEC: access must be classified as a variable. If the instance expression is - SPEC: classified as a value, a compile-time error occurs. Because of 7.6.4, - SPEC: the same rule also applies to fields. - - - NOTE: The spec fails to impose the restriction that the receiver must be classified - as a variable (unlike for properties - 7.17.1). This seems like a bug, but we have - production code that won't build with the restriction in place (see DevDiv #15674). - - - - - Wrap a given expression e into a block as either { e; } or { return e; } - Shared between lambda and expression-bodied method binding. - - - - - Binds an expression-bodied member with expression e as either { return e;} or { e; }. - - - - - Binds a lambda with expression e as either { return e;} or { e; }. - - - - - Binds the type for the syntax taking into account possibility of "var" type. - - Type syntax to bind. - Diagnostics. - - Set to false if syntax binds to a type in the current context and true if - syntax is "var" and it binds to "var" keyword in the current context. - - - Bound type if syntax binds to a type in the current context and - null if syntax binds to "var" keyword in the current context. - - - - - Binds the type for the syntax taking into account possibility of "var" type. - - Type syntax to bind. - Diagnostics. - - Set to false if syntax binds to a type in the current context and true if - syntax is "var" and it binds to "var" keyword in the current context. - - Alias symbol if syntax binds to an alias. - - Bound type if syntax binds to a type in the current context and - null if syntax binds to "var" keyword in the current context. - - - - - Binds the type for the syntax taking into account possibility of "var" type. - If the syntax binds to an alias symbol to a type, it returns the alias symbol. - - Type syntax to bind. - Diagnostics. - - Set to false if syntax binds to a type or alias to a type in the current context and true if - syntax is "var" and it binds to "var" keyword in the current context. - - - Bound type or alias if syntax binds to a type or alias to a type in the current context and - null if syntax binds to "var" keyword in the current context. - - - - - The immediately containing namespace or named type, or the global - namespace if containing symbol is neither a namespace or named type. - - - - - Binds a simple name or the simple name portion of a qualified name. - - - - - Keep check and error in sync with ConstructBoundMethodGroupAndReportOmittedTypeArguments. - - - - - Keep check and error in sync with ConstructNamedTypeUnlessTypeArgumentOmitted. - - - - - Check generic type constraints unless the type is used as part of a type or method - declaration. In those cases, constraints checking is handled by the caller. - - - - - This is a layer on top of the Compilation version that generates a diagnostic if the special - member isn't found. - - - - - Reports use-site diagnostics for the specified symbol. - - - True if there was an error among the reported diagnostics - - - - - Reports use-site diagnostics for the specified symbol. - - - True if there was an error among the reported diagnostics - - - - - This is a layer on top of the Compilation version that generates a diagnostic if the well-known - type isn't found. - - - - - Retrieves a well-known type member and reports diagnostics. - - Null if the symbol is missing. - - - - Returns -1 if None. - - - - - Prefers symbols from source module, then from added modules, then from referenced assemblies. - Returns true if values were swapped. - - - - - Returns true if the second is a better location than the first. - - - - - Prefer symbols from source module, then from added modules, then from referenced assemblies. - - - - - This is only intended to be called when the type isn't found (i.e. not when it is found but is inaccessible, has the wrong arity, etc). - - - - - Look for a type forwarder for the given type in the containing assembly and any referenced assemblies. - If one is found, search again in the target assembly. Return the last assembly in the chain. - - The metadata name of the (potentially) forwarded type, including the arity (if non-zero). - The arity of the forwarded type. - Set to true if a cycle was found in the type forwarders. - - - Since this method is intended to be used for error reporting, it stops as soon as it finds - any type forwarder - it does not check other assemblies for consistency or better results. - - - - - True if we are currently in an unsafe region (type, member, or block). - - - Does not imply that this compilation allows unsafe regions (could be in an error recovery scenario). - To determine that, check this.Compilation.Options.AllowUnsafe. - - - - True if a diagnostic was reported, or would have been reported if not for - the suppress flag. - - - True if a diagnostic was reported, or would have been reported if not for - the suppress flag. - - - True if a diagnostic was reported, or would have been reported if not for - the suppress flag. - - - True if a diagnostic was reported, or would have been reported if not for - the suppress flag. - - - - Get the name of the method so that it can be looked up in the containing type. - - Non-null declaration syntax. - Binder for the scope around the method (may be null for operators, constructors, and destructors). - - - - Get the name of the property, indexer, or event so that it can be looked up in the containing type. - - Non-null declaration syntax. - Non-null binder for the scope around the member. - - - - Returns true if the location is within the syntax tree and span. - - - - - Returns true if containingNode has a child that contains the specified position - and has kind UsingDirective. - - - Usings can't see other usings, so this is extra info when looking at a namespace - or compilation unit scope. - - - - - Used to detect whether we are in a cref parameter type. - - - - - Used to detect whether we are in a cref return type. - - - - - We're in a <param> or <paramref> element, so we want a binder that can see - the parameters of the associated member and nothing else. - - - - - We're in a <typeparam> or <typeparamref> element, so we want a binder that can see - the type parameters of the associated member and nothing else. - - - - - Given a CrefSyntax and an associated member declaration syntax node, - construct an appropriate binder for binding the cref. - - Cref that will be bound. - The member to which the documentation comment (logically) containing - the cref syntax applies. - Corresponding binder factory. - True to get a special binder for cref parameter and return types. - - The CrefSyntax does not actually have to be within the documentation comment on the member - it - could be included from another file. - - - - - Internal version of MakeCrefBinder that allows the caller to explicitly set the underlying binder. - - - - - Walk up from an XML syntax node (attribute or tag) to the enclosing documentation comment trivia. - - - - - Note, there is no guarantee that the factory always gives back the same binder instance for the same . - - - - - Returns binder that binds usings and aliases - - - Specify imports in the corresponding namespace, or - for top-level imports. - - True if the binder will be used to bind a using directive. - - - - A specific location for binding. - - - - - Indicates that the current context allows unsafe constructs. - - - NOTE: Dev10 doesn't seem to treat attributes as being within the unsafe region. - Fortunately, not following this behavior should not be a breaking change since - attribute arguments have to be constants and there are no constants of unsafe - types. - - - - - Indicates that the unsafe diagnostics are not reported in the current context, regardless - of whether or not it is (part of) an unsafe region. - - - - - Indicates that this binder is being used to answer SemanticModel questions (i.e. not - for batch compilation). - - - Imports touched by a binder with this flag set are not consider "used". - - - - Remarks, mutually exclusive with . - - - Remarks, mutually exclusive with . - - - - In the debugger, one can take the address of a managed object. - - - - - In the debugger, the context is always unsafe, but one can still await. - - - - - Ignore duplicate types from the cor library. - - - - - When binding imports in scripts/submissions, using aliases (other than from the current submission) - are considered but other imports are not. - - - - - In a file that has been included in the compilation via #load. - - - - - Extension methods for the type. - - - - - A binder that knows no symbols and will not delegate further. - - - - - This is used while computing the values of constant fields. Since they can depend on each - other, we need to keep track of which ones we are currently computing in order to avoid (and - report) cycles. - - - - - This binder keeps track of the set of constant fields that are currently being evaluated - so that the set can be passed into the next call to SourceFieldSymbol.ConstantValue (and - its callers). - - - - - Each application of an attribute is effectively a constructor call. Since the attribute constructor - might have a CallerMemberName parameter, we need to keep track of which method/property/event - the attribute is on/in (e.g. on a parameter) so that we can use the name of that member as the - CallerMemberName argument. - - - - Next binder in the chain (enclosing). - Symbol to which the attribute was applied (e.g. a parameter). - - - - We're binding an attribute and this is the member to/in which the attribute was applied. - - - Method, property, event, or null. - A virtual property on Binder (i.e. our usual pattern) would be more robust, but the applicability - of this property is so narrow that it doesn't seem worthwhile. - - - - - Walk up to the nearest method/property/event. - - - - - This is a special binder used for decoding some special well-known attributes very early in the attribute binding phase. - It only binds those attribute argument syntax which can produce valid attribute arguments, but doesn't report any diagnostics. - Subsequent binding phase will rebind such erroneous attributes and generate appropriate diagnostics. - - - - - Since this method is expected to be called on every nested expression of the argument, it doesn't - need to recurse (directly). - - - - - This binder owns and lazily creates the map of SyntaxNodes to Binders associated with - the syntax with which it is created. This binder is not created in reaction to any - specific syntax node type. It is inserted into the binder chain - between the binder which it is constructed with and those that it constructs via - the LocalBinderFactory. - - - - - A distinct scope that may expose extension methods. For a particular Binder, there - are two possible scopes: one for the namespace, and another for any using statements - in the namespace. The namespace scope is searched before the using scope. - - - - - An enumerable collection of extension method scopes in search - order, from the given Binder, out through containing Binders. - - - - - An enumerator over ExtensionMethodScopes. - - - - - Information to be deduced while binding a foreach loop so that the loop can be lowered - to a while over an enumerator. Not applicable to the array or string forms. - - - - - A loop binder that (1) knows how to bind foreach loops and (2) has the foreach iteration variable in scope. - - - This binder produces BoundForEachStatements. The lowering described in the spec is performed in ControlFlowRewriter. - - - - - Bind the ForEachStatementSyntax at the root of this binder. - - - - - The spec describes an algorithm for finding the following types: - 1) Collection type - 2) Enumerator type - 3) Element type - - The implementation details are a bit difference. If we're iterating over a string or an array, then we don't need to record anything - but the inferredType (in case the iteration variable is implicitly typed). If we're iterating over anything else, then we want the - inferred type plus a ForEachEnumeratorInfo.Builder with: - 1) Collection type - 2) Element type - 3) GetEnumerator method of the collection type (return type will be the enumerator type from the spec) - 4) Current property of the enumerator type - 5) MoveNext method of the enumerator type - - The caller will have to do some extra conversion checks before creating a ForEachEnumeratorInfo for the BoundForEachStatement. - - Builder to fill in (partially, all but conversions). - The expression over which to iterate. - Populated with binding diagnostics. - Partially populated (all but conversions) or null if there was an error. - - - - Check for a GetEnumerator method on collectionExprType. Failing to satisfy the pattern is not an error - - it just means that we have to check for an interface instead. - - Type of the expression over which to iterate. - Populated with *warnings* if there are near misses. - Builder to fill in. set if the pattern in satisfied. - True if the method was found (still have to verify that the return (i.e. enumerator) type is acceptable). - - Only adds warnings, so does not affect control flow (i.e. no need to check for failure). - - - - - Perform a lookup for the specified method on the specified type. Perform overload resolution - on the lookup results. - - Type to search. - Method to search for. - Passed in for reusability. - True if failures should result in warnings; false if they should result in errors. - Populated with binding diagnostics. - The desired method or null. - - - - The overload resolution portion of FindForEachPatternMethod. - - - - - Called after it is determined that the expression being enumerated is of a type that - has a GetEnumerator method. Checks to see if the return type of the GetEnumerator - method is suitable (i.e. has Current and MoveNext). - - Must be non-null and contain a non-null GetEnumeratorMethod. - Will be populated with pattern diagnostics. - True if the return type has suitable members. - - It seems that every failure path reports the same diagnostics, so that is left to the caller. - - - - - Checks if the given type implements (or extends, in the case of an interface), - System.Collections.IEnumerable or System.Collections.Generic.IEnumerable<T>, - for at least one T. - - builder to fill in CollectionType. - Type to check. - - True if multiple T's are found. - True if some IEnumerable is found (may still be ambiguous). - - - - Report appropriate diagnostics when lookup of a pattern member (i.e. GetEnumerator, Current, or MoveNext) fails. - - Failed lookup result. - Type in which member was looked up. - Name of looked up member. - True if failures should result in warnings; false if they should result in errors. - Populated appropriately. - - - - Tracks fields that are being bound while binding their initializers. - - - Used to detect circular references like: - var x = y; - var y = x; - - - - - This binder is for binding the initializer of an implicitly typed - local variable. While binding an implicitly typed local variable - it is illegal to refer to the variable. - - - - - Represents symbols imported to the binding scope via using namespace, using alias, and extern alias. - - - - - Does not preserve diagnostics. - - - - - A binder that places the members of a symbol in scope. If there is a container declaration - with using directives, those are merged when looking up names. - - - - - Creates a binder for a container with imports (usings and extern aliases) that can be - retrieved from . - - - - - Creates a binder with given imports. - - - - - Creates a binder with given import computation function. - - - - - A binder for a method body, which places the method's parameters in scope - and notes if the method is an iterator method. - - - - - The LocalBinderFactory is used to build up the map of all Binders within a method body, and the associated - CSharpSyntaxNode. To do so it traverses all the statements, handling blocks and other - statements that create scopes. For efficiency reasons, it does not traverse into - expressions. This means that blocks within lambdas and queries are not created. - Blocks within lambdas are bound by their own LocalBinderFactory when they are - analyzed. - - For reasons of lifetime management, this type is distinct from the BinderFactory - which also creates a map from CSharpSyntaxNode to Binder. That type owns it's binders - and that type's lifetime is that of the compilation. Therefore we do not store - binders local to method bodies in that type's cache. - - - - - This binder keeps track of the local variable (if any) that is currently being evaluated - so that it can be passed into the next call to LocalSymbol.GetConstantValue (and - its callers). - - - - - Call this when you are sure there is a local declaration on this token. Returns the local. - - - - - This type exists to share code between UsingStatementBinder and LockBinder. - - - - - This class exists so these two fields can be set atomically. - CONSIDER: If this causes too many allocations, we could use start and end flags plus spinlocking - as for completion parts. - - - - - Options that can be used to modify the symbol lookup mechanism. - - - Multiple options can be combined together. LookupOptions.AreValid checks for valid combinations. - - - - - Consider all symbols, using normal accessibility rules. - - - - - Consider only namespace aliases and extern aliases. - - - - - Consider only namespaces and types. - - - - - Consider non-members, plus invocable members. - - - - - Consider only symbols that are instance members. Valid with IncludeExtensionMethods - since extension methods are invoked on an instance. - - - - - Do not consider symbols that are instance members. - - - - - Do not consider symbols that are namespaces. - - - - - Consider methods of any arity when arity zero is specified. Because type parameters can be inferred, it is - often desired to consider generic methods when no type arguments were present. - - - - - Look only for label symbols. This must be exclusive of all other options. - - - - - Usually, when determining if a member is accessible, both the type of the receiver - and the type containing the access are used. If this flag is specified, then only - the containing type will be used (i.e. as if you've written base.XX). - - - - - Include extension methods. - - - - - Consider only attribute types. - - - - - Consider lookup name to be a verbatim identifier. - If this flag is specified, then only one lookup is performed for attribute name: lookup with the given name, - and attribute name lookup with "Attribute" suffix is skipped. - - - - - Consider named types of any arity when arity zero is specified. It is specifically desired for nameof in such situations: nameof(System.Collections.Generic.List) - - - - - Do not consider symbols that are method type parameters. - - - - - Are these options valid in their current combination? - - - Some checks made here: - - - Default is valid. - - If LabelsOnly is set, it must be the only option. - - If one of MustBeInstance or MustNotBeInstance are set, the other one must not be set. - - If any of MustNotBeInstance, MustBeInstance, or MustNotBeNonInvocableMember are set, - the options are considered valid. - - If MustNotBeNamespace is set, neither NamespaceAliasesOnly nor NamespacesOrTypesOnly must be set. - - Otherwise, only one of NamespaceAliasesOnly, NamespacesOrTypesOnly, or AllMethodsOnArityZero must be set. - - - - - represents one-to-one symbol -> SingleLookupResult filter. - - - - - A LookupResult summarizes the result of a name lookup within a scope It also allows - combining name lookups from different scopes in an easy way. - - A LookupResult can be ONE OF: - empty - nothing found. - a viable result - this kind of result prevents lookup into further scopes of lower priority. - Viable results should be without error; ambiguity is handled in the caller. - (Note that handling multiple "viable" results is not the same as in the VB compiler) - a non-accessible result - this kind of result means that search continues into further scopes of lower priority for - a viable result. An error is attached with the inaccessibility errors. Non-accessible results take priority over - non-viable results. - a non-viable result - a result that means that the search continues into further scopes of lower priority for - a viable or non-accessible result. An error is attached with the error that indicates - why the result is non-viable. A typical reason would be that it is the wrong kind of symbol. - - Note that the class is poolable so its instances can be obtained from a pool via GetInstance. - Also it is a good idea to call Free on instances after they no longer needed. - - The typical pattern is "caller allocates / caller frees" - - - var result = LookupResult.GetInstance(); - - scope.Lookup(result, "foo"); - ... use result ... - - result.Clear(); - anotherScope.Lookup(result, "moo"); - ... use result ... - - result.Free(); //result and its content is invalid after this - - - - - - Currently LookupResult is intended only for name lookup, not for overload resolution. It is - not clear if overload resolution will work with the structure as is, require enhancements, - or be best served by an alternate mechanism. - - We might want to extend this to a more general priority scheme. - - - - - - Return the single symbol if there is exactly one, otherwise null. - - - - - Is the result viable with one or more symbols? - - - - - NOTE: Even there is a single viable symbol, it may be an error type symbol. - - - - - Set current result according to another. - - - - - Set current result according to another. - - - - - Merge another result with this one, with the symbols combined if both - this and other are viable. Otherwise the highest priority result wins (this if equal - priority and non-viable.) - - - - - Classifies the different ways in which a found symbol might be incorrect. - Higher values are considered "better" than lower values. These values are used - in a few different places: - 1) Inside a LookupResult to indicate the quality of a symbol from lookup. - 2) Inside a bound node (for example, BoundBadExpression), to indicate - the "binding quality" of the symbols referenced by that bound node. - 3) Inside an error type symbol, to indicate the reason that the candidate symbols - in the error type symbols were not good. - - While most of the values can occur in all places, some of the problems are not - detected at lookup time (e.g., NotAVariable), so only occur in bound nodes. - - - This enumeration is parallel to and almost the same as the CandidateReason enumeration. - Changes to one should usually result in changes to the other. - - There are two enumerations because: - 1) CandidateReason in language-independent, while this enum is language specific. - 2) The name "CandidateReason" didn't make much sense in the way LookupResultKind is used internally. - 3) Viable isn't used in CandidateReason, but we need it in LookupResultKind, and there isn't a - a way to have internal enumeration values. - - - - - Maps a LookupResultKind to a CandidateReason. Should not be called on LookupResultKind.Viable! - - - - - Packages up the various parts returned when resolving a method group. - - - - - Contains the code for determining C# accessibility rules. - - - - - Checks if 'symbol' is accessible from within assembly 'within'. - - - - - Checks if 'symbol' is accessible from within type 'within', with - an optional qualifier of type "throughTypeOpt". - - - - - Checks if 'symbol' is accessible from within type 'within', with - an qualifier of type "throughTypeOpt". Sets "failedThroughTypeCheck" to true - if it failed the "through type" check. - - - - - Checks if 'symbol' is accessible from within 'within', which must be a NamedTypeSymbol - or an AssemblySymbol. - - Note that NamedTypeSymbol, if available, is the type that is associated with the binder - that found the 'symbol', not the inner-most type that contains the access to the - 'symbol'. - - If 'symbol' is accessed off of an expression then 'throughTypeOpt' is the type of that - expression. This is needed to properly do protected access checks. Sets - "failedThroughTypeCheck" to true if this protected check failed. - - NOTE(cyrusn): I expect this function to be called a lot. As such, i do not do any memory - allocations in the function itself (including not making any iterators). This does mean - that certain helper functions that we'd like to call are inlined in this method to - prevent the overhead of returning collections or enumerators. - - - - - This method finds the best common type of a set of expressions as per section 7.5.2.14 of the specification. - NOTE: If some or all of the expressions have error types, we return error type as the inference result. - - - - - This method implements best type inference for the conditional operator ?:. - NOTE: If either expression is an error type, we return error type as the inference result. - - - - - Summarizes whether a conversion is allowed, and if so, which kind of conversion (and in some cases, the - associated symbol). - - - - - Returns true if the conversion exists, either as an implicit or explicit conversion. - - - The existence of a conversion does not necessarily imply that the conversion is valid. - For example, an ambiguous user-defined conversion may exist but may not be valid. - - - - - Returns true if the conversion is implicit. - - - Implicit conversions are described in section 6.1 of the C# language specification. - - - - - Returns true if the conversion is explicit. - - - Explicit conversions are described in section 6.2 of the C# language specification. - - - - - Returns true if the conversion is an identity conversion. - - - Identity conversions are described in section 6.1.1 of the C# language specification. - - - - - Returns true if the conversion is an implicit numeric conversion or explicit numeric conversion. - - - Implicit and explicit numeric conversions are described in sections 6.1.2 and 6.2.1 of the C# language specification. - - - - - Returns true if the conversion is an implicit enumeration conversion or explicit enumeration conversion. - - - Implicit and explicit enumeration conversions are described in sections 6.1.3 and 6.2.2 of the C# language specification. - - - - - Returns true if the conversion is an interpolated string conversion. - - - The interpolated string conversion described in section 6.1.N of the C# language specification. - - - - - Returns true if the conversion is an implicit nullable conversion or explicit nullable conversion. - - - Implicit and explicit nullable conversions are described in sections 6.1.4 and 6.2.3 of the C# language specification. - - - - - Returns true if the conversion is an implicit reference conversion or explicit reference conversion. - - - Implicit and explicit reference conversions are described in sections 6.1.6 and 6.2.4 of the C# language specification. - - - - - Returns true if the conversion is an implicit user-defined conversion or explicit user-defined conversion. - - - Implicit and explicit user-defined conversions are described in section 6.4 of the C# language specification. - - - - - Returns true if the conversion is an implicit boxing conversion. - - - Implicit boxing conversions are described in section 6.1.7 of the C# language specification. - - - - - Returns true if the conversion is an explicit unboxing conversion. - - - Explicit unboxing conversions as described in section 6.2.5 of the C# language specification. - - - - - Returns true if the conversion is an implicit null literal conversion. - - - Null literal conversions are described in section 6.1.5 of the C# language specification. - - - - - Returns true if the conversion is an implicit dynamic conversion. - - - Implicit dynamic conversions are described in section 6.1.8 of the C# language specification. - - - - - Returns true if the conversion is an implicit constant expression conversion. - - - Implicit constant expression conversions are described in section 6.1.9 of the C# language specification. - - - - - Returns true if the conversion is an implicit anonymous function conversion. - - - Implicit anonymous function conversions are described in section 6.5 of the C# language specification. - - - - - Returns true if the conversion is an implicit method group conversion. - - - Implicit method group conversions are described in section 6.6 of the C# language specification. - - - - - Returns true if the conversion is a pointer conversion - - - Pointer conversions are described in section 18.4 of the C# language specification. - - Returns true if the conversion is a conversion - a) from a pointer type to void*, - b) from a pointer type to another pointer type (other than void*), - c) from the null literal to a pointer type, - d) from an integral numeric type to a pointer type, or - e) from a pointer type to an integral numeric type. - - Does not return true for user-defined conversions to/from pointer types. - Does not return true for conversions between pointer types and IntPtr/UIntPtr. - - - - - Returns true if the conversion is a conversion to or from IntPtr or UIntPtr. - - - Returns true if the conversion is a conversion to or from IntPtr or UIntPtr. - This includes: - IntPtr to/from int - IntPtr to/from long - IntPtr to/from void* - UIntPtr to/from int - UIntPtr to/from long - UIntPtr to/from void* - - - - - Returns the method used to create the delegate for a method group conversion if is true - or the method used to perform the conversion for a user-defined conversion if is true. - Otherwise, returns null. - - - Method group conversions are described in section 6.6 of the C# language specification. - User-defined conversions are described in section 6.4 of the C# language specification. - - - - - Gives an indication of how successful the conversion was. - Viable - found a best built-in or user-defined conversion. - Empty - found no applicable built-in or user-defined conversions. - OverloadResolutionFailure - found applicable conversions, but no unique best. - - - - - Conversion applied to operand of the user-defined conversion. - - - - - Conversion applied to the result of the user-defined conversion. - - - - - The user-defined operators that were considered when attempting this conversion - (i.e. the arguments to overload resolution). - - - - - Returns a string that represents the of the conversion. - - A string that represents the of the conversion. - - - - Determines whether the specified object is equal to the current object. - - The object to compare with the current object. - true if the specified object is equal to the current object; otherwise, false. - - - - Determines whether the specified object is equal to the current object. - - The object to compare with the current object. - true if the specified object is equal to the current object; otherwise, false. - - - - Returns a hash code for the current object. - - A hash code for the current object. - - - - Returns true if the specified objects are equal and false otherwise. - - The first object. - The second object. - - - - - Returns false if the specified objects are equal and true otherwise. - - The first object. - The second object. - - - - - Determines if the source expression is convertible to the destination type via - any conversion: implicit, explicit, user-defined or built-in. - - - It is rare but possible for a source expression to be convertible to a destination type - by both an implicit user-defined conversion and a built-in explicit conversion. - In that circumstance, this method classifies the conversion as the implicit conversion. - - - - - Determines if the source expression is convertible to the destination type via - any conversion: implicit, explicit, user-defined or built-in. - - - It is rare but possible for a source expression to be convertible to a destination type - by both an implicit user-defined conversion and a built-in explicit conversion. - In that circumstance, this method classifies the conversion as the built-in conversion. - - An implicit conversion exists from an expression of a dynamic type to any type. - An explicit conversion exists from a dynamic type to any type. - When casting we prefer the explicit conversion. - - - - - Determines if the source expression is convertible to the destination type via - any built-in or user-defined implicit conversion. - - - - - Attempt a quick classification of builtin conversions. As result of "no conversion" - means that there is no built-in conversion, though there still may be a user-defined - conversion if compiling against a custom mscorlib. - - - - - IsBaseInterface returns true if baseType is on the base interface list of derivedType or - any base class of derivedType. It may be on the base interface list either directly or - indirectly. - * baseType must be an interface. - * type parameters do not have base interfaces. (They have an "effective interface list".) - * an interface is not a base of itself. - * this does not check for variance conversions; if a type inherits from - IEnumerable<string> then IEnumerable<object> is not a base interface. - - - - - Determines if the source type is convertible to the destination type via - any conversion: implicit, explicit, user-defined or built-in. - - - It is rare but possible for a source type to be convertible to a destination type - by both an implicit user-defined conversion and a built-in explicit conversion. - In that circumstance, this method classifies the conversion as the implicit conversion. - - - - - Determines if the source type is convertible to the destination type via - any conversion: implicit, explicit, user-defined or built-in. - - - It is rare but possible for a source type to be convertible to a destination type - by both an implicit user-defined conversion and a built-in explicit conversion. - In that circumstance, this method classifies the conversion as the built-in conversion. - - - - - Determines if the source type is convertible to the destination type via - any standard implicit or standard explicit conversion. - - - Not all built-in explicit conversions are standard explicit conversions. - - - - - Determines if the source type is convertible to the destination type via - any user-defined or built-in implicit conversion. - - - Not all built-in explicit conversions are standard explicit conversions. - - - - - NOTE: Keep this method in sync with AnalyzeImplicitUserDefinedConversionForSwitchGoverningType. - - - - - This method find the set of applicable user-defined and lifted conversion operators, u. - The set consists of the user-defined and lifted implicit conversion operators declared by - the classes and structs in d that convert from a type encompassing source to a type encompassed by target. - However if allowAnyTarget is true, then it considers all operators that convert from a type encompassing source - to any target. This flag must be set only if we are computing user defined conversions from a given source - type to any target type. - - - Currently allowAnyTarget flag is only set to true by AnalyzeImplicitUserDefinedConversionForSwitchGoverningType, - where we must consider user defined implicit conversions from the type of the switch expression to - any of the possible switch governing types. - - - - - Find the most specific among a set of conversion operators, with the given constraint on the conversion. - - - - - NOTE: Keep this method in sync with AnalyzeImplicitUserDefinedConversion. - - - - - Resolve method group based on the optional delegate invoke method. - If the invoke method is null, ignore arguments in resolution. - - - - - Return the Invoke method symbol if the type is a delegate - type and the Invoke method is available, otherwise null. - - - - - This is specifically a private helper function (rather than a public property or extension method) - because applying this predicate to a non-method member doesn't have a clear meaning. The goal was - simply to avoid repeating ad-hoc code in a group of related collections. - - - - - To duplicate native compiler behavior for some scenarios we force a priority among - operators. If two operators are both applicable and both have a non-null Priority, - the one with the numerically lower Priority value is preferred. - - - - - Omit ref feature for COM interop: We can pass arguments by value for ref parameters if we are invoking a method/property on an instance of a COM imported type. - This property returns a flag indicating whether we had any ref omitted argument for the given call. - - - - - Returns false for - because those diagnostics are only reported if no other candidates are - available. - - - - - Indicates why the compiler accepted or rejected the member during overload resolution. - - - - - No resolution has (yet) been determined. - - - - - The candidate member was accepted in its normal (non-expanded) form. - - - - - The candidate member was accepted in its expanded form, after expanding a "params" parameter. - - - - - The candidate member was rejected because an inferred type argument is inaccessible. - - - - - The candidate member was rejected because an argument was specified that did not have a corresponding - parameter. - - - - - The candidate member was rejected because a named argument was specified that did not have a corresponding - parameter. - - - - - The candidate member was rejected because an required parameter had no corresponding argument. - - - - - The candidate member was rejected because a named argument was used that corresponded to a previously-given positional argument. - - - - - The candidate member was rejected because it is not supported by the language or cannot be used - given the current set of assembly references. - - - - - The candidate member was rejected because it is not supported by the language. - - - No diagnostics will be reported for such candidates unless they "win" overload resolution. - - - - - The candidate member was rejected because an argument could not be converted to the appropriate parameter - type. - - - - - The candidate member was rejected because type inference failed. - - - - - The extension method candidate was rejected because type - inference based on the "instance" argument failed. - - - - - The candidate member was rejected because it a constraint on a type parameter was not satisfied. - - - - - The candidate member was rejected because another member further down in the inheritance hierarchy was - present. - - - - - The candidate member was rejected because it was considered worse that another member (according to section - 7.5.3.2 of the language specification). - - - - - Same as , but the candidate shouldn't be mentioned in an ambiguity diagnostics. - - - - - Represents the results of overload resolution for a single member. - - - - - The member considered during overload resolution. - - - - - The least overridden member that is accessible from the call site that performed overload resolution. - Typically a virtual or abstract method (but not necessarily). - - - The member whose parameter types and params modifiers were considered during overload resolution. - - - - - Indicates why the compiler accepted or rejected the member during overload resolution. - - - - - Returns true if the compiler accepted this member as the sole correct result of overload resolution. - - - - - The result of member analysis. - - - - - Return the interface with an original definition matches - the original definition of the target. If the are no matches, - or multiple matches, the return value is null. - - - - - Return the inferred type arguments using null - for any type arguments that were not inferred. - - - - - Summarizes the results of an overload resolution analysis, as described in section 7.5 of - the language specification. Describes whether overload resolution succeeded, and which - method was selected if overload resolution succeeded, as well as detailed information about - each method that was considered. - - - - - True if overload resolution successfully selected a single best method. - - - - - If overload resolution successfully selected a single best method, returns information - about that method. Otherwise returns null. - - - - - If there was a method that overload resolution considered better than all others, - returns information about that method. A method may be returned even if that method was - not considered a successful overload resolution, as long as it was better that any other - potential method considered. - - - - - Returns information about each method that was considered during overload resolution, - and what the results of overload resolution were for that method. - - - - - Returns true if one or more of the members in the group are applicable. (Note that - Succeeded implies IsApplicable but IsApplicable does not imply Succeeded. It is possible - that no applicable member was better than all others.) - - - - - Returns all methods in the group that are applicable, . - - - - - Called when overload resolution has failed. Figures out the best way to describe what went wrong. - - - Overload resolution (effectively) starts out assuming that all candidates are valid and then - gradually disqualifies them. Therefore, our strategy will be to perform our checks in the - reverse order - the farther a candidate got through the process without being flagged, the - "better" it was. - - Note that "final validation" is performed after overload resolution, - so final validation errors are not seen here. Final validation errors include - violations of constraints on method type parameters, static/instance mismatches, - and so on. - - - - - If an argument fails to convert to the type of the corresponding parameter and that - parameter is a params array, then the error message should reflect the element type - of the params array - not the array type. - - - - - The base class for all symbols (namespaces, classes, method, parameters, etc.) that are - exposed by the compiler. - - - - - Checks if 'symbol' is accessible from within named type 'within'. If 'symbol' is accessed off - of an expression then 'throughTypeOpt' is the type of that expression. This is needed to - properly do protected access checks. - - - - - Checks if 'symbol' is accessible from within assembly 'within'. - - - - - Checks if this symbol is a definition and its containing module is a SourceModuleSymbol. - - - - - Return whether the symbol is either the original definition - or distinct from the original. Intended for use in Debug.Assert - only since it may include a deep comparison. - - - - - Returns a list of attributes to emit to CustomAttribute table. - The builder is freed after all its items are enumerated. - - - - - True if this Symbol should be completed by calling ForceComplete. - Intuitively, true for source entities (from any compilation). - - - - - Gets the name of this symbol. Symbols without a name return the empty string; null is - never returned. - - - - - Gets the name of a symbol as it appears in metadata. Most of the time, this - is the same as the Name property, with the following exceptions: - 1) The metadata name of generic types includes the "`1", "`2" etc. suffix that - indicates the number of type parameters (it does not include, however, names of - containing types or namespaces). - 2) The metadata name of explicit interface names have spaces removed, compared to - the name property. - - - - - Gets the kind of this symbol. - - - - - Get the symbol that logically contains this symbol. - - - - - Returns the nearest lexically enclosing type, or null if there is none. - - - - - Gets the nearest enclosing namespace for this namespace or type. For a nested type, - returns the namespace that contains its container. - - - - - Returns the assembly containing this symbol. If this symbol is shared across multiple - assemblies, or doesn't belong to an assembly, returns null. - - - - - For a source assembly, the associated compilation. - For any other assembly, null. - For a source module, the DeclaringCompilation of the associated source assembly. - For any other module, null. - For any other symbol, the DeclaringCompilation of the associated module. - - - We're going through the containing module, rather than the containing assembly, - because of /addmodule (symbols in such modules should return null). - - Remarks, not "ContainingCompilation" because it isn't transitive. - - - - - Returns the module containing this symbol. If this symbol is shared across multiple - modules, or doesn't belong to a module, returns null. - - - - - The original definition of this symbol. If this symbol is constructed from another - symbol by type substitution then OriginalDefinition gets the original symbol as it was defined in - source or metadata. - - - - - Returns true if this is the original definition of this symbol. - - - - - - Get a source location key for sorting. For performance, it's important that this - be able to be returned from a symbol without doing any additional allocations (even - if nothing is cached yet.) - - - Only (original) source symbols and namespaces that can be merged - need implement this function if they want to do so for efficiency. - - - - - - Gets the locations where this symbol was originally defined, either in source or - metadata. Some symbols (for example, partial classes) may be defined in more than one - location. - - - - - - Get the syntax node(s) where this symbol was declared in source. Some symbols (for - example, partial classes) may be defined in more than one location. This property should - return one or more syntax nodes only if the symbol was declared in source code and also - was not implicitly declared (see the property). - - - Note that for namespace symbol, the declaring syntax might be declaring a nested - namespace. For example, the declaring syntax node for N1 in "namespace N1.N2 {...}" is - the entire for N1.N2. For the global namespace, the declaring - syntax will be the . - - - - The syntax node(s) that declared the symbol. If the symbol was declared in metadata or - was implicitly declared, returns an empty read-only array. - - - To go the opposite direction (from syntax node to symbol), see . - - - - - Helper for implementing for derived classes that store a location but not a - or . - - - - - Get this accessibility that was declared on this symbol. For symbols that do not have - accessibility declared on them, returns . - - - - - Returns true if this symbol is "static"; i.e., declared with the static modifier or - implicitly static. - - - - - Returns true if this symbol is "virtual", has an implementation, and does not override a - base class member; i.e., declared with the virtual modifier. Does not return true for - members declared as abstract or override. - - - - - Returns true if this symbol was declared to override a base class member; i.e., declared - with the override modifier. Still returns true if member was declared to override - something, but (erroneously) no member to override exists. - - - Even for metadata symbols, = true does not imply that will - be non-null. - - - - - Returns true if this symbol was declared as requiring an override; i.e., declared with - the abstract modifier. Also returns true on a type declared as "abstract", all - interface types, and members of interface types. - - - - - Returns true if this symbol was declared to override a base class member and was also - sealed from further overriding; i.e., declared with the sealed modifier. Also set for - types that do not allow a derived class (declared with sealed or static or struct - or enum or delegate). - - - - - Returns true if this symbol has external implementation; i.e., declared with the - extern modifier. - - - - - Returns true if this symbol was automatically created by the compiler, and does not - have an explicit corresponding source code declaration. - - This is intended for symbols that are ordinary symbols in the language sense, - and may be used by code, but that are simply declared implicitly rather than - with explicit language syntax. - - Examples include (this list is not exhaustive): - the default constructor for a class or struct that is created if one is not provided, - the BeginInvoke/Invoke/EndInvoke methods for a delegate, - the generated backing field for an auto property or a field-like event, - the "this" parameter for non-static methods, - the "value" parameter for a property setter, - the parameters on indexer accessor methods (not on the indexer itself), - methods in anonymous types, - - - - - Returns true if this symbol can be referenced by its name in code. Examples of symbols - that cannot be referenced by name are: - constructors, destructors, operators, explicit interface implementations, - accessor methods for properties and events, array types. - - - - - As an optimization, viability checking in the lookup code should use this property instead - of . The full name check will then be performed in the . - - - This property exists purely for performance reasons. - - - - - Perform additional checks after the member has been - added to the member list of the containing type. - - - - - Compare two symbol objects to see if they refer to the same symbol. You should always - use and , or the method, to compare two symbols for equality. - - - - - Compare two symbol objects to see if they refer to the same symbol. You should always - use == and !=, or the Equals method, to compare two symbols for equality. - - - - - Returns a string representation of this symbol, suitable for debugging purposes, or - for placing in an error message. - - - This will provide a useful representation, but it would be clearer to call - directly and provide an explicit format. - Sealed so that and can't get out of sync. - - - - - Build and add synthesized attributes for this symbol. - - - - - Convenience helper called by subclasses to add a synthesized attribute to a collection of attributes. - - - - - effective for this symbol (type or DllImport method). - Nothing if isn't applied on the containing module or it doesn't apply on this symbol. - - - Determined based upon value specified via applied on the containing module. - - - - - Always prefer . - - - - Unfortunately, when determining overriding/hiding/implementation relationships, we don't - have the "current" compilation available. We could, but that would clutter up the API - without providing much benefit. As a compromise, we consider all compilations "current". - - - Unlike in VB, we are not allowing retargeting symbols. This method is used as an approximation - for when a compilation is not available and that method will never return - true for retargeting symbols. - - - - - - Returns the Documentation Comment ID for the symbol, or null if the symbol doesn't - support documentation comments. - - - - - Fetches the documentation comment for this element with a cancellation token. - - Optionally, retrieve the comments formatted for a particular culture. No impact on source documentation comments. - Optionally, expand ]]> elements. No impact on non-source documentation comments. - Optionally, allow cancellation of documentation comment retrieval. - The XML that would be written to the documentation file for the symbol. - - - - True if the symbol has a use-site diagnostic with error severity. - - - - - Returns diagnostic info that should be reported at the use site of the symbol, or null if there is none. - - - - - Return error code that has highest priority while calculating use site error for this symbol. - Supposed to be ErrorCode, but it causes inconsistent accessibility error. - - - - - Indicates that this symbol uses metadata that cannot be supported by the language. - - Examples include: - - Pointer types in VB - - ByRef return type - - Required custom modifiers - - This is distinguished from, for example, references to metadata symbols defined in assemblies that weren't referenced. - Symbols where this returns true can never be used successfully, and thus should never appear in any IDE feature. - - This is set for metadata symbols, as follows: - Type - if a type is unsupported (e.g., a pointer type, etc.) - Method - parameter or return type is unsupported - Field - type is unsupported - Event - type is unsupported - Property - type is unsupported - Parameter - type is unsupported - - - - - Merges given diagnostic to the existing result diagnostic. - - - - - Reports specified use-site diagnostic to given diagnostic bag. - - - This method should be the only method adding use-site diagnostics to a diagnostic bag. - It performs additional adjustments of the location for unification related diagnostics and - may be the place where to add more use-site location post-processing. - - True if the diagnostic has error severity. - - - - Derive error info from a type symbol. - - - - - True if this symbol has been marked with the attribute. - This property returns if the attribute hasn't been cracked yet. - - - - - Returns data decoded from attribute or null if there is no attribute. - This property returns if attribute arguments haven't been decoded yet. - - - - - Returns true and a from the first on the symbol, - the string might be null or an invalid guid representation. False, - if there is no with string argument. - - - - - Gets the attributes for this symbol. Returns an empty if - there are no attributes. - - - - - Gets the attribute target kind corresponding to the symbol kind - If attributes cannot be applied to this symbol kind, returns - an invalid AttributeTargets value of 0 - - AttributeTargets or 0 - - - - Method to early decode the type of well-known attribute which can be queried during the BindAttributeType phase. - This method is called first during attribute binding so that any attributes that affect semantics of type binding - can be decoded here. - - - NOTE: If you are early decoding any new well-known attribute, make sure to update PostEarlyDecodeWellKnownAttributeTypes - to default initialize this data. - - - - - This method is called during attribute binding after EarlyDecodeWellKnownAttributeTypes has been executed. - Symbols should default initialize the data for early decoded well-known attributes here. - - - - - Method to early decode applied well-known attribute which can be queried by the binder. - This method is called during attribute binding after we have bound the attribute types for all attributes, - but haven't yet bound the attribute arguments/attribute constructor. - Early decoding certain well-known attributes enables the binder to use this decoded information on this symbol - when binding the attribute arguments/attribute constructor without causing attribute binding cycle. - - - - - This method is called by the binder when it is finished binding a set of attributes on the symbol so that - the symbol can extract data from the attribute arguments and potentially perform validation specific to - some well known attributes. - - NOTE: If we are decoding a well-known attribute that could be queried by the binder, consider decoding it during early decoding pass. - - - - - Symbol types should override this if they want to handle a specific well-known attribute. - If the attribute is of a type that the symbol does not wish to handle, it should delegate back to - this (base) method. - - - - - - Called to report attribute related diagnostics after all attributes have been bound and decoded. - Called even if there are no attributes. - - - This method is called by the binder from after it has finished binding attributes on the symbol, - has executed for attributes applied on the symbol and has stored the decoded data in the - lazyCustomAttributesBag on the symbol. Bound attributes haven't been stored on the bag yet. - - Post-validation for attributes that is dependent on other attributes can be done here. - - This method should not have any side effects on the symbol, i.e. it SHOULD NOT change the symbol state. - - Bound attributes. - Syntax nodes of attributes in order they are specified in source, or null if there are no attributes. - Diagnostic bag. - Specific part of the symbol to which the attributes apply, or if the attributes apply to the symbol itself. - Decoded well-known attribute data, could be null. - - - - This method does the following set of operations in the specified order: - (1) GetAttributesToBind: Merge attributes from the given attributesSyntaxLists and filter out attributes by attribute target. - (2) BindAttributeTypes: Bind all the attribute types to enable early decode of certain well-known attributes by type. - (3) EarlyDecodeWellKnownAttributes: Perform early decoding of certain well-known attributes that could be queried by the binder in subsequent steps. - (NOTE: This step has the side effect of updating the symbol state based on the data extracted from well known attributes). - (4) GetAttributes: Bind the attributes (attribute arguments and constructor) using bound attribute types. - (5) DecodeWellKnownAttributes: Decode and validate bound well known attributes. - (NOTE: This step has the side effect of updating the symbol state based on the data extracted from well known attributes). - (6) StoreBoundAttributesAndDoPostValidation: - (a) Store the bound attributes in lazyCustomAttributes in a thread safe manner. - (b) Perform some additional post attribute validations, such as - 1) Duplicate attributes, attribute usage target validation, etc. - 2) Post validation for attributes dependent on other attributes - These validations cannot be performed prior to step 6(a) as we might need to - perform a GetAttributes() call on a symbol which can introduce a cycle in attribute binding. - We avoid this cycle by performing such validations in PostDecodeWellKnownAttributes after lazyCustomAttributes have been set. - NOTE: PostDecodeWellKnownAttributes SHOULD NOT change the symbol state. - - - Current design of early decoding well-known attributes doesn't permit decoding attribute arguments/constructor as this can lead to binding cycles. - For well-known attributes used by the binder, where we need the decoded arguments, we must handle them specially in one of the following possible ways: - (a) Avoid decoding the attribute arguments during binding and delay the corresponding binder tasks to a separate post-pass executed after binding. - (b) As the cycles can be caused only when we are binding attribute arguments/constructor, special case the corresponding binder tasks based on the current BinderFlags. - - - - Specific part of the symbol to which the attributes apply, or if the attributes apply to the symbol itself. - Indicates that only early decoding should be performed. WARNING: the resulting bag will not be sealed. - Flag indicating whether lazyCustomAttributes were stored on this thread. Caller should check for this flag and perform NotePartComplete if true. - - - - Method to merge attributes from the given attributesSyntaxLists and filter out attributes by attribute target. - This is the first step in attribute binding. - - - This method can generate diagnostics for few cases where we have an invalid target specifier and the parser hasn't generated the necessary diagnostics. - It should not perform any bind operations as it can lead to an attribute binding cycle. - - - - - Method to early decode certain well-known attributes which can be queried by the binder. - This method is called during attribute binding after we have bound the attribute types for all attributes, - but haven't yet bound the attribute arguments/attribute constructor. - Early decoding certain well-known attributes enables the binder to use this decoded information on this symbol - when binding the attribute arguments/attribute constructor without causing attribute binding cycle. - - - - - This method validates attribute usage for each bound attribute and calls - on attributes with valid attribute usage. - This method is called by the binder when it is finished binding a set of attributes on the symbol so that - the symbol can extract data from the attribute arguments and potentially perform validation specific to - some well known attributes. - - - - - Validate attribute usage target and duplicate attributes. - - Bound attribute - Syntax node for attribute specification - Compilation - Symbol part to which the attribute has been applied. - Diagnostics - Set of unique attribute types applied to the symbol - - - - Ensure that attributes are bound and the ObsoleteState of this symbol is known. - - - - - Represents a result of lookup operation over a 0 or 1 symbol (as opposed to a scope). The - typical use is to represent that a particular symbol is good/bad/unavailable. - - For more explanation of Kind, Symbol, Error - see LookupResult. - - - - - This binder is for binding the argument to typeof. It traverses - the syntax marking each open type ("unbound generic type" in the - C# spec) as either allowed or not allowed, so that BindType can - appropriately return either the corresponding type symbol or an - error type. It also indicates whether the argument as a whole - should be considered open so that the flag can be set - appropriately in BoundTypeOfOperator. - - - - - This visitor walks over a type expression looking for open types. - Open types are allowed if an only if: - 1) There is no constructed generic type elsewhere in the visited syntax; and - 2) The open type is not used as a type argument or array/pointer/nullable - element type. - - - - The argument to typeof. - - Keys are GenericNameSyntax nodes representing unbound generic types. - Values are false if the node should result in an error and true otherwise. - - True if no constructed generic type was encountered. - - - - A binder that places class/interface/struct/delegate type parameters in scope - - - - - The scope within a documentation cref. Contains the implicitly declared type parameters - of the cref (see for details). - - - - - A binder that places method type parameters in scope. - - - - - Binder used to place the parameters of a method, property, indexer, or delegate - in scope when binding <param> tags inside of XML documentation comments. - - - - - Returns true if calls and delegate invocations with this - expression as the receiver should be non-virtual calls. - - - - - Returns a serializable object that is used for displaying this expression in a diagnostic message. - - - - - The set of method symbols from which this call's method was chosen. - Only kept in the tree if the call was an error and overload resolution - was unable to choose a best method. - - - - - The set of indexer symbols from which this call's indexer was chosen. - Only kept in the tree if the call was an error and overload resolution - was unable to choose a best indexer. - - - - - The set of method symbols from which this operator's method was chosen. - Only kept in the tree if the operator was an error and overload resolution - was unable to choose a best method. - - - - - The set of method symbols from which this operator's method was chosen. - Only kept in the tree if the operator was an error and overload resolution - was unable to choose a best method. - - - - - The set of method symbols from which this operator's method was chosen. - Only kept in the tree if the operator was an error and overload resolution - was unable to choose a best method. - - - - - The set of method symbols from which this operator's method was chosen. - Only kept in the tree if the operator was an error and overload resolution - was unable to choose a best method. - - - - - The set of method symbols from which this operator's method was chosen. - Only kept in the tree if the operator was an error and overload resolution - was unable to choose a best method. - - - - - The set of method symbols from which this conversion's method was chosen. - Only kept in the tree if the conversion was an error and overload resolution - was unable to choose a best method. - - - - - Returns true when conversion itself (not the operand) may have side-effects - A typical side-effect of a conversion is an exception when conversion is unsuccessful. - - - - - - This method is intended for passes other than the LocalRewriter. - Use MakeConversion helper method in the LocalRewriter instead, - it generates a synthesized conversion in its lowered form. - - - - - NOTE: This method is intended for passes other than the LocalRewriter. - NOTE: Use MakeConversion helper method in the LocalRewriter instead, - NOTE: it generates a synthesized conversion in its lowered form. - - - - - Build an object creation expression without performing any rewriting - - - - - Set if the group has a receiver but none was not specified in syntax. - - - - - Determines if a bound node, or associated syntax or type has an error (not a warning) - diagnostic associated with it. - - Typically used in the binder as a way to prevent cascading errors. - In most other cases a more lightweight HasErrors should be used. - - - - - Determines if a bound node, or any child, grandchild, etc has an error (not warning) - diagnostic associated with it. The HasError bit is initially set for a node by providing it - to the node constructor. If any child nodes of a node have - the HasErrors bit set, then it is automatically set to true on the parent bound node. - - HasErrors indicates that the tree is not emittable and used to short-circuit lowering/emit stages. - NOTE: not having HasErrors does not guarantee that we do not have any diagnostic associated - with corresponding syntax or type. - - - - - NOTE: not generally set in rewriters. - - - - - The bound expression that invokes the operation of the query clause. - - - - - The bound expression that is the invocation of a "Cast" method specified by the query translation. - - - - - The bound expression that is the query expression in "unoptimized" form. Specifically, a final ".Select" - invocation that is omitted by the specification is included here. - - - - - Consumers must provide implementation for . - - - - - We should be intentional about behavior of derived classes regarding guarding against stack overflow. - - - - - BoundExpressions to be used for emit. The expressions are assumed - to be lowered and will not be visited by . - - - - - What we need to do is find a *repeatable* arbitrary way to choose between - two errors; we can for example simply take the one that is lower in alphabetical - order when converted to a string. As an optimization, we compare error codes - first and skip string comparison if they differ. - - - - - In some cases returns are handled as gotos to return epilogue. - This is used to track the state of the epilogue. - - - - - Emits address as in & - - May introduce a temp which it will return. (otherwise returns null) - - - - - Emits address of a temp. - Used in cases where taking address directly is not possible - (typically because expression does not have a home) - - Introduce a temp which it will return. - - - - - May introduce a temp which it will return. (otherwise returns null) - - - - - Checks if expression directly or indirectly represents a value with its own home. In - such cases it is possible to get a reference without loading into a temporary. - - - - - Special HasHome for fields. Fields have homes when they are writable. - - - - - May introduce a temp which it will return. (otherwise returns null) - - - - - Emits receiver in a form that allows member accesses ( O or & ). For verifiably - reference types it is the actual reference. For generic types it is a address of the - receiver with readonly intent. For the value types it is an address of the receiver. - - isAccessConstrained indicates that receiver is a target of a constrained callvirt - in such case it is unnecessary to box a receiver that is typed to a type parameter - - May introduce a temp which it will return. (otherwise returns null) - - - - - May introduce a temp which it will return. (otherwise returns null) - - - - - Entry point to the array initialization. - Assumes that we have newly created array on the stack. - - inits could be an array of values for a single dimensional array - or an array (of array)+ of values for a multidimensional case - - in either case it is expected that number of leaf values will match number - of elements in the array and nesting level should match the rank of the array. - - - - - To handle array initialization of arbitrary rank it is convenient to - approach multidimensional initialization as a recursively nested. - - ForAll{i, j, k} Init(i, j, k) ===> - ForAll{i} ForAll{j, k} Init(i, j, k) ===> - ForAll{i} ForAll{j} ForAll{k} Init(i, j, k) - - This structure is used for capturing initializers of a given index and - the index value itself. - - - - - Emits all initializers that match indices on the stack recursively. - - Example: - if array has [0..2, 0..3, 0..2] shape - and we have {1, 2} indices on the stack - initializers for - [1, 2, 0] - [1, 2, 1] - [1, 2, 2] - - will be emitted and the top index will be pushed off the stack - as at that point we would be completely done with emitting initializers - corresponding to that index. - - - - - Count of all nontrivial initializers and count of those that are constants. - - - - - Produces a serialized blob of all constant initializers. - Non-constant initializers are matched with a zero of corresponding size. - - - - - Check if it is a regular collection of expressions or there are nested initializers. - - - - - Used to decide if we need to emit call or callvirt. - It basically checks if the receiver expression cannot be null, but it is not 100% precise. - There are cases where it really can be null, but we do not care. - - - - - checks if receiver is effectively ldarg.0 - - - - - Used to decide if we need to emit 'call' or 'callvirt' for structure method. - It basically checks if the method overrides any other and method's defining type - is not a 'special' or 'special-by-ref' type. - - - - - When array operation get long or ulong arguments the args should be - cast to native int. - Note that the cast is always checked. - - - - - Emit an element store instruction for a single dimensional array. - - - - - Emit code for a conditional (aka ternary) operator. - - - (b ? x : y) becomes - push b - if pop then goto CONSEQUENCE - push y - goto DONE - CONSEQUENCE: - push x - DONE: - - - - - Emit code for a null-coalescing operator. - - - x ?? y becomes - push x - dup x - if pop != null goto LEFT_NOT_NULL - pop - push y - LEFT_NOT_NULL: - - - - - Produces opcode for a jump that corresponds to given operation and sense. - Also produces a reverse opcode - opcode for the same condition with inverted sense. - - - - - The interesting part in the following method is the support for exception filters. - === Example: - - try - { - TryBlock - } - catch (ExceptionType ex) when (Condition) - { - Handler - } - - gets emitted as something like ===> - - Try - TryBlock - Filter - var tmp = Pop() as {ExceptionType} - if (tmp == null) - { - Push 0 - } - else - { - ex = tmp - Push Condition ? 1 : 0 - } - End Filter // leaves 1 or 0 on the stack - Catch // gets called after finalization of nested exception frames if condition above produced 1 - Pop // CLR pushes the exception object again - variable ex can be used here - Handler - EndCatch - - - - - Delegate to emit string compare call and conditional branch based on the compare result. - - Key to compare - Node for diagnostics. - Case constant to compare the key against - Target label to branch to if key = stringConstant - String equality method - - - - Gets already declared and initialized local. - - - - - Gets the name and id of the local that are going to be generated into the debug metadata. - - - - - Releases a local. - - - - - Allocates a temp without identity. - - - - - Frees a temp. - - - - - Frees an optional temp. - - - - - Clones all labels used in a finally block. - This allows creating an emittable clone of finally. - It is safe to do because no branches can go in or out of the finally handler. - - - - - The argument is BoundTryStatement (and not a BoundBlock) specifically - to support only Finally blocks where it is guaranteed to not have incoming or leaving branches. - - - - - Perform IL specific optimizations (mostly reduction of local slots) - - Method body to optimize - - When set, do not perform aggressive optimizations that degrade debugging experience. - In particular we do not do the following: - - 1) Do not elide any user defined locals, even if never read from. - Example: - { - var dummy = Foo(); // should not become just "Foo" - } - - User might want to examine dummy in the debugger. - - 2) Do not carry values on the stack between statements - Example: - { - var temp = Foo(); - temp.ToString(); // should not become Foo().ToString(); - } - - User might want to examine temp in the debugger. - - - - Produced list of "ephemeral" locals. - Essentially, these locals do not need to leave the evaluation stack. - As such they do not require an allocation of a local slot and - their load/store operations are implemented trivially. - - - - - - when current and other use spans are regular spans we can have only 2 conflict cases: - [1, 3) conflicts with [0, 2) - [1, 3) conflicts with [2, 4) - - NOTE: with regular spans, it is not possible for two spans to share an edge point - unless they belong to the same local. (because we cannot aceess two real locals at the same time) - - specifically: - [1, 3) does not conflict with [0, 1) since such spans would need to belong to the same local - - - - - Dummy locals represent implicit control flow - It is not allowed for a regular local span to cross into or - be immediately adjacent to a dummy span. - - specifically: - [1, 3) does conflict with [0, 1) since that would imply a value flowing into or out of a span surrounded by a branch/label - - - - - - The command line arguments to a C# . - - - - - Gets the compilation options for the C# - created from the . - - - - - Gets the parse options for the C# . - - - - - Should the format of error messages include the line and column of - the end of the offending text. - - - - - Get the path name starting from the - - - - - Parses a command line. - - A collection of strings representing the command line arguments. - The base directory used for qualifying file locations. - The directory to search for mscorlib, or null if not available. - A string representing additional reference paths. - a commandlinearguments object representing the parsed command line. - - - - Diagnostic for the errorCode added if the warningOptions does not mention suppressed for the errorCode. - - - - - Given a compilation and a destination directory, determine three names: - 1) The name with which the assembly should be output. - 2) The path of the assembly/module file. - 3) The path of the pdb file. - - When csc produces an executable, but the name of the resulting assembly - is not specified using the "/out" switch, the name is taken from the name - of the file (note: file, not class) containing the assembly entrypoint - (as determined by binding and the "/main" switch). - - For example, if the command is "csc /target:exe a.cs b.cs" and b.cs contains the - entrypoint, then csc will produce "b.exe" and "b.pdb" in the output directory, - with assembly name "b" and module name "b.exe" embedded in the file. - - - - - Print compiler logo - - - - - - Print Commandline help message (up to 80 English characters per line) - - - - - - A binding for an attribute. Represents the result of binding an attribute constructor and - the positional and named arguments. - - - - - Creates an AttributeSemanticModel that allows asking semantic questions about an attribute node. - - - - - Creates a speculative AttributeSemanticModel that allows asking semantic questions about an attribute node that did not appear in the original source code. - - - - - Structure containing all semantic information about an await expression. - - - - - Internal cache of built-in operators. - Cache is compilation-specific because it uses compilation-specific SpecialTypes. - - - - - Appends all trees (including any trees from #load'ed files). - - - - - Collects all the trees #load'ed by (as well as - itself) and populates - with all the trees that are safe to remove (not #load'ed by any other tree). - - - - - The compilation object is an immutable representation of a single invocation of the - compiler. Although immutable, a compilation is also on-demand, and will realize and cache - data as necessary. A compilation can produce a new compilation from existing compilation - with the application of small deltas. In many cases, it is more efficient than creating a - new compilation from scratch, as the new compilation can reuse information from the old - compilation. - - - - - Manages anonymous types declared in this compilation. Unifies types that are structurally equivalent. - - - - - The for this compilation. Do not access directly, use Assembly property - instead. This field is lazily initialized by ReferenceManager, ReferenceManager.CacheLockObject must be locked - while ReferenceManager "calculates" the value and assigns it, several threads must not perform duplicate - "calculation" simultaneously. - - - - - Holds onto data related to reference binding. - The manager is shared among multiple compilations that we expect to have the same result of reference binding. - In most cases this can be determined without performing the binding. If the compilation however contains a circular - metadata reference (a metadata reference that refers back to the compilation) we need to avoid sharing of the binding results. - We do so by creating a new reference manager for such compilation. - - - - - Contains the main method of this assembly, if there is one. - - - - - The set of trees for which a has been added to the queue. - - - - - The options the compilation was created with. - - - - - True when the compiler is run in "strict" mode, in which it enforces the language specification - in some cases even at the expense of full compatibility. Such differences typically arise when - earlier versions of the compiler failed to enforce the full language specification. - - - - - The language version that was used to parse the syntax trees of this compilation. - - - - - Creates a new compilation from scratch. Methods such as AddSyntaxTrees or AddReferences - on the returned object will allow to continue building up the Compilation incrementally. - - Simple assembly name. - The syntax trees with the source code for the new compilation. - The references for the new compilation. - The compiler options to use. - A new compilation. - - - - Creates a new compilation that can be used in scripting. - - - - - Create a duplicate of this compilation with different symbol instances. - - - - - Creates a new compilation with the specified name. - - - - - Creates a new compilation with the specified references. - - - The new will query the given for the underlying - metadata as soon as the are needed. - - The new compilation uses whatever metadata is currently being provided by the . - E.g. if the current compilation references a metadata file that has changed since the creation of the compilation - the new compilation is going to use the updated version, while the current compilation will be using the previous (it doesn't change). - - - - - Creates a new compilation with the specified references. - - - - - Creates a new compilation with the specified compilation options. - - - - - Returns a new compilation with the given compilation set as the previous submission. - - - - - Returns a new compilation with a given event queue. - - - - - The syntax trees (parsed from source code) that this compilation was created with. - - - - - Returns true if this compilation contains the specified tree. False otherwise. - - - - - Creates a new compilation with additional syntax trees. - - - - - Creates a new compilation with additional syntax trees. - - - - - Creates a new compilation without the specified syntax trees. Preserves metadata info for use with trees - added later. - - - - - Creates a new compilation without the specified syntax trees. Preserves metadata info for use with trees - added later. - - - - - Creates a new compilation without any syntax trees. Preserves metadata info - from this compilation for use with trees added later. - - - - - Creates a new compilation without the old tree but with the new tree. - - - - - Gets the or for a metadata reference used to create this compilation. - - or corresponding to the given reference or null if there is none. - - Uses object identity when comparing two references. - - - - - All reference directives used in this compilation. - - - - - Returns a metadata reference that a given #r resolves to. - - #r directive. - Metadata reference the specified directive resolves to, or null if the doesn't match any #r directive in the compilation. - - - - Creates a new compilation with additional metadata references. - - - - - Creates a new compilation with additional metadata references. - - - - - Creates a new compilation without the specified metadata references. - - - - - Creates a new compilation without the specified metadata references. - - - - - Creates a new compilation without any metadata references - - - - - Creates a new compilation with an old metadata reference replaced with a new metadata reference. - - - - - Get all modules in this compilation, including the source module, added modules, and all - modules of referenced assemblies that do not come from an assembly with an extern alias. - Metadata imported from aliased assemblies is not visible at the source level except through - the use of an extern alias directive. So exclude them from this list which is used to construct - the global namespace. - - - - - Return a list of assembly symbols than can be accessed without using an alias. - For example: - 1) /r:A.dll /r:B.dll -> A, B - 2) /r:Foo=A.dll /r:B.dll -> B - 3) /r:Foo=A.dll /r:A.dll -> A - - - - - Gets the that corresponds to the assembly symbol. - - - - - The AssemblySymbol that represents the assembly being created. - - - - - The AssemblySymbol that represents the assembly being created. - - - - - Get a ModuleSymbol that refers to the module being created by compiling all of the code. - By getting the GlobalNamespace property of that module, all of the namespaces and types - defined in source code can be obtained. - - - - - Gets the root namespace that contains all namespaces and types defined in source code or in - referenced metadata, merged into a single namespace hierarchy. - - - - - Given for the specified module or assembly namespace, gets the corresponding compilation - namespace (merged namespace representation for all namespace declarations and references - with contributions for the namespaceSymbol). Can return null if no corresponding - namespace can be bound in this compilation with the same name. - - - - - A symbol representing the implicit Script class. This is null if the class is not - defined in the compilation. - - - - - Resolves a symbol that represents script container (Script class). Uses the - full name of the container class stored in to find the symbol. - - The Script class symbol or null if it is not defined. - - - - Global imports (including those from previous submissions, if there are any). - - - - - Imports declared by this submission (null if this isn't one). - - - - - Imports from all previous submissions. - - - - - Get the symbol for the predefined type from the COR Library referenced by this compilation. - - - - - Get the symbol for the predefined type member from the COR Library referenced by this compilation. - - - - - Gets the type within the compilation's assembly and all referenced assemblies (other than - those that can only be referenced via an extern alias) using its canonical CLR metadata name. - - - - - The TypeSymbol for the type 'dynamic' in this Compilation. - - - - - The NamedTypeSymbol for the .NET System.Object type, which could have a TypeKind of - Error if there was no COR Library in this Compilation. - - - - - Returns a new ArrayTypeSymbol representing an array type tied to the base types of the - COR Library in this Compilation. - - - - - Returns a new PointerTypeSymbol representing a pointer type tied to a type in this Compilation. - - - - - Gets a new SyntaxTreeSemanticModel for the specified syntax tree. - - - - - Returns imported symbols for the given declaration. - - - - - The bag in which semantic analysis should deposit its diagnostics. - - - - - A bag in which diagnostics that should be reported after code gen can be deposited. - - - - - Gets the diagnostics produced during the parsing stage of a compilation. There are no diagnostics for declarations or accessor or - method bodies, for example. - - - - - Gets the diagnostics produced during symbol declaration headers. There are no diagnostics for accessor or - method bodies, for example. - - - - - Gets the diagnostics produced during the analysis of method bodies and field initializers. - - - - - Gets the all the diagnostics for the compilation, including syntax, declaration, and binding. Does not - include any diagnostics that might be produced during emit. - - - - - Filter out warnings based on the compiler options (/nowarn, /warn and /warnaserror) and the pragma warning directives. - 'incoming' is freed. - - True when there is no error or warning treated as an error. - - - - Filter out warnings based on the compiler options (/nowarn, /warn and /warnaserror) and the pragma warning directives. - - True when there is no error. - - - - Return true if there is a source declaration symbol name that meets given predicate. - - - - - Return source declaration symbols whose name meets given predicate. - - - - - Returns if the compilation has all of the members necessary to emit metadata about - dynamic types. - - - - - - Determine if enum arrays can be initialized using block initialization. - - True if it's safe to use block initialization for enum arrays. - - In NetFx 4.0, block array initializers do not work on all combinations of {32/64 X Debug/Retail} when array elements are enums. - This is fixed in 4.5 thus enabling block array initialization for a very common case. - We look for the presence of which was introduced in .Net 4.5 - - - - - An array of cached well known types available for use in this Compilation. - Lazily filled by GetWellKnownType method. - - - - - Lazy cache of well known members. - Not yet known value is represented by ErrorTypeSymbol.UnknownResultType - - - - - Lookup member declaration in well known type used by this Compilation. - - - If a well-known member of a generic type instantiation is needed use this method to get the corresponding generic definition and - to construct an instantiation. - - - - - Synthesizes a custom attribute. - Returns null if the symbol is missing, - or any of the members in are missing. - The attribute is synthesized only if present. - - - Constructor of the attribute. If it doesn't exist, the attribute is not created. - - Arguments to the attribute constructor. - - Takes a list of pairs of well-known members and constants. The constants - will be passed to the field/property referenced by the well-known member. - If the well-known member does not exist in the compilation then no attribute - will be synthesized. - - - - - Given a type , which is either dynamic type OR is a constructed type with dynamic type present in it's type argument tree, - returns a synthesized DynamicAttribute with encoded dynamic transforms array. - - This method is port of AttrBind::CompileDynamicAttr from the native C# compiler. - - - - Used to generate the dynamic attributes for the required typesymbol. - - - - - ReferenceManager encapsulates functionality to create an underlying SourceAssemblySymbol - (with underlying ModuleSymbols) for Compilation and AssemblySymbols for referenced - assemblies (with underlying ModuleSymbols) all properly linked together based on - reference resolution between them. - - ReferenceManager is also responsible for reuse of metadata readers for imported modules - and assemblies as well as existing AssemblySymbols for referenced assemblies. In order - to do that, it maintains global cache for metadata readers and AssemblySymbols - associated with them. The cache uses WeakReferences to refer to the metadata readers and - AssemblySymbols to allow memory and resources being reclaimed once they are no longer - used. The tricky part about reusing existing AssemblySymbols is to find a set of - AssemblySymbols that are created for the referenced assemblies, which (the - AssemblySymbols from the set) are linked in a way, consistent with the reference - resolution between the referenced assemblies. - - When existing Compilation is used as a metadata reference, there are scenarios when its - underlying SourceAssemblySymbol cannot be used to provide symbols in context of the new - Compilation. Consider classic multi-targeting scenario: compilation C1 references v1 of - Lib.dll and compilation C2 references C1 and v2 of Lib.dll. In this case, - SourceAssemblySymbol for C1 is linked to AssemblySymbol for v1 of Lib.dll. However, - given the set of references for C2, the same reference for C1 should be resolved against - v2 of Lib.dll. In other words, in context of C2, all types from v1 of Lib.dll leaking - through C1 (through method signatures, etc.) must be retargeted to the types from v2 of - Lib.dll. In this case, ReferenceManager creates a special RetargetingAssemblySymbol for - C1, which is responsible for the type retargeting. The RetargetingAssemblySymbols could - also be reused for different Compilations, ReferenceManager maintains a cache of - RetargetingAssemblySymbols (WeakReferences) for each Compilation. - - The only public entry point of this class is CreateSourceAssembly() method. - - - - - Checks if the properties of are compatible with properties of . - Reports inconsistencies to the given diagnostic bag. - - True if the properties are compatible and hence merged, false if the duplicate reference should not merge it's properties with primary reference. - - - - C# only considers culture when comparing weak identities. - It ignores versions of weak identities and reports an error if there are two weak assembly - references passed to a compilation that have the same simple name. - - - - - Creates a from specified metadata. - - - Used by EnC to create symbols for emit baseline. The PE symbols are used by . - - The assembly references listed in the metadata AssemblyRef table are matched to the resolved references - stored on this . Each AssemblyRef is matched against the assembly identities - using an exact equality comparison. No unification or further resolution is performed. - - - - - Guarded by . - - - - - Import options of the compilation being built. - - - - - For testing purposes only. - - - - - For testing purposes only. - - - - - Represents a reference to another C# compilation. - - - - - Returns the referenced Compilation. - - - - - Create a metadata reference to a compilation. - - The compilation to reference. - Extern aliases for this reference. - Should interop types be embedded in the created assembly? - - - - Applies C#-specific modification and filtering of s. - - - - - Modifies an input per the given options. For example, the - severity may be escalated, or the may be filtered out entirely - (by returning null). - - The input diagnostic - The maximum warning level to allow. Diagnostics with a higher warning level will be filtered out. - How warning diagnostics should be reported - How specific diagnostics should be reported - A diagnostic updated to reflect the options, or null if it has been filtered out - - - - Allows asking semantic questions about a tree of syntax nodes in a Compilation. Typically, - an instance is obtained by a call to .. - - - An instance of caches local symbols and semantic - information. Thus, it is much more efficient to use a single instance of when asking multiple questions about a syntax tree, because - information from the first question may be reused. This also means that holding onto an - instance of SemanticModel for a long time may keep a significant amount of memory from being - garbage collected. - - - When an answer is a named symbol that is reachable by traversing from the root of the symbol - table, (that is, from an of the ), - that symbol will be returned (i.e. the returned value will be reference-equal to one - reachable from the root of the symbol table). Symbols representing entities without names - (e.g. array-of-int) may or may not exhibit reference equality. However, some named symbols - (such as local variables) are not reachable from the root. These symbols are visible as - answers to semantic questions. When the same SemanticModel object is used, the answers - exhibit reference-equality. - - - - - - The compilation this object was obtained from. - - - - - The root node of the syntax tree that this binding is based on. - - - - - Gets symbol information about a syntax node. This is overridden by various specializations of SemanticModel. - It can assume that CheckSyntaxNode and CanGetSemanticInfo have already been called, as well as that named - argument nodes have been handled. - - The syntax node to get semantic information for. - Options to control behavior. - The cancellation token. - - - - Gets symbol information about the 'Add' method corresponding to an expression syntax within collection initializer. - This is the worker function that is overridden in various derived kinds of Semantic Models. It can assume that - CheckSyntaxNode has already been called and the is in the right place in the syntax tree. - - - - - Gets type information about a syntax node. This is overridden by various specializations of SemanticModel. - It can assume that CheckSyntaxNode and CanGetSemanticInfo have already been called, as well as that named - argument nodes have been handled. - - The syntax node to get semantic information for. - The cancellation token. - - - - Gets a list of method or indexed property symbols for a syntax node. This is overridden by various specializations of SemanticModel. - It can assume that CheckSyntaxNode and CanGetSemanticInfo have already been called, as well as that named - argument nodes have been handled. - - The syntax node to get semantic information for. - - The cancellation token. - - - - Gets a list of indexer symbols for a syntax node. This is overridden by various specializations of SemanticModel. - It can assume that CheckSyntaxNode and CanGetSemanticInfo have already been called, as well as that named - argument nodes have been handled. - - The syntax node to get semantic information for. - - The cancellation token. - - - - Gets the constant value for a syntax node. This is overridden by various specializations of SemanticModel. - It can assume that CheckSyntaxNode and CanGetSemanticInfo have already been called, as well as that named - argument nodes have been handled. - - The syntax node to get semantic information for. - The cancellation token. - - - - Bind the given expression speculatively at the given position, and return back - the resulting bound node. May return null in some error cases. - - - Keep in sync with Binder.BindCrefParameterOrReturnType. - - - - - Bind the given attribute speculatively at the given position, and return back - the resulting bound node. May return null in some error cases. - - - - - Gets the semantic information for an ordering clause in an orderby query clause. - - - - - Gets the semantic information associated with a select or group clause. - - - - - Returns what symbol(s), if any, the given expression syntax bound to in the program. - - An AliasSymbol will never be returned by this method. What the alias refers to will be - returned instead. To get information about aliases, call GetAliasInfo. - - If binding the type name C in the expression "new C(...)" the actual constructor bound to - will be returned (or all constructor if overload resolution failed). This occurs as long as C - unambiguously binds to a single type that has a constructor. If C ambiguously binds to multiple - types, or C binds to a static class, then type(s) are returned. - - - - - Returns what 'Add' method symbol(s), if any, corresponds to the given expression syntax - within . - - - - - Returns what symbol(s), if any, the given constructor initializer syntax bound to in the program. - - The syntax node to get semantic information for. - The cancellation token. - - - - Returns what symbol(s), if any, the given attribute syntax bound to in the program. - - The syntax node to get semantic information for. - The cancellation token. - - - - Gets the semantic information associated with a documentation comment cref. - - - - - Binds the expression in the context of the specified location and gets symbol information. - This method is used to get symbol information about an expression that did not actually - appear in the source code. - - A character position used to identify a declaration scope and - accessibility. This character position must be within the FullSpan of the Root syntax - node in this SemanticModel. - - A syntax node that represents a parsed expression. This syntax - node need not and typically does not appear in the source code referred to by the - SemanticModel instance. - Indicates whether to binding the expression as a full expressions, - or as a type or namespace. If SpeculativeBindingOption.BindAsTypeOrNamespace is supplied, then - expression should derive from TypeSyntax. - The symbol information for the topmost node of the expression. - - The passed in expression is interpreted as a stand-alone expression, as if it - appeared by itself somewhere within the scope that encloses "position". - - is ignored if is within a documentation - comment cref attribute value. - - - - - Bind the attribute in the context of the specified location and get semantic information - such as type, symbols and diagnostics. This method is used to get semantic information about an attribute - that did not actually appear in the source code. - - A character position used to identify a declaration scope and accessibility. This - character position must be within the FullSpan of the Root syntax node in this SemanticModel. In order to obtain - the correct scoping rules for the attribute, position should be the Start position of the Span of the symbol that - the attribute is being applied to. - - A syntax node that represents a parsed attribute. This syntax node - need not and typically does not appear in the source code referred to SemanticModel instance. - The semantic information for the topmost node of the attribute. - - - - Bind the constructor initializer in the context of the specified location and get semantic information - such as type, symbols and diagnostics. This method is used to get semantic information about a constructor - initializer that did not actually appear in the source code. - - NOTE: This will only work in locations where there is already a constructor initializer. - - A character position used to identify a declaration scope and accessibility. This - character position must be within the FullSpan of the Root syntax node in this SemanticModel. - Furthermore, it must be within the span of an existing constructor initializer. - - A syntax node that represents a parsed constructor initializer. This syntax node - need not and typically does not appear in the source code referred to SemanticModel instance. - The semantic information for the topmost node of the constructor initializer. - - - - Bind the cref in the context of the specified location and get semantic information - such as type, symbols and diagnostics. This method is used to get semantic information about a cref - that did not actually appear in the source code. - - A character position used to identify a declaration scope and accessibility. This - character position must be within the FullSpan of the Root syntax node in this SemanticModel. In order to obtain - the correct scoping rules for the cref, position should be the Start position of the Span of the original cref. - - A syntax node that represents a parsed cref. This syntax node - need not and typically does not appear in the source code referred to SemanticModel instance. - SymbolInfo options. - The semantic information for the topmost node of the cref. - - - - Gets type information about a constructor initializer. - - The syntax node to get semantic information for. - The cancellation token. - - - - Gets type information about an expression. - - The syntax node to get semantic information for. - The cancellation token. - - - - Gets type information about an attribute. - - The syntax node to get semantic information for. - The cancellation token. - - - - Gets the conversion that occurred between the expression's type and type implied by the expression's context. - - - - - Binds the expression in the context of the specified location and gets type information. - This method is used to get type information about an expression that did not actually - appear in the source code. - - A character position used to identify a declaration scope and - accessibility. This character position must be within the FullSpan of the Root syntax - node in this SemanticModel. - - A syntax node that represents a parsed expression. This syntax - node need not and typically does not appear in the source code referred to by the - SemanticModel instance. - Indicates whether to binding the expression as a full expressions, - or as a type or namespace. If SpeculativeBindingOption.BindAsTypeOrNamespace is supplied, then - expression should derive from TypeSyntax. - The type information for the topmost node of the expression. - The passed in expression is interpreted as a stand-alone expression, as if it - appeared by itself somewhere within the scope that encloses "position". - - - - Gets the conversion that occurred between the expression's type and type implied by the expression's context. - - - - - Gets a list of method or indexed property symbols for a syntax node. - - The syntax node to get semantic information for. - The cancellation token. - - - - Gets a list of method or indexed property symbols for a syntax node. - - The syntax node to get semantic information for. - The cancellation token. - - - - Gets a list of method or indexed property symbols for a syntax node. - - The syntax node to get semantic information for. - The cancellation token. - - - - Returns the list of accessible, non-hidden indexers that could be invoked with the given expression as receiver. - - Potential indexer receiver. - To cancel the computation. - Accessible, non-hidden indexers. - - If the receiver is an indexer expression, the list will contain the indexers that could be applied to the result - of accessing the indexer, not the set of candidates that were considered during construction of the indexer expression. - - - - - Gets the semantic information associated with a query clause. - - - - - If resolves to an alias name, return the AliasSymbol corresponding - to A. Otherwise return null. - - - - - Binds the name in the context of the specified location and sees if it resolves to an - alias name. If it does, return the AliasSymbol corresponding to it. Otherwise, return null. - - A character position used to identify a declaration scope and - accessibility. This character position must be within the FullSpan of the Root syntax - node in this SemanticModel. - - A syntax node that represents a name. This syntax - node need not and typically does not appear in the source code referred to by the - SemanticModel instance. - Indicates whether to binding the name as a full expression, - or as a type or namespace. If SpeculativeBindingOption.BindAsTypeOrNamespace is supplied, then - expression should derive from TypeSyntax. - The passed in name is interpreted as a stand-alone name, as if it - appeared by itself somewhere within the scope that encloses "position". - - - - Gets the binder that encloses the position. - - - - - Gets the MemberSemanticModel that contains the node. - - - - - Given a position, locates the containing token. If the position is actually within the - leading trivia of the containing token or if that token is EOF, moves one token to the - left. Returns the start position of the resulting token. - - This has the effect of moving the position left until it hits the beginning of a non-EOF - token. - - Throws an ArgumentOutOfRangeException if position is not within the root of this model. - - - - - A convenience method that determines a position from a node. If the node is missing, - then its position will be adjusted using CheckAndAdjustPosition. - - - - - Gets the available named symbols in the context of the specified location and optional container. Only - symbols that are accessible and visible from the given location are returned. - - The character position for determining the enclosing declaration scope and - accessibility. - The container to search for symbols within. If null then the enclosing declaration - scope around position is used. - The name of the symbol to find. If null is specified then symbols - with any names are returned. - Consider (reduced) extension methods. - A list of symbols that were found. If no symbols were found, an empty list is returned. - - The "position" is used to determine what variables are visible and accessible. Even if "container" is - specified, the "position" location is significant for determining which members of "containing" are - accessible. - - Labels are not considered (see ). - - Non-reduced extension methods are considered regardless of the value of . - - - - - Gets the available base type members in the context of the specified location. Akin to - calling with the container set to the immediate base type of - the type in which occurs. However, the accessibility rules - are different: protected members of the base type will be visible. - - Consider the following example: - - public class Base - { - protected void M() { } - } - - public class Derived : Base - { - void Test(Base b) - { - b.M(); // Error - cannot access protected member. - base.M(); - } - } - - Protected members of an instance of another type are only accessible if the instance is known - to be "this" instance (as indicated by the "base" keyword). - - The character position for determining the enclosing declaration scope and - accessibility. - The name of the symbol to find. If null is specified then symbols - with any names are returned. - A list of symbols that were found. If no symbols were found, an empty list is returned. - - The "position" is used to determine what variables are visible and accessible. - - Non-reduced extension methods are considered, but reduced extension methods are not. - - - - - Gets the available named static member symbols in the context of the specified location and optional container. - Only members that are accessible and visible from the given location are returned. - - Non-reduced extension methods are considered, since they are static methods. - - The character position for determining the enclosing declaration scope and - accessibility. - The container to search for symbols within. If null then the enclosing declaration - scope around position is used. - The name of the symbol to find. If null is specified then symbols - with any names are returned. - A list of symbols that were found. If no symbols were found, an empty list is returned. - - The "position" is used to determine what variables are visible and accessible. Even if "container" is - specified, the "position" location is significant for determining which members of "containing" are - accessible. - - - - - Gets the available named namespace and type symbols in the context of the specified location and optional container. - Only members that are accessible and visible from the given location are returned. - - The character position for determining the enclosing declaration scope and - accessibility. - The container to search for symbols within. If null then the enclosing declaration - scope around position is used. - The name of the symbol to find. If null is specified then symbols - with any names are returned. - A list of symbols that were found. If no symbols were found, an empty list is returned. - - The "position" is used to determine what variables are visible and accessible. Even if "container" is - specified, the "position" location is significant for determining which members of "containing" are - accessible. - - Does not return INamespaceOrTypeSymbol, because there could be aliases. - - - - - Gets the available named label symbols in the context of the specified location and optional container. - Only members that are accessible and visible from the given location are returned. - - The character position for determining the enclosing declaration scope and - accessibility. - The name of the symbol to find. If null is specified then symbols - with any names are returned. - A list of symbols that were found. If no symbols were found, an empty list is returned. - - The "position" is used to determine what variables are visible and accessible. Even if "container" is - specified, the "position" location is significant for determining which members of "containing" are - accessible. - - - - - Gets the available named symbols in the context of the specified location and optional - container. Only symbols that are accessible and visible from the given location are - returned. - - The character position for determining the enclosing declaration - scope and accessibility. - The container to search for symbols within. If null then the - enclosing declaration scope around position is used. - The name of the symbol to find. If null is specified then symbols - with any names are returned. - Additional options that affect the lookup process. - Ignore 'throughType' in accessibility checking. - Used in checking accessibility of symbols accessed via 'MyBase' or 'base'. - - The "position" is used to determine what variables are visible and accessible. Even if - "container" is specified, the "position" location is significant for determining which - members of "containing" are accessible. - - Throws an argument exception if the passed lookup options are invalid. - - - - Determines if the symbol is accessible from the specified location. - - A character position used to identify a declaration scope and - accessibility. This character position must be within the FullSpan of the Root syntax - node in this SemanticModel. - - The symbol that we are checking to see if it accessible. - - True if "symbol is accessible, false otherwise. - - This method only checks accessibility from the point of view of the accessibility - modifiers on symbol and its containing types. Even if true is returned, the given symbol - may not be able to be referenced for other reasons, such as name hiding. - - - - - Field-like events can be used as fields in types that can access private - members of the declaring type of the event. - - - - - Analyze control-flow within a part of a method body. - - The first statement to be included in the analysis. - The last statement to be included in the analysis. - An object that can be used to obtain the result of the control flow analysis. - The two statements are not contained within the same statement list. - - - - Analyze control-flow within a part of a method body. - - The statement to be included in the analysis. - An object that can be used to obtain the result of the control flow analysis. - - - - Analyze data-flow within an expression. - - The expression within the associated SyntaxTree to analyze. - An object that can be used to obtain the result of the data flow analysis. - - - - Analyze data-flow within a part of a method body. - - The first statement to be included in the analysis. - The last statement to be included in the analysis. - An object that can be used to obtain the result of the data flow analysis. - The two statements are not contained within the same statement list. - - - - Analyze data-flow within a part of a method body. - - The statement to be included in the analysis. - An object that can be used to obtain the result of the data flow analysis. - - - - Get a SemanticModel object that is associated with a method body that did not appear in this source code. - Given must lie within an existing method body of the Root syntax node for this SemanticModel. - Locals and labels declared within this existing method body are not considered to be in scope of the speculated method body. - - A character position used to identify a declaration scope and accessibility. This - character position must be within the FullSpan of the Root syntax node in this SemanticModel and must be - within the FullSpan of a Method body within the Root syntax node. - A syntax node that represents a parsed method declaration. This method should not be - present in the syntax tree associated with this object, but must have identical signature to the method containing - the given in this SemanticModel. - A SemanticModel object that can be used to inquire about the semantic - information associated with syntax nodes within . - Flag indicating whether a speculative semantic model was created. - Throws this exception if the node is contained any SyntaxTree in the current Compilation - Throws this exception if is null. - Throws this exception if this model is a speculative semantic model, i.e. is true. - Chaining of speculative semantic model is not supported. - - - - Get a SemanticModel object that is associated with a method body that did not appear in this source code. - Given must lie within an existing method body of the Root syntax node for this SemanticModel. - Locals and labels declared within this existing method body are not considered to be in scope of the speculated method body. - - A character position used to identify a declaration scope and accessibility. This - character position must be within the FullSpan of the Root syntax node in this SemanticModel and must be - within the FullSpan of a Method body within the Root syntax node. - A syntax node that represents a parsed accessor declaration. This accessor should not be - present in the syntax tree associated with this object. - A SemanticModel object that can be used to inquire about the semantic - information associated with syntax nodes within . - Flag indicating whether a speculative semantic model was created. - Throws this exception if the node is contained any SyntaxTree in the current Compilation - Throws this exception if is null. - Throws this exception if this model is a speculative semantic model, i.e. is true. - Chaining of speculative semantic model is not supported. - - - - Get a SemanticModel object that is associated with a type syntax node that did not appear in - this source code. This can be used to get detailed semantic information about sub-parts - of a type syntax that did not appear in source code. - - A character position used to identify a declaration scope and accessibility. This - character position must be within the FullSpan of the Root syntax node in this SemanticModel. - - A syntax node that represents a parsed expression. This expression should not be - present in the syntax tree associated with this object. - Indicates whether to bind the expression as a full expression, - or as a type or namespace. - A SemanticModel object that can be used to inquire about the semantic - information associated with syntax nodes within . - Flag indicating whether a speculative semantic model was created. - Throws this exception if the node is contained any SyntaxTree in the current Compilation - Throws this exception if is null. - Throws this exception if this model is a speculative semantic model, i.e. is true. - Chaining of speculative semantic model is not supported. - - - - Get a SemanticModel object that is associated with a statement that did not appear in - this source code. This can be used to get detailed semantic information about sub-parts - of a statement that did not appear in source code. - - A character position used to identify a declaration scope and accessibility. This - character position must be within the FullSpan of the Root syntax node in this SemanticModel. - A syntax node that represents a parsed statement. This statement should not be - present in the syntax tree associated with this object. - A SemanticModel object that can be used to inquire about the semantic - information associated with syntax nodes within . - Flag indicating whether a speculative semantic model was created. - Throws this exception if the node is contained any SyntaxTree in the current Compilation - Throws this exception if is null. - Throws this exception if this model is a speculative semantic model, i.e. is true. - Chaining of speculative semantic model is not supported. - - - - Get a SemanticModel object that is associated with an initializer that did not appear in - this source code. This can be used to get detailed semantic information about sub-parts - of a field initializer or default parameter value that did not appear in source code. - - A character position used to identify a declaration scope and accessibility. This - character position must be within the FullSpan of the Root syntax node in this SemanticModel. - - A syntax node that represents a parsed initializer. This initializer should not be - present in the syntax tree associated with this object. - A SemanticModel object that can be used to inquire about the semantic - information associated with syntax nodes within . - Flag indicating whether a speculative semantic model was created. - Throws this exception if the node is contained any SyntaxTree in the current Compilation. - Throws this exception if is null. - Throws this exception if this model is a speculative semantic model, i.e. is true. - Chaining of speculative semantic model is not supported. - - - - Get a SemanticModel object that is associated with an expression body that did not appear in - this source code. This can be used to get detailed semantic information about sub-parts - of an expression body that did not appear in source code. - - A character position used to identify a declaration scope and accessibility. This - character position must be within the FullSpan of the Root syntax node in this SemanticModel. - - A syntax node that represents a parsed expression body. This node should not be - present in the syntax tree associated with this object. - A SemanticModel object that can be used to inquire about the semantic - information associated with syntax nodes within . - Flag indicating whether a speculative semantic model was created. - Throws this exception if the node is contained any SyntaxTree in the current Compilation. - Throws this exception if is null. - Throws this exception if this model is a speculative semantic model, i.e. is true. - Chaining of speculative semantic model is not supported. - - - - Get a SemanticModel object that is associated with a constructor initializer that did not appear in - this source code. This can be used to get detailed semantic information about sub-parts - of a constructor initializer that did not appear in source code. - - NOTE: This will only work in locations where there is already a constructor initializer. - - A character position used to identify a declaration scope and accessibility. This - character position must be within the FullSpan of the Root syntax node in this SemanticModel. - Furthermore, it must be within the span of an existing constructor initializer. - - A syntax node that represents a parsed constructor initializer. - This node should not be present in the syntax tree associated with this object. - A SemanticModel object that can be used to inquire about the semantic - information associated with syntax nodes within . - Flag indicating whether a speculative semantic model was created. - Throws this exception if the node is contained any SyntaxTree in the current Compilation. - Throws this exception if is null. - Throws this exception if this model is a speculative semantic model, i.e. is true. - Chaining of speculative semantic model is not supported. - - - - Get a SemanticModel object that is associated with a cref that did not appear in - this source code. This can be used to get detailed semantic information about sub-parts - of a cref that did not appear in source code. - - NOTE: This will only work in locations where there is already a cref. - - A character position used to identify a declaration scope and accessibility. This - character position must be within the FullSpan of the Root syntax node in this SemanticModel. - Furthermore, it must be within the span of an existing cref. - - A syntax node that represents a parsed cref syntax. - This node should not be present in the syntax tree associated with this object. - A SemanticModel object that can be used to inquire about the semantic - information associated with syntax nodes within . - Flag indicating whether a speculative semantic model was created. - Throws this exception if the node is contained any SyntaxTree in the current Compilation. - Throws this exception if is null. - Throws this exception if this model is a speculative semantic model, i.e. is true. - Chaining of speculative semantic model is not supported. - - - - Get a SemanticModel object that is associated with an attribute that did not appear in - this source code. This can be used to get detailed semantic information about sub-parts - of an attribute that did not appear in source code. - - A character position used to identify a declaration scope and accessibility. This - character position must be within the FullSpan of the Root syntax node in this SemanticModel. - A syntax node that represents a parsed attribute. This attribute should not be - present in the syntax tree associated with this object. - A SemanticModel object that can be used to inquire about the semantic - information associated with syntax nodes within . - Flag indicating whether a speculative semantic model was created. - Throws this exception if the node is contained any SyntaxTree in the current Compilation. - Throws this exception if is null. - Throws this exception if this model is a speculative semantic model, i.e. is true. - Chaining of speculative semantic model is not supported. - - - - If this is a speculative semantic model, then returns its parent semantic model. - Otherwise, returns null. - - - - - The SyntaxTree that this object is associated with. - - - - - Determines what type of conversion, if any, would be used if a given expression was - converted to a given type. If isExplicitInSource is true, the conversion produced is - that which would be used if the conversion were done for a cast expression. - - An expression which much occur within the syntax tree - associated with this object. - The type to attempt conversion to. - True if the conversion should be determined as for a cast expression. - Returns a Conversion object that summarizes whether the conversion was - possible, and if so, what kind of conversion it was. If no conversion was possible, a - Conversion object with a false "Exists" property is returned. - To determine the conversion between two types (instead of an expression and a - type), use Compilation.ClassifyConversion. - - - - Determines what type of conversion, if any, would be used if a given expression was - converted to a given type. If isExplicitInSource is true, the conversion produced is - that which would be used if the conversion were done for a cast expression. - - The character position for determining the enclosing declaration - scope and accessibility. - The expression to classify. This expression does not need to be - present in the syntax tree associated with this object. - The type to attempt conversion to. - True if the conversion should be determined as for a cast expression. - Returns a Conversion object that summarizes whether the conversion was - possible, and if so, what kind of conversion it was. If no conversion was possible, a - Conversion object with a false "Exists" property is returned. - To determine the conversion between two types (instead of an expression and a - type), use Compilation.ClassifyConversion. - - - - Determines what type of conversion, if any, would be used if a given expression was - converted to a given type using an explicit cast. - - An expression which much occur within the syntax tree - associated with this object. - The type to attempt conversion to. - Returns a Conversion object that summarizes whether the conversion was - possible, and if so, what kind of conversion it was. If no conversion was possible, a - Conversion object with a false "Exists" property is returned. - To determine the conversion between two types (instead of an expression and a - type), use Compilation.ClassifyConversion. - - - - Determines what type of conversion, if any, would be used if a given expression was - converted to a given type using an explicit cast. - - The character position for determining the enclosing declaration - scope and accessibility. - The expression to classify. This expression does not need to be - present in the syntax tree associated with this object. - The type to attempt conversion to. - Returns a Conversion object that summarizes whether the conversion was - possible, and if so, what kind of conversion it was. If no conversion was possible, a - Conversion object with a false "Exists" property is returned. - To determine the conversion between two types (instead of an expression and a - type), use Compilation.ClassifyConversion. - - - - Given a member declaration syntax, get the corresponding symbol. - - The syntax node that declares a member. - The cancellation token. - The symbol that was declared. - - NOTE: We have no GetDeclaredSymbol overloads for following subtypes of MemberDeclarationSyntax: - NOTE: (1) GlobalStatementSyntax as they don't declare any symbols. - NOTE: (2) IncompleteMemberSyntax as there are no symbols for incomplete members. - NOTE: (3) BaseFieldDeclarationSyntax or its subtypes as these declarations can contain multiple variable declarators. - NOTE: GetDeclaredSymbol should be called on the variable declarators directly. - - - - - Given a namespace declaration syntax node, get the corresponding namespace symbol for - the declaration assembly. - - The syntax node that declares a namespace. - The cancellation token. - The namespace symbol that was declared by the namespace declaration. - - - - Given a type declaration, get the corresponding type symbol. - - The syntax node that declares a type. - The cancellation token. - The type symbol that was declared. - - NOTE: We have no GetDeclaredSymbol overloads for subtypes of BaseTypeDeclarationSyntax as all of them return a NamedTypeSymbol. - - - - - Given a delegate declaration, get the corresponding type symbol. - - The syntax node that declares a delegate. - The cancellation token. - The type symbol that was declared. - - - - Given a enum member declaration, get the corresponding field symbol. - - The syntax node that declares an enum member. - The cancellation token. - The symbol that was declared. - - - - Given a base method declaration syntax, get the corresponding method symbol. - - The syntax node that declares a method. - The cancellation token. - The symbol that was declared. - - NOTE: We have no GetDeclaredSymbol overloads for subtypes of BaseMethodDeclarationSyntax as all of them return a MethodSymbol. - - - - - Given a syntax node that declares a property, indexer or an event, get the corresponding declared symbol. - - The syntax node that declares a property, indexer or an event. - The cancellation token. - The symbol that was declared. - - - - Given a syntax node that declares a property, get the corresponding declared symbol. - - The syntax node that declares a property. - The cancellation token. - The symbol that was declared. - - - - Given a syntax node that declares an indexer, get the corresponding declared symbol. - - The syntax node that declares an indexer. - The cancellation token. - The symbol that was declared. - - - - Given a syntax node that declares a (custom) event, get the corresponding event symbol. - - The syntax node that declares a event. - The cancellation token. - The symbol that was declared. - - - - Given a syntax node of anonymous object creation initializer, get the anonymous object property symbol. - - The syntax node that declares a property. - The cancellation token. - The symbol that was declared. - - - - Given a syntax node of anonymous object creation expression, get the anonymous object type symbol. - - The syntax node that declares an anonymous object. - The cancellation token. - The symbol that was declared. - - - - Given a syntax node that declares a property or member accessor, get the corresponding - symbol. - - The syntax node that declares an accessor. - The cancellation token. - The symbol that was declared. - - - - Given a syntax node that declares an expression body, get the corresponding symbol. - - The syntax node that declares an expression body. - The cancellation token. - The symbol that was declared. - - - - Given a variable declarator syntax, get the corresponding symbol. - - The syntax node that declares a variable. - The cancellation token. - The symbol that was declared. - - - - Given a labeled statement syntax, get the corresponding label symbol. - - The syntax node of the labeled statement. - The cancellation token. - The label symbol for that label. - - - - Given a switch label syntax, get the corresponding label symbol. - - The syntax node of the switch label. - The cancellation token. - The label symbol for that label. - - - - Given a using declaration get the corresponding symbol for the using alias that was - introduced. - - - The cancellation token. - The alias symbol that was declared. - - If the using directive is an error because it attempts to introduce an alias for which an existing alias was - previously declared in the same scope, the result is a newly-constructed AliasSymbol (i.e. not one from the - symbol table). - - - - - Given an extern alias declaration get the corresponding symbol for the alias that was introduced. - - - The cancellation token. - The alias symbol that was declared, or null if a duplicate alias symbol was declared. - - - - Given a parameter declaration syntax node, get the corresponding symbol. - - The syntax node that declares a parameter. - The cancellation token. - The parameter that was declared. - - - - Given a base field declaration syntax, get the corresponding symbols. - - The syntax node that declares one or more fields or events. - The cancellation token. - The symbols that were declared. - - - - Given a type parameter declaration (field or method), get the corresponding symbol - - The cancellation token. - - - - - Given a foreach statement, get the symbol for the iteration variable - - The cancellation token. - - - - - Given a catch declaration, get the symbol for the exception variable - - The cancellation token. - - - - - Get the query range variable declared in a join into clause. - - - - - Get the query range variable declared in a query continuation clause. - - - - - Returns a list of accessible, non-hidden indexers that could be invoked with the given expression - as a receiver. - - - If the given expression is an indexer access, then this method will return the list of indexers - that could be invoked on the result, not the list of indexers that were considered. - - - - - The method group can contain "duplicate" symbols that we do not want to display in the IDE analysis. - - For example, there could be an overriding virtual method and the method it overrides both in - the method group. This, strictly speaking, is a violation of the C# specification because we are - supposed to strip out overriding methods from the method group before overload resolution; overload - resolution is supposed to treat overridden methods as being methods of the less derived type. However, - in the IDE we want to display information about the overriding method, not the overridden method, and - therefore we leave both in the method group. The overload resolution algorithm has been written - to handle this departure from the specification. - - Similarly, we might have two methods in the method group where one is a "new" method that hides - another. Again, in overload resolution this would be handled by the rule that says that methods - declared on more derived types take priority over methods declared on less derived types. Both - will be in the method group, but in the IDE we want to only display information about the - hiding method, not the hidden method. - - We can also have "diamond" inheritance of interfaces leading to multiple copies of the same - method ending up in the method group: - - interface IB { void M(); } - interface IL : IB {} - interface IR : IB {} - interface ID : IL, IR {} - ... - id.M(); - - We only want to display one symbol in the IDE, even if the member lookup algorithm is unsophisticated - and puts IB.M in the member group twice. (Again, this is a mild spec violation since a method group - is supposed to be a set, without duplicates.) - - Finally, the interaction of multiple inheritance of interfaces and hiding can lead to some subtle - situations. Suppose we make a slight modification to the scenario above: - - interface IL : IB { new void M(); } - - Again, we only want to display one symbol in the method group. The fact that there is a "path" - to IB.M from ID via IR is irrelevant; if the symbol IB.M is hidden by IL.M then it is hidden - in ID, period. - - - - - Get the semantic info of a named argument in an invocation-like expression. - - - - - Find the first parameter named "argumentName". - - - - - If the call represents an extension method invocation with an explicit receiver, return the original - methods as ReducedExtensionMethodSymbols. Otherwise, return the original methods unchanged. - - - - - If the call represents an extension method with an explicit receiver, return a - ReducedExtensionMethodSymbol if it can be constructed. Otherwise, return the - original call method. - - - - - Gets for each statement info. - - The node. - - - - Gets await expression info. - - The node. - - - - If the given node is within a preprocessing directive, gets the preprocessing symbol info for it. - - Preprocessing symbol identifier node. - - - - Options to control the internal working of GetSymbolInfoWorker. Not currently exposed - to public clients, but could be if desired. - - - - - When binding "C" new C(...), return the type C and do not return information about - which constructor was bound to. Bind "new C(...)" to get information about which constructor - was chosen. - - - - - When binding "C" new C(...), return the constructor of C that was bound to, if C unambiguously - binds to a single type with at least one constructor. - - - - - When binding a name X that was declared with a "using X=OtherTypeOrNamespace", return OtherTypeOrNamespace. - - - - - When binding a name X that was declared with a "using X=OtherTypeOrNamespace", return the alias symbol X. - - - - - Given a position in the SyntaxTree for this SemanticModel returns the innermost - NamedType that the position is considered inside of. - - - - - Structure containing all semantic information about a for each statement. - - - - - Gets the "GetEnumerator" method. - - - - - Gets the "MoveNext" method. - - - - - Gets the "Current" property. - - - - - Gets the "Dispose" method. - - - - - The intermediate type to which the output of the is converted - before being converted to the iteration variable type. - - - As you might hope, for an array, it is the element type of the array. - - - - - The conversion from the to the iteration variable type. - - - May be user-defined. - - - - - The conversion from the type of the to the . - - - - - Initializes a new instance of the structure. - - - - - A binding for a field initializer, property initializer, constructor - initializer, or a parameter default value. - Represents the result of binding a value expression rather than a - block (for that, use a ). - - - - - Creates a SemanticModel for a true field initializer (field = value) of a named type (incl. Enums). - - - - - Creates a SemanticModel for an autoprop initializer of a named type - - - - - Creates a SemanticModel for a constructor initializer (": this(...)" or ": base(...)"). - - - - - Creates a SemanticModel for a constructor initializer (": base-class(...)"). - - - - - Creates a SemanticModel for a parameter default value. - - - - - Creates a speculative SemanticModel for an initializer node (field initializer, constructor initializer, or parameter default value) - that did not appear in the original source code. - - - - This is an implementation of a special symbol comparer, which is supposed to be used for - sorting original definition symbols (explicitly or explicitly declared in source within the same - container) in lexical order of their declarations. It will not work on anything that uses non-source locations. - - - - - Binding info for expressions and statements that are part of a member declaration. - - - - - The member symbol - - - - - This overload exists for callers who - a) Already have a node in hand and don't want to search through the tree - b) May want to search from an indirect container (e.g. node containing node - containing position). - - - - - Get the bound node corresponding to the root. - - - - - Get the highest bound node in the tree associated with a particular syntax node. - - - - - Get the lowest bound node in the tree associated with a particular syntax node. Lowest is defined as last - in a pre-order traversal of the bound tree. - - - - - Returned binder doesn't need to have set - the caller will add it. - - - - - Performs the same function as GetEnclosingBinder, but is known to take place within a - specified lambda. Walks up the syntax hierarchy until a node with an associated binder - is found. - - - CONSIDER: can this share code with MemberSemanticModel.GetEnclosingBinder? - - Returned binder doesn't need to have set - the caller will add it. - - - - - Get all bounds nodes associated with a node, ordered from highest to lowest in the bound tree. - Strictly speaking, the order is that of a pre-order traversal of the bound tree. - - - - - If the node is an expression, return the nearest parent node - with semantic meaning. Otherwise return null. - - - - - The incremental binder is used when binding statements. Whenever a statement - is bound, it checks the bound node cache to see if that statement was bound, - and returns it instead of rebinding it. - - For example, we might have: - while (x > foo()) - { - y = y * x; - z = z + y; - } - - We might first get semantic info about "z", and thus bind just the statement - "z = z + y". Later, we might bind the entire While block. While binding the while - block, we can reuse the binding we did of "z = z + y". - - - NOTE: any member overridden by this binder should follow the BuckStopsHereBinder pattern. - Otherwise, a subsequent binder in the chain could suppress the caching behavior. - - - - - We override GetBinder so that the BindStatement override is still - in effect on nested binders. - - - - - Walks the bound tree and adds all non compiler generated bound nodes whose syntax matches the given one - to the cache. - - The root of the bound tree. - The cache. - The syntax node where to add bound nodes for. - - - - Decides whether to the add the bound node to the cache or not. - - The bound node. - - - - Allows asking semantic questions about a TypeSyntax (or its descendants) within a member, that did not appear in the original source code. - Typically, an instance is obtained by a call to SemanticModel.TryGetSpeculativeSemanticModel. - - - - - Creates a speculative SemanticModel for a TypeSyntax node at a position within an existing MemberSemanticModel. - - - - - Creates a SemanticModel that creates and owns the ExecutableCodeBinder for the method of which it is a model. - - - - - Creates a speculative SemanticModel for a method body that did not appear in the original source code. - - - - - Creates a speculative SemanticModel for an expression body that did not appear in the original source code. - - - - - Semantic information associated with a query clause in a C# query expression. - - - - - The .Cast<T>() operation generated from the query range variable's type restriction, - or null if the type restriction isn't specified. - - - The operation, when present is implemented via . - To access the type, when this is non-null use [0]. - If it is an extension method, it is returned in reduced form. - - - - - The operation (e.g. Select(), Where(), etc) that implements the given clause. - - - The clause can be implemented via , or - or that return a delegate. - If it is an extension method, it is returned in reduced form. - - - - - Allows asking semantic questions about a tree of syntax nodes that did not appear in the original source code. - Typically, an instance is obtained by a call to SemanticModel.TryGetSpeculativeSemanticModel. - - - - - Allows asking semantic questions about any node in a SyntaxTree within a Compilation. - - - Allows asking semantic questions about any node in a SyntaxTree within a Compilation. - - - - - The compilation this object was obtained from. - - - - - The root node of the syntax tree that this object is associated with. - - - - - The SyntaxTree that this object is associated with. - - - - - Returns true if this is a SemanticModel that ignores accessibility rules when answering semantic questions. - - - - - Gets the enclosing binder associated with the node - - - - - - - Given a namespace declaration syntax node, get the corresponding namespace symbol for the declaration - assembly. - - The syntax node that declares a namespace. - The cancellation token. - The namespace symbol that was declared by the namespace declaration. - - - - Given a type declaration, get the corresponding type symbol. - - The syntax node that declares a type. - The cancellation token. - The type symbol that was declared. - - NOTE: We have no GetDeclaredSymbol overloads for subtypes of BaseTypeDeclarationSyntax as all of them return a NamedTypeSymbol. - - - - - Given a delegate declaration, get the corresponding type symbol. - - The syntax node that declares a delegate. - The cancellation token. - The type symbol that was declared. - - - - Given an member declaration syntax, get the corresponding symbol. - - The syntax node that declares a member. - The cancellation token. - The symbol that was declared. - - NOTE: We have no GetDeclaredSymbol overloads for following subtypes of MemberDeclarationSyntax: - NOTE: (1) GlobalStatementSyntax as they don't declare any symbols. - NOTE: (2) IncompleteMemberSyntax as there are no symbols for incomplete members. - NOTE: (3) BaseFieldDeclarationSyntax or its subtypes as these declarations can contain multiple variable declarators. - NOTE: GetDeclaredSymbol should be called on the variable declarators directly. - - - - - Given a enum member declaration, get the corresponding field symbol. - - The syntax node that declares an enum member. - The cancellation token. - The symbol that was declared. - - - - Given a base method declaration syntax, get the corresponding method symbol. - - The syntax node that declares a method. - The cancellation token. - The symbol that was declared. - - NOTE: We have no GetDeclaredSymbol overloads for subtypes of BaseMethodDeclarationSyntax as all of them return a MethodSymbol. - - - - - Given a syntax node that declares a property, indexer or an event, get the corresponding declared symbol. - - The syntax node that declares a property, indexer or an event. - The cancellation token. - The symbol that was declared. - - - - Given a syntax node that declares a property, get the corresponding declared symbol. - - The syntax node that declares a property, indexer or an event. - The cancellation token. - The symbol that was declared. - - - - Given a syntax node that declares an indexer, get the corresponding declared symbol. - - The syntax node that declares an indexer. - The cancellation token. - The symbol that was declared. - - - - Given a syntax node that declares a (custom) event, get the corresponding event symbol. - - The syntax node that declares a event. - The cancellation token. - The symbol that was declared. - - - - Given an syntax node that declares a property or member accessor, get the corresponding symbol. - - The syntax node that declares an accessor. - The cancellation token. - The symbol that was declared. - - - - Finds the member in the containing symbol which is inside the given declaration span. - - - - - Given an variable declarator syntax, get the corresponding symbol. - - The syntax node that declares a variable. - The cancellation token. - The symbol that was declared. - - - - Given a labeled statement syntax, get the corresponding label symbol. - - The syntax node of the labeled statement. - The cancellation token. - The label symbol for that label. - - - - Given a switch label syntax, get the corresponding label symbol. - - The syntax node of the switch label. - The cancellation token. - The label symbol for that label. - - - - Given a using declaration get the corresponding symbol for the using alias that was introduced. - - - The cancellation token. - The alias symbol that was declared. - - If the using directive is an error because it attempts to introduce an alias for which an existing alias was - previously declared in the same scope, the result is a newly-constructed AliasSymbol (i.e. not one from the - symbol table). - - - - - Given an extern alias declaration get the corresponding symbol for the alias that was introduced. - - - The cancellation token. - The alias symbol that was declared, or null if a duplicate alias symbol was declared. - - - - Given a base field declaration syntax, get the corresponding symbols. - - The syntax node that declares one or more fields or events. - The cancellation token. - The field symbols that were declared. - - - - Given an parameter declaration syntax node, get the corresponding symbol. - - The syntax node that declares a parameter. - The cancellation token. - The parameter that was declared. - - - - Given a type parameter declaration (field or method), get the corresponding symbol - - - The cancellation token. - - - - - The type of the expression represented by the syntax node. For expressions that do not - have a type, null is returned. If the type could not be determined due to an error, than - an object derived from ErrorTypeSymbol is returned. - - - - - The type of the expression after it has undergone an implicit conversion. If the type - did not undergo an implicit conversion, returns the same as Type. - - - - - If the expression underwent an implicit conversion, return information about that - conversion. Otherwise, returns an identity conversion. - - - - - Manages anonymous types created in owning compilation. All requests for - anonymous type symbols go via the instance of this class. - - - Manages anonymous types created on module level. All requests for anonymous type symbols - go via the instance of this class, the symbol will be either created or returned from cache. - - - - - Represents an anonymous type constructor. - - - - - Represents a getter for anonymous type property. - - - - - Represents an anonymous type 'Equals' method. - - - - - Represents an anonymous type 'GetHashCode' method. - - - - - Represents an anonymous type 'ToString' method. - - - - - Current compilation - - - - - Given anonymous type descriptor provided constructs an anonymous type symbol. - - - - - Get a symbol of constructed anonymous type property by property index - - - - - Retrieves anonymous type properties types - - - - - Given an anonymous type and new field types construct a new anonymous type symbol; - a new type symbol will reuse type descriptor from the constructed type with new type arguments. - - - - - Logical equality on anonymous types that ignores custom modifiers and/or the object/dynamic distinction. - Differs from IsSameType for arrays, pointers, and generic instantiations. - - - - - Reports all use site errors in special or well known symbols required for anonymous types - - true if there was at least one error - - - - Cache of created anonymous type templates used as an implementation of anonymous - types in emit phase. - - - - - Maps delegate signature shape (number of parameters and their ref-ness) to a synthesized generic delegate symbol. - Unlike anonymous types synthesized delegates are not available through symbol APIs. They are only used in lowered bound trees. - Currently used for dynamic call-site sites whose signature doesn't match any of the well-known Func or Action types. - - - - - Produces name of the synthesized delegate symbol that encodes the parameter byref-ness and return type of the delegate. - The arity is appended via `N suffix since in MetadataName calculation since the delegate is generic. - - - - - Given anonymous type provided constructs an implementation type symbol to be used in emit phase; - if the anonymous type has at least one field the implementation type symbol will be created based on - a generic type template generated for each 'unique' anonymous type structure, otherwise the template - type will be non-generic. - - - - - Resets numbering in anonymous type names and compiles the - anonymous type methods. Also seals the collection of templates. - - - - - The set of anonymous type templates created by - this AnonymousTypeManager, in fixed order. - - - - - The set of synthesized delegates created by - this AnonymousTypeManager. - - - - - Returns all templates owned by this type manager - - - - - Returns true if the named type is an implementation template for an anonymous type - - - - - Retrieves methods of anonymous type template which are not placed to symbol table. - In current implementation those are overridden 'ToString', 'Equals' and 'GetHashCode' - - - - - Translates anonymous type public symbol into an implementation type symbol to be used in emit. - - - - - Translates anonymous type method symbol into an implementation method symbol to be used in emit. - - - - - Comparator being used for stable ordering in anonymous type indices. - - - - - Represents an anonymous type 'public' symbol which is used in binding and lowering. - In emit phase it is being substituted with implementation symbol. - - - - Properties defined in the type - - - Maps member names to symbol(s) - - - Anonymous type manager owning this template - - - Anonymous type descriptor - - - - Represents a baking field for an anonymous type template property symbol. - - - - - Represents an anonymous type template's property symbol. - - - - - Represents a base implementation for anonymous type synthesized methods. - - - - - Represents an anonymous type 'template' which is a generic type to be used for all - anonymous type having the same structure, i.e. the same number of fields and field names. - - - - Name to be used as metadata name during emit - - - This list consists of synthesized method symbols for ToString, - Equals and GetHashCode which are not part of symbol table - - - Properties defined in the template - - - Maps member names to symbol(s) - - - Anonymous type manager owning this template - - - Smallest location of the template, actually contains the smallest location - of all the anonymous type instances created using this template during EMIT - - - Key pf the anonymous type descriptor - - - - Smallest location of the template, actually contains the smallest location - of all the anonymous type instances created using this template during EMIT; - - NOTE: if this property is queried, smallest location must not be null. - - - - - In emit phase every time a created anonymous type is referenced we try to store the lowest - location of the template. It will be used for ordering templates and assigning emitted type names. - - - - - Returns a synthesized debugger display attribute or null if one - could not be synthesized. - - - - - Represents an anonymous type template's type parameter. - - - - - Represents a compiler generated synthesized method symbol - representing string switch hash function - - - - - Compute the hashcode of a sub string using FNV-1a - See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function - - - This method should be kept consistent with MethodBodySynthesizer.ConstructStringSwitchHashFunctionBody - The control flow in this method mimics lowered "for" loop. It is exactly what we want to emit - to ensure that JIT can do range check hoisting. - - - - - When C# interface implementation differs from CLR interface implementation, - we insert a synthesized explicit interface implementation that delegates - to the method that C# considers an implicit implementation. - There are two key scenarios for this: - 1) A single source method is implicitly implementing one or more interface - methods from metadata and the interface methods have different custom - modifiers. In this case, we explicitly implement the interface methods - and have (all) implementations delegate to the source method. - 2) A non-virtual, non-source method in a base type is implicitly implementing - an interface method. Since we can't change the "virtualness" of the - non-source method, we introduce an explicit implementation that delegates - to it instead. - - - - - Given a SynthesizedExplicitImplementationMethod (effectively a tuple (interface method, implementing method, implementing type)), - construct a BoundBlock body. Consider the tuple (Interface.Foo, Base.Foo, Derived). The generated method will look like: - - R Interface.Foo<T1, T2, ...>(A1 a1, A2 a2, ...) - { - //don't return the output if the return type is void - return this.Foo<T1, T2, ...>(a1, a2, ...); - } - - - - - If a sealed override property defines fewer accessors than the - original virtual property, it is necessary to synthesize a sealed - accessor so that the accessor will not be overridable from metadata. - - - - - Given a SynthesizedSealedPropertyAccessor (an accessor with a reference to the accessor it overrides), - construct a BoundBlock body. - - - - - a bound node rewriter that rewrites types properly (which in some cases the automatically-generated - base class does not). This is used in the lambda rewriter, the iterator rewriter, and the async rewriter. - - - - - A wrapper method that is created for non-virtually calling a base-class - virtual method from other classes (like those created for lambdas...). - - - - - Given a SynthesizedSealedPropertyAccessor (an accessor with a reference to the accessor it overrides), - construct a BoundBlock body. - - - - A not-null collection of synthesized methods generated for the current source type. - - - - Returns true if the specified local/parameter needs to be hoisted to a field. - Variable may be hoisted even if it is not captured, to improve debugging experience. - - - - - Contains methods related to synthesizing bound nodes in lowered form - that does not need any processing before passing to codegen - - - - - Construct a body for a method containing a call to a single other method with the same signature (modulo name). - - Bound node factory. - Method to invoke in constructed body. - True for "base.", false for "this.". - Body for implementedMethod. - - - - An ArrayTypeSymbol represents an array type, such as int[] or object[,]. - - - - - Gets the list of custom modifiers associated with the array. - Returns an empty list if there are no custom modifiers. - - - - - Gets the number of dimensions of the array. A regular single-dimensional array - has rank 1, a two-dimensional array has rank 2, etc. - - - - - Is this zero-based one-dimensional array, i.e. SZArray in CLR terms. - - - - - Specified sizes for dimensions, by position. The length can be less than , - meaning that some trailing dimensions don't have the size specified. - The most common case is none of the dimensions have the size specified - an empty array is returned. - - - - - Specified lower bounds for dimensions, by position. The length can be less than , - meaning that some trailing dimensions don't have the lower bound specified. - The most common case is all dimensions are zero bound - a null array is returned in this case. - - - - - Note, equality should be checked separately!!! - - - - - Normally C# arrays have default sizes and lower bounds - sizes are not specified and all dimensions are zero bound. - This property should return false for any deviations. - - - - - Gets the type of the elements stored in the array. - - - - - Represents SZARRAY - zero-based one-dimensional array - - - - - Represents MDARRAY - multi-dimensional array (possibly of rank 1) - - - - - Represents an attribute applied to a Symbol. - - - - - Gets the attribute class being applied. - - - - - Gets the constructor used in this application of the attribute. - - - - - Gets a reference to the source for this application of the attribute. Returns null for applications of attributes on metadata Symbols. - - - - - Gets the list of constructor arguments specified by this application of the attribute. This list contains both positional arguments - and named arguments that are formal parameters to the constructor. - - - - - Gets the list of named field or property value arguments specified by this application of the attribute. - - - - - Compares the namespace and type name with the attribute's namespace and type name. - Returns true if they are the same. - - - - - Checks if an applied attribute with the given attributeType matches the namespace name and type name of the given early attribute's description - and the attribute description has a signature with parameter count equal to the given attribute syntax's argument list count. - NOTE: We don't allow early decoded attributes to have optional parameters. - - - - - Returns the that represents the current AttributeData. - - A that represents the current AttributeData. - - - - Gets the attribute class being applied as an - - - - - Gets the constructor used in this application of the attribute as an . - - - - - Gets a reference to the source for this application of the attribute. Returns null for applications of attributes on metadata Symbols. - - - - - Decodes PermissionSetAttribute applied in source to determine if it needs any fixup during codegen. - - - PermissionSetAttribute needs fixup when it contains an assignment to the 'File' property as a single named attribute argument. - Fixup performed is ported from SecurityAttributes::FixUpPermissionSetAttribute. - It involves following steps: - 1) Verifying that the specified file name resolves to a valid path. - 2) Reading the contents of the file into a byte array. - 3) Convert each byte in the file content into two bytes containing hexadecimal characters. - 4) Replacing the 'File = fileName' named argument with 'Hex = hexFileContent' argument, where hexFileContent is the converted output from step 3) above. - - Step 1) is performed in this method, i.e. during binding. - Remaining steps are performed during serialization as we want to avoid retaining the entire file contents throughout the binding/codegen pass. - See for remaining fixup steps. - - String containing the resolved file path if PermissionSetAttribute needs fixup during codegen, null otherwise. - - - - This method determines if an applied attribute must be emitted. - Some attributes appear in symbol model to reflect the source code, - but should not be emitted. - - - - - Represents a custom modifier (modopt/modreq). - - - - - A type used as a tag that indicates which type of modification applies. - - - - - Represents an event. - - - - - The original definition of this symbol. If this symbol is constructed from another - symbol by type substitution then OriginalDefinition gets the original symbol as it was defined in - source or metadata. - - - - - The type of the event. - - - - - The 'add' accessor of the event. Null only in error scenarios. - - - - - The 'remove' accessor of the event. Null only in error scenarios. - - - - - True if this is a Windows Runtime-style event. - - A normal C# event, "event D E", has accessors - void add_E(D d) - void remove_E(D d) - - A Windows Runtime event, "event D E", has accessors - EventRegistrationToken add_E(D d) - void remove_E(EventRegistrationToken t) - - - - - True if this symbol has a special name (metadata flag SpecialName is set). - - - - - Gets the attributes on event's associated field, if any. - Returns an empty if - there are no attributes. - - - This publicly exposes the attributes of the internal backing field. - - - - - Returns the overridden event, or null. - - - - - Source: Was the member name qualified with a type name? - Metadata: Is the member an explicit implementation? - - - Will not always agree with ExplicitInterfaceImplementations.Any() - (e.g. if binding of the type part of the name fails). - - - - - Returns interface events explicitly implemented by this event. - - - Events imported from metadata can explicitly implement more than one event. - - - - - Gets the kind of this symbol. - - - - - Implements visitor pattern. - - - - - Represents a field in a class, struct or enum - - - - - The original definition of this symbol. If this symbol is constructed from another - symbol by type substitution then OriginalDefinition gets the original symbol as it was defined in - source or metadata. - - - - - Gets the type of this field. - - - - - Gets the list of custom modifiers, if any, associated with the field. - - - - - If this field serves as a backing variable for an automatically generated - property or a field-like event, returns that - property/event. Otherwise returns null. - Note, the set of possible associated symbols might be expanded in the future to - reflect changes in the languages. - - - - - Returns true if this field was declared as "readonly". - - - - - Returns true if this field was declared as "volatile". - - - - - Returns true if this field was declared as "fixed". - Note that for a fixed-size buffer declaration, this.Type will be a pointer type, of which - the pointed-to type will be the declared element type of the fixed-size buffer. - - - - - If IsFixed is true, the value between brackets in the fixed-size-buffer declaration. - If IsFixed is false FixedSize is 0. - Note that for fixed-a size buffer declaration, this.Type will be a pointer type, of which - the pointed-to type will be the declared element type of the fixed-size buffer. - - - - - If this.IsFixed is true, returns the underlying implementation type for the - fixed-size buffer when emitted. Otherwise returns null. - - - - - Returns true when field is a backing field for a captured frame pointer (typically "this"). - - - - - Returns true if this field was declared as "const" (i.e. is a constant declaration). - Also returns true for an enum member. - - - - - Returns false if the field wasn't declared as "const", or constant value was omitted or erroneous. - True otherwise. - - - - - If IsConst returns true, then returns the constant value of the field or enum member. If IsConst returns - false, then returns null. - - - - - Gets the kind of this symbol. - - - - - Returns false because field can't be abstract. - - - - - Returns false because field can't be defined externally. - - - - - Returns false because field can't be overridden. - - - - - Returns false because field can't be sealed. - - - - - Returns false because field can't be virtual. - - - - - True if this symbol has a special name (metadata flag SpecialName is set). - - - - - True if this symbol has a runtime-special name (metadata flag RuntimeSpecialName is set). - - - - - True if this field is not serialized (metadata flag NotSerialized is set). - - - - - True if this field has a pointer type. - - - By default we defer to this.Type.IsPointerType() - However in some cases this may cause circular dependency via binding a - pointer that points to the type that contains the current field. - Fortunately in those cases we do not need to force binding of the field's type - and can just check the declaration syntax if the field type is not yet known. - - - - - Describes how the field is marshalled when passed to native code. - Null if no specific marshalling information is available for the field. - - PE symbols don't provide this information and always return null. - - - - Returns the marshalling type of this field, or 0 if marshalling information isn't available. - - - By default this information is extracted from if available. - Since the compiler does only need to know the marshalling type of symbols that aren't emitted - PE symbols just decode the type from metadata and don't provide full marshalling information. - - - - - Offset assigned to the field when the containing type is laid out by the VM. - Null if unspecified. - - - - - Return error code that has highest priority while calculating use site error for this symbol. - - - - - Represents a method or method-like symbol (including constructor, - destructor, operator, or property/event accessor). - - - - - This method indicates whether or not the runtime will regard the method - as newslot (as indicated by the presence of the "newslot" modifier in the - signature). - WARN WARN WARN: We won't have a final value for this until declaration - diagnostics have been computed for all s, so pass - ignoringInterfaceImplementationChanges: true if you need a value sooner - and aren't concerned about tweaks made to satisfy interface implementation - requirements. - NOTE: Not ignoring changes can only result in a value that is more true. - - - - - This method indicates whether or not the runtime will regard the method - as virtual (as indicated by the presence of the "virtual" modifier in the - signature). - WARN WARN WARN: We won't have a final value for this until declaration - diagnostics have been computed for all s, so pass - ignoringInterfaceImplementationChanges: true if you need a value sooner - and aren't concerned about tweaks made to satisfy interface implementation - requirements. - NOTE: Not ignoring changes can only result in a value that is more true. - - - - - The original definition of this symbol. If this symbol is constructed from another - symbol by type substitution then OriginalDefinition gets the original symbol as it was defined in - source or metadata. - - - - - Gets what kind of method this is. There are several different kinds of things in the - C# language that are represented as methods. This property allow distinguishing those things - without having to decode the name of the method. - - - - - Returns the arity of this method, or the number of type parameters it takes. - A non-generic method has zero arity. - - - - - Returns whether this method is generic; i.e., does it have any type parameters? - - - - - Returns true if this method is an extension method. - - - - - True if this symbol has a special name (metadata flag SpecialName is set). - - - - - Misc implementation metadata flags (ImplFlags in metadata). - - - - - True if the type has declarative security information (HasSecurity flags). - - - - - Platform invoke information, or null if the method isn't a P/Invoke. - - - - - Declaration security information associated with this type, or null if there is none. - - - - - Marshalling information for return value (FieldMarshal in metadata). - - - - - True if the method calls another method containing security code (metadata flag RequiresSecurityObject is set). - - - A method can me marked as RequiresSecurityObject by applying the DynamicSecurityMethodAttribute in source. - DynamicSecurityMethodAttribute is a pseudo custom attribute defined as an internal class in System.Security namespace. - This attribute is set on certain security methods defined within mscorlib. - - - - - Returns true if this method hides base methods by name. This cannot be specified directly - in the C# language, but can be true for methods defined in other languages imported from - metadata. The equivalent of the "hidebyname" flag in metadata. - - - - - Returns whether this method is using CLI VARARG calling convention. This is used for C-style variable - argument lists. This is used extremely rarely in C# code and is represented using the undocumented "__arglist" keyword. - - Note that methods with "params" on the last parameter are indicated with the "IsParams" property on ParameterSymbol, and - are not represented with this property. - - - - - Returns whether this built-in operator checks for integer overflow. - - - - - Returns true if this method has no return type; i.e., returns "void". - - - - - Source: Returns whether this method is async; i.e., does it have the async modifier? - Metadata: Returns false; methods from metadata cannot be async. - - - - - Gets the return type of the method - - - - - Returns the type arguments that have been substituted for the type parameters. - If nothing has been substituted for a given type parameter, - then the type parameter itself is consider the type argument. - - - - - Get the type parameters on this method. If the method has not generic, - returns an empty list. - - - - - Call and throw if it returns false. - - - - - True if this type supports retrieving the this parameter - and false otherwise. Note that a return value of true does not guarantee a non-null - (e.g. fails for static methods). - - - - - Optimization: in many cases, the parameter count (fast) is sufficient and we - don't need the actual parameter symbols (slow). - - - The default implementation is always correct, but may be unnecessarily slow. - - - - - Gets the parameters of this method. If this method has no parameters, returns - an empty list. - - - - - Returns the method symbol that this method was constructed from. The resulting - method symbol - has the same containing type (if any), but has type arguments that are the same - as the type parameters (although its containing type might not). - - - - - Source: Was the member name qualified with a type name? - Metadata: Is the member an explicit implementation? - - - Will not always agree with ExplicitInterfaceImplementations.Any() - (e.g. if binding of the type part of the name fails). - - - - - Returns interface methods explicitly implemented by this method. - - - Methods imported from metadata can explicitly implement more than one method, - that is why return type is ImmutableArray. - - - - - Returns the list of custom modifiers, if any, associated with the returned value. - - - - - Gets the attributes on method's return type. - Returns an empty array if there are no attributes. - - - - - If this method has MethodKind of MethodKind.PropertyGet or MethodKind.PropertySet, - returns the property that this method is the getter or setter for. - If this method has MethodKind of MethodKind.EventAdd or MethodKind.EventRemove, - returns the event that this method is the adder or remover for. - Note, the set of possible associated symbols might be expanded in the future to - reflect changes in the languages. - - - - - Returns the original virtual or abstract method which a given method symbol overrides, - ignoring any other overriding methods in base classes. - - The search must respect accessibility from this type. - - - - Returns the original virtual or abstract method which a given method symbol overrides, - ignoring any other overriding methods in base classes. - Also, if the given method symbol is generic then the resulting virtual or abstract method is constructed with the - same type arguments as the given method. - - - - - If this method overrides another method (because it both had the override modifier - and there correctly was a method to override), returns the overridden method. - Note that if an overriding method D.M overrides C.M, which in turn overrides - virtual method A.M, the "overridden method" of D.M is C.M, not the original virtual - method A.M. Note also that constructed generic methods are not considered to - override anything. - - - - - Returns true if calls to this method are omitted in this syntax tree. Calls are omitted - when the called method is a partial method with no implementation part, or when the - called method is a conditional method whose condition is not true in the source file - corresponding to the given syntax tree. - - - - - Calls are conditionally omitted if both the following requirements are true: - (a) IsConditional == true, i.e. it has at least one applied/inherited conditional attribute AND - (b) None of conditional symbols corresponding to these conditional attributes are defined in the given syntaxTree. - - - Forces binding and decoding of attributes. - - - - - Returns a sequence of preprocessor symbols specified in applied on this symbol, or null if there are none. - - - - - Returns a flag indicating whether this symbol has at least one applied/inherited conditional attribute. - - - Forces binding and decoding of attributes. - - - - - Some method kinds do not participate in overriding/hiding (e.g. constructors). - - - - - Returns value 'Method' of the - - - - - Returns true if this symbol represents a constructor of a script class. - - - - - Returns if the method is implicit constructor (normal and static) - - - - - Returns if the method is implicit instance constructor - - - - - Returns true if this symbol represents a constructor of an interactive submission class. - - - - - Determines whether this method is a candidate for a default assembly entry point - (i.e. it is a static method called "Main"). - - - - - Checks if the method has an entry point compatible signature, i.e. - - the return type is either void or int - - has either no parameter or a single parameter of type string[] - - - - - If this is an extension method that can be applied to a receiver of the given type, - returns a reduced extension method symbol thus formed. Otherwise, returns null. - - - - - If this is an extension method, returns a reduced extension method - symbol representing the method. Otherwise, returns null. - - - - - If this method is a reduced extension method, returns the extension method that - should be used at call site during ILGen. Otherwise, returns null. - - - - - If this is a partial method declaration without a body, and the method also - has a part that implements it with a body, returns that implementing - definition. Otherwise null. - - - - - If this is a partial method with a body, returns the corresponding - definition part (without a body). Otherwise null. - - - - - If this method is a reduced extension method, gets the extension method definition that - this method was reduced from. Otherwise, returns null. - - - - - If this method can be applied to an object, returns the type of object it is applied to. - - - - - If this method is a reduced extension method, returns a type inferred during reduction process for the type parameter. - - Type parameter of the corresponding method. - Inferred type or Nothing if nothing was inferred. - If this is not a reduced extension method. - If is null. - If doesn't belong to the corresponding method. - - - - Apply type substitution to a generic method to create an method symbol with the given type parameters supplied. - - - - - - - Apply type substitution to a generic method to create an method symbol with the given type parameters supplied. - - - - - - - As a performance optimization, cache parameter types and refkinds - overload resolution uses them a lot. - - - - - Null if no parameter is ref/out. Otherwise the RefKind for each parameter. - - - - - Returns the map from type parameters to type arguments. - If this is not a generic method instantiation, returns null. - The map targets the original definition of the method. - - - - - Return error code that has highest priority while calculating use site error for this symbol. - - - - - If the method was written as an iterator method (i.e. with yield statements in its body) returns the - element type of the iterator. Otherwise returns null. - - - - - Generates bound block representing method's body for methods in lowered form and adds it to - a collection of method bodies of the current module. This method is supposed to only be - called for method symbols which return SynthesizesLoweredBoundBody == true. - - - - - Returns true for synthesized symbols which generate synthesized body in lowered form - - - - - Return true iff the method contains user code. - - - - - Calculates a syntax offset for a local (user-defined or long-lived synthesized) declared at . - Must be implemented by all methods that may contain user code. - - - Syntax offset is a unique identifier for the local within the emitted method body. - It's based on position of the local declarator. In single-part method bodies it's simply the distance - from the start of the method body syntax span. If a method body has multiple parts (such as a constructor - comprising of code for member initializers and constructor initializer calls) the offset is calculated - as if all source these parts were concatenated together and prepended to the constructor body. - The resulting syntax offset is then negative for locals defined outside of the constructor body. - - - - - Build and add synthesized return type attributes for this method symbol. - - - - - Represents a type other than an array, a pointer, a type parameter, and dynamic. - - - - - Gets the set of interfaces to emit on this type. This set can be different from the set returned by Interfaces property. - - - - - Add the type to the builder and then recurse on its interfaces. - - - Pre-order depth-first search. - - - - - To represent a gap in interface's v-table null value should be returned in the appropriate position, - unless the gap has a symbol (happens if it is declared in source, for example). - - - - - Returns the arity of this type, or the number of type parameters it takes. - A non-generic type has zero arity. - - - - - Returns the type parameters that this type has. If this is a non-generic type, - returns an empty ImmutableArray. - - - - - Returns the type arguments that have been substituted for the type parameters. - If nothing has been substituted for a give type parameters, - then the type parameter itself is consider the type argument. - - - - - Returns custom modifiers for the type arguments that have been substituted for the type parameters. - - - - - Returns the type symbol that this type was constructed from. This type symbol - has the same containing type (if any), but has type arguments that are the same - as the type parameters (although its containing type might not). - - - - - For enum types, gets the underlying type. Returns null on all other - kinds of types. - - - - - Returns true for a struct type containing a cycle. - This property is intended for flow analysis only - since it is only implemented for source types. - - - - - Is this a NoPia local type explicitly declared in source, i.e. - top level type with a TypeIdentifier attribute on it? - - - - - Returns true and a string from the first GuidAttribute on the type, - the string might be null or an invalid guid representation. False, - if there is no GuidAttribute with string argument. - - - - - For delegate types, gets the delegate's invoke method. Returns null on - all other kinds of types. Note that it is possible to have an ill-formed - delegate type imported from metadata which does not have an Invoke method. - Such a type will be classified as a delegate but its DelegateInvokeMethod - would be null. - - - - - Get the operators for this type by their metadata name - - - - - Get the instance constructors for this type. - - - - - Get the static constructors for this type. - - - - - Get the instance and static constructors for this type. - - - - - Get the indexers for this type. - - - Won't include indexers that are explicit interface implementations. - - - - - Returns true if this type might contain extension methods. If this property - returns false, there are no extension methods in this type. - - - This property allows the search for extension methods to be narrowed quickly. - - - - - Returns true if this type is known to be a reference type. It is never the case that - IsReferenceType and IsValueType both return true. However, for an unconstrained type - parameter, IsReferenceType and IsValueType will both return false. - - - - - Returns true if this type is known to be a value type. It is never the case that - IsReferenceType and IsValueType both return true. However, for an unconstrained type - parameter, IsReferenceType and IsValueType will both return false. - - - - - Gets the associated attribute usage info for an attribute type. - - - - - Returns true if the type is a Script class. - It might be an interactive submission class or a Script class in a csx file. - - - - - Returns true if the type is the implicit class that holds onto invalid global members (like methods or - statements in a non script file). - - - - - Gets the name of this symbol. Symbols without a name return the empty string; null is - never returned. - - - - - Return the name including the metadata arity suffix. - - - - - Should the name returned by Name property be mangled with [`arity] suffix in order to get metadata name. - Must return False for a type with Arity == 0. - - - - - Collection of names of members declared within this type. - - - - - Get all the members of this symbol. - - An ImmutableArray containing all the members of this symbol. If this symbol has no members, - returns an empty ImmutableArray. Never returns null. - - - - Get all the members of this symbol that have a particular name. - - An ImmutableArray containing all the members of this symbol with the given name. If there are - no members with this name, returns an empty ImmutableArray. Never returns null. - - - - Get all the members of this symbol that are types. - - An ImmutableArray containing all the types that are members of this symbol. If this symbol has no type members, - returns an empty ImmutableArray. Never returns null. - - - - Get all the members of this symbol that are types that have a particular name, of any arity. - - An ImmutableArray containing all the types that are members of this symbol with the given name. - If this symbol has no type members with this name, - returns an empty ImmutableArray. Never returns null. - - - - Get all the members of this symbol that are types that have a particular name and arity - - An ImmutableArray containing all the types that are members of this symbol with the given name and arity. - If this symbol has no type members with this name and arity, - returns an empty ImmutableArray. Never returns null. - - - - Get this accessibility that was declared on this symbol. For symbols that do not have - accessibility declared on them, returns NotApplicable. - - - - - Used to implement visitor pattern. - - - - - During early attribute decoding, we consider a safe subset of all members that will not - cause cyclic dependencies. Get all such members for this symbol. - - - Never returns null (empty instead). - Expected implementations: for source, return type and field members; for metadata, return all members. - - - - - During early attribute decoding, we consider a safe subset of all members that will not - cause cyclic dependencies. Get all such members for this symbol that have a particular name. - - - Never returns null (empty instead). - Expected implementations: for source, return type and field members; for metadata, return all members. - - - - - Gets the kind of this symbol. - - - - - Compares this type to another type. - - - - - Helper for more complicated cases of Equals like when we have generic instantiations or types nested within them. - - - - - Returns a constructed type given its type arguments. - - The immediate type arguments to be replaced for type - parameters in the type. - - - - Returns a constructed type given its type arguments. - - The immediate type arguments to be replaced for type - parameters in the type. - - - - Returns a constructed type given its type arguments. - - - - - - Returns an unbound generic type of this named type. - - - - - True if this type or some containing type has type parameters. - - - - - True if this is a reference to an unbound generic type. These occur only - within a typeof expression. A generic type is considered unbound - if all of the type argument lists in its fully qualified name are empty. - Note that the type arguments of an unbound generic type will be returned as error - types because they do not really have type arguments. An unbound generic type - yields null for its BaseType and an empty result for its Interfaces. - - - - - The original definition of this symbol. If this symbol is constructed from another - symbol by type substitution then OriginalDefinition gets the original symbol as it was defined in - source or metadata. - - - - - Returns the map from type parameters to type arguments. - If this is not a generic type instantiation, returns null. - The map targets the original definition of the type. - - - - - True if this symbol has a special name (metadata flag SpecialName is set). - - - - - Returns a flag indicating whether this symbol is ComImport. - - - A type can me marked as a ComImport type in source by applying the - - - - - True if the type is a Windows runtime type. - - - A type can me marked as a Windows runtime type in source by applying the WindowsRuntimeImportAttribute. - WindowsRuntimeImportAttribute is a pseudo custom attribute defined as an internal class in System.Runtime.InteropServices.WindowsRuntime namespace. - This is needed to mark Windows runtime types which are redefined in mscorlib.dll and System.Runtime.WindowsRuntime.dll. - These two assemblies are special as they implement the CLR's support for WinRT. - - - - - True if the type should have its WinRT interfaces projected onto .NET types and - have missing .NET interface members added to the type. - - - - - Returns a flag indicating whether this symbol has at least one applied/inherited conditional attribute. - - - Forces binding and decoding of attributes. - - - - - True if the type is serializable (has Serializable metadata flag). - - - - - Type layout information (ClassLayout metadata and layout kind flags). - - - - - The default charset used for type marshalling. - Can be changed via applied on the containing module. - - - - - Marshalling charset of string data fields within the type (string formatting flags in metadata). - - - - - True if the type has declarative security information (HasSecurity flags). - - - - - Declaration security information associated with this type, or null if there is none. - - - - - Returns a sequence of preprocessor symbols specified in applied on this symbol, or null if there are none. - - - - - If was applied to the type and the attribute argument is a valid named type argument, i.e. accessible class type, then it returns the type symbol for the argument. - Otherwise, returns null. - - - - This property invokes force completion of attributes. If you are accessing this property - from the binder, make sure that we are not binding within an Attribute context. - This could lead to a possible cycle in attribute binding. - We can avoid this cycle by first checking if we are within the context of an Attribute argument, - i.e. if(!binder.InAttributeArgument) { ... namedType.ComImportCoClass ... } - - - CONSIDER: We can remove the above restriction and possibility of cycle if we do an - early binding of some well known attributes. - - - - - - If class represents fixed buffer, this property returns the FixedElementField - - - - - Requires less computation than == . - - - Metadata types need to compute their base types in order to know their TypeKinds, and that can lead - to cycles if base types are already being computed. - - True if this is an interface type. - - - - Represents a namespace. - - - - - Get all the members of this symbol that are namespaces. - - An IEnumerable containing all the namespaces that are members of this symbol. - If this symbol has no namespace members, returns an empty IEnumerable. Never returns - null. - - - - Returns whether this namespace is the unnamed, global namespace that is - at the root of all namespaces. - - - - - The kind of namespace: Module, Assembly or Compilation. - Module namespaces contain only members from the containing module that share the same namespace name. - Assembly namespaces contain members for all modules in the containing assembly that share the same namespace name. - Compilation namespaces contain all members, from source or referenced metadata (assemblies and modules) that share the same namespace name. - - - - - The containing compilation for compilation namespaces. - - - - - If a namespace has Assembly or Compilation extent, it may be composed of multiple - namespaces that are merged together. If so, ConstituentNamespaces returns - all the namespaces that were merged. If this namespace was not merged, returns - an array containing only this namespace. - - - - - Containing assembly. - - - - - Gets the kind of this symbol. - - - - - Implements visitor pattern. - - - - - Get this accessibility that was declared on this symbol. For symbols that do not have - accessibility declared on them, returns NotApplicable. - - - - - Returns true if this symbol is "static"; i.e., declared with the "static" modifier or - implicitly static. - - - - - Returns true if this symbol was declared as requiring an override; i.e., declared with - the "abstract" modifier. Also returns true on a type declared as "abstract", all - interface types, and members of interface types. - - - - - Returns true if this symbol was declared to override a base class member and was also - sealed from further overriding; i.e., declared with the "sealed" modifier. Also set for - types that do not allow a derived class (declared with "sealed" or "static" or "struct" - or "enum" or "delegate"). - - - - - Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. - This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. - - - - - Returns an implicit type symbol for this namespace or null if there is none. This type - wraps misplaced global code. - - - - - Lookup a nested namespace. - - - Sequence of names for nested child namespaces. - - - Symbol for the most nested namespace, if found. Nothing - if namespace or any part of it can not be found. - - - - - Add all extension methods in this namespace to the given list. If name or arity - or both are provided, only those extension methods that match are included. - - Methods list - Optional method name - Method arity - Lookup options - - - - Represents a parameter of a method or indexer. - - - - - Gets constant value to be stored in metadata Constant table. - - - - - The original definition of this symbol. If this symbol is constructed from another - symbol by type substitution then OriginalDefinition gets the original symbol as it was defined in - source or metadata. - - - - - Gets the type of the parameter. - - - - - Determines if the parameter ref, out or neither. - - - - - The list of custom modifiers, if any, associated with the parameter. - - - - - Describes how the parameter is marshalled when passed to native code. - Null if no specific marshalling information is available for the parameter. - - PE symbols don't provide this information and always return null. - - - - Returns the marshalling type of this parameter, or 0 if marshalling information isn't available. - - - By default this information is extracted from if available. - Since the compiler does only need to know the marshalling type of symbols that aren't emitted - PE symbols just decode the type from metadata and don't provide full marshalling information. - - - - - Gets the ordinal position of the parameter. The first parameter has ordinal zero. - The "'this' parameter has ordinal -1. - - - - - Returns true if the parameter was declared as a parameter array. - - - - - Returns true if the parameter is semantically optional. - - - True iff the parameter has a default argument syntax, - or the parameter is not a params-array and Optional metadata flag is set. - - - - - True if Optional flag is set in metadata. - - - - - True if In flag is set in metadata. - - - - - True if Out flag is set in metadata. - - - - - Returns true if the parameter explicitly specifies a default value to be passed - when no value is provided as an argument to a call. - - - True if the parameter has a default argument syntax, - or the parameter is from source and is applied, - or the parameter is from metadata and HasDefault metadata flag is set. See - to determine if the parameter will be considered optional by - overload resolution. - - The default value can be obtained with property. - - - - - Returns the default value of the parameter. If - returns false then DefaultValue throws an InvalidOperationException. - - - If the parameter type is a struct and the default value of the parameter - is the default value of the struct type or of type parameter type which is - not known to be a referenced type, then this property will return null. - - The parameter has no default value. - - - - Returns the default value constant of the parameter, - or null if the parameter doesn't have a default value or - the parameter type is a struct and the default value of the parameter - is the default value of the struct type or of type parameter type which is - not known to be a referenced type. - - - This is used for emitting. It does not reflect the language semantics - (i.e. even non-optional parameters can have default values). - - - - - Gets the kind of this symbol. - - - - - Implements visitor pattern. - - - - - Get this accessibility that was declared on this symbol. For symbols that do not have - accessibility declared on them, returns NotApplicable. - - - - - Returns true if this symbol was declared as requiring an override; i.e., declared with - the "abstract" modifier. Also returns true on a type declared as "abstract", all - interface types, and members of interface types. - - - - - Returns true if this symbol was declared to override a base class member and was also - sealed from further overriding; i.e., declared with the "sealed" modifier. Also set for - types that do not allow a derived class (declared with "sealed" or "static" or "struct" - or "enum" or "delegate"). - - - - - Returns true if this symbol is "virtual", has an implementation, and does not override a - base class member; i.e., declared with the "virtual" modifier. Does not return true for - members declared as abstract or override. - - - - - Returns true if this symbol was declared to override a base class member; i.e., declared - with the "override" modifier. Still returns true if member was declared to override - something, but (erroneously) no member to override exists. - - - - - Returns true if this symbol is "static"; i.e., declared with the "static" modifier or - implicitly static. - - - - - Returns true if this symbol has external implementation; i.e., declared with the - "extern" modifier. - - - - - Returns true if the parameter is the hidden 'this' parameter. - - - - - Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. - This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. - - - - - The CLI spec says that custom modifiers must precede the ByRef type code in the encoding of a parameter. - Unfortunately, the managed C++ compiler emits them in the reverse order. In order to avoid breaking - interop scenarios, we need to support such signatures. - Should be 0 for non-ref parameters. - - - - - Represents a pointer type such as "int *". Pointer types - are used only in unsafe code. - - - - - Create a new PointerTypeSymbol. - - The type being pointed at. - - - - Create a new PointerTypeSymbol. - - The type being pointed at. - Custom modifiers for the element type of this array type. - - - - The list of custom modifiers, if any, associated with the pointer type. - - - - - Gets the type of the storage location that an instance of the pointer type points to. - - - - - Represents a property or indexer. - - - - - As a performance optimization, cache parameter types and refkinds - overload resolution uses them a lot. - - - - - The original definition of this symbol. If this symbol is constructed from another - symbol by type substitution then OriginalDefinition gets the original symbol as it was defined in - source or metadata. - - - - - The type of the property. - - - - - The list of custom modifiers, if any, associated with the type of the property. - - - - - The parameters of this property. If this property has no parameters, returns - an empty list. Parameters are only present on indexers, or on some properties - imported from a COM interface. - - - - - Optimization: in many cases, the parameter count (fast) is sufficient and we - don't need the actual parameter symbols (slow). - - - - - Returns whether the property is really an indexer. - - - In source, we regard a property as an indexer if it is declared with an IndexerDeclarationSyntax. - From metadata, we regard a property if it has parameters and is a default member of the containing - type. - CAVEAT: To ensure that this property (and indexer Names) roundtrip, source properties are not - indexers if they are explicit interface implementations (since they will not be marked as default - members in metadata). - - - - - True if this an indexed property; that is, a property with parameters - within a [ComImport] type. - - - - - True if this is a read-only property; that is, a property with no set accessor. - - - - - True if this is a write-only property; that is, a property with no get accessor. - - - - - True if this symbol has a special name (metadata flag SpecialName is set). - - - - - The 'get' accessor of the property, or null if the property is write-only. - - - - - The 'set' accessor of the property, or null if the property is read-only. - - - - - Returns the overridden property, or null. - - - - - Source: Was the member name qualified with a type name? - Metadata: Is the member an explicit implementation? - - - Will not always agree with ExplicitInterfaceImplementations.Any() - (e.g. if binding of the type part of the name fails). - - - - - Returns interface properties explicitly implemented by this property. - - - Properties imported from metadata can explicitly implement more than one property. - - - - - Gets the kind of this symbol. - - - - - Implements visitor pattern. - - - - - Return error code that has highest priority while calculating use site error for this symbol. - - - - - Represents a type parameter in a generic type or generic method. - - - - - The original definition of this symbol. If this symbol is constructed from another - symbol by type substitution then OriginalDefinition gets the original symbol as it was defined in - source or metadata. - - - - - If this is a type parameter of a reduced extension method, gets the type parameter definition that - this type parameter was reduced from. Otherwise, returns Nothing. - - - - - The ordinal position of the type parameter in the parameter list which declares - it. The first type parameter has ordinal zero. - - - - - The types that were directly specified as constraints on the type parameter. - Duplicates and cycles are removed, although the collection may include - redundant constraints where one constraint is a base type of another. - - - - - True if the parameterless constructor constraint was specified for the type parameter. - - - - - The type parameter kind of this type parameter. - - - - - The method that declared this type parameter, or null. - - - - - The type that declared this type parameter, or null. - - - - - The effective base class of the type parameter (spec 10.1.5). If the deduced - base type is a reference type, the effective base type will be the same as - the deduced base type. Otherwise if the deduced base type is a value type, - the effective base type will be the most derived reference type from which - deduced base type is derived. - - - - - The effective interface set (spec 10.1.5). - - - - - The most encompassed type (spec 6.4.2) from the constraints. - - - - - The effective interface set and any base interfaces of those - interfaces. This is AllInterfaces excluding interfaces that are - only implemented by the effective base type. - - - - - Called by , , , and . - to allow derived classes to ensure constraints within the containing - type or method are resolved in a consistent order, regardless of the - order the callers query individual type parameters. - - - - - Helper method to force type parameter constraints to be resolved. - - - - - Returns a bag of applied custom attributes and data decoded from well-known attributes. Returns null if there are no attributes applied on the symbol. - - - Forces binding and decoding of attributes. - - - - - State machine interface property implementation. - - - - - A base method symbol used as a base class for lambda method symbol and base method wrapper symbol. - - - - - Abstract base class for mutable and immutable type maps. - - - - - Substitute for a type declaration. May use alpha renaming if the container is substituted. - - - - - SubstType, but for NamedTypeSymbols only. This is used for concrete types, so no alpha substitution appears in the result. - - - - - Perform the substitution on the given type. Each occurrence of the type parameter is - replaced with its corresponding type argument from the map. - - The type to be rewritten. - The type with type parameters replaced with the type arguments. - - - - Substitute types, and return the results without duplicates, preserving the original order. - - - - - Like SubstTypes, but for NamedTypeSymbols. - - - - - Symbol representing a using alias appearing in a compilation unit or within a namespace - declaration. Generally speaking, these symbols do not appear in the set of symbols reachable - from the unnamed namespace declaration. In other words, when a using alias is used in a - program, it acts as a transparent alias, and the symbol to which it is an alias is used in - the symbol table. For example, in the source code -
-            namespace NS
-            {
-                using o = System.Object;
-                partial class C : o {}
-                partial class C : object {}
-                partial class C : System.Object {}
-            }
-            
- all three declarations for class C are equivalent and result in the same symbol table object - for C. However, these using alias symbols do appear in the results of certain SemanticModel - APIs. Specifically, for the base clause of the first of C's class declarations, the - following APIs may produce a result that contains an AliasSymbol: -
-                SemanticInfo SemanticModel.GetSemanticInfo(ExpressionSyntax expression);
-                SemanticInfo SemanticModel.BindExpression(CSharpSyntaxNode location, ExpressionSyntax expression);
-                SemanticInfo SemanticModel.BindType(CSharpSyntaxNode location, ExpressionSyntax type);
-                SemanticInfo SemanticModel.BindNamespaceOrType(CSharpSyntaxNode location, ExpressionSyntax type);
-            
- Also, the following are affected if container==null (and, for the latter, when arity==null - or arity==0): -
-                IList<string> SemanticModel.LookupNames(CSharpSyntaxNode location, NamespaceOrTypeSymbol container = null, LookupOptions options = LookupOptions.Default, List<string> result = null);
-                IList<Symbol> SemanticModel.LookupSymbols(CSharpSyntaxNode location, NamespaceOrTypeSymbol container = null, string name = null, int? arity = null, LookupOptions options = LookupOptions.Default, List<Symbol> results = null);
-            
-
-
- - - Gets the for the - namespace or type referenced by the alias. - - - - - Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. - This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. - - - - - Using aliases in C# are always contained within a namespace declaration, or at the top - level within a compilation unit, within the implicit unnamed namespace declaration. We - return that as the "containing" symbol, even though the alias isn't a member of the - namespace as such. - - - - - Describes anonymous type in terms of fields - - - - Anonymous type location - - - Anonymous type fields - - - - Anonymous type descriptor Key - - The key is to be used to separate anonymous type templates in an anonymous type symbol cache. - The type descriptors with the same keys are supposed to map to 'the same' anonymous type - template in terms of the same generic type being used for their implementation. - - - - - Compares two anonymous type descriptors, takes into account fields names and types, not locations. - - - - - Compares two anonymous type descriptors, takes into account fields names and types, not locations. - - - - - Creates a new anonymous type descriptor based on 'this' one, - but having field types passed as an argument. - - - - - Describes anonymous type field in terms of its name, type and other attributes - - - - Anonymous type field name, not nothing and not empty - - - Anonymous type field location - - - Anonymous type field type - - - - Represents a .NET assembly, consisting of one or more modules. - - - - - The system assembly, which provides primitive types like Object, String, etc., e.g. mscorlib.dll. - The value is provided by ReferenceManager and must not be modified. For SourceAssemblySymbol, non-missing - coreLibrary must match one of the referenced assemblies returned by GetReferencedAssemblySymbols() method of - the main module. If there is no existing assembly that can be used as a source for the primitive types, - the value is a Compilation.MissingCorLibrary. - - - - - The system assembly, which provides primitive types like Object, String, etc., e.g. mscorlib.dll. - The value is MissingAssemblySymbol if none of the referenced assemblies can be used as a source for the - primitive types and the owning assembly cannot be used as the source too. Otherwise, it is one of - the referenced assemblies returned by GetReferencedAssemblySymbols() method or the owning assembly. - - - - - A helper method for ReferenceManager to set the system assembly, which provides primitive - types like Object, String, etc., e.g. mscorlib.dll. - - - - - Simple name the assembly. - - - This is equivalent to ., but may be - much faster to retrieve for source code assemblies, since it does not require binding - the assembly-level attributes that contain the version number and other assembly - information. - - - - - Gets the identity of this assembly. - - - - - Target architecture of the machine. - - - - - Indicates that this PE file makes Win32 calls. See CorPEKind.pe32BitRequired for more information (http://msdn.microsoft.com/en-us/library/ms230275.aspx). - - - - - Gets the merged root namespace that contains all namespaces and types defined in the modules - of this assembly. If there is just one module in this assembly, this property just returns the - GlobalNamespace of that module. - - - - - Given a namespace symbol, returns the corresponding assembly specific namespace symbol - - - - - Gets a read-only list of all the modules in this assembly. (There must be at least one.) The first one is the main module - that holds the assembly manifest. - - - - - Does this symbol represent a missing assembly. - - - - - Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. - This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. - - - - - True if the assembly contains interactive code. - - - - - Lookup a top level type referenced from metadata, names should be - compared case-sensitively. - - - Full type name with generic name mangling. - - - Take forwarded types into account. - - - - - - Lookup a top level type referenced from metadata, names should be - compared case-sensitively. Detect cycles during lookup. - - - Full type name, possibly with generic name mangling. - - - List of assemblies lookup has already visited (since type forwarding can introduce cycles). - - - Take forwarded types into account. - - - - - Returns the type symbol for a forwarded type based its canonical CLR metadata name. - The name should refer to a non-nested type. If type with this name is not forwarded, - null is returned. - - - - - Look up the given metadata type, if it is forwarded. - - - - - Look up the given metadata type, if it is forwarded. - - - - - Lookup declaration for predefined CorLib type in this Assembly. - - The symbol for the pre-defined type or an error type if the type is not defined in the core library. - - - - Register declaration of predefined CorLib type in this Assembly. - - - - - - Continue looking for declaration of predefined CorLib type in this Assembly - while symbols for new type declarations are constructed. - - - - - Return an array of assemblies involved in canonical type resolution of - NoPia local types defined within this assembly. In other words, all - references used by previous compilation referencing this assembly. - - - - - - Return an array of assemblies referenced by this assembly, which are linked (/l-ed) by - each compilation that is using this AssemblySymbol as a reference. - If this AssemblySymbol is linked too, it will be in this array too. - - - - - Assembly is /l-ed by compilation that is using it as a reference. - - - - - Returns true and a string from the first GuidAttribute on the assembly, - the string might be null or an invalid guid representation. False, - if there is no GuidAttribute with string argument. - - - - - Gets the set of type identifiers from this assembly. - - - These names are the simple identifiers for the type, and do not include namespaces, - outer type names, or type parameters. - - This functionality can be used for features that want to quickly know if a name could be - a type for performance reasons. For example, classification does not want to incur an - expensive binding call cost if it knows that there is no type with the name that they - are looking at. - - - - - Gets the set of namespace names from this assembly. - - - - - Returns true if this assembly might contain extension methods. If this property - returns false, there are no extension methods in this assembly. - - - This property allows the search for extension methods to be narrowed quickly. - - - - - Gets the symbol for the pre-defined type from core library associated with this assembly. - - The symbol for the pre-defined type or an error type if the type is not defined in the core library. - - - - The NamedTypeSymbol for the .NET System.Object type, which could have a TypeKind of - Error if there was no COR Library in a compilation using the assembly. - - - - - Get symbol for predefined type from Cor Library used by this assembly. - - - - - - - Lookup a type within the assembly using the canonical CLR metadata name of the type. - - Type name. - Symbol for the type or null if type cannot be found or is ambiguous. - - - - Lookup a type within the assembly using its canonical CLR metadata name. - - - - If search within assembly fails, lookup in assemblies referenced by the primary module. - For source assembly, this is equivalent to all assembly references given to compilation. - - - Extra restrictions apply when searching for a well-known type. In particular, the type must be public. - - - While resolving the name, consider only types following CLS-compliant generic type names and arity encoding (ECMA-335, section 10.7.2). - I.e. arity is inferred from the name and matching type must have the same emitted name and arity. - - - A diagnostic bag to receive warnings if we should allow multiple definitions and pick one. - - Null if the type can't be found. - - - - Resolves to a available in this assembly - its referenced assemblies. - - The type to resolve. - Use referenced assemblies for resolution. - The resolved symbol if successful or null on failure. - - - - Lookup member declaration in predefined CorLib type in this Assembly. Only valid if this - assembly is the Cor Library - - - - - Lookup member declaration in predefined CorLib type used by this Assembly. - - - - - Represents a PE custom attribute - - - - - Matches an attribute by metadata namespace, metadata type name. Does not load the type symbol for - the attribute. - - - - True if the attribute data matches. - - - - Matches an attribute by metadata namespace, metadata type name and metadata signature. Does not load the - type symbol for the attribute. - - Target symbol. - Attribute to match. - - An index of the target constructor signature in - signatures array, -1 if - this is not the target attribute. - - - - - Decodes applied to a specified metadata symbol and - transforms the specified metadata type, using the decoded dynamic transforms attribute argument, - by replacing each occurrence of type with dynamic type. - - - This is a port of TypeManager::ImportDynamicTransformType from the native compiler. - Comments from the C# design document for Dynamic: - SPEC: To represent the dynamic type in metadata, any indexer, field or return value typed as dynamic or known to be a constructed type - SPEC: containing dynamic will have each occurrence of dynamic erased to object and will be annotated with a [DynamicAttribute]. - SPEC: If the relevant type is a constructed type, the attribute's constructor is passed a bool array. - SPEC: This array represents a preorder traversal of each "node" in the constructed type's "tree of types", - SPEC: with true set for each "node" that is dynamic, and false set for all other types. - SPEC: When dynamic occurs as part of the base type of a type, the applicable [DynamicAttribute] is applied to the type itself. - - - - - Should be accessed through , , and . - - - - - Decodes the attributes applied to the given from metadata and checks if is applied. - If so, it transforms the given , using the decoded dynamic transforms attribute argument, - by replacing each occurrence of type with dynamic type. - If no is applied or the decoded dynamic transforms attribute argument is erroneous, - returns the unchanged . - - This method is a port of TypeManager::ImportDynamicTransformType from the native compiler. - - - - This subclass of MetadataDecoder is specifically for finding - method symbols corresponding to method MemberRefs. The parent - implementation is unsuitable because it requires a PEMethodSymbol - for context when decoding method type parameters and no such - context is available because it is precisely what we are trying - to find. Since we know in advance that there will be no context - and that signatures decoded with this class will only be used - for comparison (when searching through the methods of a known - TypeSymbol), we can return indexed type parameters instead. - - - - - Type context for resolving generic type arguments. - - - - - We know that we'll never have a method context because that's what we're - trying to find. Instead, just return an indexed type parameter that will - make comparison easier. - - - - - - - This override changes two things: - 1) Return type arguments instead of type parameters. - 2) Handle non-PE types. - - - - - Search through the members of a given type symbol to find the method that matches a particular - signature. - - Type containing the desired method symbol. - A MemberRef handle that can be used to obtain the name and signature of the method - True to only return a method. - The matching method symbol, or null if the inputs do not correspond to a valid method. - - - - Helper class to resolve metadata tokens and signatures. - - - - - Type context for resolving generic type arguments. - - - - - Method context for resolving generic method type arguments. - - - - - Lookup a type defined in referenced assembly. - - - - - - - Lookup a type defined in a module of a multi-module assembly. - - - - - Lookup a type defined in this module. - This method will be called only if the type we are - looking for hasn't been loaded yet. Otherwise, MetadataDecoder - would have found the type in TypeDefRowIdToTypeMap based on its - TypeDef row id. - - - - - Perform a check whether the type or at least one of its generic arguments - is defined in the specified assemblies. The check is performed recursively. - - - - - Find canonical type for NoPia embedded type. - - - Symbol for the canonical type or an ErrorTypeSymbol. Never returns null. - - - - - Represents an assembly imported from a PE. - - - - - An Assembly object providing metadata for the assembly. - - - - - A DocumentationProvider that provides XML documentation comments for this assembly. - - - - - The list of contained PEModuleSymbol objects. - The list doesn't use type ReadOnlyCollection(Of PEModuleSymbol) so that we - can return it from Modules property as is. - - - - - An array of assemblies involved in canonical type resolution of - NoPia local types defined within this assembly. In other words, all - references used by a compilation referencing this assembly. - The array and its content is provided by ReferenceManager and must not be modified. - - - - - An array of assemblies referenced by this assembly, which are linked (/l-ed) by - each compilation that is using this AssemblySymbol as a reference. - If this AssemblySymbol is linked too, it will be in this array too. - The array and its content is provided by ReferenceManager and must not be modified. - - - - - Assembly is /l-ed by compilation that is using it as a reference. - - - - - Assembly's custom attributes - - - - - Look up the assembly to which the given metadata type is forwarded. - - - - The assembly to which the given type is forwarded or null, if there isn't one. - - - The returned assembly may also forward the type. - - - - - The class to represent all events imported from a PE/module. - - - - - Look for a field with the same name and an appropriate type (i.e. the same type, except in WinRT). - If one is found, the caller will assume that this event was originally field-like and associate - the two symbols. - - - Perf impact: If we find a field with the same name, we will eagerly evaluate its type. - - - - - Intended behavior: this event, E, explicitly implements an interface event, IE, - if E.add explicitly implements IE.add and E.remove explicitly implements IE.remove. - - - - - The class to represent all fields imported from a PE/module. - - - - - Mark this field as the backing field of a field-like event. - The caller will also ensure that it is excluded from the member list of - the containing type (as it would be in source). - - - - - The module containing the namespace. - - - - - - The class to represent all methods imported from a PE/module. - - - - - Holds infrequently accessed fields. See for an explanation. - - - - - A single field to hold optional auxiliary data. - In many scenarios it is possible to avoid allocating this, thus saving total space in . - Even for lazily-computed values, it may be possible to avoid allocating if - the computed value is a well-known "empty" value. In this case, bits in are used - to indicate that the lazy values have been computed and, if is null, then - the "empty" value should be inferred. - - - - - Associate the method with a particular property. Returns - false if the method is already associated with a property or event. - - - - - Associate the method with a particular event. Returns - false if the method is already associated with a property or event. - - - - - Represents a net-module imported from a PE. Can be a primary module of an assembly. - - - - - Owning AssemblySymbol. This can be a PEAssemblySymbol or a SourceAssemblySymbol. - - - - - A Module object providing metadata. - - - - - Global namespace. - - - - - Cache the symbol for well-known type System.Type because we use it frequently - (for attributes). - - - - - The same value as ConcurrentDictionary.DEFAULT_CAPACITY - - - - - This is a map from TypeDef handle to the target . - It is used by to speed up type reference resolution - for metadata coming from this module. The map is lazily populated - as we load types from the module. - - - - - This is a map from TypeRef row id to the target . - It is used by to speed up type reference resolution - for metadata coming from this module. The map is lazily populated - by as we resolve TypeRefs from the module. - - - - - Module's custom attributes - - - - - Module's assembly attributes - - - - - Returns a possibly ExtensionAttribute filtered roArray of attributes. If - filterExtensionAttributes is set to true, the method will remove all ExtensionAttributes - from the returned array. If it is false, the parameter foundExtension will always be set to - false and can be safely ignored. - - The paramArrayAttribute parameter is similar to the foundExtension parameter, but instead - of just indicating if the attribute was found, the parameter is set to the attribute handle - for the ParamArrayAttribute if any is found and is null otherwise. This allows NoPia to filter - the attribute out for the symbol but still cache it separately for emit. - - - - - Get the custom attributes, but filter out any ParamArrayAttributes. - - The parameter token handle. - Set to a ParamArrayAttribute - CustomAttributeHandle if any are found. Nil token otherwise. - - - - Filters extension attributes from the attribute results. - - - True if we found an extension method, false otherwise. - The attributes on the token, minus any ExtensionAttributes. - - - - If this module forwards the given type to another assembly, return that assembly; - otherwise, return null. - - Type to look up. - Assembly symbol or null. - - The returned assembly may also forward the type. - - - - - The class to represent all types imported from a PE/module. - - - - - A set of all the names of the members in this type. - We can get names without getting members (which is a more expensive operation) - - - - - We used to sort symbols on demand and relied on row ids to figure out the order between symbols of the same kind. - However, that was fragile because, when map tables are used in metadata, row ids in the map table define the order - and we don't have them. - Members are grouped by kind. First we store fields, then methods, then properties, then events and finally nested types. - Within groups, members are sorted based on declaration order. - - - - - A map of members immediately contained within this type - grouped by their name (case-sensitively). - - - - - A map of types immediately contained within this type - grouped by their name (case-sensitively). - - - - - Lazily initialized by TypeKind property. - - - - - Need to import them for an enum from a linked assembly, when we are embedding it. These symbols are not included into lazyMembersInDeclarationOrder. - - - - - Returns the index of the first member of the specific kind. - Returns the number of members if not found. - - - - - Returns all members of the specific kind, starting at the optional offset. - Members of the same kind are assumed to be contiguous. - - - - - Specialized PENamedTypeSymbol for types with no type parameters in - metadata (no type parameters on this type and all containing types). - - - - - Specialized PENamedTypeSymbol for types with type parameters in metadata. - NOTE: the type may have Arity == 0 if it has same metadata arity as the metadata arity of the containing type. - - - - - Return true if the type parameters specified on the nested type (this), - that represent the corresponding type parameters on the containing - types, in fact match the actual type parameters on the containing types. - - - - - The base class to represent a namespace imported from a PE/module. Namespaces that differ - only by casing in name are not merged. - - - - - A map of namespaces immediately contained within this namespace - mapped by their name (case-sensitively). - - - - - A map of types immediately contained within this namespace - grouped by their name (case-sensitively). - - - - - A map of NoPia local types immediately contained in this assembly. - Maps type name (non-qualified) to the row id. Note, for VB we should use - full name. - - - - - All type members in a flat array - - - - - Returns PEModuleSymbol containing the namespace. - - PEModuleSymbol containing the namespace. - - - - Initializes namespaces and types maps with information about - namespaces and types immediately contained within this namespace. - - - The sequence of groups of TypeDef row ids for types contained within the namespace, - recursively including those from nested namespaces. The row ids must be grouped by the - fully-qualified namespace name case-sensitively. There could be multiple groups - for each fully-qualified namespace name. The groups must be sorted by - their key in case-sensitive manner. Empty string must be used as namespace name for types - immediately contained within Global namespace. Therefore, all types in this namespace, if any, - must be in several first IGroupings. - - - - - Create symbols for nested namespaces and initialize namespaces map. - - - - - Create symbols for nested types and initialize types map. - - - - - The class to represent all, but Global, namespaces imported from a PE/module. - Namespaces that differ only by casing in name are not merged. - - - - - - The parent namespace. There is always one, Global namespace contains all - top level namespaces. - - - - - - The name of the namespace. - - - - - - The sequence of groups of TypeDef row ids for types contained within the namespace, - recursively including those from nested namespaces. The row ids are grouped by the - fully-qualified namespace name case-sensitively. There could be multiple groups - for each fully-qualified namespace name. The groups are sorted by their - key in case-sensitive manner. Empty string is used as namespace name for types - immediately contained within Global namespace. Therefore, all types in this namespace, if any, - will be in several first IGroupings. - - This member is initialized by constructor and is cleared in EnsureAllMembersLoaded - as soon as symbols for children are created. - - - - - - Constructor. - - - Name of the namespace, must be not empty. - - - Containing namespace. - - - The sequence of groups of TypeDef row ids for types contained within the namespace, - recursively including those from nested namespaces. The row ids are grouped by the - fully-qualified namespace name case-sensitively. There could be multiple groups - for each fully-qualified namespace name. The groups are sorted by their - key in case-sensitive manner. Empty string is used as namespace name for types - immediately contained within Global namespace. Therefore, all types in this namespace, if any, - will be in several first IGroupings. - - - - - The class to represent all method parameters imported from a PE/module. - - - - - Attributes filtered out from m_lazyCustomAttributes, ParamArray, etc. - - - - - Construct a parameter symbol for a property loaded from metadata. - - - - - The property parameter doesn't have a name in metadata, - so this is the handle of a corresponding accessor parameter, if there is one, - or of the ParamInfo passed in, otherwise). - - - - - - Internal for testing. Non-test code should use . - - - - - The class to represent all properties imported from a PE/module. - - - - - To facilitate lookup, all indexer symbols have the same name. - Check the MetadataName property to find the name we imported. - - - - - This property can return true for bogus indexers. - Rationale: If a type in metadata has a single, bogus indexer - and a source method tries to invoke it, then Dev10 reports a bogus - indexer rather than lack of an indexer. - - - - - Intended behavior: this property, P, explicitly implements an interface property, IP, - if any of the following is true: - - 1) P.get explicitly implements IP.get and P.set explicitly implements IP.set - 2) P.get explicitly implements IP.get and there is no IP.set - 3) P.set explicitly implements IP.set and there is no IP.get - - Extra or missing accessors will not result in errors, P will simply not report that - it explicitly implements IP. - - - - - The class to represent all generic type parameters imported from a PE/module. - - - - - - First error calculating bounds. - - - - - Represents a retargeting custom attribute - - - - - Gets the retargeted System.Type type symbol. - - Target symbol on which this attribute is applied. - Retargeted System.Type type symbol. - - - - Essentially this is a wrapper around another AssemblySymbol that is responsible for retargeting - symbols from one assembly to another. It can retarget symbols for multiple assemblies at the same time. - - For example, compilation C1 references v1 of Lib.dll and compilation C2 references C1 and v2 of Lib.dll. - In this case, in context of C2, all types from v1 of Lib.dll leaking through C1 (through method - signatures, etc.) must be retargeted to the types from v2 of Lib.dll. This is what - RetargetingAssemblySymbol is responsible for. In the example above, modules in C2 do not - reference C1.m_AssemblySymbol, but reference a special RetargetingAssemblySymbol created for - C1 by ReferenceManager. - - Here is how retargeting is implemented in general: - - Symbols from underlying assembly are substituted with retargeting symbols. - - Symbols from referenced assemblies that can be reused as is (i.e. doesn't have to be retargeted) are - used as is. - - Symbols from referenced assemblies that must be retargeted are substituted with result of retargeting. - - - - - The underlying AssemblySymbol, it leaks symbols that should be retargeted. - This cannot be an instance of RetargetingAssemblySymbol. - - - - - The list of contained ModuleSymbol objects. First item in the list - is RetargetingModuleSymbol that wraps corresponding SourceModuleSymbol - from underlyingAssembly.Modules list, the rest are PEModuleSymbols for - added modules. - - - - - An array of assemblies involved in canonical type resolution of - NoPia local types defined within this assembly. In other words, all - references used by a compilation referencing this assembly. - The array and its content is provided by ReferenceManager and must not be modified. - - - - - An array of assemblies referenced by this assembly, which are linked (/l-ed) by - each compilation that is using this AssemblySymbol as a reference. - If this AssemblySymbol is linked too, it will be in this array too. - The array and its content is provided by ReferenceManager and must not be modified. - - - - - Backing field for the map from a local NoPia type to corresponding canonical type. - - - - - A map from a local NoPia type to corresponding canonical type. - - - - - Assembly is /l-ed by compilation that is using it as a reference. - - - - - Retargeted custom attributes - - - - - Constructor. - - - The underlying AssemblySymbol, cannot be an instance of RetargetingAssemblySymbol. - - - Assembly is /l-ed by compilation that is using it as a reference. - - - - - The underlying AssemblySymbol. - This cannot be an instance of RetargetingAssemblySymbol. - - - - - Lookup declaration for FX type in this Assembly. - - - - - - - - Owning RetargetingModuleSymbol. - - - - - The underlying EventSymbol, cannot be another RetargetingEventSymbol. - - - - - Represents a field in a RetargetingModuleSymbol. Essentially this is a wrapper around - another FieldSymbol that is responsible for retargeting symbols from one assembly to another. - It can retarget symbols for multiple assemblies at the same time. - - - - - Owning RetargetingModuleSymbol. - - - - - The underlying FieldSymbol, cannot be another RetargetingFieldSymbol. - - - - - Retargeted custom attributes - - - - - Represents a method in a RetargetingModuleSymbol. Essentially this is a wrapper around - another MethodSymbol that is responsible for retargeting symbols from one assembly to another. - It can retarget symbols for multiple assemblies at the same time. - - - - - Owning RetargetingModuleSymbol. - - - - - The underlying MethodSymbol, cannot be another RetargetingMethodSymbol. - - - - - Retargeted custom attributes - - - - - Retargeted return type custom attributes - - - - - Represents a primary module of a . Essentially this is a wrapper around - another that is responsible for retargeting symbols from one assembly to another. - It can retarget symbols for multiple assemblies at the same time. - - Here is how retargeting is implemented in general: - - Symbols from underlying module are substituted with retargeting symbols. - - Symbols from referenced assemblies that can be reused as is (i.e. don't have to be retargeted) are - used as is. - - Symbols from referenced assemblies that must be retargeted are substituted with result of retargeting. - - - - - Owning . - - - - - The underlying , cannot be another . - - - - - The map that captures information about what assembly should be retargeted - to what assembly. Key is the referenced by the underlying module, - value is the corresponding referenced by this module, and corresponding - retargeting map for symbols. - - - - - Retargeted custom attributes - - - - - Constructor. - - - Owning assembly. - - - The underlying ModuleSymbol, cannot be another RetargetingModuleSymbol. - - - - - The underlying ModuleSymbol, cannot be another RetargetingModuleSymbol. - - - - - A helper method for ReferenceManager to set AssemblySymbols for assemblies - referenced by this module. - - - - - Retargeting map from underlying module to this one. - - - - - Retargeting map from underlying module to the retargeting module. - - - - - RetargetingAssemblySymbol owning retargetingModule. - - - - - The underlying ModuleSymbol for retargetingModule. - - - - - The map that captures information about what assembly should be retargeted - to what assembly. Key is the AssemblySymbol referenced by the underlying module, - value is the corresponding AssemblySymbol referenced by the retargeting module, and - corresponding retargeting map for symbols. - - - - - Perform a check whether the type or at least one of its generic arguments - is an explicitly defined local type. The check is performed recursively. - - - - - Represents a type of a RetargetingModuleSymbol. Essentially this is a wrapper around - another NamedTypeSymbol that is responsible for retargeting referenced symbols from one assembly to another. - It can retarget symbols for multiple assemblies at the same time. - - - - - Owning RetargetingModuleSymbol. - - - - - The underlying NamedTypeSymbol, cannot be another RetargetingNamedTypeSymbol. - - - - - Represents a namespace of a RetargetingModuleSymbol. Essentially this is a wrapper around - another NamespaceSymbol that is responsible for retargeting symbols from one assembly to another. - It can retarget symbols for multiple assemblies at the same time. - - - - - Owning RetargetingModuleSymbol. - - - - - The underlying NamespaceSymbol, cannot be another RetargetingNamespaceSymbol. - - - - - Represents a parameter of a RetargetingMethodSymbol. Essentially this is a wrapper around - another ParameterSymbol that is responsible for retargeting symbols from one assembly to another. - It can retarget symbols for multiple assemblies at the same time. - - - - - Retargeted custom attributes - - - - - Owning RetargetingMethodSymbol. - - - - - Owning RetargetingPropertySymbol. - - - - - Owning RetargetingModuleSymbol. - - - - - The underlying PropertySymbol, cannot be another RetargetingPropertySymbol. - - - - - Retargeted custom attributes - - - - - Represents a type parameter in a RetargetingModuleSymbol. Essentially this is a wrapper around - another TypeParameterSymbol that is responsible for retargeting symbols from one assembly to another. - It can retarget symbols for multiple assemblies at the same time. - - - - - Owning RetargetingModuleSymbol. - - - - - The underlying TypeParameterSymbol, cannot be another RetargetingTypeParameterSymbol. - - - - - Retargeted custom attributes - - - - - Represents a Source custom attribute specification - - - - - If the contains any named constructor arguments or default value arguments, - it returns an array representing each argument's source argument index. A value of -1 indicates default value argument. - Otherwise, returns null. - - - - - This method finds an attribute by metadata name and signature. The algorithm for signature matching is similar to the one - in Module.GetTargetAttributeSignatureIndex. Note, the signature matching is limited to primitive types - and System.Type. It will not match an arbitrary signature but it is sufficient to match the signatures of the current set of - well known attributes. - - The symbol which is the target of the attribute - The attribute to match. - - - - Gets the System.Type type symbol from targetSymbol's containing assembly. - - Target symbol on which this attribute is applied. - System.Type type symbol. - - - - Information early-decoded from well-known custom attributes applied on a parameter. - - - - - Information decoded from early well-known custom attributes applied on a property. - - - - - Information decoded from well-known custom attributes applied on a type. - - - - - IsManagedType is simple for most named types: - enums are not managed; - non-enum, non-struct named types are managed; - generic types and their nested types are managed; - type parameters are managed; - all special types have spec'd values (basically, (non-string) primitives) are not managed; - - Only structs are complicated, because the definition is recursive. A struct type is managed - if one of its instance fields is managed. Unfortunately, this can result in infinite recursion. - If the closure is finite, and we don't find anything definitely managed, then we return true. - If the closure is infinite, we disregard all but a representative of any expanding cycle. - - Intuitively, this will only return true if there's a specific type we can point to that is would - be managed even if it had no fields. e.g. struct S { S s; } is not managed, but struct S { S s; object o; } - is because we can point to object. - - - - - Returns a boolean value if we can determine whether the type is managed - without looking at its fields and Unset otherwise. - - - - - An error type, used to represent a byref return in a metadata signature. - - - If we ever decide to support by-ref returns, don't just make this a non-error - type. For consistency with parameters and locals, we should have a bit on the - signature (i.e. on the MethodSymbol). - - - - - This enum describes the types of components that could give - us diagnostics. We shouldn't read the list of diagnostics - until all of these types are accounted for. - - - PEParameterSymbol reserves all completion part bits and uses them to track the completion state and - presence of well known attributes. - - - - - A tuple of TypeParameterSymbol and DiagnosticInfo, created for errors - reported from ConstraintsHelper rather than creating Diagnostics directly. - This decouples constraints checking from syntax and Locations, and supports - callers that may want to create Location instances lazily or not at all. - - - - - Helper methods for generic type parameter constraints. There are two sets of methods: one - set for resolving constraint "bounds" (that is, determining the effective base type, interface set, - etc.), and another set for checking for constraint violations in type and method references. - - Bounds are resolved by calling one of the ResolveBounds overloads. Typically bounds are - resolved by each TypeParameterSymbol at, or before, one of the corresponding properties - (BaseType, Interfaces, etc.) is accessed. Resolving bounds may result in errors (cycles, - inconsistent constraints, etc.) and it is the responsibility of the caller to report any such - errors as declaration errors or use-site errors (depending on whether the type parameter - was from source or metadata) and to ensure bounds are resolved for source type parameters - even if the corresponding properties are never accessed directly. - - Constraints are checked by calling one of the CheckConstraints or CheckAllConstraints - overloads for any generic type or method reference from source. In some circumstances, - references are checked at the time the generic type or generic method is bound and constructed - by the Binder. In those case, it is sufficient to call one of the CheckConstraints overloads - since compound types (such as A<T>.B<U> or A<B<T>>) are checked - incrementally as each part is bound. In other cases however, constraint checking needs to be - delayed to prevent cycles where checking constraints requires binding the syntax that is currently - being bound (such as the constraint in class C<T> where T : C<T>). In those cases, - the caller must lazily check constraints, and since the types may be compound types, it is - necessary to call CheckAllConstraints. - - - - - Determine the effective base type, effective interface set, and set of type - parameters (excluding cycles) from the type parameter constraints. Conflicts - within the constraints and constraint types are returned as diagnostics. - 'inherited' should be true if the type parameters are from an overridden - generic method. In those cases, additional constraint checks are applied. - - - - - Check all generic constraints on the given type and any containing types - (such as A<T> in A<T>.B<U>). This includes checking constraints - on generic types within the type (such as B<T> in A<B<T>[]>). - - - - - Check type parameter constraints for the containing type or method symbol. - - The generic type or method. - Conversions instance. - The map from type parameters to type arguments. - Containing symbol type parameters. - Containing symbol type arguments. - Improves error message detail. - Diagnostics. - Parameters to skip. - - True if the constraints were satisfied, false otherwise. - - - - Return true if the class type has a public parameterless constructor. - - - - - Returns true if type a is encompassed by type b (spec 6.4.3), - and returns false otherwise. - - - - - A named type symbol that results from substituting a new owner for a type declaration. - - - - - A generic named type symbol that has been constructed with type arguments distinct from its own type parameters. - - - - - Substitutes all occurrences of dynamic type with Object type. - - - - - When indexer overload resolution fails, we have two options: - 1) Create a BoundBadExpression with the candidates as child nodes; - 2) Create a BoundIndexerAccess with the error flag set. - - Option 2 is preferable, because it retains information about the arguments - (names, ref kind, etc), and results in better output from flow analysis. - However, we can't create a BoundIndexerAccess with a null indexer symbol, - so we create an ErrorPropertySymbol to fill the gap. - - - - - An ErrorSymbol is used when the compiler cannot determine a symbol object to return because - of an error. For example, if a field is declared "Foo x;", and the type "Foo" cannot be - found, an ErrorSymbol is returned when asking the field "x" what it's type is. - - - - - The underlying error. - - - - - Summary of the reason why the type is bad. - - - - - Called by to perform substitution - on types with TypeKind ErrorType. The general pattern is to use the type map - to perform substitution on the wrapped type, if any, and then construct a new - error type symbol from the result (if there was a change). - - - - - When constructing this ErrorTypeSymbol, there may have been symbols that seemed to - be what the user intended, but were unsuitable. For example, a type might have been - inaccessible, or ambiguous. This property returns the possible symbols that the user - might have intended. It will return no symbols if no possible symbols were found. - See the CandidateReason property to understand why the symbols were unsuitable. - - - - - If CandidateSymbols returns one or more symbols, returns the reason that those - symbols were not chosen. Otherwise, returns None. - - - - - Returns true if this type is known to be a reference type. It is never the case that - IsReferenceType and IsValueType both return true. However, for an unconstrained type - parameter, IsReferenceType and IsValueType will both return false. - - - - - Returns true if this type is known to be a value type. It is never the case that - IsReferenceType and IsValueType both return true. However, for an unconstrained type - parameter, IsReferenceType and IsValueType will both return false. - - - - - Collection of names of members declared within this type. - - - - - Get all the members of this symbol. - - An ImmutableArray containing all the members of this symbol. If this symbol has no members, - returns an empty ImmutableArray. Never returns Null. - - - - Get all the members of this symbol that have a particular name. - - An ImmutableArray containing all the members of this symbol with the given name. If there are - no members with this name, returns an empty ImmutableArray. Never returns Null. - - - - Get all the members of this symbol that are types. - - An ImmutableArray containing all the types that are members of this symbol. If this symbol has no type members, - returns an empty ImmutableArray. Never returns null. - - - - Get all the members of this symbol that are types that have a particular name, of any arity. - - An ImmutableArray containing all the types that are members of this symbol with the given name. - If this symbol has no type members with this name, - returns an empty ImmutableArray. Never returns null. - - - - Get all the members of this symbol that are types that have a particular name and arity - - An ImmutableArray containing all the types that are members of this symbol with the given name and arity. - If this symbol has no type members with this name and arity, - returns an empty ImmutableArray. Never returns null. - - - - Gets the kind of this symbol. - - - - - Gets the kind of this type. - - - - - Get the symbol that logically contains this symbol. - - - - - Gets the locations where this symbol was originally defined, either in source or - metadata. Some symbols (for example, partial classes) may be defined in more than one - location. - - - - - Returns the arity of this type, or the number of type parameters it takes. - A non-generic type has zero arity. - - - - - Gets the name of this symbol. Symbols without a name return the empty string; null is - never returned. - - - - - Returns the type arguments that have been substituted for the type parameters. - If nothing has been substituted for a give type parameters, - then the type parameter itself is consider the type argument. - - - - - Returns the type parameters that this type has. If this is a non-generic type, - returns an empty ImmutableArray. - - - - - Returns the type symbol that this type was constructed from. This type symbol - has the same containing type (if any), but has type arguments that are the same - as the type parameters (although its containing type might not). - - - - - Implements visitor pattern. - - - - - Get this accessibility that was declared on this symbol. For symbols that do not have - accessibility declared on them, returns NotApplicable. - - - - - Returns true if this symbol is "static"; i.e., declared with the "static" modifier or - implicitly static. - - - - - Returns true if this symbol was declared as requiring an override; i.e., declared with - the "abstract" modifier. Also returns true on a type declared as "abstract", all - interface types, and members of interface types. - - - - - Returns true if this symbol was declared to override a base class member and was also - sealed from further overriding; i.e., declared with the "sealed" modifier. Also set for - types that do not allow a derived class (declared with "sealed" or "static" or "struct" - or "enum" or "delegate"). - - - - - An error type, used to represent the type of a type binding - operation when binding fails. - - - - - If (we believe) we know which symbol the user intended, then we should retain that information - in the corresponding error symbol - it can be useful for deciding how to handle the error. - For example, we might want to know whether (we believe) the error type was supposed to be an - interface, so that we can put it in a derived type's interface list, rather than in the base - type slot. - - Sometimes we will return the original definition of the intended symbol. For example, if we see - ]]> and we have an IFoo with a different arity or accessibility - (e.g. ]]> was constructed from an error symbol based on ]]>), - then we'll return ]]>, rather than trying to construct a corresponding closed - type (which may not be difficult/possible in the case of nested types or mismatched arities). - - NOTE: Any non-null type symbol returned is guaranteed not to be an error type. - - - TypeSymbolExtensions.GetNonErrorGuess is a more discoverable version of this functionality. - However, the real definition is in this class so that it can access the private field - nonErrorGuessType. - - - - - Represents a field initializer, a property initializer, or a global statement in script code. - - - - - The field being initialized (possibly a backing field of a property), or null if this is a top-level statement in script code. - - - - - A reference to or top-level in script code. - - - - - A sum of widths of spans of all preceding initializers - (instance and static initializers are summed separately, and trivias are not counted). - - - - - Represents a label in method body - - - - - Gets the name of this label - - - - - Returns false because label can't be defined externally. - - - - - Returns false because label can't be sealed. - - - - - Returns false because label can't be abstract. - - - - - Returns false because label can't be overridden. - - - - - Returns false because label can't be virtual. - - - - - Returns false because label can't be static. - - - - - Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. - This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. - - - - - Returns 'NotApplicable' because label can't be used outside the member body. - - - - - Gets the locations where the symbol was originally defined, either in source or - metadata. Some symbols (for example, partial classes) may be defined in more than one - location. - - - - - Gets the immediately containing symbol of the . - It should be the containing the label in its body. - - - - - Gets the immediately containing symbol of the . - It should be the containing the label in its body. - - - - - Returns value 'Label' of the - - - - - A structure used to lexically order symbols. For performance, it's important that this be - a STRUCTURE, and be able to be returned from a symbol without doing any additional allocations (even - if nothing is cached yet.) - - - - - Compare two lexical sort keys in a compilation. - - - - - Specifies the syntax that a user defined variable comes from. - - - - - The local is not user defined nor it is a copy of a user defined local (e.g. with a substituted type). - Check the value of for the kind of synthesized variable. - - - - - User defined local variable declared by . - - - - - User defined local constant declared by . - - - - - User defined local variable declared by in . - - - - - User defined local variable declared by in . - - - - - User defined local variable declared by . - - - - - User defined local variable declared by in . - - - - - User defined local variable declared by . - - - - - Represents a local variable in a method body. - - - - - Gets the type of this local. - - - - - WARN WARN WARN: If you access this via the semantic model, things will break (since the initializer may not have been bound). - - Whether or not this local is pinned (i.e. the type will be emitted with the "pinned" modifier). - - - Superficially, it seems as though this should always be the same as DeclarationKind == LocalDeclarationKind.Fixed. - Unfortunately, when we fix a string expression, it is not the declared local (e.g. char*) but a synthesized temp (string) - that is pinned. - - - - - Returns false because local variable can't be defined externally. - - - - - Returns false because local variable can't be sealed. - - - - - Returns false because local variable can't be abstract. - - - - - Returns false because local variable can't be overridden. - - - - - Returns false because local variable can't be virtual. - - - - - Returns false because local variable can't be declared as static in C#. - - - - - Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. - This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. - - - - - Returns 'NotApplicable' because local variable can't be used outside the member body.. - - - - - Returns value 'Local' of the - - - - - Returns true if this local variable was declared in a catch clause. - - - - - Returns true if this local variable was declared as "const" (i.e. is a constant declaration). - - - - - Returns true if the local variable is declared in resource-acquisition of a 'using statement'; - otherwise false - - - - using (var localVariable = new StreamReader("C:\\Temp\\MyFile.txt")) { ... } - - - - - - Returns true if the local variable is declared in fixed-pointer-initializer (in unsafe context) - - - - - Returns true if this local variable is declared in for-initializer - - - - - Returns true if this local variable is declared as iteration variable - - - - - Returns the syntax node that declares the variable. - - - All user-defined and long-lived synthesized variables must return a reference to a node that is - tracked by the EnC diffing algorithm. For example, for variable - the declarator is the node. - - The location of the declarator is used to calculate during emit. - - - - - Returns false if the field wasn't declared as "const", or constant value was omitted or erroneous. - True otherwise. - - - - - If IsConst returns true, then returns the constant value of the field or enum member. If IsConst returns - false, then returns null. - - - - - Returns true if the local symbol was compiler generated. - - - - - - C# 4.0 §10.6: The name, the type parameter list and the formal parameter list of a method define - the signature (§3.6) of the method. Specifically, the signature of a method consists of its - name, the number of type parameters and the number, modifiers, and types of its formal - parameters. For these purposes, any type parameter of the method that occurs in the type of - a formal parameter is identified not by its name, but by its ordinal position in the type - argument list of the method. The return type is not part of a method's signature, nor are - the names of the type parameters or the formal parameters. - - - C# 4.0 §3.6: For the purposes of signatures, the types object and dynamic are considered the - same. - - - C# 4.0 §3.6: We implement the rules for ref/out by mapping both to ref. The caller (i.e. - checking for proper overrides or partial methods, etc) should check that ref/out are - consistent. - - - - - - This instance is used when trying to determine if one member explicitly implements another, - according the C# definition. - The member signatures are compared without regard to name (including the interface part, if any) - and the return types must match. - - - - - This instance is used when trying to determine if one member implicitly implements another, - according to the C# definition. - The member names, parameters, and (return) types must match. Custom modifiers are ignored. - - - One would expect this comparer to have requireSourceMethod = true, but it doesn't because (for source types) - we allow inexact matching of custom modifiers when computing implicit member implementations. Consider the - following scenario: interface I has a method M with custom modifiers C1, source type ST includes I in its - interface list but has no method M, and metadata type MT has a method M with custom modifiers C2. - In this scenario, we want to compare I.M to MT.M without regard to custom modifiers, because if C1 != C2, - we can just synthesize an explicit implementation of I.M in ST that calls MT.M. - - - - - This instance is used as a fallback when it is determined that one member does not implicitly implement - another. It applies a looser check to determine whether the proposed implementation should be reported - as "close". - - - - - This instance is used to determine if two C# member declarations in source conflict with each other. - Names, arities, and parameter types are considered. - Return types, type parameter constraints, custom modifiers, and parameter ref kinds, etc are ignored. - - - This does the same comparison that MethodSignature used to do. - - - - - This instance is used to check whether one member overrides another, according to the C# definition. - - - - - This instance is used to check whether one property or event overrides another, according to the C# definition. - NOTE: C# ignores accessor member names. - CAVEAT: considers return types so that getters and setters will be treated the same. - - - - - Same as except that it pays attention to custom modifiers and return type. - Normally, the return type isn't considered during overriding, but this comparer is actually used to find - exact matches (i.e. before tie-breaking takes place amongst close matches). - - - - - If this returns false, then the real override comparer (whichever one is appropriate for the scenario) - will also return false. - - - - - This instance is intended to reflect the definition of signature equality used by the runtime - (ECMA-335, Partition I, §8.6.1.6 Signature Matching). - It considers return type, name, parameters, calling convention, and custom modifiers, but ignores - the difference between and . - - - - - Same as , but distinguishes between ref and out. During override resolution, - if we find two methods that match except for ref/out, we want to prefer the one that matches, even - if the runtime doesn't. - - - - - This instance is the same as RuntimeSignatureComparer. - CONSIDER: just use RuntimeSignatureComparer? - - - - - This instance is used to search for members that have the same name, parameters, (return) type, and constraints (if any) - according to the C# definition. Custom modifiers are ignored. - - - - - This instance is used to search for members that have identical signatures in every regard. - - - - - This instance is used for performing approximate overload resolution of documentation - comment cref attributes. It ignores the name, because the candidates were all found by lookup. - - - - - This instance is used as a key in the lambda return type inference. - We basically only interested in parameters since inference will set the return type to null. - - - - - Returns true if the first set of constraint types - is a subset of the second set. - - - - - SymbolExtensions for member symbols. - - - - - Get the parameters of a member symbol. Should be a method, property, or event. - - - - - Get the types of the parameters of a member symbol. Should be a method, property, or event. - - - - - Get the ref kinds of the parameters of a member symbol. Should be a method, property, or event. - - - - - Count the number of custom modifiers in/on the return type - and parameters of the specified method. - - - - - Count the number of custom modifiers in/on the type - and parameters (for indexers) of the specified property. - - - - - Return the arity of a member. - - - - - NOTE: every struct has a public parameterless constructor either used-defined or default one - - - - - default zero-init constructor symbol is added to a struct when it does not define - its own parameterless public constructor. - We do not emit this constructor and do not call it - - - - - If the event has a AddMethod, return that. Otherwise check the overridden - event, if any. Repeat for each overridden event. - - - This method exists to mimic the behavior of GetOwnOrInheritedGetMethod, but it - should only ever look at the overridden event in error scenarios. - - - - - If the event has a RemoveMethod, return that. Otherwise check the overridden - event, if any. Repeat for each overridden event. - - - This method exists to mimic the behavior of GetOwnOrInheritedSetMethod, but it - should only ever look at the overridden event in error scenarios. - - - - - Does the compilation this symbol belongs to output to a winmdobj? - - - - - - - Returns a constructed named type symbol if 'type' is generic, otherwise just returns 'type' - - - - - Returns true if the members of superType are accessible from subType due to inheritance. - - - - - The immediately containing namespace or named type, or null - if the containing symbol is neither a namespace or named type. - - - - - Returns true if all type parameter references within the given - type belong to containingSymbol or its containing types. - - - - - Returns true if all type parameter references within the given - types belong to containingSymbol or its containing types. - - - - - A MergedNamespaceSymbol represents a namespace that merges the contents of two or more other - namespaces. Any sub-namespaces with the same names are also merged if they have two or more - instances. - - Merged namespaces are used to merged the symbols from multiple metadata modules and the - source "module" into a single symbol tree that represents all the available symbols. The - compiler resolves names against this merged set of symbols. - - Typically there will not be very many merged namespaces in a Compilation: only the root - namespaces and namespaces that are used in multiple referenced modules. (Microsoft, System, - System.Xml, System.Diagnostics, System.Threading, ...) - - - - - Create a possibly merged namespace symbol. If only a single namespace is passed it, it - is just returned directly. If two or more namespaces are passed in, then a new merged - namespace is created with the given extent and container. - - The namespace extent to use, IF a merged namespace is created. - The containing namespace to used, IF a merged - namespace is created. - One or more namespaces to merged. If just one, then it - is returned. The merged namespace symbol may hold onto the array. - An optional name to give the resulting namespace. - A namespace symbol representing the merged namespace. - - - - Method that is called from the CachingLookup to lookup the children of a given name. - Looks in all the constituent namespaces. - - - - - Method that is called from the CachingLookup to get all child names. Looks in all - constituent namespaces. - - - - - Represents source or metadata assembly. - - - - - - An array of cached Cor types defined in this assembly. - Lazily filled by GetSpecialType method. - - - - - - How many Cor types have we cached so far. - - - - - Lookup declaration for predefined CorLib type in this Assembly. - - - - - - - - Register declaration of predefined CorLib type in this Assembly. - - - - - - Continue looking for declaration of predefined CorLib type in this Assembly - while symbols for new type declarations are constructed. - - - - - Not yet known value is represented by ErrorTypeSymbol.UnknownResultType - - - - - Lookup member declaration in predefined CorLib type in this Assembly. Only valid if this - assembly is the Cor Library - - - - - Determine whether this assembly has been granted access to . - Assumes that the public key has been determined. The result will be cached. - - - - - - - - If the extension method is applicable based on the "this" argument type, return - the method constructed with the inferred type arguments. If the method is not an - unconstructed generic method, type inference is skipped. If the method is not - applicable, or if constraints when inferring type parameters from the "this" type - are not satisfied, the return value is null. - - - - - The runtime considers a method to be a finalizer (i.e. a method that should be invoked - by the garbage collector) if it (directly or indirectly) overrides System.Object.Finalize. - - - As an optimization, return true immediately for metadata methods with MethodKind - Destructor - they are guaranteed to be finalizers. - - Method to inspect. - This method is used to determine the method kind of - a PEMethodSymbol, so we may need to avoid using MethodKind until we move on to a different - MethodSymbol. - - - - Returns a constructed method symbol if 'method' is generic, otherwise just returns 'method' - - - - - Some kinds of methods are not considered to be hideable by certain kinds of members. - Specifically, methods, properties, and types cannot hide constructors, destructors, - operators, conversions, or accessors. - - - - - Some kinds of methods are never considered hidden by methods, properties, or types - (constructors, destructors, operators, conversions, and accessors). - - - - - Returns whether this method is async and returns void. - - - - - Returns whether this method is async and returns a task. - - - - - Returns whether this method is async and returns a generic task. - - - - - A is a special kind of that represents - an assembly that couldn't be found. - - - - - AssemblySymbol to represent missing, for whatever reason, CorLibrary. - The symbol is created by ReferenceManager on as needed basis and is shared by all compilations - with missing CorLibraries. - - - - - An array of cached Cor types defined in this assembly. - Lazily filled by GetDeclaredSpecialType method. - - - - - - Lookup declaration for predefined CorLib type in this Assembly. Only should be - called if it is know that this is the Cor Library (mscorlib). - - - - - - A is a special kind of that represents - a type symbol that was attempted to be read from metadata, but couldn't be - found, because: - a) The metadata file it lives in wasn't referenced - b) The metadata file was referenced, but didn't contain the type - c) The metadata file was referenced, contained the correct outer type, but - didn't contains a nested type in that outer type. - - - - - Get the arity of the missing type. - - - - - Represents not nested missing type. - - - - - Either , , or -1 if not initialized. - - - - - This is the FULL namespace name (e.g., "System.Collections.Generic") - of the type that couldn't be found. - - - - - Represents nested missing type. - - - - - A is a special kind of that represents - a module that couldn't be found. - - - - - A is a special kind of that represents - a namespace that couldn't be found. - - - - - Represents a module within an assembly. Every assembly contains one or more modules. - - - - - Returns a NamespaceSymbol representing the global (root) namespace, with - module extent, that can be used to browse all of the symbols defined in this module. - - - - - Returns the containing assembly. Modules are always directly contained by an assembly, - so this property always returns the same as ContainingSymbol. - - - - - Returns value 'NetModule' of the - - - - - Module's ordinal within containing assembly's Modules array. - 0 - for a source module, etc. - -1 - for a module that doesn't have containing assembly, or has it, but is not part of Modules array. - - - - - Target architecture of the machine. - - - - - Indicates that this PE file makes Win32 calls. See CorPEKind.pe32BitRequired for more information (http://msdn.microsoft.com/en-us/library/ms230275.aspx). - - - - - Does this symbol represent a missing module. - - - - - Returns 'NotApplicable' - - - - - Returns false because module can't be declared as 'static'. - - - - - Returns false because module can't be virtual. - - - - - Returns false because module can't be overridden. - - - - - Returns false because module can't be abstract. - - - - - Returns false because module can't be sealed. - - - - - Returns false because module can't be defined externally. - - - - - Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. - This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. - - - - - Returns an array of assembly identities for assemblies referenced by this module. - Items at the same position from ReferencedAssemblies and from ReferencedAssemblySymbols - correspond to each other. - - - - - Returns an array of assembly identities for assemblies referenced by this module. - Items at the same position from GetReferencedAssemblies and from GetReferencedAssemblySymbols - should correspond to each other. - - The array and its content is provided by ReferenceManager and must not be modified. - - - - - - Returns an array of AssemblySymbol objects corresponding to assemblies referenced - by this module. Items at the same position from ReferencedAssemblies and - from ReferencedAssemblySymbols correspond to each other. - - - - - Returns an array of AssemblySymbol objects corresponding to assemblies referenced - by this module. Items at the same position from GetReferencedAssemblies and - from GetReferencedAssemblySymbols should correspond to each other. If reference is - not resolved by compiler, GetReferencedAssemblySymbols returns MissingAssemblySymbol in the - corresponding item. - - The array and its content is provided by ReferenceManager and must not be modified. - - - - - A helper method for ReferenceManager to set assembly identities for assemblies - referenced by this module and corresponding AssemblySymbols. - - A description of the assemblies referenced by this module. - - Source assembly that triggered creation of this module symbol. - For debug purposes only, this assembly symbol should not be persisted within - this module symbol because the module can be shared across multiple source - assemblies. This method will only be called for the first one. - - - - - True if this module has any unified references. - - - - - Returns a unification use-site error (if any) for a symbol contained in this module - that is referring to a specified . - - - If an assembly referenced by this module isn't exactly matching any reference given to compilation - the Assembly Manager might decide to use another reference if it matches except for version - (it unifies the version with the existing reference). - - - - - Lookup a top level type referenced from metadata, names should be - compared case-sensitively. - - - Full type name, possibly with generic name mangling. - - - Symbol for the type, or MissingMetadataSymbol if the type isn't found. - - - - - - Returns true if there is any applied CompilationRelaxationsAttribute assembly attribute for this module. - - - - - Returns true if there is any applied RuntimeCompatibilityAttribute assembly attribute for this module. - - - - - Default char set for contained types, or null if not specified. - - - - - Given a namespace symbol, returns the corresponding module specific namespace symbol - - - - - Utility class for substituting actual type arguments for formal generic type parameters. - - - - - A NamespaceExtent represents whether a namespace contains types and sub-namespaces from a - particular module, assembly, or merged across all modules (source and metadata) in a - particular compilation. - - - - - Returns what kind of extent: Module, Assembly, or Compilation. - - - - - If the Kind is ExtendKind.Module, returns the module symbol that this namespace - encompasses. Otherwise throws InvalidOperationException. - - - - - If the Kind is ExtendKind.Assembly, returns the assembly symbol that this namespace - encompasses. Otherwise throws InvalidOperationException. - - - - - If the Kind is ExtendKind.Compilation, returns the compilation symbol that this - namespace encompasses. Otherwise throws InvalidOperationException. - - - - - Create a NamespaceExtent that represents a given ModuleSymbol. - - - - - Create a NamespaceExtent that represents a given AssemblySymbol. - - - - - Create a NamespaceExtent that represents a given Compilation. - - - - - Represents either a namespace or a type. - - - - - Returns true if this symbol is a namespace. If it is not a namespace, it must be a type. - - - - - Returns true if this symbols is a type. Equivalent to !IsNamespace. - - - - - Returns true if this symbol is "virtual", has an implementation, and does not override a - base class member; i.e., declared with the "virtual" modifier. Does not return true for - members declared as abstract or override. - - - Always returns false. - - - - - Returns true if this symbol was declared to override a base class member; i.e., declared - with the "override" modifier. Still returns true if member was declared to override - something, but (erroneously) no member to override exists. - - - Always returns false. - - - - - Returns true if this symbol has external implementation; i.e., declared with the - "extern" modifier. - - - Always returns false. - - - - - Get all the members of this symbol. - - An ImmutableArray containing all the members of this symbol. If this symbol has no members, - returns an empty ImmutableArray. Never returns null. - - - - Get all the members of this symbol. The members may not be in a particular order, and the order - may not be stable from call-to-call. - - An ImmutableArray containing all the members of this symbol. If this symbol has no members, - returns an empty ImmutableArray. Never returns null. - - - - Get all the members of this symbol that have a particular name. - - An ImmutableArray containing all the members of this symbol with the given name. If there are - no members with this name, returns an empty ImmutableArray. Never returns null. - - - - Get all the members of this symbol that are types. The members may not be in a particular order, and the order - may not be stable from call-to-call. - - An ImmutableArray containing all the types that are members of this symbol. If this symbol has no type members, - returns an empty ImmutableArray. Never returns null. - - - - Get all the members of this symbol that are types. - - An ImmutableArray containing all the types that are members of this symbol. If this symbol has no type members, - returns an empty ImmutableArray. Never returns null. - - - - Get all the members of this symbol that are types that have a particular name, of any arity. - - An ImmutableArray containing all the types that are members of this symbol with the given name. - If this symbol has no type members with this name, - returns an empty ImmutableArray. Never returns null. - - - - Get all the members of this symbol that are types that have a particular name and arity - - An IEnumerable containing all the types that are members of this symbol with the given name and arity. - If this symbol has no type members with this name and arity, - returns an empty IEnumerable. Never returns null. - - - - Get a source type symbol for the given declaration syntax. - - Null if there is no matching declaration. - - - - Get a source type symbol for the given declaration syntax. - - Null if there is no matching declaration. - - - - Get a source type symbol of given name, arity and kind. If a tree and syntax are provided, restrict the results - to those that are declared within the given syntax. - - Null if there is no matching declaration. - - - - Lookup an immediately nested type referenced from metadata, names should be - compared case-sensitively. - - - Simple type name, possibly with generic name mangling. - - - Symbol for the type, or MissingMetadataSymbol if the type isn't found. - - - - - Finds types or namespaces described by a qualified name. - - Sequence of simple plain names. - - A set of namespace or type symbols with given qualified name (might comprise of types with multiple generic arities), - or an empty set if the member can't be found (the qualified name is ambiguous or the symbol doesn't exist). - - - "C.D" matches C.D, C{T}.D, C{S,T}.D{U}, etc. - - - - - A is a special kind of that represents - an assembly that is not missing, i.e. the "real" thing. - - - - - This is a cache similar to the one used by MetaImport::GetTypeByName - in native compiler. The difference is that native compiler pre-populates - the cache when it loads types. Here we are populating the cache only - with things we looked for, so that next time we are looking for the same - thing, the lookup is fast. This cache also takes care of TypeForwarders. - Gives about 8% win on subsequent lookups in some scenarios. - - - - - - Does this symbol represent a missing assembly. - - - - - Gets the merged root namespace that contains all namespaces and types defined in the modules - of this assembly. If there is just one module in this assembly, this property just returns the - GlobalNamespace of that module. - - - - - Lookup a top level type referenced from metadata, names should be - compared case-sensitively. Detect cycles during lookup. - - - Full type name, possibly with generic name mangling. - - - List of assemblies lookup has already visited (since type forwarding can introduce cycles). - - - Take forwarded types into account. - - - - - For test purposes only. - - - - - For test purposes only. - - - - - A is a special kind of that represents - a module that is not missing, i.e. the "real" thing. - - - - - An array of objects corresponding to assemblies directly referenced by this module. - - - The contents are provided by ReferenceManager and may not be modified. - - - - - Does this symbol represent a missing module. - - - - - Returns an array of assembly identities for assemblies referenced by this module. - Items at the same position from GetReferencedAssemblies and from GetReferencedAssemblySymbols - should correspond to each other. - - - - - Returns an array of AssemblySymbol objects corresponding to assemblies referenced - by this module. Items at the same position from GetReferencedAssemblies and - from GetReferencedAssemblySymbols should correspond to each other. If reference is - not resolved by compiler, GetReferencedAssemblySymbols returns MissingAssemblySymbol in the - corresponding item. - - - - - A helper method for ReferenceManager to set assembly identities for assemblies - referenced by this module and corresponding AssemblySymbols. - - - - - Lookup a top level type referenced from metadata, names should be - compared case-sensitively. - - - Full type name, possibly with generic name mangling. - - - Symbol for the type, or MissingMetadataSymbol if the type isn't found. - - - - - - A NoPiaAmbiguousCanonicalTypeSymbol is a special kind of ErrorSymbol that represents a NoPia - embedded type symbol that was attempted to be substituted with canonical type, but the - canonical type was ambiguous. - - - - - A NoPiaIllegalGenericInstantiationSymbol is a special kind of ErrorSymbol that represents a - generic type instantiation that cannot cross assembly boundaries according to NoPia rules. - - - - - A NoPiaMissingCanonicalTypeSymbol is a special kind of ErrorSymbol that represents a NoPia - embedded type symbol that was attempted to be substituted with canonical type, but the - canonical type couldn't be found. - - - - - Initialize the ObsoleteAttributeData by fetching attributes and decoding ObsoleteAttributeData. This can be - done for Metadata symbol easily whereas trying to do this for source symbols could result in cycles. - - - - - Get the ObsoleteAttributeData by fetching attributes and decoding ObsoleteAttributeData. This can be - done for Metadata symbol easily whereas trying to do this for source symbols could result in cycles. - - - - - This method checks to see if the given symbol is Obsolete or if any symbol in the parent hierarchy is Obsolete. - - - True if some symbol in the parent hierarchy is known to be Obsolete. Unknown if any - symbol's Obsoleteness is Unknown. False, if we are certain that no symbol in the parent - hierarchy is Obsolete. - - - - - Create a diagnostic for the given symbol. This could be an error or a warning based on - the ObsoleteAttribute's arguments. - - - - - Encapsulates the MakeOverriddenOrHiddenMembers functionality for methods, properties (including indexers), - and events. - - - - - Walk up the type hierarchy from ContainingType and list members that this - member either overrides (accessible members with the same signature, if this - member is declared "override") or hides (accessible members with the same name - but different kinds, plus members that would be in the overrides list if - this member were not declared "override"). - - Members in the overridden list may be non-virtual or may have different - accessibilities, types, accessors, etc. They are really candidates to be - overridden. - - Members in the hidden list are definitely hidden. - - Members in the runtime overridden list are indistinguishable from the members - in the overridden list from the point of view of the runtime (see - FindOtherOverriddenMethodsInContainingType for details). - - - In the presence of non-C# types, the meaning of "same signature" is rather - complicated. If this member isn't from source, then it refers to the runtime's - notion of signature (i.e. including return type, custom modifiers, etc). - If this member is from source, then the process is (conceptually) as follows. - - 1) Walk up the type hierarchy, recording all matching members with the same - signature, ignoring custom modifiers and return type. Stop if a hidden - member is encountered. - 2) Apply the following "tie-breaker" rules until you have at most one member, - a) Prefer members in more derived types. - b) Prefer an exact custom modifier match (i.e. none, for a source member). - c) Prefer fewer custom modifiers (values/positions don't matter, just count). - d) Prefer earlier in GetMembers order (within the same type). - 3) If a member remains, search its containing type for other members that - have the same C# signature (overridden members) or runtime signature - (runtime overridden members). - - In metadata, properties participate in overriding only through their accessors. - That is, property/event accessors may implicitly or explicitly override other methods - and a property/event can be considered to override another property/event if its accessors - override those of the other property/event. - This implementation (like Dev10) will not follow that approach. Instead, it is - based on spec section 10.7.5, which treats properties as entities in their own - right. If all property/event accessors have conventional names in metadata and nothing - "unusual" is done with explicit overriding, this approach should produce the same - results as an implementation based on accessor overriding. - - - - - In the CLI, accessors are just regular methods and their overriding/hiding rules are the same as for - regular methods. In C#, however, accessors are intimately connected with their corresponding properties. - Rather than walking up the type hierarchy from the containing type of this accessor, looking for members - with the same name, MakePropertyAccessorOverriddenOrHiddenMembers delegates to the associated property. - For an accessor to hide a member, the hidden member must be a corresponding accessor on a property hidden - by the associated property. For an accessor to override a member, the overridden member must be a - corresponding accessor on a property (directly or indirectly) overridden by the associated property. - - Example 1: - - public class A { public virtual int P { get; set; } } - public class B : A { public override int P { get { return 1; } } } //get only - public class C : B { public override int P { set { } } } // set only - - C.P.set overrides A.P.set because C.P.set is the setter of C.P, which overrides B.P, - which overrides A.P, which has A.P.set as a setter. - - Example 2: - - public class A { public virtual int P { get; set; } } - public class B : A { public new virtual int P { get { return 1; } } } //get only - public class C : B { public override int P { set { } } } // set only - - C.P.set does not override any method because C.P overrides B.P, which has no setter - and does not override a property. - - This accessor. - The property associated with this accessor. - Members overridden or hidden by this accessor. - - This method is intended to return values consistent with the definition of C#, which - may differ from the actual meaning at runtime. - - Note: we don't need a different path for interfaces - Property.OverriddenOrHiddenMembers handles that. - - - - - In the CLI, accessors are just regular methods and their overriding/hiding rules are the same as for - regular methods. In C#, however, accessors are intimately connected with their corresponding events. - Rather than walking up the type hierarchy from the containing type of this accessor, looking for members - with the same name, MakeEventAccessorOverriddenOrHiddenMembers delegates to the associated event. - For an accessor to hide a member, the hidden member must be a corresponding accessor on a event hidden - by the associated event. For an accessor to override a member, the overridden member must be a - corresponding accessor on a event (directly or indirectly) overridden by the associated event. - - This accessor. - The event associated with this accessor. - Members overridden or hidden by this accessor. - - This method is intended to return values consistent with the definition of C#, which - may differ from the actual meaning at runtime. - - Note: we don't need a different path for interfaces - Event.OverriddenOrHiddenMembers handles that. - - CONSIDER: It is an error for an event to have only one accessor. Currently, we mimic the behavior for - properties, for consistency, but an alternative approach would be to say that nothing is overridden. - - CONSIDER: is there a way to share code with MakePropertyAccessorOverriddenOrHiddenMembers? - - - - - There are two key reasons why interface overriding/hiding is different from class overriding/hiding: - 1) interface members never override other members; and - 2) interfaces can extend multiple interfaces. - The first difference doesn't require any special handling - as long as the members have IsOverride=false, - the code for class overriding/hiding does the right thing. - The second difference is more problematic. For one thing, an interface member can hide a different member in - each base interface. We only report the first one, but we need to expose all of them in the API. More importantly, - multiple inheritance raises the possibility of diamond inheritance. Spec section 13.2.5, Interface member access, - says: "The intuitive rule for hiding in multiple-inheritance interfaces is simply this: If a member is hidden in any - access path, it is hidden in all access paths." For example, consider the following interfaces: - - interface I0 { void M(); } - interface I1 : I0 { void M(); } - interface I2 : I0, I1 { void M(); } - - I2.M does not hide I0.M, because it is already hidden by I1.M. To make this work, we need to traverse the graph - of ancestor interfaces in topological order and flag ones later in the enumeration that are hidden along some path. - - - See SymbolPreparer::checkIfaceHiding. - - - - - Look for overridden or hidden members in a specific type. - - Member that is hiding or overriding. - True if member is from the current compilation. - The type that contains member (member.ContainingType). - The type to search. - - A member with the same signature if currTypeHasExactMatch is true, - a member with (a minimal number of) different custom modifiers if there is one, - and null otherwise. - True if there's a member with the same name and kind that is not a match. - Hidden members (same name, different kind) will be added to this builder. - - There is some similarity between this member and TypeSymbol.FindPotentialImplicitImplementationMethodDeclaredInType. - When making changes to this member, think about whether or not they should also be applied in TypeSymbol. - - In incorrect or imported code, it is possible that both currTypeBestMatch and hiddenBuilder will be populated. - - - - - If representative member is non-null and is contained in a constructed type, then find - other members in the same type with the same signature. If this is an override member, - add them to the overridden and runtime overridden lists. Otherwise, add them to the - hidden list. - - - - - Some kinds of methods are not considered to be hideable by certain kinds of members. - Specifically, methods, properties, and types cannot hide constructors, destructors, - operators, conversions, or accessors. - - - - - Having found the best member to override, we want to find members with the same signature on the - best member's containing type. - - - The member that we consider to be overridden (may have different custom modifiers from the overriding member). - Assumed to already be in the overridden and runtime overridden lists. - - - If the best match was based on the custom modifier count, rather than the custom modifiers themselves - (because the overriding member is in the current compilation), then we should use the count when determining - whether the override is ambiguous. - - - If the declaring type is constructed, it's possible that two (or more) members have the same signature - (including custom modifiers). Return a list of such members so that we can report the ambiguity. - - - If the declaring type is constructed, it's possible that two (or more) members have the same signature - (including custom modifiers) in metadata (no ref/out distinction). Return a list of such members so - that we can report the ambiguity. - - Even in a non-generic type, it's possible for two indexers to have the same signature. For example, - this would be the case if the default member of a type is "get_Item" and indexers "A" and "B", - with the same signature, both have an indexer called "get_Item". - - From: SymbolPreparer.cpp - DevDiv Bugs 115384: Both out and ref parameters are implemented as references. In addition, out parameters are - decorated with OutAttribute. In CLR when a signature is looked up in virtual dispatch, CLR does not distinguish - between these to parameter types. The choice is the last method in the vtable. Therefore we check and warn if - there would potentially be a mismatch in CLRs and C#s choice of the overridden method. Unfortunately we have no - way of communicating to CLR which method is the overridden one. We only run into this problem when the - parameters are generic. - - - - - Having found that we are hiding a method with exactly the same signature - (including custom modifiers), we want to find methods with the same signature - on the declaring type because they will also be hidden. - (If the declaring type is constructed, it's possible that two or more - methods have the same signature (including custom modifiers).) - (If the representative member is an indexer, it's possible that two or more - properties have the same signature (including custom modifiers, even in a - non-generic type). - - - This kind of the hiding member. - - - The member that we consider to be hidden (must have exactly the same custom modifiers as the hiding member). - Assumed to already be in hiddenBuilder. - - - Will have all other members with the same signature (including custom modifiers) as - representativeMember added. - - - - - Given a method, find a method that it overrides from the perspective of the CLI. - Key differences from C#: non-virtual methods are ignored, the RuntimeSignatureComparer - is used (i.e. consider return types, ignore ref/out distinction). - - - WARN: Must not check method.MethodKind - PEMethodSymbol.ComputeMethodKind uses this method. - NOTE: Does not check whether the given method will be marked "newslot" in metadata (which - would indicate that it does not override anything). - WARN: If the method may override a source method and declaration diagnostics have yet to - be computed, then it is important to pass ignoreInterfaceImplementationChanges: true - (see MethodSymbol.IsMetadataVirtual for details). - - - - - Note that the access check is done using the original definitions. This is because we want to avoid - reductions in accessibility that result from type argument substitution (e.g. if an inaccessible type - has been passed as a type argument). - See DevDiv #11967 for an example. - - - - - Groups the information computed by MakeOverriddenOrHiddenMembers. - - - - - It is not suitable to call this method on a object - associated with a member within substituted type, - should be used instead. - - - - - Represents a preprocessing conditional compilation symbol. - - - - - Helper methods that exist to share code between properties and events. - - - - - If the property has a GetMethod, return that. Otherwise check the overridden - property, if any. Repeat for each overridden property. - - - - - If the property has a SetMethod, return that. Otherwise check the overridden - property, if any. Repeat for each overridden property. - - - - - A RangeVariableSymbol represents an identifier introduced in a query expression as the - identifier of a "from" clause, an "into" query continuation, a "let" clause, or a "join" clause. - - - - - Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. - This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. - - - - - An extension method with the "this" parameter removed. - Used for the public binding API only, not for compilation. - - - - - Return the extension method in reduced form if the extension method - is applicable, and satisfies type parameter constraints, based on the - "this" argument type. Otherwise, returns null. - - - - - A representation of a method symbol that is intended only to be used for comparison purposes - (esp in MethodSignatureComparer). - - - - - Intended to be used to create ParameterSymbols for a SignatureOnlyMethodSymbol. - - - - - A representation of a property symbol that is intended only to be used for comparison purposes - (esp in PropertySignatureComparer). - - - - - Generate a list containing the given field and all dependencies - of that field that require evaluation. The list is ordered by - dependencies, with fields with no dependencies first. Cycles are - broken at the first field lexically in the cycle. If multiple threads - call this method with the same field, the order of the fields - returned should be the same, although some fields may be missing - from the lists in some threads as other threads evaluate fields. - - - - - The set of fields on which the field depends. - - - - - The set of fields that depend on the field. - - - - - Build a dependency graph (a map from - field to dependencies). - - - - - Return an ordering of the compilations referenced in the graph. - The actual ordering is not important, but we need some ordering - to compare source locations across different compilations. - - - - - Return one member from one cycle in the graph. - (There must be at least one cycle. In fact, there - shouldn't be any fields without dependencies.) - - - - - Type parameters in documentation comments are complicated since they sort of act as declarations, - rather than references. Consider the following example: - - See . - class B { void M(T t) { } } - ]]> - - We make some key observations: - 1) The type parameter name in the cref is not tied to the type parameter name in the type declaration. - 2) A relationship exists between the two occurrences of "U" in the cref: they both refer to (or define) - the same symbol. - - In Roslyn, we've decided on the following representation: within the (entire) scope of a cref, the names - of all type parameters "declared" in the cref are in scope and bind to the corresponding type parameters. - This representation has one major advantage: as long as the appropriate binder (i.e. the one that knows - about the implicitly-declared type parameters) is used, TypeSyntaxes within the cref can be bound by - calling BindType. In addition to eliminating the necessity for custom binding code in the batch case, - this reduces the problem of exposing such nodes in the SemanticModel to one of ensuring that the right - enclosing binder is chosen. That is, new code will have to be written to handle CrefSyntaxes, but the - existing code for TypeSyntaxes should just work! - - In the example above, this means that, between the cref quotation marks, the name "U" binds to an - implicitly declared type parameter, whether it is in "B{U}", "M{U}", or "M{List{U[]}}". - - Of course, it's not all gravy. One thing we're giving up by using this representation is the ability to - distinguish between "declared" type parameters with the same name. Consider the following example: - - See . - class A - { - void M(T t) { } - void M(U u) { } - } - ]]> - - - The native compiler interprets this in the same way as it would interpret A{T1, T2}.M(T2) and unambiguously - (i.e. without a warning) binds to A{T, U}.M(U). Since Roslyn does not distinguish between the T's, Roslyn - reports an ambiguity warning and picks the first method. Furthermore, renaming one 'T' will rename all of - them. - - This class represents such an implicitly declared type parameter. The declaring syntax is expected to be - an IdentifierNameSyntax in the type argument list of a QualifiedNameSyntax. - - - - Out params are updated by assignment. If you require thread-safety, pass temps and then - CompareExchange them back into shared memory. - - - - Type that already has custom modifiers. - Same as , but without custom modifiers. May differ in object/dynamic. - of the parameter of which this is the type (or for a return type. - The assembly containing the signature referring to the destination type. - with custom modifiers copied from . - - - - Given a member, look for other members contained in the same type with signatures that will - not be distinguishable by the runtime. - - - - - Implemented by symbols that can be targetted by an attribute declaration (i.e. source symbols). - - - - - Returns the owner of attributes that apply to this symbol. - - - Attributes for this symbol might be retrieved from attribute list of another (owning) symbol. - In that case this property returns that owning symbol, otherwise it returns "this". - - - - - Returns a bit set of attribute locations applicable to this symbol. - - - - - Attribute location corresponding to this symbol. - - - Location of an attribute if an explicit location is not specified via attribute target specification syntax. - - - - - Represents implicit, script and submission classes. - - - - - Indexed type parameters are used in place of type parameters for method signatures. There is - a unique mapping from index to a single IndexedTypeParameterSymbol. - - They don't have a containing symbol or locations. - - They do not have constraints, variance, or attributes. - - - - - Create a vector of n dummy type parameters. Always reuses the same type parameter symbol - for the same position. - - - - - - - Represents an assembly built by compiler. - - - - - A Compilation the assembly is created for. - - - - - Assembly's identity. - - - - - A list of modules the assembly consists of. - The first (index=0) module is a SourceModuleSymbol, which is a primary module, the rest are net-modules. - - - - - Bag of assembly's custom attributes and decoded well-known attribute data from source. - - - - - Bag of assembly's custom attributes and decoded well-known attribute data from added netmodules. - - - - - Indices of attributes that will not be emitted for one of two reasons: - - They are duplicates of another attribute (i.e. attributes that bind to the same constructor and have identical arguments) - - They are InternalsVisibleToAttributes with invalid assembly identities - - - These indices correspond to the merged assembly attributes from source and added net modules, i.e. attributes returned by method. - - - - - Map for storing effectively private or effectively internal fields declared in this assembly but never initialized nor assigned. - Each {symbol, bool} key-value pair in this map indicates the following: - (a) Key: Unassigned field symbol. - (b) Value: True if the unassigned field is effectively internal, false otherwise. - - - - - private fields declared in this assembly but never read - - - - - We imitate the native compiler's policy of not warning about unused fields - when the enclosing type is used by an extern method for a ref argument. - Here we keep track of those types. - - - - - The warnings for unused fields. - - - - - This override is essential - it's a base case of the recursive definition. - - - - - This represents what the user claimed in source through the AssemblyFlagsAttribute. - It may be modified as emitted due to presence or absence of the public key. - - - - - We're going to synthesize some well-known attributes for this assembly symbol. However, at synthesis time, it is - too late to report diagnostics or cancel the emit. Instead, we check for use site errors on the types and members - we know we'll need at synthesis time. - - - As in Dev10, we won't report anything if the attribute TYPES are missing (note: missing, not erroneous) because we won't - synthesize anything in that case. We'll only report diagnostics if the attribute TYPES are present and either they or - the attribute CONSTRUCTORS have errors. - - - - - If this compilation allows unsafe code (note: allows, not contains), then when we actually emit the assembly/module, - we're going to synthesize SecurityPermissionAttribute/UnverifiableCodeAttribute. However, at synthesis time, it is - too late to report diagnostics or cancel the emit. Instead, we check for use site errors on the types and members - we know we'll need at synthesis time. - - - As in Dev10, we won't report anything if the attribute TYPES are missing (note: missing, not erroneous) because we won't - synthesize anything in that case. We'll only report diagnostics if the attribute TYPES are present and either they or - the attribute CONSTRUCTORS have errors. - - - - - True if internals are exposed at all. - - - Forces binding and decoding of attributes. - This property shouldn't be accessed during binding as it can lead to attribute binding cycle. - - - - - Gets unique source assembly attributes that should be emitted, - i.e. filters out attributes with errors and duplicate attributes. - - - - - Returns a bag of applied custom attributes and data decoded from well-known attributes. Returns null if there are no attributes applied on the symbol. - - - Forces binding and decoding of attributes. - - - - - Gets the attributes applied on this symbol. - Returns an empty array if there are no attributes. - - - NOTE: This method should always be kept as a sealed override. - If you want to override attribute binding logic for a sub-class, then override method. - - - - - Returns true if the assembly attribute at the given index is a duplicate assembly attribute that must not be emitted. - Duplicate assembly attributes are attributes that bind to the same constructor and have identical arguments. - - - This method must be invoked only after all the assembly attributes have been bound. - - - - - Returns data decoded from source assembly attributes or null if there are none. - - - Forces binding and decoding of attributes. - TODO: We should replace methods GetSourceDecodedWellKnownAttributeData and GetNetModuleDecodedWellKnownAttributeData with - a single method GetDecodedWellKnownAttributeData, which merges DecodedWellKnownAttributeData from source and netmodule attributes. - - - - - Returns true if and only if at least one type within the assembly contains - extension methods. Note, this method is expensive since it potentially - inspects all types within the assembly. The expectation is that this method is - only called at emit time, when all types have been or will be traversed anyway. - - - - - Get the warnings for unused fields. This should only be fetched when all method bodies have been compiled. - - - - - Represents a source parameter cloned from another , when they must share attribute data and default constant value. - For example, parameters on a property symbol are cloned to generate parameters on accessors. - Similarly parameters on delegate invoke method are cloned to delegate begin/end invoke methods. - - - - - A source parameter, potentially with a default value, attributes, etc. - - - - - Symbol to copy bound attributes from, or null if the attributes are not shared among multiple source parameter symbols. - - - Used for parameters of partial implementation. We bind the attributes only on the definition - part and copy them over to the implementation. - - - - - Gets the syntax list of custom attributes that declares attributes for this parameter symbol. - - - - - Returns data decoded from well-known attributes applied to the symbol or null if there are no applied attributes. - - - Forces binding and decoding of attributes. - - - - - Returns data decoded from special early bound well-known attributes applied to the symbol or null if there are no applied attributes. - - - Forces binding and decoding of attributes. - - - - - Returns a bag of applied custom attributes and data decoded from well-known attributes. Returns null if there are no attributes applied on the symbol. - - - Forces binding and decoding of attributes. - - - - - Verify the default value matches the default value from any earlier attribute - (DefaultParameterValueAttribute, DateTimeConstantAttribute or DecimalConstantAttribute). - If not, report ERR_ParamDefaultValueDiffersFromAttribute. - - - - - Is the attribute syntax appearing on a parameter of a partial method implementation part? - Since attributes are merged between the parts of a partial, we need to look at the syntax where the - attribute appeared in the source to see if it corresponds to a partial method implementation part. - - - - - - - True if the parameter has default argument syntax. - - - - - True if the parameter is marked by . - - - - - This class represents an event accessor declared in source - (i.e. not one synthesized for a field-like event). - - - The accessors are associated with . - - - - - This class represents an event declared in source with explicit accessors - (i.e. not a field-like event). - - - - - Represents a constant field of an enum. - - - - - Base class for event accessors - synthesized and user defined. - - - - - A delegate field associated with a . - - - SourceFieldSymbol takes care of the initializer (plus "var" in the interactive case). - - - - - This class represents an event declared in source. It may be either - field-like (see ) or property-like (see - ). - - - - - Gets the syntax list of custom attributes applied on the event symbol. - - - - - Returns a bag of applied custom attributes and data decoded from well-known attributes. Returns null if there are no attributes applied on the symbol. - - - Forces binding and decoding of attributes. - - - - - Gets the attributes applied on this symbol. - Returns an empty array if there are no attributes. - - - NOTE: This method should always be kept as a sealed override. - If you want to override attribute binding logic for a sub-class, then override method. - - - - - Returns data decoded from well-known attributes applied to the symbol or null if there are no applied attributes. - - - Forces binding and decoding of attributes. - - - - - Returns data decoded from special early bound well-known attributes applied to the symbol or null if there are no applied attributes. - - - Forces binding and decoding of attributes. - - - - - Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. - This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. - - - - - This class represents an event declared in source without explicit accessors. - It implicitly has thread safe accessors and an associated field (of the same - name), unless it does not have an initializer and is either extern or inside - an interface, in which case it only has accessors. - - - - - Backing field for field-like event. Will be null if the event - has no initializer and is either extern or inside an interface. - - - - - Gets the syntax list of custom attributes applied on the symbol. - - - - - Returns a bag of applied custom attributes and data decoded from well-known attributes. Returns null if there are no attributes applied on the symbol. - - - Forces binding and decoding of attributes. - - - - - Gets the attributes applied on this symbol. - Returns an empty array if there are no attributes. - - - NOTE: This method should always be kept as a sealed override. - If you want to override attribute binding logic for a sub-class, then override method. - - - - - Returns data decoded from well-known attributes applied to the symbol or null if there are no applied attributes. - - - Forces binding and decoding of attributes. - - - - - Returns data decoded from special early bound well-known attributes applied to the symbol or null if there are no applied attributes. - - - Forces binding and decoding of attributes. - - - - - Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. - This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. - - - - - Verify the constant value matches the default value from any earlier attribute - (DateTimeConstantAttribute or DecimalConstantAttribute). - If not, report ERR_FieldHasMultipleDistinctConstantValues. - - - - - Return the constant value dependencies. Compute the dependencies - if necessary by evaluating the constant value but only persist the - constant value if there were no dependencies. (If there are dependencies, - the constant value will be re-evaluated after evaluating dependencies.) - - - - - Switch case labels have a constant expression associated with them. - - - - - If the label is a switch case label, returns the associated constant value with - case expression, otherwise returns null. - - - - - Represents a local variable in a method body. - - - - - Might not be a method symbol. - - - - - There are three ways to initialize a fixed statement local: - 1) with an address; - 2) with an array (or fixed-size buffer); or - 3) with a string. - - In the first two cases, the resulting local will be emitted with a "pinned" modifier. - In the third case, it is not the fixed statement local but a synthesized temp that is pinned. - Unfortunately, we can't distinguish these cases when the local is declared; we only know - once we have bound the initializer. - - - CompareExchange doesn't support bool, so use an int. First bit is true/false, second bit - is read/unread (debug-only). - - - - - Gets the name of the local variable. - - - - - Gets the locations where the local symbol was originally defined in source. - There should not be local symbols from metadata, and there should be only one local variable declared. - TODO: check if there are multiple same name local variables - error symbol or local symbol? - - - - - Store the constant value and the corresponding diagnostics together - to avoid having the former set by one thread and the latter set by - another. - - - - - Determine the constant value of this local and the corresponding diagnostics. - Set both to constantTuple in a single operation for thread safety. - - Null for the initial call, non-null if we are in the process of evaluating a constant. - If we already have the bound node for the initial value, pass it in to avoid recomputing it. - - - - Represents a named type symbol whose members are declared in source. - - - - - Compute the "effective accessibility" of the current class for the purpose of warnings about unused fields. - - - - - Encapsulates information about the non-type members of a (i.e. this) type. - 1) For non-initializers, symbols are created and stored in a list. - 2) For fields and properties, the symbols are stored in (1) and their initializers are - stored with other initialized fields and properties from the same syntax tree with - the same static-ness. - 3) For indexers, syntax (weak) references are stored for later binding. - - - CONSIDER: most types won't have indexers, so we could move the indexer list - into a subclass to spare most instances the space required for the field. - - - - - Calculates a syntax offset of a syntax position that is contained in a property or field initializer (if it is in fact contained in one). - - - - - During early attribute decoding, we consider a safe subset of all members that will not - cause cyclic dependencies. Get all such members for this symbol. - - In particular, this method will return nested types and fields (other than auto-property - backing fields). - - - - - During early attribute decoding, we consider a safe subset of all members that will not - cause cyclic dependencies. Get all such members for this symbol that have a particular name. - - In particular, this method will return nested types and fields (other than auto-property - backing fields). - - - - - Merge (already ordered) non-type, non-indexer members with (already ordered) indexer members. - - - - - Fix up a partial method by combining its defining and implementing declarations, updating the array of symbols (by name), - and returning the combined symbol. - - The symbols array containing both the latent and implementing declaration - One of the two declarations - The other declaration - An updated symbols array containing only one method symbol representing the two parts - - - - Report an error if a member (other than a method) exists with the same name - as the property accessor, or if a method exists with the same name and signature. - - - - - Report an error if a member (other than a method) exists with the same name - as the event accessor, or if a method exists with the same name and signature. - - - - - Return the location of the accessor, or if no accessor, the location of the property. - - - - - Return the location of the accessor, or if no accessor, the location of the event. - - - - - Return true if the method parameters match the parameters of the - property accessor, including the value parameter for the setter. - - - - - Return true if the method parameters match the parameters of the - event accessor, including the value parameter. - - - - - In some circumstances (e.g. implicit implementation of an interface method by a non-virtual method in a - base type from another assembly) it is necessary for the compiler to generate explicit implementations for - some interface methods. They don't go in the symbol table, but if we are emitting, then we should - generate code for them. - - - - - It's not interesting to report diagnostics on implementation of interface accessors - if the corresponding events or properties are not implemented (i.e. we want to suppress - cascading diagnostics). - Caveat: Indexed property accessors are always interesting. - Caveat: It's also uninteresting if a WinRT event is implemented by a non-WinRT event, - or vice versa. - - - - - If necessary, report a diagnostic for a hidden abstract member. - - True if a diagnostic was reported. - - - - It is invalid for a type to directly (vs through a base class) implement two interfaces that - unify (i.e. are the same for some substitution of type parameters). - - - CONSIDER: check this while building up InterfacesAndTheirBaseInterfaces (only in the SourceNamedTypeSymbol case). - - - - - Though there is a method that C# considers to be an implementation of the interface method, that - method may not be considered an implementation by the CLR. In particular, implicit implementation - methods that are non-virtual or that have different (usually fewer) custom modifiers than the - interface method, will not be considered CLR overrides. To address this problem, we either make - them virtual (in metadata, not in C#), or we introduce an explicit interface implementation that - delegates to the implicit implementation. - - Returned from FindImplementationForInterfaceMemberWithDiagnostics. - The interface method or property that is being implemented. - Synthesized implementation or null if not needed. - - - - The CLR will only look for an implementation of an interface method in a type that - 1) declares that it implements that interface; or - 2) is a base class of a type that declares that it implements the interface but not - a subtype of a class that declares that it implements the interface. - - For example, - - interface I - class A - class B : A, I - class C : B - class D : C, I - - Suppose the runtime is looking for D's implementation of a member of I. It will look in - D because of (1), will not look in C, will look in B because of (1), and will look in A - because of (2). - - The key point is that it does not look in C, which C# *does*. - - - - - If C# picks a different implementation than the CLR (see IsPossibleImplementationUnderClrRules), then we might - still be okay, but dynamic dispatch might result in C#'s choice getting called anyway. - - - This is based on SymbolPreparer::IsCLRMethodImplSame in the native compiler. - - ACASEY: What the native compiler actually does is compute the C# answer, compute the CLR answer, - and then confirm that they override the same method. What I've done here is check for the situations - where the answers could disagree. I believe the results will be equivalent. If in doubt, a more conservative - check would be implementingMethod.ContainingType.InterfacesAndTheirBaseInterfaces.Contains(@interface). - - - - - A collection of type parameter constraints, populated when - constraints for the first type parameter is requested. - - - - - If this symbol represents a partial method definition or implementation part, its other part (if any). - This should be set, if at all, before this symbol appears among the members of its owner. - The implementation part is not listed among the "members" of the enclosing type. - - - - - A binder to use for binding generic constraints. The field is only non-null while the .ctor - is executing, and allows constraints to be bound before the method is added to the - containing type. (Until the method symbol has been added to the container, we cannot - get a binder for the method without triggering a recursive attempt to bind the method.) - - - - - If this is a partial implementation part returns the definition part and vice versa. - - - - - Returns true if this symbol represents a partial method definition (the part that specifies a signature but no body). - - - - - Returns true if this symbol represents a partial method implementation (the part that specifies both signature and body). - - - - - True if this is a partial method that doesn't have an implementation part. - - - - - Returns the implementation part of a partial method definition, - or null if this is not a partial method or it is the definition part. - - - - - Returns the definition part of a partial method implementation, - or null if this is not a partial method or it is the implementation part. - - - - - Report differences between the defining and implementing - parts of a partial method. Diagnostics are reported on the - implementing part, matching Dev10 behavior. - - - - - Returns true if the two partial methods have the same constraints. - - - - - Implementers should assume that a lock has been taken on MethodChecksLockObject. - In particular, it should not (generally) be necessary to use CompareExchange to - protect assignments to fields. - - - - - We can usually lock on the syntax reference of this method, but it turns - out that some synthesized methods (e.g. field-like event accessors) also - need to do method checks. This property allows such methods to supply - their own lock objects, so that we don't have to add a new field to every - SourceMethodSymbol. - - - - - Overridden by , - which might return locations of partial methods. - - - - - Symbol to copy bound attributes from, or null if the attributes are not shared among multiple source method symbols. - - - Used for example for event accessors. The "remove" method delegates attribute binding to the "add" method. - The bound attribute data are then applied to both accessors. - - - - - Gets the syntax list of custom attributes that declares attributes for this method symbol. - - - - - Gets the syntax list of custom attributes that declares attributes for return type of this method. - - - - - Returns data decoded from special early bound well-known attributes applied to the symbol or null if there are no applied attributes. - - - Forces binding and decoding of attributes. - - - - - Returns data decoded from well-known attributes applied to the symbol or null if there are no applied attributes. - - - Forces binding and decoding of attributes. - - - - - Returns information retrieved from custom attributes on return type in source, or null if the symbol is not source symbol or there are none. - - - Forces binding and decoding of attributes. - - - - - Returns a bag of applied custom attributes and data decoded from well-known attributes. Returns null if there are no attributes applied on the symbol. - - - Forces binding and decoding of attributes. - - - - - Returns a bag of custom attributes applied on the method return value and data decoded from well-known attributes. Returns null if there are no attributes. - - - Forces binding and decoding of attributes. - - - - - Gets the attributes applied on this symbol. - Returns an empty array if there are no attributes. - - - - - Gets the attributes applied on the return value of this method symbol. - Returns an empty array if there are no attributes. - - - - - Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. - This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. - - - - - Checks to see if a body is legal given the current modifiers. - If it is not, a diagnostic is added with the current type. - - - - - Returns true if the method body is an expression, as expressed - by the syntax. False - otherwise. - - - If the method has both block body and an expression body - present, this is not treated as expression-bodied. - - - - - Represents the primary module of an assembly being built by compiler. - - - - - Owning assembly. - - - - - The declarations corresponding to the source files of this module. - - - - - The name (contains extension) - - - - - This override is essential - it's a base case of the recursive definition. - - - - - Returns a bag of applied custom attributes and data decoded from well-known attributes. Returns null if there are no attributes applied on the symbol. - - - Forces binding and decoding of attributes. - - - - - Gets the attributes applied on this symbol. - Returns an empty array if there are no attributes. - - - NOTE: This method should always be kept as a sealed override. - If you want to override attribute binding logic for a sub-class, then override method. - - - - - Returns data decoded from well-known attributes applied to the symbol or null if there are no applied attributes. - - - Forces binding and decoding of attributes. - - - - - A collection of type parameter constraints, populated when - constraints for the first type parameter are requested. - - - - - Returns a bag of applied custom attributes and data decoded from well-known attributes. Returns null if there are no attributes applied on the symbol. - - - Forces binding and decoding of attributes. - - - - - Gets the attributes applied on this symbol. - Returns an empty array if there are no attributes. - - - - - Returns data decoded from well-known attributes applied to the symbol or null if there are no applied attributes. - - - Forces binding and decoding of attributes. - - - - - Returns data decoded from special early bound well-known attributes applied to the symbol or null if there are no applied attributes. - - - Forces binding and decoding of attributes. - - - - - Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. - This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. - - - - - These won't be returned by GetAttributes on source methods, but they - will be returned by GetAttributes on metadata symbols. - - - - - Gets the BaseType of this type. If the base type could not be determined, then - an instance of ErrorType is returned. If this kind of type does not have a base type - (for example, interfaces), null is returned. Also the special class System.Object - always has a BaseType of null. - - - - - Gets the set of interfaces that this type directly implements. This set does not include - interfaces that are base interfaces of directly implemented interfaces. - - - - - Returns true if the type cannot be used as an explicit base class. - - - - - For enum types, gets the underlying type. Returns null on all other - kinds of types. - - - - - For enum types, returns the synthesized instance field used - for generating metadata. Returns null for non-enum types. - - - - - Register COR types declared in this namespace, if any, in the COR types cache. - - - - - Base class for parameters can be referred to from source code. - - - These parameters can potentially be targetted by an attribute specified in source code. - As an optimization we distinguish simple parameters (no attributes, no modifiers, etc.) and complex parameters. - - - - - True if the parameter is marked by . - - - - - True if the parameter has default argument syntax. - - - - - Gets the attributes applied on this symbol. - Returns an empty array if there are no attributes. - - - NOTE: This method should always be kept as a sealed override. - If you want to override attribute binding logic for a sub-class, then override method. - - - - - Base class for all parameters that are emitted. - - - - - Return Accessibility declared locally on the accessor, or - NotApplicable if no accessibility was declared explicitly. - - - - - If we are outputting a .winmdobj then the setter name is put_, not set_. - - - - - or - - - - - Set in constructor, might be changed while decoding . - - - - - To facilitate lookup, all indexer symbols have the same name. - Check the MetadataName property to find the name that will be - emitted (based on IndexerNameAttribute, or the default "Item"). - - - - - Even though it is declared with an IndexerDeclarationSyntax, an explicit - interface implementation is not an indexer because it will not cause the - containing type to be emitted with a DefaultMemberAttribute (and even if - there is another indexer, the name of the explicit implementation won't - match). This is important for round-tripping. - - - - - Backing field for automatically implemented property, or - for a property with an initializer. - - - - - Return true if the accessor accessibility is more restrictive - than the property accessibility, otherwise false. - - - - - If this property is sealed, then we have to emit both accessors - regardless of whether - they are present in the source - so that they can be marked final. (i.e. sealed). - - - - - Only non-null for sealed properties without both accessors. - - - - - Returns a bag of applied custom attributes and data decoded from well-known attributes. Returns null if there are no attributes applied on the symbol. - - - Forces binding and decoding of attributes. - - - - - Gets the attributes applied on this symbol. - Returns an empty array if there are no attributes. - - - NOTE: This method should always be kept as a sealed override. - If you want to override attribute binding logic for a sub-class, then override method. - - - - - Returns data decoded from well-known attributes applied to the symbol or null if there are no applied attributes. - - - Forces binding and decoding of attributes. - - - - - Returns data decoded from special early bound well-known attributes applied to the symbol or null if there are no applied attributes. - - - Forces binding and decoding of attributes. - - - - - Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. - This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. - - - - - A source parameter that has no default value, no attributes, - and is not params. - - - - - Base class for type and method type parameters. - - - - - Gets the attributes applied on this symbol. - Returns an empty array if there are no attributes. - - - NOTE: This method should always be kept as a sealed override. - If you want to override attribute binding logic for a sub-class, then override method. - - - - - Check constraints of generic types referenced in constraint types. For instance, - with "interface I<T> where T : I<T> {}", check T satisfies constraints - on I<T>. Those constraints are not checked when binding ConstraintTypes - since ConstraintTypes has not been set on I<T> at that point. - - - - - A map shared by all type parameters for an overriding method or a method - that explicitly implements an interface. The map caches the overridden method - and a type map from overridden type parameters to overriding type parameters. - - - - - A type parameter for a method that either overrides a base - type method or explicitly implements an interface method. - - - Exists to copy constraints from the corresponding type parameter of an overridden method. - - - - - The type parameter to use for determining constraints. If there is a base - method that the owner method is overriding, the corresponding type - parameter on that method is used. Otherwise, the result is null. - - - - - Class to represent a synthesized attribute - - - - - A context for binding type parameter symbols. - - - - - A simple representation of a type parameter constraint clause - as a set of constraint bits and a set of constraint types. - - - - - Checks if a type is considered a "built-in integral" by CLR. - - - - - The type is one of the simple types defined in Dev10 C#, see "predeftype.h"/simple - - - - - Either a SubstitutedNestedTypeSymbol or a ConstructedNamedTypeSymbol, which share in common that they - have type parameters substituted. - - - - - This field keeps track of the s for which we already retrieved - diagnostics. We shouldn't return from ForceComplete (i.e. indicate that diagnostics are - available) until this is equal to , except that when completing - with a given position, we might not complete .Member*. - - Since completeParts is used as a flag indicating completion of other assignments - it must be volatile to ensure the read is not reordered/optimized to happen - before the writes. - - - - - Used to force (source) symbols to a given state of completion. - - The owning source symbol. - - - - Since this formula is rather opaque, a demonstration of its correctness is - provided in Roslyn.Compilers.CSharp.UnitTests.CompletionTests.TestHasAtMostOneBitSet. - - - - - Represents the compiler generated value parameter for property/event accessor. - This parameter has no source location/syntax, but may have attributes. - Attributes with 'param' target specifier on the accessor must be applied to the this parameter. - - - - - Represents a compiler generated backing field for an automatically implemented property. - - - - - A container synthesized for a lambda, iterator method, async method, or dynamic-sites. - - - - - Represents an interactive code entry point that is inserted into the compilation if there is not an existing one. - - - - - Represents __value field of an enum. - - - - - Event accessor that has been synthesized for a field-like event declared in source. - - - Associated with . - - - - - Represents a compiler generated field. - - - Represents a compiler generated field of given type and name. - - - - - Represents a compiler generated field. - - - - - Represents a compiler generated synthesized method symbol - that must be emitted in the compiler generated - PrivateImplementationDetails class - - - - - Synthesized methods that must be emitted in the compiler generated - PrivateImplementationDetails class have null containing type symbol. - - - - - A base class for synthesized methods that want a this parameter. - - - - - Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. - This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. - - - - - A synthesized local variable. - - - - - Represents a simple compiler generated parameter of a given type. - - - - - For each parameter of a source method, construct a corresponding synthesized parameter - for a destination method. - - Has parameters. - Needs parameters. - Synthesized parameters to add to destination method. - - - - A type parameter for a synthesized class or method. - - - - - Utility class for substituting actual type arguments for formal generic type parameters. - - - - - The effective "bounds" of a type parameter: the constraint types, effective - interface set, and effective base type, determined from the declared - constraints, with any cycles removed. The fields are exposed by the - TypeParameterSymbol as ConstraintTypes, Interfaces, and BaseType. - - - - - The type parameters, classes, and interfaces explicitly declared as - constraint types on the containing type parameter, with cycles removed. - - - - - The set of interfaces explicitly declared on the containing type - parameter and any type parameters on which the containing - type parameter depends, with duplicates removed. - - - - - As defined in 10.1.5 of the specification. - - - - - The "exact" effective base type. - In the definition of effective base type we abstract some concrete types to their base classes: - * For each constraint of T that is a struct-type, R contains System.ValueType. - * For each constraint of T that is an enumeration type, R contains System.Enum. - * For each constraint of T that is a delegate type, R contains System.Delegate. - * For each constraint of T that is an array type, R contains System.Array. - * For each constraint of T that is a class-type C, R contains type C' which is constructed - from C by replacing all occurrences of dynamic with object. - The reason is that the CLR doesn't support operations on generic parameters that would be needed - to work with these types. For example, ldelem instruction requires the receiver to be a specific array, - not a type parameter constrained to be an array. - - When computing the deduced type we don't perform this abstraction. We keep the original constraint T. - Deduced base type is used to check that consistency rules are satisfied. - - - - - A TypeSymbol is a base class for all the symbols that represent a type - in C#. - - - - - A comparator that treats dynamic and object as "the same" types. - - - - - The original definition of this symbol. If this symbol is constructed from another - symbol by type substitution then OriginalDefinition gets the original symbol as it was defined in - source or metadata. - - - - - Gets the BaseType of this type. If the base type could not be determined, then - an instance of ErrorType is returned. If this kind of type does not have a base type - (for example, interfaces), null is returned. Also the special class System.Object - always has a BaseType of null. - - - - - Gets the set of interfaces that this type directly implements. This set does not include - interfaces that are base interfaces of directly implemented interfaces. - - - - - The list of all interfaces of which this type is a declared subtype, excluding this type - itself. This includes all declared base interfaces, all declared base interfaces of base - types, and all declared base interfaces of those results (recursively). Each result - appears exactly once in the list. This list is topologically sorted by the inheritance - relationship: if interface type A extends interface type B, then A precedes B in the - list. This is not quite the same as "all interfaces of which this type is a proper - subtype" because it does not take into account variance: AllInterfaces for - IEnumerable<string> will not include IEnumerable<object> - - - - - If this is a type parameter returns its effective base class, otherwise returns this type. - - - - - Returns true if this type derives from a given type. - - - - - Returns true if this type is equal or derives from a given type. - - - - - Determines if this type symbol represent the same type as another, according to the language - semantics. - - The other type. - True to compare without regard to custom modifiers, false by default. - True to ignore the distinction between object and dynamic, false by default. - True if the types are equivalent. - - - - We ignore custom modifiers, and the distinction between dynamic and object, when computing a type's hash code. - - - - - Produce all implemented interfaces in topologically sorted order. We use - TypeSymbol.Interfaces as the source of edge data, which has had cycles and infinitely - long dependency cycles removed. Consequently, it is possible (and we do) use the - simplest version of Tarjan's topological sorting algorithm. - - - - Gets the set of interfaces that this type directly implements, plus the base interfaces - of all such types. - - - CONSIDER: it probably isn't truly necessary to cache this. If space gets tight, consider - alternative approaches (recompute every time, cache on the side, only store on some types, - etc). - - - - - Returns the corresponding symbol in this type or a base type that implements - interfaceMember (either implicitly or explicitly), or null if no such symbol exists - (which might be either because this type doesn't implement the container of - interfaceMember, or this type doesn't supply a member that successfully implements - interfaceMember). - - - Must be a non-null interface property, method, or event. - - - - - Returns true if this type is known to be a reference type. It is never the case that - IsReferenceType and IsValueType both return true. However, for an unconstrained type - parameter, IsReferenceType and IsValueType will both return false. - - - - - Returns true if this type is known to be a value type. It is never the case that - IsReferenceType and IsValueType both return true. However, for an unconstrained type - parameter, IsReferenceType and IsValueType will both return false. - - - - - Gets the kind of this type. - - - - - Gets corresponding special TypeId of this type. - - - Not preserved in types constructed from this one. - - - - - Gets corresponding primitive type code for this type declaration. - - - - - Return error code that has highest priority while calculating use site error for this symbol. - - - - - Is this a symbol for an anonymous type (including delegate). - - - - - Is this type a managed type (false for everything but enum, pointer, and - some struct types). - - - See Type::computeManagedType. - - - - - Performs interface mapping (spec 13.4.4). - - - CONSIDER: we could probably do less work in the metadata and retargeting cases - we won't use the diagnostics. - - A non-null property on an interface type. - The type implementing the interface property (usually "this"). - Bag to which to add diagnostics. - The implementing property or null, if there isn't one. - - - - Since dev11 didn't expose a symbol API, it had the luxury of being able to accept a base class's claim that - it implements an interface. Roslyn, on the other hand, needs to be able to point to an implementing symbol - for each interface member. - - DevDiv #718115 was triggered by some unusual metadata in a Microsoft reference assembly (Silverlight System.Windows.dll). - The issue was that a type explicitly implemented the accessors of an interface event, but did not tie them together with - an event declaration. To make matters worse, it declared its own protected event with the same name as the interface - event (presumably to back the explicit implementation). As a result, when Roslyn was asked to find the implementing member - for the interface event, it found the protected event and reported an appropriate diagnostic. Would it should have done - (and does do now) is recognize that no event associated with the accessors explicitly implementing the interface accessors - and returned null. - - We resolved this issue by introducing a new step into the interface mapping algorithm: after failing to find an explicit - implementation in a type, but before searching for an implicit implementation in that type, check for an explicit implementation - of an associated accessor. If there is such an implementation, then immediately return the associated property or event, - even if it is null. That is, never attempt to find an implicit implementation for an interface property or event with an - explicitly implemented accessor. - - - - - If we were looking for an accessor, then look for an accessor on the implementation of the - corresponding interface property/event. If it is valid as an implementation (ignoring the name), - then prefer it to our current result if: - 1) our current result is null; or - 2) our current result is on the same type. - - If there is no corresponding accessor on the implementation of the corresponding interface - property/event and we found an accessor, then the accessor we found is invalid, so clear it. - - - - - These diagnostics are for members that do implicitly implement an interface member, but do so - in an undesirable way. - - - - - These diagnostics are for members that almost, but not actually, implicitly implement an interface member. - - - - - Search the declared members of a type for one that could be an implementation - of a given interface member (depending on interface declarations). - - The interface member being implemented. - True if the implementing type is from some compilation (i.e. not from metadata). - The type on which we are looking for a declared implementation of the interface member. - A member on currType that could implement the interface, or null. - A member on currType that could have been an attempt to implement the interface, or null. - - There is some similarity between this member and MemberSymbol.FindOverriddenOrHiddenMembersInType. - When making changes to this member, think about whether or not they should also be applied in MemberSymbol. - One key difference is that custom modifiers are considered when looking up overridden members, but - not when looking up implicit implementations. We're preserving this behavior from Dev10. - - - - - To implement an interface member, a candidate member must be public, non-static, and have - the same signature. "Have the same signature" has a looser definition if the type implementing - the interface is from source. - - - PROPERTIES: - NOTE: we're not checking whether this property has at least the accessors - declared in the interface. Dev10 considers it a match either way and, - reports failure to implement accessors separately. - - If the implementing type (i.e. the type with the interface in its interface - list) is in source, then we can ignore custom modifiers in/on the property - type because they will be copied into the bridge property that explicitly - implements the interface property (or they would be, if we created such - a bridge property). Bridge *methods* (not properties) are inserted in - SourceNamedTypeSymbol.ImplementInterfaceMember. - - CONSIDER: The spec for interface mapping (13.4.4) could be interpreted to mean that this - property is not an implementation unless it has an accessor for each accessor of the - interface property. For now, we prefer to represent that case as having an implemented - property and an unimplemented accessor because it makes finding accessor implementations - much easier. If we decide that we want the API to report the property as unimplemented, - then it might be appropriate to keep current result internally and just check the accessors - before returning the value from the public API (similar to the way MethodSymbol.OverriddenMethod - filters MethodSymbol.OverriddenOrHiddenMembers. - - - - - The set of abstract members in declared in this type or declared in a base type and not overridden. - - - - - Represents the method by which this type implements a given interface type - and/or the corresponding diagnostics. - - - - - Determines if the given type is a valid attribute parameter type. - - Type to validated - compilation - - - - - Gets the typed constant kind for the given attribute parameter type. - - Type to validated - compilation - TypedConstantKind for the attribute parameter type. - - - - return true if the type is constructed from System.Linq.Expressions.Expression`1 - - - - - return true if the type is constructed from a generic interface that - might be implemented by an array. - - - - - Return the default value constant for the given type, - or null if the default value is not a constant. - - - - - Visit the given type and, in the case of compound types, visit all "sub type" - (such as A in A[], or { A<T>, T, U } in A<T>.B<U>) invoking 'predicate' - with the type and 'arg' at each sub type. If the predicate returns true for any type, - traversal stops and that type is returned from this method. Otherwise if traversal - completes without the predicate returning true for any type, this method returns null. - - - - - (null TypeParameterSymbol "parameter"): Checks if the given type is a type parameter - or its referent type is a type parameter (array/pointer) or contains a type parameter (aggregate type) - (non-null TypeParameterSymbol "parameter"): above + also checks if the type parameter - is the same as "parameter" - - - - - Return true if the type contains any dynamic type reference. - - - - - Guess the non-error type that the given type was intended to represent. - If the type itself is not an error type, then it will be returned. - Otherwise, the underlying type (if any) of the error type will be - returned. - - - Any non-null type symbol returned is guaranteed not to be an error type. - - It is possible to pass in a constructed type and received back an - unconstructed type. This can occur when the type passed in was - constructed from an error type - the underlying definition will be - available, but there won't be a good way to "re-substitute" back up - to the level of the specified type. - - - - - Guess the non-error type kind that the given type was intended to represent, - if possible. If not, return TypeKind.Error. - - - - - Returns true if the type is a valid switch expression type. - - - - - Returns true if the type is one of the restricted types, namely: , - , or . - - - - - Add this instance to the set of checked types. Returns true - if this was added, false if the type was already in the set. - - - - - These special types are structs that contain fields of the same type - (e.g. contains an instance field of type ). - - - - - Compute a hash code for the constructed type. The return value will be - non-zero so callers can used zero to represent an uninitialized value. - - - - - If we are in a COM PIA with embedInteropTypes enabled we should turn properties and methods - that have the type and return type of object, respectively, into type dynamic. If the requisite conditions - are fulfilled, this method returns a dynamic type. If not, it returns the original type. - - A property type or method return type to be checked for dynamification. - Containing type. - - - - - Type variables are never considered reference types by the verifier. - - - - - Type variables are never considered value types by the verifier. - - - - - Return all of the type parameters in this type and enclosing types, - from outer-most to inner-most type. - - - - - Return all of the type parameters in this type and enclosing types, - from outer-most to inner-most type. - - - - - Return the nearest type parameter with the given name in - this type or any enclosing type. - - - - - Return true if the fully qualified name of the type's containing symbol - matches the given name. This method avoids string concatenations - in the common case where the type is a top-level type. - - - - - Count the custom modifiers within the specified TypeSymbol. - Potentially non-zero for arrays, pointers, and generic instantiations. - - - - - Check for custom modifiers within the specified TypeSymbol. - Potentially true for arrays, pointers, and generic instantiations. - - - A much less efficient implementation would be CustomModifierCount() == 0. - CONSIDER: Could share a backing method with CustomModifierCount. - - - - - Return true if this type can unify with the specified type - (i.e. is the same for some substitution of type parameters). - - - - - Used when iterating through base types in contexts in which the caller needs to avoid cycles and can't use BaseType - (perhaps because BaseType is in the process of being computed) - - - - - - - - - - Extract type under assumption that there should be no custom modifiers. - The method asserts otherwise. - - - - - This class groups together all of the functionality needed to check for error CS1961, ERR_UnexpectedVariance. - Its functionality is accessible through the NamedTypeSymbol extension method CheckInterfaceVarianceSafety and - the MethodSymbol extension method CheckMethodVarianceSafety (for checking delegate Invoke). - - - - - Accumulate diagnostics related to the variance safety of an interface. - - - - - Accumulate diagnostics related to the variance safety of a delegate. - - - - - Accumulate diagnostics related to the variance safety of an interface method. - - - - - Accumulate diagnostics related to the variance safety of an interface property. - - - - - Accumulate diagnostics related to the variance safety of an interface event. - - - - - Accumulate diagnostics related to the variance safety of an interface method/property parameter. - - - - - Accumulate diagnostics related to the variance safety of an interface method type parameters. - - - - - Returns true if the type is output-unsafe or input-unsafe, as defined in the C# spec. - Roughly, a type is output-unsafe if it could not be the return type of a method and - input-unsafe if it could not be a parameter type of a method. - - - This method is intended to match spec section 13.1.3.1 as closely as possible - (except that the output-unsafe and input-unsafe checks are merged). - - - - - 3) T is an interface, class, struct, enum, or delegate type ]]> constructed - from a generic type ]]> where for at least one A_i one - of the following holds: - a) X_i is covariant or invariant and A_i is output-unsafe [input-unsafe] - b) X_i is contravariant or invariant and A_i is input-unsafe [output-unsafe] (note: spec has "input-safe", but it's a typo) - - - Slight rewrite to make it more idiomatic for C#: - a) X_i is covariant and A_i is input-unsafe - b) X_i is contravariant and A_i is output-unsafe - c) X_i is invariant and A_i is input-unsafe or output-unsafe - - - - - Add an ERR_UnexpectedVariance diagnostic to the diagnostic bag. - - Diagnostic bag. - Type parameter that is not variance safe. - Context in which type is not variance safe (e.g. method). - Callback to provide location. - Callback argument. - Desired variance of type. - - - - Traverses the symbol table checking for CLS compliance. - - - - - Traverses the symbol table checking for CLS compliance. - - Compilation that owns the symbol table. - Will be supplemented with documentation comment diagnostics. - To stop traversing the symbol table early. - Only report diagnostics from this syntax tree, if non-null. - If and is non-null, report diagnostics within this span in the . - - - False if no further checks are required (because they would be cascading). - - - - BREAK: Dev11 reports WRN_CLS_ArrayArgumentToAttribute on all symbols, whereas roslyn reports it only - on accessible symbols. - - - - True if the symbol is okay (i.e. no warnings). - - - - NOTE: Dev11 behavior - First, it ignores arity, - which seems like a good way to disambiguate symbols (in particular, - CLS Rule 43 says that the name includes backtick-arity). Second, it - does not consider two members with identical names (i.e. not differing - in case) to collide. - - - - - This check (the only one that uses the "context" parameter is based on CLS Rule 46, - as implemented by LangCompiler::IsCLSAccessible. The idea is that C<int> and C<char> - are separate types in CLS, so they can't touch each other's protected members. - TODO: This should really have a separate error code - it's logically separate and requires explanation. - - Check the accessibility of this type (probably a parameter or return type). - Context for the accessibility check (e.g. containing type of method with as a parameter type. - - - - As in dev11, we ignore the fact that CLSCompliantAttribute is inherited (i.e. from the base type) - (see CSemanticChecker::CheckSymForCLS). This should only affect types where the syntactic parent - and the inheritance parent disagree. - - - - - Based on CompilationPass::CLSReduceSignature. - - - - - Traverses the symbol table processing XML documentation comments and optionally writing them to - a provided stream. - - - - - Traverses the symbol table processing XML documentation comments and optionally writing them to - a provided stream. - - Compilation that owns the symbol table. - Assembly name override, if specified. Otherwise the of the source assembly is used. - Stream to which XML will be written, if specified. - Will be supplemented with documentation comment diagnostics. - To stop traversing the symbol table early. - Only report diagnostics from this syntax tree, if non-null. - If and filterSpanWithinTree is non-null, report diagnostics within this span in the . - - - - Gets the XML that would be written to the documentation comment file for this assembly. - - The symbol for which to retrieve documentation comments. - True to treat includes as semantically meaningful (pull in contents from other files and bind crefs, etc). - To stop traversing the symbol table early. - - - - Write header, descend into members, and write footer. - - - - - Write own documentation comments and then descend into members. - - - - - Compile documentation comments on the symbol and write them to the stream if one is provided. - - - - - Loop over the DocumentationCommentTriviaSyntaxes. Gather - 1) concatenated XML, as a string; - 2) whether or not the XML is valid; - 3) set of type parameters covered by <typeparam> elements; - 4) set of parameters covered by <param> elements; - 5) list of <include> elements, as SyntaxNodes. - - True, if at least one documentation comment was processed; false, otherwise. - This was factored out for clarity, not because it's reusable. - - - - Similar to SymbolExtensions.GetParameters, but returns empty for unsupported symbols - and handles delegates. - - - - - Similar to SymbolExtensions.GetMemberTypeParameters, but returns empty for unsupported symbols. - - - - - A symbol requires a documentation comment if it was explicitly declared and - will be visible outside the current assembly (ignoring InternalsVisibleTo). - Exception: accessors do not require doc comments. - - - - - Get all of the DocumentationCommentTriviaSyntax associated with any declaring syntax of the - given symbol (except for partial methods, which only consider the part with the body). - - True if the nodes are all valid XML. - - - - Given the full text of a documentation comment, strip off the comment punctuation (///, /**, etc) - and add appropriate indentations. - - - - - Given a string, find the index of the first non-whitespace char. - - The string to search - The index of the first non-whitespace char in the string - - - - Find the first non-whitespace character in a given substring. - - The string to search - The start index - The last index (non-inclusive) - The index of the first non-whitespace char after index start in the string up to, but not including the end index - - - - Determine if the given string starts with the given prefix if whitespace - is first trimmed from the beginning. - - The string to search - The prefix - true if str.TrimStart().StartsWith(prefix) - - - - Given a string which may contain newline sequences, get the index of the first newline - sequence beginning at the given starting index. - - The string to split. - The starting index within the string. - The length of the newline sequence discovered. 0 if the end of the string was reached, otherwise either 1 or 2 chars - The index of the start of the first newline sequence following the start index - - - - Given the full text of a single-line style documentation comment, for each line, strip off - the comment punctuation (///) and add appropriate indentations. - - - - - Given the full text of a multi-line style documentation comment, broken into lines, strip off - the comment punctuation (/**, */, etc) and add appropriate indentations. - - - - - Remove "*/" and any following text, if it is present. - - - - - Return the longest prefix matching [whitespace]*[*][whitespace]*. - - - - - Return the longest common prefix of two strings - - - - - Bind a CrefSyntax and unwrap the result if it's an alias. - - - Does not respect DocumentationMode, so use a temporary bag if diagnostics are not desired. - - - - - Given a cref syntax that cannot be resolved, get the string that will be written to - the documentation file in place of a documentation comment ID. - - - - - Bind an XmlNameAttributeSyntax and update the sets of documented parameters and type parameters. - - - Does not respect DocumentationMode, so do not call unless diagnostics are desired. - - - - - WORKAROUND: - We're taking a dependency on the location and structure of a framework assembly resource. This is not a robust solution. - - Possible alternatives: - 1) Polish our XML parser until it matches MSXML. We don't want to reinvent the wheel. - 2) Build a map that lets us go from XML string positions back to source positions. - This is what the native compiler did, and it was a lot of work. We'd also still need to modify the message. - 3) Do not report a diagnostic. This is very unhelpful. - 4) Report a vague diagnostic (i.e. there's a problem somewhere in this doc comment). This is relatively unhelpful. - 5) Always report the message in English, so that we can pull it apart without needing to consume resource files. - This engenders a lot of ill will. - 6) Report the exception message without modification and (optionally) include the text with respect to which the - position is specified. This would not look sufficiently polished. - - - - - Walks a DocumentationCommentTriviaSyntax, binding the semantically meaningful parts - to produce diagnostics and to replace source crefs with documentation comment IDs. - - - - - Given a DocumentationCommentTriviaSyntax, return the full text, but with - documentation comment IDs substituted into crefs. - - - Still has all of the comment punctuation (///, /**, etc). - - - - - Rewrites nodes in , which is a snapshot of nodes from the original document. - We're mutating the tree as we rewrite, so it's important to grab a snapshot of the - nodes that we're going to reparent before we enumerate them. - - - - - This method boils down to Rewrite(XDocument.Load(fileAttrValue).XPathSelectElements(pathAttrValue)). - Everything else is error handling. - - - - - Respects the DocumentationMode at the source location. - - - - - Respects the DocumentationMode at the source location. - - - - - In some circumstances (e.g. implicit implementation of an interface method by a non-virtual method in a - base type from another assembly) it is necessary for the compiler to generate explicit implementations for - some interface methods. They don't go in the symbol table, but if we are emitting, then we should - generate code for them. - - - - - Synthesized parameterless constructors in structs chain to the "default" constructor - - - - - Bind the (implicit or explicit) constructor initializer of a constructor symbol. - - Constructor method. - Accumulates errors (e.g. access "this" in constructor initializer). - Used to retrieve binder. - A bound expression for the constructor initializer call. - - - - Returns true if the method is a constructor and has a this() constructor initializer. - - - - - Contains methods related to synthesizing bound nodes in initial binding - form that needs lowering, primarily method bodies for compiler-generated methods. - - - - - Generates a submission initialization part of a Script type constructor that represents an interactive submission. - - - The constructor takes a parameter of type Microsoft.CodeAnalysis.Scripting.Session - the session reference. - It adds the object being constructed into the session by calling Microsoft.CSharp.RuntimeHelpers.SessionHelpers.SetSubmission, - and retrieves strongly typed references on all previous submission script classes whose members are referenced by this submission. - The references are stored to fields of the submission (). - - - - - Construct a body for an auto-property accessor (updating or returning the backing field). - - - - - Generate an accessor for a field-like event. - - - - - Generate a thread-safe accessor for a WinRT field-like event. - - Add: - return EventRegistrationTokenTable<Event>.GetOrCreateEventRegistrationTokenTable(ref _tokenTable).AddEventHandler(value); - - Remove: - EventRegistrationTokenTable<Event>.GetOrCreateEventRegistrationTokenTable(ref _tokenTable).RemoveEventHandler(value); - - - - - Generate a thread-safe accessor for a regular field-like event. - - DelegateType tmp0 = _event; //backing field - DelegateType tmp1; - DelegateType tmp2; - do { - tmp1 = tmp0; - tmp2 = (DelegateType)Delegate.Combine(tmp1, value); //Remove for -= - tmp0 = Interlocked.CompareExchange<DelegateType>(ref _event, tmp2, tmp1); - } while ((object)tmp0 != (object)tmp1); - - Note, if System.Threading.Interlocked.CompareExchange<T> is not available, - we emit the following code and mark the method Synchronized (unless it is a struct). - - _event = (DelegateType)Delegate.Combine(_event, value); //Remove for -= - - - - - - Look for a base type method named "Finalize" that is protected (or protected internal), has no parameters, - and returns void. It doesn't need to be virtual or a destructor. - - - You may assume that this would share code and logic with PEMethodSymbol.OverridesRuntimeFinalizer, - but FUNCBRECCS::bindDestructor has its own loop that performs these checks (differently). - - - - - When compiling in metadata-only mode, is not run. This is problematic because - adds synthesized explicit implementations to the list of synthesized definitions. - In lieu of running , this class performs a quick - traversal of the symbol table and performs processing of synthesized symbols if necessary - - - - - Traverse the symbol table and call Module.AddSynthesizedDefinition for each - synthesized explicit implementation stub that has been generated (e.g. when the real - implementation doesn't have the appropriate custom modifiers). - - - - - Represents the state of compilation of one particular type. - This includes, for example, a collection of synthesized methods created during lowering. - - - WARNING: Note that the collection class is not thread-safe and will - need to be revised if emit phase is changed to support multithreading when - translating a particular type. - - - - Synthesized method info - - - Flat array of created methods, non-empty if not-null - - - - Map of wrapper methods created for base access of base type virtual methods from - other classes (like those created for lambdas...); actually each method symbol will - only need one wrapper to call it non-virtually. - - - - - Type symbol being compiled, or null if we compile a synthesized type that doesn't have a symbol (e.g. PrivateImplementationDetails). - - - - - The builder for generating code, or null if not in emit phase. - - - - - Any generated methods that don't suppress debug info will use this - list of debug imports. - - - - - A graph of method->method references for this(...) constructor initializers. - Used to detect and report initializer cycles. - - - - - The type for which this compilation state is being used. - - - - - The type passed to the runtime binder as context. - - - - - Add a 'regular' synthesized method. - - - - - Add a 'wrapper' synthesized method and map it to the original one so it can be reused. - - - Wrapper methods are created for base access of base type virtual methods from - other classes (like those created for lambdas...). - - - - The index of the next wrapped method to be used - - - - Get a 'wrapper' method for the original one. - - - Wrapper methods are created for base access of base type virtual methods from - other classes (like those created for lambdas...). - - - - Free resources allocated for this method collection - - - - Report an error if adding the edge (method1, method2) to the ctor-initializer - graph would add a new cycle to that graph. - - a calling ctor - the chained-to ctor - where to report a cyclic error if needed - a diagnostic bag for receiving the diagnostic - - - - Represents various options that affect compilation, such as - whether to emit an executable or a library, whether to optimize - generated code, and so on. - - - - - Allow unsafe regions (i.e. unsafe modifiers on members and unsafe blocks). - - - - - Global namespace usings. - - - - - Insert one or more tokens in the list at the specified index. - - A new list with the tokens inserted. - - - - Creates a new token with the specified old trivia replaced with computed new trivia. - - - The trivia to be replaced; descendants of the root token. - A function that computes a replacement trivia for - the argument trivia. The first argument is the original trivia. The second argument is - the same trivia rewritten with replaced structure. - - - - Creates a new token with the specified old trivia replaced with a new trivia. The old trivia may appear in - the token's leading or trailing trivia. - - - The trivia to be replaced. - The new trivia to use in the new tree in place of the old - trivia. - - - - Returns this list as a . - - The type of the list elements in the separated list. - - - - - Gets the first directive of the tree rooted by this node. - - - - - Gets the last directive of the tree rooted by this node. - - - - - Gets the semantic information for an ordering clause in an orderby query clause. - - - - - Gets the semantic information associated with a select or group clause. - - - - - Returns what symbol(s), if any, the given expression syntax bound to in the program. - - An AliasSymbol will never be returned by this method. What the alias refers to will be - returned instead. To get information about aliases, call GetAliasInfo. - - If binding the type name C in the expression "new C(...)" the actual constructor bound to - will be returned (or all constructor if overload resolution failed). This occurs as long as C - unambiguously binds to a single type that has a constructor. If C ambiguously binds to multiple - types, or C binds to a static class, then type(s) are returned. - - - - - Returns what 'Add' method symbol(s), if any, corresponds to the given expression syntax - within . - - - - - Returns what symbol(s), if any, the given constructor initializer syntax bound to in the program. - - - - - Returns what symbol(s), if any, the given attribute syntax bound to in the program. - - - - - Gets the semantic information associated with a documentation comment cref. - - - - - Binds the expression in the context of the specified location and gets symbol information. - This method is used to get symbol information about an expression that did not actually - appear in the source code. - - - - - Binds the CrefSyntax expression in the context of the specified location and gets symbol information. - This method is used to get symbol information about an expression that did not actually - appear in the source code. - - - - - Bind the attribute in the context of the specified location and get semantic information - such as type, symbols and diagnostics. This method is used to get semantic information about an attribute - that did not actually appear in the source code. - - - - - Bind the constructor initializer in the context of the specified location and get semantic information - such as type, symbols and diagnostics. This method is used to get semantic information about a constructor - initializer that did not actually appear in the source code. - - NOTE: This will only work in locations where there is already a constructor initializer. - - - - - Gets type information about a constructor initializer. - - - - - Gets type information about an expression. - - - - - Gets type information about an attribute. - - - - - Binds the expression in the context of the specified location and gets type information. - This method is used to get type information about an expression that did not actually - appear in the source code. - - - - - Returns the list of accessible, non-hidden indexers that could be invoked with the given expression as receiver. - - - - - Gets the semantic information associated with a query clause. - - - - - If resolves to an alias name, return the AliasSymbol corresponding - to A. Otherwise return null. - - - - - Binds the name in the context of the specified location and sees if it resolves to an - alias name. If it does, return the AliasSymbol corresponding to it. Otherwise, return null. - - - - - Analyze control-flow within a part of a method body. - - - - - Analyze control-flow within a part of a method body. - - - - - Analyze data-flow within an expression. - - - - - Analyze data-flow within a part of a method body. - - - - - Analyze data-flow within a part of a method body. - - - - - Get a SemanticModel object that is associated with a method body that did not appear in this source code. - Given must lie within an existing method body of the Root syntax node for this SemanticModel. - Locals and labels declared within this existing method body are not considered to be in scope of the speculated method body. - - - - - Get a SemanticModel object that is associated with a method body that did not appear in this source code. - Given must lie within an existing method body of the Root syntax node for this SemanticModel. - Locals and labels declared within this existing method body are not considered to be in scope of the speculated method body. - - - - - Get a SemanticModel object that is associated with a type syntax node that did not appear in - this source code. This can be used to get detailed semantic information about sub-parts - of a type syntax that did not appear in source code. - - - - - Get a SemanticModel object that is associated with a cref syntax node that did not appear in - this source code. This can be used to get detailed semantic information about sub-parts - of a cref syntax that did not appear in source code. - - - - - Get a SemanticModel object that is associated with a statement that did not appear in - this source code. This can be used to get detailed semantic information about sub-parts - of a statement that did not appear in source code. - - - - - Get a SemanticModel object that is associated with an initializer that did not appear in - this source code. This can be used to get detailed semantic information about sub-parts - of a field initializer or default parameter value that did not appear in source code. - - - - - Get a SemanticModel object that is associated with an expression body that did not appear in - this source code. This can be used to get detailed semantic information about sub-parts - of an expression body that did not appear in source code. - - - - - Get a SemanticModel object that is associated with a constructor initializer that did not appear in - this source code. This can be used to get detailed semantic information about sub-parts - of a constructor initializer that did not appear in source code. - - NOTE: This will only work in locations where there is already a constructor initializer. - - - - - Get a SemanticModel object that is associated with an attribute that did not appear in - this source code. This can be used to get detailed semantic information about sub-parts - of an attribute that did not appear in source code. - - - - - Determines what type of conversion, if any, would be used if a given expression was - converted to a given type. If isExplicitInSource is true, the conversion produced is - that which would be used if the conversion were done for a cast expression. - - - - - Determines what type of conversion, if any, would be used if a given expression was - converted to a given type. If isExplicitInSource is true, the conversion produced is - that which would be used if the conversion were done for a cast expression. - - - - - Given a member declaration syntax, get the corresponding symbol. - - - - - Given a namespace declaration syntax node, get the corresponding namespace symbol for - the declaration assembly. - - - - - Given a type declaration, get the corresponding type symbol. - - - - - Given a delegate declaration, get the corresponding type symbol. - - - - - Given a enum member declaration, get the corresponding field symbol. - - - - - Given a base method declaration syntax, get the corresponding method symbol. - - - - - Given a syntax node that declares a property, indexer or an event, get the corresponding declared symbol. - - - - - Given a syntax node that declares a property, get the corresponding declared symbol. - - - - - Given a syntax node that declares an indexer, get the corresponding declared symbol. - - - - - Given a syntax node that declares a (custom) event, get the corresponding event symbol. - - - - - Given a syntax node of anonymous object creation initializer, get the anonymous object property symbol. - - - - - Given a syntax node of anonymous object creation expression, get the anonymous object type symbol. - - - - - Given a syntax node that declares a property or member accessor, get the corresponding symbol. - - - - - Given a variable declarator syntax, get the corresponding symbol. - - - - - Given a labeled statement syntax, get the corresponding label symbol. - - - - - Given a switch label syntax, get the corresponding label symbol. - - - - - Given a using declaration get the corresponding symbol for the using alias that was introduced. - - - - - Given an extern alias declaration get the corresponding symbol for the alias that was introduced. - - - - - Given a parameter declaration syntax node, get the corresponding symbol. - - - - - Given a type parameter declaration (field or method), get the corresponding symbol - - - - - Given a foreach statement, get the symbol for the iteration variable - - - - - Given a catch declaration, get the symbol for the exception variable - - - - - Get the query range variable declared in a join into clause. - - - - - Get the query range variable declared in a query continuation clause. - - - - - Emit the IL for the compilation into the specified stream. - - Compilation. - Path of the file to which the PE image will be written. - Path of the file to which the compilation's debug info will be written. - Also embedded in the output file. Null to forego PDB generation. - - Path of the file to which the compilation's XML documentation will be written. Null to forego XML generation. - Path of the file from which the compilation's Win32 resources will be read (in RES format). - Null to indicate that there are none. - List of the compilation's managed resources. Null to indicate that there are none. - To cancel the emit process. - Compilation or path is null. - Path is empty or invalid. - An error occurred while reading or writing a file. - - - - This class stores several source parsing related options and offers access to their values. - - - - - The default parse options. - - - - - Gets the language version. - - - - - Gets the names of defined preprocessor symbols. - - - - - Enable some experimental language features for testing. - - - - - A strongly-typed resource class, for looking up localized strings, etc. - - - - - Returns the cached ResourceManager instance used by this class. - - - - - Overrides the current thread's CurrentUICulture property for all - resource lookups using this strongly typed resource class. - - - - - Looks up a localized string similar to Can't reference compilation of type '{0}' from {1} compilation.. - - - - - Looks up a localized string similar to Chaining speculative semantic model is not supported. You should create a speculative model from the non-speculative ParentModel.. - - - - - Looks up a localized string similar to Compilation (C#): . - - - - - Looks up a localized string similar to Could not find file.. - - - - - Looks up a localized string similar to element is expected. - - - - - Looks up a localized string similar to Elements cannot be null.. - - - - - Looks up a localized string similar to '{0}' cannot be both extern and abstract. - - - - - Looks up a localized string similar to '{0}' cannot be both abstract and sealed. - - - - - Looks up a localized string similar to Cannot apply attribute class '{0}' because it is abstract. - - - - - Looks up a localized string similar to Cannot call an abstract base member: '{0}'. - - - - - Looks up a localized string similar to '{0}': abstract event cannot have initializer. - - - - - Looks up a localized string similar to The modifier 'abstract' is not valid on fields. Try using a property instead.. - - - - - Looks up a localized string similar to '{0}' cannot declare a body because it is marked abstract. - - - - - Looks up a localized string similar to '{0}' is abstract but it is contained in non-abstract class '{1}'. - - - - - Looks up a localized string similar to The abstract method '{0}' cannot be marked virtual. - - - - - Looks up a localized string similar to '{0}': an abstract class cannot be sealed or static. - - - - - Looks up a localized string similar to '{0}': accessibility modifiers on accessors may only be used if the property or indexer has both a get and a set accessor. - - - - - Looks up a localized string similar to Accessor '{0}' cannot implement interface member '{1}' for type '{2}'. Use an explicit interface implementation.. - - - - - Looks up a localized string similar to Properties cannot combine accessor lists with expression bodies.. - - - - - Looks up a localized string similar to '{0}' cannot be added to this assembly because it already is an assembly. - - - - - Looks up a localized string similar to An add or remove accessor expected. - - - - - Looks up a localized string similar to An add or remove accessor must have a body. - - - - - Looks up a localized string similar to Cannot take the address of a read-only local variable. - - - - - Looks up a localized string similar to Agnostic assembly cannot have a processor specific module '{0}'.. - - - - - Looks up a localized string similar to Invalid reference alias option: '{0}=' -- missing filename. - - - - - Looks up a localized string similar to Alias '{0}' not found. - - - - - Looks up a localized string similar to The namespace alias qualifier '::' always resolves to a type or namespace so is illegal here. Consider using '.' instead.. - - - - - Looks up a localized string similar to An alias-qualified name is not an expression.. - - - - - Looks up a localized string similar to Operator '{0}' is ambiguous on operands of type '{1}' and '{2}'. - - - - - Looks up a localized string similar to The call is ambiguous between the following methods or properties: '{0}' and '{1}'. - - - - - Looks up a localized string similar to '{0}' is an ambiguous reference between '{1}' and '{2}'. - - - - - Looks up a localized string similar to Ambiguity between '{0}' and '{1}'. - - - - - Looks up a localized string similar to The inherited members '{0}' and '{1}' have the same signature in type '{2}', so they cannot be overridden. - - - - - Looks up a localized string similar to Type of conditional expression cannot be determined because '{0}' and '{1}' implicitly convert to one another. - - - - - Looks up a localized string similar to Ambiguous user defined conversions '{0}' and '{1}' when converting from '{2}' to '{3}'. - - - - - Looks up a localized string similar to Operator '{0}' is ambiguous on an operand of type '{1}'. - - - - - Looks up a localized string similar to '{0}' is ambiguous between '{1}' and '{2}'; use either '@{0}' or '{0}Attribute'. - - - - - Looks up a localized string similar to Cannot use ref or out parameter '{0}' inside an anonymous method, lambda expression, or query expression. - - - - - Looks up a localized string similar to Foreach cannot operate on a '{0}'. Did you intend to invoke the '{0}'?. - - - - - Looks up a localized string similar to Cannot convert {0} to type '{1}' because it is not a delegate type. - - - - - Looks up a localized string similar to An anonymous method expression cannot be converted to an expression tree. - - - - - Looks up a localized string similar to Not all code paths return a value in {0} of type '{1}'. - - - - - Looks up a localized string similar to An anonymous type cannot have multiple properties with the same name. - - - - - Looks up a localized string similar to Cannot use anonymous type in a constant expression. - - - - - Looks up a localized string similar to Cannot assign {0} to anonymous type property. - - - - - Looks up a localized string similar to The __arglist construct is valid only within a variable argument method. - - - - - Looks up a localized string similar to Array elements cannot be of type '{0}'. - - - - - Looks up a localized string similar to A nested array initializer is expected. - - - - - Looks up a localized string similar to An array initializer of length '{0}' is expected. - - - - - Looks up a localized string similar to Array initializers can only be used in a variable or field initializer. Try using a new expression instead.. - - - - - Looks up a localized string similar to Can only use array initializer expressions to assign to array types. Try using a new expression instead.. - - - - - Looks up a localized string similar to '{0}': array elements cannot be of static type. - - - - - Looks up a localized string similar to Array size cannot be specified in a variable declaration (try initializing with a 'new' expression). - - - - - Looks up a localized string similar to The as operator must be used with a reference type or nullable type ('{0}' is a non-nullable value type). - - - - - Looks up a localized string similar to Assembly '{0}' with identity '{1}' uses '{2}' which has a higher version than referenced assembly '{3}' with identity '{4}'. - - - - - Looks up a localized string similar to The /moduleassemblyname option may only be specified when building a target type of 'module'. - - - - - Looks up a localized string similar to Assemblies '{0}' and '{1}' refer to the same metadata but only one is a linked reference (specified using /link option); consider removing one of the references.. - - - - - Looks up a localized string similar to The left-hand side of an assignment must be a variable, property or indexer. - - - - - Looks up a localized string similar to A readonly field cannot be assigned to (except in a constructor or a variable initializer). - - - - - Looks up a localized string similar to Members of readonly field '{0}' cannot be modified (except in a constructor or a variable initializer). - - - - - Looks up a localized string similar to Cannot assign to '{0}' because it is read-only. - - - - - Looks up a localized string similar to Cannot modify members of '{0}' because it is a '{1}'. - - - - - Looks up a localized string similar to Cannot assign to '{0}' because it is a '{1}'. - - - - - Looks up a localized string similar to Property or indexer '{0}' cannot be assigned to -- it is read only. - - - - - Looks up a localized string similar to A static readonly field cannot be assigned to (except in a static constructor or a variable initializer). - - - - - Looks up a localized string similar to Fields of static readonly field '{0}' cannot be assigned to (except in a static constructor or a variable initializer). - - - - - Looks up a localized string similar to The type parameter '{0}' cannot be used with the 'as' operator because it does not have a class type constraint nor a 'class' constraint. - - - - - Looks up a localized string similar to '{0}': an attribute argument cannot use type parameters. - - - - - Looks up a localized string similar to Cannot apply attribute class '{0}' because it is generic. - - - - - Looks up a localized string similar to Attribute '{0}' is not valid on property or event accessors. It is only valid on '{1}' declarations.. - - - - - Looks up a localized string similar to Attribute '{0}' is not valid on this declaration type. It is only valid on '{1}' declarations.. - - - - - Looks up a localized string similar to Attribute parameter '{0}' must be specified.. - - - - - Looks up a localized string similar to Attribute parameter '{0}' or '{1}' must be specified.. - - - - - Looks up a localized string similar to Attributes are not valid in this context.. - - - - - Looks up a localized string similar to Attribute '{0}' is only valid on classes derived from System.Attribute. - - - - - Looks up a localized string similar to Auto-implemented properties inside interfaces cannot have initializers.. - - - - - Looks up a localized string similar to Auto-implemented properties must have get accessors.. - - - - - Looks up a localized string similar to Auto-implemented properties must override all accessors of the overridden property.. - - - - - Looks up a localized string similar to Cannot await in an unsafe context. - - - - - Looks up a localized string similar to '{0}' is inaccessible due to its protection level. - - - - - Looks up a localized string similar to AppConfigPath must be absolute.. - - - - - Looks up a localized string similar to No overload for method '{0}' takes {1} arguments. - - - - - Looks up a localized string similar to Argument {0} should not be passed with the '{1}' keyword. - - - - - Looks up a localized string similar to Argument {0} must be passed with the '{1}' keyword. - - - - - Looks up a localized string similar to Argument {0}: cannot convert from '{1}' to '{2}'. - - - - - Looks up a localized string similar to '{0}' has no applicable method named '{1}' but appears to have an extension method by that name. Extension methods cannot be dynamically dispatched. Consider casting the dynamic arguments or calling the extension method without the extension method syntax.. - - - - - Looks up a localized string similar to The best overloaded Add method '{0}' for the collection initializer has some invalid arguments. - - - - - Looks up a localized string similar to The argument to the '{0}' attribute must be a valid identifier. - - - - - Looks up a localized string similar to Using the generic {1} '{0}' requires {2} type arguments. - - - - - Looks up a localized string similar to Array type specifier, [], must appear before parameter name. - - - - - Looks up a localized string similar to Async methods cannot have ref or out parameters. - - - - - Looks up a localized string similar to Async lambda expressions cannot be converted to expression trees. - - - - - Looks up a localized string similar to The 'async' modifier can only be used in methods that have a body.. - - - - - Looks up a localized string similar to The return type of an async method must be void, Task or Task<T>. - - - - - Looks up a localized string similar to Since this is an async method, the return expression must be of type '{0}' rather than 'Task<{0}>'. - - - - - Looks up a localized string similar to An attribute argument must be a constant expression, typeof expression or array creation expression of an attribute parameter type. - - - - - Looks up a localized string similar to Attribute constructor parameter '{0}' is optional, but no default parameter value was specified.. - - - - - Looks up a localized string similar to Attribute constructor parameter '{0}' has type '{1}', which is not a valid attribute parameter type. - - - - - Looks up a localized string similar to 'await' requires that the type {0} have a suitable GetAwaiter method. - - - - - Looks up a localized string similar to 'await' requires that the type '{0}' have a suitable GetAwaiter method. Are you missing a using directive for 'System'?. - - - - - Looks up a localized string similar to Cannot await '{0}'. - - - - - Looks up a localized string similar to Cannot await 'void'. - - - - - Looks up a localized string similar to 'await' cannot be used as an identifier within an async method or lambda expression. - - - - - Looks up a localized string similar to 'await' requires that the return type '{0}' of '{1}.GetAwaiter()' have suitable IsCompleted, OnCompleted, and GetResult members, and implement INotifyCompletion or ICriticalNotifyCompletion. - - - - - Looks up a localized string similar to Cannot await in a catch clause. - - - - - Looks up a localized string similar to Cannot await in the filter expression of a catch clause. - - - - - Looks up a localized string similar to Cannot await in the body of a finally clause. - - - - - Looks up a localized string similar to Cannot await in the body of a lock statement. - - - - - Looks up a localized string similar to The 'await' operator may only be used in a query expression within the first collection expression of the initial 'from' clause or within the collection expression of a 'join' clause. - - - - - Looks up a localized string similar to The 'await' operator cannot be used in a static script variable initializer.. - - - - - Looks up a localized string similar to The 'await' operator can only be used when contained within a method or lambda expression marked with the 'async' modifier. - - - - - Looks up a localized string similar to The 'await' operator can only be used within an async {0}. Consider marking this {0} with the 'async' modifier.. - - - - - Looks up a localized string similar to The 'await' operator can only be used within an async method. Consider marking this method with the 'async' modifier and changing its return type to 'Task<{0}>'.. - - - - - Looks up a localized string similar to The 'await' operator can only be used within an async method. Consider marking this method with the 'async' modifier and changing its return type to 'Task'.. - - - - - Looks up a localized string similar to Invalid image base number '{0}'. - - - - - Looks up a localized string similar to Invalid base type. - - - - - Looks up a localized string similar to One of the parameters of a binary operator must be the containing type. - - - - - Looks up a localized string similar to Operator '{0}' cannot be applied to operands of type '{1}' and '{2}'. - - - - - Looks up a localized string similar to Overloaded binary operator '{0}' takes two parameters. - - - - - Looks up a localized string similar to In order to be applicable as a short circuit operator a user-defined logical operator ('{0}') must have the same return type and parameter types. - - - - - Looks up a localized string similar to '{0}' is not a valid constraint. A type used as a constraint must be an interface, a non-sealed class or a type parameter.. - - - - - Looks up a localized string similar to The CallerFilePathAttribute may only be applied to parameters with default values. - - - - - Looks up a localized string similar to The CallerLineNumberAttribute may only be applied to parameters with default values. - - - - - Looks up a localized string similar to The CallerMemberNameAttribute may only be applied to parameters with default values. - - - - - Looks up a localized string similar to The right hand side of a fixed statement assignment may not be a cast expression. - - - - - Looks up a localized string similar to The managed coclass wrapper class signature '{0}' for interface '{1}' is not a valid class name signature. - - - - - Looks up a localized string similar to Invalid option '{0}' for /langversion; must be ISO-1, ISO-2, Default or an integer in range 1 to 6.. - - - - - Looks up a localized string similar to {0}. - - - - - Looks up a localized string similar to Invalid '{0}' value: '{1}'.. - - - - - Looks up a localized string similar to Invalid constraint type. A type used as a constraint must be an interface, a non-sealed class or a type parameter.. - - - - - Looks up a localized string similar to The type '{0}' cannot be declared const. - - - - - Looks up a localized string similar to '{0}' does not contain a constructor that takes {1} arguments. - - - - - Looks up a localized string similar to Invalid option '{0}' for /debug; must be full or pdbonly. - - - - - Looks up a localized string similar to Delegate '{0}' does not take {1} arguments. - - - - - Looks up a localized string similar to The delegate '{0}' does not have a valid constructor. - - - - - Looks up a localized string similar to Control cannot leave the body of an anonymous method or lambda expression. - - - - - Looks up a localized string similar to Name of destructor must match name of class. - - - - - Looks up a localized string similar to Preprocessor directives must appear as the first non-whitespace character on a line. - - - - - Looks up a localized string similar to '{0}': user-defined conversions to or from the dynamic type are not allowed. - - - - - Looks up a localized string similar to Cannot use an expression of type '{0}' as an argument to a dynamically dispatched operation.. - - - - - Looks up a localized string similar to Cannot use a lambda expression as an argument to a dynamically dispatched operation without first casting it to a delegate or expression tree type.. - - - - - Looks up a localized string similar to Cannot use a method group as an argument to a dynamically dispatched operation. Did you intend to invoke the method?. - - - - - Looks up a localized string similar to Query expressions over source type 'dynamic' or with a join sequence of type 'dynamic' are not allowed. - - - - - Looks up a localized string similar to The typeof operator cannot be used on the dynamic type. - - - - - Looks up a localized string similar to Embedded statement cannot be a declaration or labeled statement. - - - - - Looks up a localized string similar to A throw statement with no arguments is not allowed outside of a catch clause. - - - - - Looks up a localized string similar to A throw statement with no arguments is not allowed in a finally clause that is nested inside the nearest enclosing catch clause. - - - - - Looks up a localized string similar to The event '{0}' can only appear on the left hand side of += or -= (except when used from within the type '{1}'). - - - - - Looks up a localized string similar to The event '{0}' can only appear on the left hand side of += or -=. - - - - - Looks up a localized string similar to The type caught or thrown must be derived from System.Exception. - - - - - Looks up a localized string similar to Extension method must be defined in a non-generic static class. - - - - - Looks up a localized string similar to '{0}' does not contain a definition for '{1}' and the best extension method overload '{2}' has some invalid arguments. - - - - - Looks up a localized string similar to Extension method must be static. - - - - - Looks up a localized string similar to The extern alias '{0}' was not specified in a /reference option. - - - - - Looks up a localized string similar to Invalid extern alias for '/reference'; '{0}' is not a valid identifier. - - - - - Looks up a localized string similar to Control cannot leave the body of a finally clause. - - - - - Looks up a localized string similar to The type of a local declared in a fixed statement must be a pointer type. - - - - - Looks up a localized string similar to Type and identifier are both required in a foreach statement. - - - - - Looks up a localized string similar to foreach requires that the return type '{0}' of '{1}' must have a suitable public MoveNext method and public Current property. - - - - - Looks up a localized string similar to The return type for ++ or -- operator must match the parameter type or be derived from the parameter type. - - - - - Looks up a localized string similar to The parameter type for ++ or -- operator must be the containing type. - - - - - Looks up a localized string similar to Wrong number of indices inside []; expected {0}. - - - - - Looks up a localized string similar to The '{0}' attribute is valid only on an indexer that is not an explicit interface member declaration. - - - - - Looks up a localized string similar to Cannot apply indexing with [] to an expression of type '{0}'. - - - - - Looks up a localized string similar to '{0}' does not contain a definition for '{1}' and the best extension method overload '{2}' requires a receiver of type '{3}'. - - - - - Looks up a localized string similar to Iterators cannot have ref or out parameters. - - - - - Looks up a localized string similar to The body of '{0}' cannot be an iterator block because '{1}' is not an iterator interface type. - - - - - Looks up a localized string similar to The modifier '{0}' is not valid for this item. - - - - - Looks up a localized string similar to More than one protection modifier. - - - - - Looks up a localized string similar to Member modifier '{0}' must precede the member type and name. - - - - - Looks up a localized string similar to A namespace declaration cannot have modifiers or attributes. - - - - - Looks up a localized string similar to The best overload for '{0}' does not have a parameter named '{1}'. - - - - - Looks up a localized string similar to The delegate '{0}' does not have a parameter named '{1}'. - - - - - Looks up a localized string similar to '{0}' is not a valid named attribute argument. Named attribute arguments must be fields which are not readonly, static, or const, or read-write properties which are public and not static.. - - - - - Looks up a localized string similar to '{0}' is not a valid named attribute argument because it is not a valid attribute parameter type. - - - - - Looks up a localized string similar to A new expression requires (), [], or {} after type. - - - - - Looks up a localized string similar to Declaration is not valid; use '{0} operator <dest-type> (...' instead. - - - - - Looks up a localized string similar to The parameter modifier 'out' cannot be used with 'this' . - - - - - Looks up a localized string similar to Parameter {0} should not be declared with the '{1}' keyword. - - - - - Looks up a localized string similar to A parameter array cannot be used with 'this' modifier on an extension method. - - - - - Looks up a localized string similar to Parameter {0} must be declared with the '{1}' keyword. - - - - - Looks up a localized string similar to Parameter {0} is declared as type '{1}{2}' but should be '{3}{4}'. - - - - - Looks up a localized string similar to Error reading debug information for '{0}'. - - - - - Looks up a localized string similar to Invalid option '{0}' for /platform; must be anycpu, x86, Itanium or x64. - - - - - Looks up a localized string similar to /platform:anycpu32bitpreferred can only be used with /t:exe, /t:winexe and /t:appcontainerexe. - - - - - Looks up a localized string similar to Cannot access protected member '{0}' via a qualifier of type '{1}'; the qualifier must be of type '{2}' (or derived from it). - - - - - Looks up a localized string similar to The parameter modifier 'ref' cannot be used with 'this' . - - - - - Looks up a localized string similar to Invalid option '{0}'; Resource visibility must be either 'public' or 'private'. - - - - - Looks up a localized string similar to '{1} {0}' has the wrong return type. - - - - - Looks up a localized string similar to The first operand of an overloaded shift operator must have the same type as the containing type, and the type of the second operand must be int. - - - - - Looks up a localized string similar to '{0}' is a {1} but is used like a {2}. - - - - - Looks up a localized string similar to '{0}' is a {1}, which is not valid in the given context. - - - - - Looks up a localized string similar to Parameters or locals of type '{0}' cannot be declared in async methods or lambda expressions.. - - - - - Looks up a localized string similar to A stackalloc expression requires [] after type. - - - - - Looks up a localized string similar to Unrecognized option: '{0}'. - - - - - Looks up a localized string similar to Method '{0}' has a parameter modifier 'this' which is not on the first parameter. - - - - - Looks up a localized string similar to The type '{0}' may not be used as a type argument. - - - - - Looks up a localized string similar to The first parameter of an extension method cannot be of type '{0}'. - - - - - Looks up a localized string similar to '{0}': cannot reference a type through an expression; try '{1}' instead. - - - - - Looks up a localized string similar to Operator '{0}' cannot be applied to operand of type '{1}'. - - - - - Looks up a localized string similar to The parameter of a unary operator must be the containing type. - - - - - Looks up a localized string similar to Overloaded unary operator '{0}' takes one parameter. - - - - - Looks up a localized string similar to A 'using namespace' directive can only be applied to namespaces; '{0}' is a type not a namespace. Consider a 'using static' directive instead. - - - - - Looks up a localized string similar to A 'using static' directive can only be applied to types; '{0}' is a namespace not a type. Consider a 'using namespace' directive instead. - - - - - Looks up a localized string similar to A method with vararg cannot be generic, be in a generic type, or have a params parameter. - - - - - Looks up a localized string similar to Expected ; or = (cannot specify constructor arguments in declaration). - - - - - Looks up a localized string similar to Inconsistent accessibility: base class '{1}' is less accessible than class '{0}'. - - - - - Looks up a localized string similar to Inconsistent accessibility: base interface '{1}' is less accessible than interface '{0}'. - - - - - Looks up a localized string similar to Inconsistent accessibility: constraint type '{1}' is less accessible than '{0}'. - - - - - Looks up a localized string similar to Inconsistent accessibility: parameter type '{1}' is less accessible than delegate '{0}'. - - - - - Looks up a localized string similar to Inconsistent accessibility: return type '{1}' is less accessible than delegate '{0}'. - - - - - Looks up a localized string similar to Inconsistent accessibility: event type '{1}' is less accessible than event '{0}'. - - - - - Looks up a localized string similar to Inconsistent accessibility: field type '{1}' is less accessible than field '{0}'. - - - - - Looks up a localized string similar to Inconsistent accessibility: parameter type '{1}' is less accessible than indexer '{0}'. - - - - - Looks up a localized string similar to Inconsistent accessibility: indexer return type '{1}' is less accessible than indexer '{0}'. - - - - - Looks up a localized string similar to Inconsistent accessibility: parameter type '{1}' is less accessible than operator '{0}'. - - - - - Looks up a localized string similar to Inconsistent accessibility: return type '{1}' is less accessible than operator '{0}'. - - - - - Looks up a localized string similar to Inconsistent accessibility: parameter type '{1}' is less accessible than method '{0}'. - - - - - Looks up a localized string similar to Inconsistent accessibility: property type '{1}' is less accessible than property '{0}'. - - - - - Looks up a localized string similar to Inconsistent accessibility: return type '{1}' is less accessible than method '{0}'. - - - - - Looks up a localized string similar to Warning level must be in the range 0-4. - - - - - Looks up a localized string similar to Error reading Win32 resources -- {0}. - - - - - Looks up a localized string similar to Cannot yield a value in the body of a catch clause. - - - - - Looks up a localized string similar to Cannot yield in the body of a finally clause. - - - - - Looks up a localized string similar to Cannot yield a value in the body of a try block with a catch clause. - - - - - Looks up a localized string similar to Base class '{0}' must come before any interfaces. - - - - - Looks up a localized string similar to Type parameter '{0}' inherits conflicting constraints '{1}' and '{2}'. - - - - - Looks up a localized string similar to Use of keyword 'base' is not valid in this context. - - - - - Looks up a localized string similar to Keyword 'base' is not available in the current context. - - - - - Looks up a localized string similar to Keyword 'base' is not available in a static method. - - - - - Looks up a localized string similar to '{0}' is a binary file instead of a text file. - - - - - Looks up a localized string similar to '{0}' is not supported by the language. - - - - - Looks up a localized string similar to Property, indexer, or event '{0}' is not supported by the language; try directly calling accessor method '{1}'. - - - - - Looks up a localized string similar to Property, indexer, or event '{0}' is not supported by the language; try directly calling accessor methods '{1}' or '{2}'. - - - - - Looks up a localized string similar to Methods cannot combine block bodies with expression bodies.. - - - - - Looks up a localized string similar to '{0}' cannot implement '{1}' because it is not supported by the language. - - - - - Looks up a localized string similar to '{0}' is a type not supported by the language. - - - - - Looks up a localized string similar to An expression tree lambda may not contain an out or ref parameter. - - - - - Looks up a localized string similar to By-reference return type 'ref {0}' is not supported.. - - - - - Looks up a localized string similar to 'await' cannot be used in an expression containing the type '{0}'. - - - - - Looks up a localized string similar to Do not directly call your base class Finalize method. It is called automatically from your destructor.. - - - - - Looks up a localized string similar to Destructors and object.Finalize cannot be called directly. Consider calling IDisposable.Dispose if available.. - - - - - Looks up a localized string similar to Cannot pass null for friend assembly name. - - - - - Looks up a localized string similar to '{0}': cannot explicitly call operator or accessor. - - - - - Looks up a localized string similar to '{0}': cannot change access modifiers when overriding '{1}' inherited member '{2}'. - - - - - Looks up a localized string similar to '{0}': return type must be '{2}' to match overridden member '{1}'. - - - - - Looks up a localized string similar to '{0}': type must be '{2}' to match overridden member '{1}'. - - - - - Looks up a localized string similar to Cannot convert anonymous method block without a parameter list to delegate type '{0}' because it has one or more out parameters. - - - - - Looks up a localized string similar to Cannot convert {0} to delegate type '{1}' because the parameter types do not match the delegate parameter types. - - - - - Looks up a localized string similar to Cannot convert {0} to intended delegate type because some of the return types in the block are not implicitly convertible to the delegate return type. - - - - - Looks up a localized string similar to Cannot convert async {0} to delegate type '{1}'. An async {0} may return void, Task or Task<T>, none of which are convertible to '{1}'.. - - - - - Looks up a localized string similar to '{0}': cannot derive from sealed type '{1}'. - - - - - Looks up a localized string similar to Conflicting options specified: Win32 resource file; Win32 icon. - - - - - Looks up a localized string similar to Conflicting options specified: Win32 resource file; Win32 manifest. - - - - - Looks up a localized string similar to The type arguments for method '{0}' cannot be inferred from the usage. Try specifying the type arguments explicitly.. - - - - - Looks up a localized string similar to Cannot create temporary file -- {0}. - - - - - Looks up a localized string similar to Cannot open '{0}' for writing -- '{1}'. - - - - - Looks up a localized string similar to Error opening icon file {0} -- {1}. - - - - - Looks up a localized string similar to Error opening Win32 manifest file {0} -- {1}. - - - - - Looks up a localized string similar to Error opening Win32 resource file '{0}' -- '{1}'. - - - - - Looks up a localized string similar to '{0}': cannot override '{1}' because it is not supported by the language. - - - - - Looks up a localized string similar to '{0}': cannot override; '{1}' is not an event. - - - - - Looks up a localized string similar to '{0}': cannot override because '{1}' is not a function. - - - - - Looks up a localized string similar to '{0}': cannot override because '{1}' is not a property. - - - - - Looks up a localized string similar to '{0}': cannot override inherited member '{1}' because it is not marked virtual, abstract, or override. - - - - - Looks up a localized string similar to '{0}': cannot override inherited member '{1}' because it is sealed. - - - - - Looks up a localized string similar to Cannot read config file '{0}' -- '{1}'. - - - - - Looks up a localized string similar to Error reading resource '{0}' -- '{1}'. - - - - - Looks up a localized string similar to Error reading ruleset file {0} - {1}. - - - - - Looks up a localized string similar to Cannot link resource files when building a module. - - - - - Looks up a localized string similar to Cannot return an expression of type 'void'. - - - - - Looks up a localized string similar to Error reading Win32 manifest file '{0}' -- '{1}'. - - - - - Looks up a localized string similar to The RequiredAttribute attribute is not permitted on C# types. - - - - - Looks up a localized string similar to The operation overflows at compile time in checked mode. - - - - - Looks up a localized string similar to The evaluation of the constant value for '{0}' involves a circular definition. - - - - - Looks up a localized string similar to Circular base class dependency involving '{0}' and '{1}'. - - - - - Looks up a localized string similar to Circular constraint dependency involving '{0}' and '{1}'. - - - - - Looks up a localized string similar to The class type constraint '{0}' must come before any other constraints. - - - - - Looks up a localized string similar to '{0}': containing type does not implement interface '{1}'. - - - - - Looks up a localized string similar to An object, string, or class type expected. - - - - - Looks up a localized string similar to ) expected. - - - - - Looks up a localized string similar to '{0}' does not implement interface member '{1}'. '{2}' cannot implement an interface member because it is not public.. - - - - - Looks up a localized string similar to '{0}' does not implement interface member '{1}'. '{2}' cannot implement an interface member because it is static.. - - - - - Looks up a localized string similar to '{0}' does not implement interface member '{1}'. '{2}' cannot implement '{1}' because it does not have the matching return type of '{3}'.. - - - - - Looks up a localized string similar to Attribute '{0}' given in a source file conflicts with option '{1}'.. - - - - - Looks up a localized string similar to Cannot use alias '{0}' with '::' since the alias references a type. Use '.' instead.. - - - - - Looks up a localized string similar to Cannot initialize type '{0}' with a collection initializer because it does not implement 'System.Collections.IEnumerable'. - - - - - Looks up a localized string similar to '{0}': a class with the ComImport attribute cannot specify a base class. - - - - - Looks up a localized string similar to Since '{1}' has the ComImport attribute, '{0}' must be extern or abstract. - - - - - Looks up a localized string similar to '{0}': a class with the ComImport attribute cannot specify field initializers.. - - - - - Looks up a localized string similar to The Guid attribute must be specified with the ComImport attribute. - - - - - Looks up a localized string similar to A class with the ComImport attribute cannot have a user-defined constructor. - - - - - Looks up a localized string similar to Compilation cancelled by user. - - - - - Looks up a localized string similar to An expression tree lambda may not contain a COM call with ref omitted on arguments. - - - - - Looks up a localized string similar to '{0}' must declare a body because it is not marked abstract, extern, or partial. - - - - - Looks up a localized string similar to The Conditional attribute is not valid on '{0}' because its return type is not void. - - - - - Looks up a localized string similar to The Conditional attribute is not valid on interface members. - - - - - Looks up a localized string similar to Attribute '{0}' is only valid on methods or attribute classes. - - - - - Looks up a localized string similar to The Conditional attribute is not valid on '{0}' because it is an override method. - - - - - Looks up a localized string similar to The Conditional attribute is not valid on '{0}' because it is a constructor, destructor, operator, or explicit interface implementation. - - - - - Looks up a localized string similar to Conditional member '{0}' cannot have an out parameter. - - - - - Looks up a localized string similar to Namespace '{1}' contains a definition conflicting with alias '{0}'. - - - - - Looks up a localized string similar to Alias '{0}' conflicts with {1} definition. - - - - - Looks up a localized string similar to Assembly and module '{0}' cannot target different processors.. - - - - - Looks up a localized string similar to A constant value is expected. - - - - - Looks up a localized string similar to Length of String constant exceeds current memory limit. Try splitting the string into multiple constants.. - - - - - Looks up a localized string similar to Constant value '{0}' cannot be converted to a '{1}'. - - - - - Looks up a localized string similar to Constant value '{0}' cannot be converted to a '{1}' (use 'unchecked' syntax to override). - - - - - Looks up a localized string similar to '{0}': static classes cannot be used as constraints. - - - - - Looks up a localized string similar to Constraints are not allowed on non-generic declarations. - - - - - Looks up a localized string similar to Constraint cannot be a dynamic type '{0}'. - - - - - Looks up a localized string similar to Static classes cannot have instance constructors. - - - - - Looks up a localized string similar to A const field requires a value to be provided. - - - - - Looks up a localized string similar to User-defined conversion must convert to or from the enclosing type. - - - - - Looks up a localized string similar to '{0}': user-defined conversions to or from a base class are not allowed. - - - - - Looks up a localized string similar to '{0}': user-defined conversions to or from a derived class are not allowed. - - - - - Looks up a localized string similar to '{0}': user-defined conversions to or from an interface are not allowed. - - - - - Looks up a localized string similar to Cannot convert to static type '{0}'. - - - - - Looks up a localized string similar to Type parameter '{1}' has the 'struct' constraint so '{1}' cannot be used as a constraint for '{0}'. - - - - - Looks up a localized string similar to Cryptographic failure while creating hashes.. - - - - - Looks up a localized string similar to Bad array declarator: To declare a managed array the rank specifier precedes the variable's identifier. To declare a fixed size buffer field, use the fixed keyword before the field type.. - - - - - Looks up a localized string similar to Inherited interface '{1}' causes a cycle in the interface hierarchy of '{0}'. - - - - - Looks up a localized string similar to The type forwarder for type '{0}' in assembly '{1}' causes a cycle. - - - - - Looks up a localized string similar to Debug entry point must be a definition of a method declared in the current compilation.. - - - - - Looks up a localized string similar to Evaluation of the decimal constant expression failed. - - - - - Looks up a localized string similar to Cannot specify the DefaultMember attribute on a type containing an indexer. - - - - - Looks up a localized string similar to Argument of type '{0}' is not applicable for the DefaultParameterValue attribute. - - - - - Looks up a localized string similar to Optional parameters must appear after all required parameters. - - - - - Looks up a localized string similar to Cannot specify a default value for the 'this' parameter. - - - - - Looks up a localized string similar to Cannot specify a default value for a parameter array. - - - - - Looks up a localized string similar to Default parameter value for '{0}' must be a compile-time constant. - - - - - Looks up a localized string similar to Default values are not valid in this context.. - - - - - Looks up a localized string similar to The type of the argument to the DefaultParameterValue attribute must match the parameter type. - - - - - Looks up a localized string similar to Cannot specify default parameter value in conjunction with DefaultParameterAttribute or OptionalAttribute. - - - - - Looks up a localized string similar to Cannot create delegate with '{0}' because it or a method it overrides has a Conditional attribute. - - - - - Looks up a localized string similar to Cannot bind delegate to '{0}' because it is a member of 'System.Nullable<T>'. - - - - - Looks up a localized string similar to The best overloaded Add method '{0}' for the collection initializer element is obsolete. {1}. - - - - - Looks up a localized string similar to '{0}' is obsolete: '{1}'. - - - - - Looks up a localized string similar to '{0}': cannot implement a dynamic interface '{1}'. - - - - - Looks up a localized string similar to '{0}': cannot derive from the dynamic type. - - - - - Looks up a localized string similar to '{0}' cannot derive from special class '{1}'. - - - - - Looks up a localized string similar to Cannot derive from '{0}' because it is a type parameter. - - - - - Looks up a localized string similar to Static classes cannot contain destructors. - - - - - Looks up a localized string similar to An expression tree lambda may not contain a dictionary initializer.. - - - - - Looks up a localized string similar to The DllImport attribute cannot be applied to a method that is generic or contained in a generic type.. - - - - - Looks up a localized string similar to The DllImport attribute must be specified on a method marked 'static' and 'extern'. - - - - - Looks up a localized string similar to '{0}' does not implement '{1}'. - - - - - Looks up a localized string similar to Do not use 'System.Runtime.CompilerServices.FixedBuffer' attribute. Use the 'fixed' field modifier instead.. - - - - - Looks up a localized string similar to The type name '{0}' does not exist in the type '{1}'. - - - - - Looks up a localized string similar to The type or namespace name '{0}' does not exist in the namespace '{1}' (are you missing an assembly reference?). - - - - - Looks up a localized string similar to The type name '{0}' could not be found in the namespace '{1}'. This type has been forwarded to assembly '{2}' Consider adding a reference to that assembly.. - - - - - Looks up a localized string similar to Property accessor already defined. - - - - - Looks up a localized string similar to The using alias '{0}' appeared previously in this namespace. - - - - - Looks up a localized string similar to Duplicate '{0}' attribute. - - - - - Looks up a localized string similar to Duplicate '{0}' attribute in '{1}'. - - - - - Looks up a localized string similar to Duplicate constraint '{0}' for type parameter '{1}'. - - - - - Looks up a localized string similar to The switch statement contains multiple cases with the label value '{0}'. - - - - - Looks up a localized string similar to A constraint clause has already been specified for type parameter '{0}'. All of the constraints for a type parameter must be specified in a single where clause.. - - - - - Looks up a localized string similar to Duplicate user-defined conversion in type '{0}'. - - - - - Looks up a localized string similar to The parameter name '{0}' conflicts with an automatically-generated parameter name. - - - - - Looks up a localized string similar to Multiple assemblies with equivalent identity have been imported: '{0}' and '{1}'. Remove one of the duplicate references.. - - - - - Looks up a localized string similar to An assembly with the same simple name '{0}' has already been imported. Try removing one of the references (e.g. '{1}') or sign them to enable side-by-side.. - - - - - Looks up a localized string similar to '{0}' is already listed in interface list. - - - - - Looks up a localized string similar to The label '{0}' is a duplicate. - - - - - Looks up a localized string similar to Duplicate '{0}' modifier. - - - - - Looks up a localized string similar to Named argument '{0}' cannot be specified multiple times. - - - - - Looks up a localized string similar to '{0}' duplicate named attribute argument. - - - - - Looks up a localized string similar to The type '{0}' already contains a definition for '{1}'. - - - - - Looks up a localized string similar to The namespace '{1}' already contains a definition for '{0}'. - - - - - Looks up a localized string similar to The parameter name '{0}' is a duplicate. - - - - - Looks up a localized string similar to Cannot specify accessibility modifiers for both accessors of the property or indexer '{0}'. - - - - - Looks up a localized string similar to '{0}' duplicate TypeForwardedToAttribute. - - - - - Looks up a localized string similar to Duplicate type parameter '{0}'. - - - - - Looks up a localized string similar to A parameter can only have one '{0}' modifier. - - - - - Looks up a localized string similar to Cannot define a class or member that utilizes 'dynamic' because the compiler required type '{0}' cannot be found. Are you missing a reference?. - - - - - Looks up a localized string similar to One or more types required to compile a dynamic expression cannot be found. Are you missing a reference?. - - - - - Looks up a localized string similar to Constraint cannot be the dynamic type. - - - - - Looks up a localized string similar to Empty character literal. - - - - - Looks up a localized string similar to Element initializer cannot be empty. - - - - - Looks up a localized string similar to Empty format specifier.. - - - - - Looks up a localized string similar to Expression expected after yield return. - - - - - Looks up a localized string similar to Cannot continue since the edit includes a reference to an embedded type: '{0}'.. - - - - - Looks up a localized string similar to Cannot emit debug information for a source text without encoding.. - - - - - Looks up a localized string similar to Member '{0}' added during the current debug session can only be accessed from within its declaring assembly '{1}'.. - - - - - Looks up a localized string similar to #endif directive expected. - - - - - Looks up a localized string similar to Single-line comment or end-of-line expected. - - - - - Looks up a localized string similar to #endregion directive expected. - - - - - Looks up a localized string similar to '{0}': the enumerator value is too large to fit in its type. - - - - - Looks up a localized string similar to Enums cannot contain explicit parameterless constructors. - - - - - Looks up a localized string similar to Type or namespace definition, or end-of-file expected. - - - - - Looks up a localized string similar to Error building Win32 resources -- {0}. - - - - - Looks up a localized string similar to #error: '{0}'. - - - - - Looks up a localized string similar to There is an error in a referenced assembly '{0}'.. - - - - - Looks up a localized string similar to A '{0}' character may only be escaped by doubling '{0}{0}' in an interpolated string.. - - - - - Looks up a localized string similar to '{0}': event property must have both add and remove accessors. - - - - - Looks up a localized string similar to '{0}': event must be of a delegate type. - - - - - Looks up a localized string similar to An event in an interface cannot have add or remove accessors. - - - - - Looks up a localized string similar to Expected contextual keyword 'by'. - - - - - Looks up a localized string similar to Expected contextual keyword 'equals'. - - - - - Looks up a localized string similar to Expected contextual keyword 'on'. - - - - - Looks up a localized string similar to Expected catch or finally. - - - - - Looks up a localized string similar to Quoted file name expected. - - - - - Looks up a localized string similar to A query body must end with a select clause or a group clause. - - - - - Looks up a localized string similar to Expected a script (.csx file) but none specified. - - - - - Looks up a localized string similar to Keyword, identifier, or string expected after verbatim specifier: @. - - - - - Looks up a localized string similar to Do not use 'System.Runtime.CompilerServices.DynamicAttribute'. Use the 'dynamic' keyword instead.. - - - - - Looks up a localized string similar to An explicit interface implementation of an event must use event accessor syntax. - - - - - Looks up a localized string similar to Do not use 'System.Runtime.CompilerServices.ExtensionAttribute'. Use the 'this' keyword instead.. - - - - - Looks up a localized string similar to Cannot inherit interface '{0}' with the specified type parameters because it causes method '{1}' to contain overloads which differ only on ref and out. - - - - - Looks up a localized string similar to '{0}' should not have a params parameter since '{1}' does not. - - - - - Looks up a localized string similar to '{0}': explicit interface declaration can only be declared in a class or struct. - - - - - Looks up a localized string similar to '{0}' in explicit interface declaration is not an interface. - - - - - Looks up a localized string similar to '{0}': Auto-implemented properties cannot be used inside a type marked with StructLayout(LayoutKind.Explicit). - - - - - Looks up a localized string similar to '{0}' explicit method implementation cannot implement '{1}' because it is an accessor. - - - - - Looks up a localized string similar to Do not use 'System.ParamArrayAttribute'. Use the 'params' keyword instead.. - - - - - Looks up a localized string similar to '{0}' adds an accessor not found in interface member '{1}'. - - - - - Looks up a localized string similar to Explicit interface implementation '{0}' is missing accessor '{1}'. - - - - - Looks up a localized string similar to Type '{0}' exported from module '{1}' conflicts with type declared in primary module of this assembly.. - - - - - Looks up a localized string similar to Type '{0}' exported from module '{1}' conflicts with type '{2}' exported from module '{3}'.. - - - - - Looks up a localized string similar to Expected expression. - - - - - Looks up a localized string similar to Expression does not have a name.. - - - - - Looks up a localized string similar to Expression or declaration statement expected.. - - - - - Looks up a localized string similar to An expression tree may not contain an anonymous method expression. - - - - - Looks up a localized string similar to An expression tree may not contain an assignment operator. - - - - - Looks up a localized string similar to An expression tree lambda may not contain a coalescing operator with a null literal left-hand side. - - - - - Looks up a localized string similar to An expression tree may not contain a base access. - - - - - Looks up a localized string similar to An expression tree may not contain a dynamic operation. - - - - - Looks up a localized string similar to An expression tree may not contain an indexed property. - - - - - Looks up a localized string similar to An expression tree may not contain a multidimensional array initializer. - - - - - Looks up a localized string similar to An expression tree may not contain a named argument specification. - - - - - Looks up a localized string similar to An expression tree may not contain a call or invocation that uses optional arguments. - - - - - Looks up a localized string similar to An expression tree may not contain an unsafe pointer operation. - - - - - Looks up a localized string similar to Cannot convert lambda to an expression tree whose type argument '{0}' is not a delegate type. - - - - - Looks up a localized string similar to Cannot define a new extension method because the compiler required type '{0}' cannot be found. Are you missing a reference to System.Core.dll?. - - - - - Looks up a localized string similar to An extension Add method is not supported for a collection initializer in an expression lambda.. - - - - - Looks up a localized string similar to Extension methods must be defined in a top level static class; {0} is a nested class. - - - - - Looks up a localized string similar to An extern alias declaration must precede all other elements defined in the namespace. - - - - - Looks up a localized string similar to 'extern alias' is not valid in this context. - - - - - Looks up a localized string similar to '{0}' cannot be extern and declare a body. - - - - - Looks up a localized string similar to '{0}' cannot be extern and have a constructor initializer. - - - - - Looks up a localized string similar to Feature '{0}' is only available in 'experimental' language version.. - - - - - Looks up a localized string similar to Feature '{0}' is not available in C# 1. Please use language version {1} or greater.. - - - - - Looks up a localized string similar to Feature '{0}' is not available in C# 2. Please use language version {1} or greater.. - - - - - Looks up a localized string similar to Feature '{0}' is not available in C# 3. Please use language version {1} or greater.. - - - - - Looks up a localized string similar to Feature '{0}' is not available in C# 4. Please use language version {1} or greater.. - - - - - Looks up a localized string similar to Feature '{0}' is not available in C# 5. Please use language version {1} or greater.. - - - - - Looks up a localized string similar to Feature '{0}' is not available in C# 6. Please use language version {1} or greater.. - - - - - Looks up a localized string similar to An expression tree may not contain '{0}'. - - - - - Looks up a localized string similar to Field or property cannot be of type '{0}'. - - - - - Looks up a localized string similar to Field cannot have void type. - - - - - Looks up a localized string similar to The field has multiple distinct constant values.. - - - - - Looks up a localized string similar to '{0}': cannot have instance property or field initializers in structs. - - - - - Looks up a localized string similar to A field initializer cannot reference the non-static field, method, or property '{0}'. - - - - - Looks up a localized string similar to Source file '{0}' could not be found.. - - - - - Looks up a localized string similar to You cannot use fixed size buffers contained in unfixed expressions. Try using the fixed statement.. - - - - - Looks up a localized string similar to A fixed buffer may only have one dimension.. - - - - - Looks up a localized string similar to A fixed size buffer field must have the array size specifier after the field name. - - - - - Looks up a localized string similar to Cannot use fixed local '{0}' inside an anonymous method, lambda expression, or query expression. - - - - - Looks up a localized string similar to You must provide an initializer in a fixed or using statement declaration. - - - - - Looks up a localized string similar to You can only take the address of an unfixed expression inside of a fixed statement initializer. - - - - - Looks up a localized string similar to Fixed size buffers can only be accessed through locals or fields. - - - - - Looks up a localized string similar to Fixed size buffer fields may only be members of structs. - - - - - Looks up a localized string similar to You cannot use the fixed statement to take the address of an already fixed expression. - - - - - Looks up a localized string similar to Fixed size buffer of length {0} and type '{1}' is too big. - - - - - Looks up a localized string similar to Floating-point constant is outside the range of type '{0}'. - - - - - Looks up a localized string similar to foreach statement cannot operate on variables of type '{0}' because '{0}' does not contain a public definition for '{1}'. - - - - - Looks up a localized string similar to Forwarded type '{0}' conflicts with type declared in primary module of this assembly.. - - - - - Looks up a localized string similar to Type '{0}' forwarded to assembly '{1}' conflicts with type '{2}' exported from module '{3}'.. - - - - - Looks up a localized string similar to Type '{0}' is defined in this assembly, but a type forwarder is specified for it. - - - - - Looks up a localized string similar to Cannot forward type '{0}' because it is a nested type of '{1}'. - - - - - Looks up a localized string similar to Type '{0}' forwarded to assembly '{1}' conflicts with type '{2}' forwarded to assembly '{3}'.. - - - - - Looks up a localized string similar to Friend assembly reference '{0}' is invalid. InternalsVisibleTo declarations cannot have a version, culture, public key token, or processor architecture specified.. - - - - - Looks up a localized string similar to Friend assembly reference '{0}' is invalid. Strong-name signed assemblies must specify a public key in their InternalsVisibleTo declarations.. - - - - - Looks up a localized string similar to Friend access was granted by '{0}', but the public key of the output assembly does not match that specified by the attribute in the granting assembly.. - - - - - Looks up a localized string similar to Friend access was granted by '{0}', but the strong name signing state of the output assembly does not match that of the granting assembly.. - - - - - Looks up a localized string similar to '{0}': static types cannot be used as type arguments. - - - - - Looks up a localized string similar to The type '{3}' cannot be used as type parameter '{2}' in the generic type or method '{0}'. The nullable type '{3}' does not satisfy the constraint of '{1}'.. - - - - - Looks up a localized string similar to The type '{3}' cannot be used as type parameter '{2}' in the generic type or method '{0}'. The nullable type '{3}' does not satisfy the constraint of '{1}'. Nullable types can not satisfy any interface constraints.. - - - - - Looks up a localized string similar to The type '{3}' cannot be used as type parameter '{2}' in the generic type or method '{0}'. There is no implicit reference conversion from '{3}' to '{1}'.. - - - - - Looks up a localized string similar to The type '{3}' cannot be used as type parameter '{2}' in the generic type or method '{0}'. There is no boxing conversion or type parameter conversion from '{3}' to '{1}'.. - - - - - Looks up a localized string similar to The type '{3}' cannot be used as type parameter '{2}' in the generic type or method '{0}'. There is no boxing conversion from '{3}' to '{1}'.. - - - - - Looks up a localized string similar to A generic type cannot derive from '{0}' because it is an attribute class. - - - - - Looks up a localized string similar to Type '{0}' from assembly '{1}' cannot be used across assembly boundaries because it has a generic type parameter that is an embedded interop type.. - - - - - Looks up a localized string similar to Type '{0}' cannot be embedded because it has a generic argument. Consider setting the 'Embed Interop Types' property to false.. - - - - - Looks up a localized string similar to A get or set accessor expected. - - - - - Looks up a localized string similar to Assembly and module attributes are not allowed in this context. - - - - - Looks up a localized string similar to Assembly and module attributes must precede all other elements defined in a file except using clauses and extern alias declarations. - - - - - Looks up a localized string similar to Member definition, statement, or end-of-file expected. - - - - - Looks up a localized string similar to You cannot redefine the global extern alias. - - - - - Looks up a localized string similar to The type or namespace name '{0}' could not be found in the global namespace (are you missing an assembly reference?). - - - - - Looks up a localized string similar to The type name '{0}' could not be found in the global namespace. This type has been forwarded to assembly '{1}' Consider adding a reference to that assembly.. - - - - - Looks up a localized string similar to Expressions and statements can only occur in a method body. - - - - - Looks up a localized string similar to The non-generic {1} '{0}' cannot be used with type arguments. - - - - - Looks up a localized string similar to '{0}' hides inherited abstract member '{1}'. - - - - - Looks up a localized string similar to Identifier expected. - - - - - Looks up a localized string similar to Identifier expected; '{1}' is a keyword. - - - - - Looks up a localized string similar to User-defined operator cannot take an object of the enclosing type and convert to an object of the enclosing type. - - - - - Looks up a localized string similar to An __arglist expression may only appear inside of a call or new expression. - - - - - Looks up a localized string similar to Unrecognized escape sequence. - - - - - Looks up a localized string similar to Fixed size buffer type must be one of the following: bool, byte, short, int, long, char, sbyte, ushort, uint, ulong, float or double. - - - - - Looks up a localized string similar to Unsafe code may not appear in iterators. - - - - - Looks up a localized string similar to params is not valid in this context. - - - - - Looks up a localized string similar to ref and out are not valid in this context. - - - - - Looks up a localized string similar to Only assignment, call, increment, decrement, and new object expressions can be used as a statement. - - - - - Looks up a localized string similar to Unsafe code may only appear if compiling with /unsafe. - - - - - Looks up a localized string similar to __arglist is not valid in this context. - - - - - Looks up a localized string similar to Invalid variance modifier. Only interface and delegate type parameters can be specified as variant.. - - - - - Looks up a localized string similar to The constraints for type parameter '{0}' of method '{1}' must match the constraints for type parameter '{2}' of interface method '{3}'. Consider using an explicit interface implementation instead.. - - - - - Looks up a localized string similar to No best type found for implicitly-typed array. - - - - - Looks up a localized string similar to Implicitly-typed local variables cannot be fixed. - - - - - Looks up a localized string similar to Cannot initialize an implicitly-typed variable with an array initializer. - - - - - Looks up a localized string similar to Cannot assign {0} to an implicitly-typed variable. - - - - - Looks up a localized string similar to Implicitly-typed variables cannot be constant. - - - - - Looks up a localized string similar to Implicitly-typed variables cannot have multiple declarators. - - - - - Looks up a localized string similar to Implicitly-typed variables must be initialized. - - - - - Looks up a localized string similar to Imported type '{0}' is invalid. It contains a circular base class dependency.. - - - - - Looks up a localized string similar to The referenced file '{0}' is not an assembly. - - - - - Looks up a localized string similar to The property or indexer '{0}' cannot be used in this context because the get accessor is inaccessible. - - - - - Looks up a localized string similar to The property or indexer '{0}' cannot be used in this context because the set accessor is inaccessible. - - - - - Looks up a localized string similar to An out parameter cannot have the In attribute. - - - - - Looks up a localized string similar to Two indexers have different names; the IndexerName attribute must be used with the same name on every indexer within a type. - - - - - Looks up a localized string similar to Inconsistent lambda parameter usage; parameter types must be all explicit or all implicit. - - - - - Looks up a localized string similar to The operand of an increment or decrement operator must be a variable, property or indexer. - - - - - Looks up a localized string similar to Indexed property '{0}' must have all arguments optional. - - - - - Looks up a localized string similar to Indexed property '{0}' has non-optional arguments which must be provided. - - - - - Looks up a localized string similar to Indexers cannot have void type. - - - - - Looks up a localized string similar to '{0}': cannot declare indexers in a static class. - - - - - Looks up a localized string similar to Indexers must have at least one parameter. - - - - - Looks up a localized string similar to Constructor '{0}' cannot call itself through another constructor. - - - - - Looks up a localized string similar to 'in' expected. - - - - - Looks up a localized string similar to The best overloaded method match '{0}' for the collection initializer element cannot be used. Collection initializer 'Add' methods cannot have ref or out parameters.. - - - - - Looks up a localized string similar to The best overloaded method match for '{0}' has wrong signature for the initializer element. The initializable Add must be an accessible instance method.. - - - - - Looks up a localized string similar to Structs without explicit constructors cannot contain members with initializers.. - - - - - Looks up a localized string similar to Only auto-implemented properties can have initializers.. - - - - - Looks up a localized string similar to '{0}': cannot declare instance members in a static class. - - - - - Looks up a localized string similar to Cannot create an instance of the static class '{0}'. - - - - - Looks up a localized string similar to An expression is too long or complex to compile. - - - - - Looks up a localized string similar to Division by constant zero. - - - - - Looks up a localized string similar to Type byte, sbyte, short, ushort, int, uint, long, or ulong expected. - - - - - Looks up a localized string similar to A value of an integral type expected. - - - - - Looks up a localized string similar to '{0}': event in interface cannot have initializer. - - - - - Looks up a localized string similar to Conditional member '{0}' cannot implement interface member '{1}' in type '{2}'. - - - - - Looks up a localized string similar to '{0}': interface members cannot have a definition. - - - - - Looks up a localized string similar to '{0}' in explicit interface declaration is not a member of interface. - - - - - Looks up a localized string similar to '{0}': interfaces cannot declare types. - - - - - Looks up a localized string similar to Interfaces cannot contain constructors. - - - - - Looks up a localized string similar to Interfaces cannot contain fields. - - - - - Looks up a localized string similar to Interfaces cannot contain operators. - - - - - Looks up a localized string similar to Embedded interop method '{0}' contains a body.. - - - - - Looks up a localized string similar to Embedded interop struct '{0}' can contain only public instance fields.. - - - - - Looks up a localized string similar to Interop type '{0}' cannot be embedded because it is missing the required '{1}' attribute.. - - - - - Looks up a localized string similar to Cannot embed interop type '{0}' found in both assembly '{1}' and '{2}'. Consider setting the 'Embed Interop Types' property to false.. - - - - - Looks up a localized string similar to Integral constant is too large. - - - - - Looks up a localized string similar to Cannot take the address of the given expression. - - - - - Looks up a localized string similar to Invalid anonymous type member declarator. Anonymous type members must be declared with a member assignment, simple name or member access.. - - - - - Looks up a localized string similar to Invalid rank specifier: expected ',' or ']'. - - - - - Looks up a localized string similar to Assembly culture strings may not contain embedded NUL characters.. - - - - - Looks up a localized string similar to Executables cannot be satellite assemblies; culture should always be empty. - - - - - Looks up a localized string similar to Assembly reference '{0}' is invalid and cannot be resolved. - - - - - Looks up a localized string similar to Invalid value for argument to '{0}' attribute. - - - - - Looks up a localized string similar to '{0}' is of type '{1}'. The type specified in a constant declaration must be sbyte, byte, short, ushort, int, uint, long, ulong, char, float, double, decimal, bool, string, an enum-type, or a reference-type.. - - - - - Looks up a localized string similar to Invalid debug information format: {0}. - - - - - Looks up a localized string similar to Delegate '{0}' has no invoke method or an invoke method with a return type or parameter types that are not supported.. - - - - - Looks up a localized string similar to Expression must be implicitly convertible to Boolean or its type '{0}' must define operator '{1}'.. - - - - - Looks up a localized string similar to Invalid expression term '{0}'. - - - - - Looks up a localized string similar to Invalid file section alignment '{0}'. - - - - - Looks up a localized string similar to Fixed size buffers must have a length greater than zero. - - - - - Looks up a localized string similar to Command-line syntax error: Invalid Guid format '{0}' for option '{1}'. - - - - - Looks up a localized string similar to Invalid type specified as an argument for TypeForwardedTo attribute. - - - - - Looks up a localized string similar to A goto case is only valid inside a switch statement. - - - - - Looks up a localized string similar to Invalid initializer member declarator. - - - - - Looks up a localized string similar to The line number specified for #line directive is missing or invalid. - - - - - Looks up a localized string similar to Invalid token '{0}' in class, struct, or interface member declaration. - - - - - Looks up a localized string similar to Invalid value for named attribute argument '{0}'. - - - - - Looks up a localized string similar to Invalid number. - - - - - Looks up a localized string similar to Invalid output name: {0}. - - - - - Looks up a localized string similar to The pathmap option was incorrectly formatted. - - - - - Looks up a localized string similar to Invalid preprocessor expression. - - - - - Looks up a localized string similar to The accessibility modifier of the '{0}' accessor must be more restrictive than the property or indexer '{1}'. - - - - - Looks up a localized string similar to Type of conditional expression cannot be determined because there is no implicit conversion between '{0}' and '{1}'. - - - - - Looks up a localized string similar to Invalid signature public key specified in AssemblySignatureKeyAttribute.. - - - - - Looks up a localized string similar to '{0}' is not a valid format specifier. - - - - - Looks up a localized string similar to Invalid version {0} for /subsystemversion. The version must be 6.02 or greater for ARM or AppContainerExe, and 4.00 or greater otherwise. - - - - - Looks up a localized string similar to The specified version string does not conform to the required format - major[.minor[.build[.revision]]]. - - - - - Looks up a localized string similar to The specified version string does not conform to the required format - major.minor.build.revision. - - - - - Looks up a localized string similar to Yield statements may not appear at the top level in interactive code.. - - - - - Looks up a localized string similar to No such label '{0}' within the scope of the goto statement. - - - - - Looks up a localized string similar to The label '{0}' shadows another label by the same name in a contained scope. - - - - - Looks up a localized string similar to The first operand of an 'is' or 'as' operator may not be a lambda expression, anonymous method, or method group.. - - - - - Looks up a localized string similar to { expected. - - - - - Looks up a localized string similar to 'id#' syntax is no longer supported. Use '$id' instead.. - - - - - Looks up a localized string similar to Linked netmodule metadata must provide a full PE image: '{0}'.. - - - - - Looks up a localized string similar to Literal of type double cannot be implicitly converted to type '{1}'; use an '{0}' suffix to create a literal of this type. - - - - - Looks up a localized string similar to #load is only allowed in scripts. - - - - - Looks up a localized string similar to Local '{0}' or its members cannot have their address taken and be used inside an anonymous method or lambda expression. - - - - - Looks up a localized string similar to A local variable named '{0}' is already defined in this scope. - - - - - Looks up a localized string similar to A local or parameter named '{0}' cannot be declared in this scope because that name is used in an enclosing local scope to define a local or parameter. - - - - - Looks up a localized string similar to '{0}': a parameter or local variable cannot have the same name as a method type parameter. - - - - - Looks up a localized string similar to Embedding the interop type '{0}' from assembly '{1}' causes a name clash in the current assembly. Consider setting the 'Embed Interop Types' property to false.. - - - - - Looks up a localized string similar to '{0}' is not a reference type as required by the lock statement. - - - - - Looks up a localized string similar to Cannot do member lookup in '{0}' because it is a type parameter. - - - - - Looks up a localized string similar to '{0}': an entry point cannot be marked with the 'async' modifier. - - - - - Looks up a localized string similar to Cannot use '{0}' for Main method because it is imported. - - - - - Looks up a localized string similar to '{0}' specified for Main method must be a valid non-generic class or struct. - - - - - Looks up a localized string similar to Could not find '{0}' specified for Main method. - - - - - Looks up a localized string similar to Cannot take the address of, get the size of, or declare a pointer to a managed type ('{0}'). - - - - - Looks up a localized string similar to Unmanaged type '{0}' not valid for fields.. - - - - - Looks up a localized string similar to Unmanaged type '{0}' is only valid for fields.. - - - - - Looks up a localized string similar to Type '{1}' already defines a member called '{0}' with the same parameter types. - - - - - Looks up a localized string similar to Duplicate initialization of member '{0}'. - - - - - Looks up a localized string similar to Member '{0}' cannot be initialized. It is not a field or property.. - - - - - Looks up a localized string similar to '{0}': member names cannot be the same as their enclosing type. - - - - - Looks up a localized string similar to Method must have a return type. - - - - - Looks up a localized string similar to Type '{1}' already reserves a member called '{0}' with the same parameter types. - - - - - Looks up a localized string similar to An expression tree lambda may not contain a method group. - - - - - Looks up a localized string similar to Name '{0}' exceeds the maximum length allowed in metadata.. - - - - - Looks up a localized string similar to Metadata references are not supported.. - - - - - Looks up a localized string similar to No overload for '{0}' matches delegate '{1}'. - - - - - Looks up a localized string similar to Cannot convert method group '{0}' to non-delegate type '{1}'. Did you intend to invoke the method?. - - - - - Looks up a localized string similar to Cannot make reference to variable of type '{0}'. - - - - - Looks up a localized string similar to Method '{0}' cannot implement interface accessor '{1}' for type '{2}'. Use an explicit interface implementation.. - - - - - Looks up a localized string similar to Method name expected. - - - - - Looks up a localized string similar to Method or delegate cannot return type '{0}'. - - - - - Looks up a localized string similar to Argument missing. - - - - - Looks up a localized string similar to Array creation must have array size or array initializer. - - - - - Looks up a localized string similar to The managed coclass wrapper class '{0}' for interface '{1}' cannot be found (are you missing an assembly reference?). - - - - - Looks up a localized string similar to The /pdb option requires that the /debug option also be used. - - - - - Looks up a localized string similar to Command-line syntax error: Missing Guid for option '{1}'. - - - - - Looks up a localized string similar to Source interface '{0}' is missing method '{1}' which is required to embed event '{2}'.. - - - - - Looks up a localized string similar to Reference to '{0}' netmodule missing.. - - - - - Looks up a localized string similar to Missing partial modifier on declaration of type '{0}'; another partial declaration of this type exists. - - - - - Looks up a localized string similar to Quoted file name, single-line comment or end-of-line expected. - - - - - Looks up a localized string similar to Missing compiler required member '{0}.{1}'. - - - - - Looks up a localized string similar to Interface '{0}' has an invalid source interface which is required to embed event '{1}'.. - - - - - Looks up a localized string similar to '{0}': instance field types marked with StructLayout(LayoutKind.Explicit) must have a FieldOffset attribute. - - - - - Looks up a localized string similar to Reference to type '{0}' claims it is defined in '{1}', but it could not be found. - - - - - Looks up a localized string similar to Reference to type '{0}' claims it is defined in this assembly, but it is not defined in source or any added modules. - - - - - Looks up a localized string similar to '{0}' cannot implement '{1}' because '{2}' is a Windows Runtime event and '{3}' is a regular .NET event.. - - - - - Looks up a localized string similar to Failed to emit module '{0}'.. - - - - - Looks up a localized string similar to A parameter cannot have all the specified modifiers; there are too many modifiers on the parameter. - - - - - Looks up a localized string similar to Program has more than one entry point defined. Compile with /main to specify the type that contains the entry point.. - - - - - Looks up a localized string similar to foreach statement cannot operate on variables of type '{0}' because it implements multiple instantiations of '{1}'; try casting to a specific interface instantiation. - - - - - Looks up a localized string similar to Cannot use more than one type in a for, using, fixed, or declaration statement. - - - - - Looks up a localized string similar to In order for '{0}' to be applicable as a short circuit operator, its declaring type '{1}' must define operator true and operator false. - - - - - Looks up a localized string similar to Compilation options '{0}' and '{1}' can't both be specified at the same time.. - - - - - Looks up a localized string similar to Named attribute argument expected. - - - - - Looks up a localized string similar to An array access may not have a named argument specifier. - - - - - Looks up a localized string similar to Named argument specifications must appear after all fixed arguments have been specified. - - - - - Looks up a localized string similar to Named argument '{0}' specifies a parameter for which a positional argument has already been given. - - - - - Looks up a localized string similar to The name '{0}' does not exist in the current context. - - - - - Looks up a localized string similar to The name '{0}' does not exist in the current context (are you missing a reference to assembly '{1}'?). - - - - - Looks up a localized string similar to Extension method groups are not allowed as an argument to 'nameof'.. - - - - - Looks up a localized string similar to Type parameters are not allowed on a method group as an argument to 'nameof'.. - - - - - Looks up a localized string similar to Cannot declare namespace in script code. - - - - - Looks up a localized string similar to A namespace cannot directly contain members such as fields or methods. - - - - - Looks up a localized string similar to Cannot create an array with a negative size. - - - - - Looks up a localized string similar to Cannot use a negative size with stackalloc. - - - - - Looks up a localized string similar to Module name '{0}' stored in '{1}' must match its filename.. - - - - - Looks up a localized string similar to Module '{0}' is already defined in this assembly. Each module must have a unique filename.. - - - - - Looks up a localized string similar to The new() constraint must be the last constraint specified. - - - - - Looks up a localized string similar to The 'new()' constraint cannot be used with the 'struct' constraint. - - - - - Looks up a localized string similar to Interop type '{0}' cannot be embedded. Use the applicable interface instead.. - - - - - Looks up a localized string similar to '{2}' must be a non-abstract type with a public parameterless constructor in order to use it as parameter '{1}' in the generic type or method '{0}'. - - - - - Looks up a localized string similar to Newline in constant. - - - - - Looks up a localized string similar to '{0}': cannot provide arguments when creating an instance of a variable type. - - - - - Looks up a localized string similar to '{0}' is a new virtual member in sealed class '{1}'. - - - - - Looks up a localized string similar to A 'using static' directive cannot be used to declare an alias. - - - - - Looks up a localized string similar to A base class is required for a 'base' reference. - - - - - Looks up a localized string similar to No enclosing loop out of which to break or continue. - - - - - Looks up a localized string similar to Cannot find the interop type that matches the embedded interop type '{0}'. Are you missing an assembly reference?. - - - - - Looks up a localized string similar to The type '{0}' has no constructors defined. - - - - - Looks up a localized string similar to CallerFilePathAttribute cannot be applied because there are no standard conversions from type '{0}' to type '{1}'. - - - - - Looks up a localized string similar to CallerLineNumberAttribute cannot be applied because there are no standard conversions from type '{0}' to type '{1}'. - - - - - Looks up a localized string similar to CallerMemberNameAttribute cannot be applied because there are no standard conversions from type '{0}' to type '{1}'. - - - - - Looks up a localized string similar to A value of type '{0}' cannot be used as a default parameter because there are no standard conversions to type '{1}'. - - - - - Looks up a localized string similar to A value of type '{0}' cannot be used as default parameter for nullable parameter '{1}' because '{0}' is not a simple type. - - - - - Looks up a localized string similar to '{0}': type used in a using statement must be implicitly convertible to 'System.IDisposable'. - - - - - Looks up a localized string similar to There is no argument given that corresponds to the required formal parameter '{0}' of '{1}'. - - - - - Looks up a localized string similar to The call to method '{0}' needs to be dynamically dispatched, but cannot be because it is part of a base access expression. Consider casting the dynamic arguments or eliminating the base access.. - - - - - Looks up a localized string similar to The constructor call needs to be dynamically dispatched, but cannot be because it is part of a constructor initializer. Consider casting the dynamic arguments.. - - - - - Looks up a localized string similar to The indexer access needs to be dynamically dispatched, but cannot be because it is part of a base access expression. Consider casting the dynamic arguments or eliminating the base access.. - - - - - Looks up a localized string similar to Program does not contain a static 'Main' method suitable for an entry point. - - - - - Looks up a localized string similar to Cannot convert type '{0}' to '{1}' via a reference conversion, boxing conversion, unboxing conversion, wrapping conversion, or null type conversion. - - - - - Looks up a localized string similar to Cannot convert type '{0}' to '{1}'. - - - - - Looks up a localized string similar to Missing file specification for '{0}' option. - - - - - Looks up a localized string similar to '{0}': cannot override because '{1}' does not have an overridable get accessor. - - - - - Looks up a localized string similar to Cannot implicitly convert type '{0}' to '{1}'. - - - - - Looks up a localized string similar to Cannot implicitly convert type '{0}' to '{1}'. An explicit conversion exists (are you missing a cast?). - - - - - Looks up a localized string similar to '{0}' does not have a suitable static Main method. - - - - - Looks up a localized string similar to Cannot specify /main if building a module or library. - - - - - Looks up a localized string similar to Metadata file '{0}' could not be found. - - - - - Looks up a localized string similar to Modifiers cannot be placed on event accessor declarations. - - - - - Looks up a localized string similar to Class '{0}' cannot have multiple base classes: '{1}' and '{2}'. - - - - - Looks up a localized string similar to Elements defined in a namespace cannot be explicitly declared as private, protected, or protected internal. - - - - - Looks up a localized string similar to Cannot create an instance of the abstract class or interface '{0}'. - - - - - Looks up a localized string similar to Cannot create an instance of the variable type '{0}' because it does not have the new() constraint. - - - - - Looks up a localized string similar to Type '{0}' in interface list is not an interface. - - - - - Looks up a localized string similar to Non-invocable member '{0}' cannot be used like a method.. - - - - - Looks up a localized string similar to Cannot embed interop types from assembly '{0}' because it is missing the '{1}' attribute.. - - - - - Looks up a localized string similar to Cannot embed interop types from assembly '{0}' because it is missing either the '{1}' attribute or the '{2}' attribute.. - - - - - Looks up a localized string similar to Type '{0}' cannot be embedded because it is a nested type. Consider setting the 'Embed Interop Types' property to false.. - - - - - Looks up a localized string similar to '{0}': cannot override because '{1}' does not have an overridable set accessor. - - - - - Looks up a localized string similar to Source file '{0}' could not be opened -- {1}. - - - - - Looks up a localized string similar to '{0}' does not contain a definition for '{1}'. - - - - - Looks up a localized string similar to '{0}' does not contain a definition for '{1}' and no extension method '{1}' accepting a first argument of type '{0}' could be found (are you missing a using directive or an assembly reference?). - - - - - Looks up a localized string similar to '{0}' does not contain a definition for '{1}' and no extension method '{1}' accepting a first argument of type '{0}' could be found (are you missing a using directive for '{2}'?). - - - - - Looks up a localized string similar to '{0}' is not an attribute class. - - - - - Looks up a localized string similar to The expression being assigned to '{0}' must be constant. - - - - - Looks up a localized string similar to '{0}' is of type '{1}'. A const field of a reference type other than string can only be initialized with null.. - - - - - Looks up a localized string similar to '{0}' is of type '{1}'. A default parameter value of a reference type other than string can only be initialized with null. - - - - - Looks up a localized string similar to This language feature ('{0}') is not yet implemented.. - - - - - Looks up a localized string similar to The type '{0}' is defined in an assembly that is not referenced. You must add a reference to assembly '{1}'.. - - - - - Looks up a localized string similar to The type '{0}' is defined in a module that has not been added. You must add the module '{1}'.. - - - - - Looks up a localized string similar to Keyword 'void' cannot be used in this context. - - - - - Looks up a localized string similar to Invalid parameter type 'void'. - - - - - Looks up a localized string similar to Use of null is not valid in this context. - - - - - Looks up a localized string similar to An expression tree lambda may not contain a null propagating operator.. - - - - - Looks up a localized string similar to '{0}' has no base class and cannot call a base constructor. - - - - - Looks up a localized string similar to The class System.Object cannot have a base class or implement an interface. - - - - - Looks up a localized string similar to Object and collection initializer expressions may not be applied to a delegate creation expression. - - - - - Looks up a localized string similar to Member '{0}' cannot be accessed with an instance reference; qualify it with a type name instead. - - - - - Looks up a localized string similar to An object reference is required for the non-static field, method, or property '{0}'. - - - - - Looks up a localized string similar to A /reference option that declares an extern alias can only have one filename. To specify multiple aliases or filenames, use multiple /reference options.. - - - - - Looks up a localized string similar to Only class types can contain destructors. - - - - - Looks up a localized string similar to End-of-file found, '*/' expected. - - - - - Looks up a localized string similar to Error opening response file '{0}'. - - - - - Looks up a localized string similar to User-defined operators cannot return void. - - - - - Looks up a localized string similar to '{0}': static classes cannot contain user-defined operators. - - - - - Looks up a localized string similar to The operator '{0}' requires a matching operator '{1}' to also be defined. - - - - - Looks up a localized string similar to User-defined operator '{0}' must be declared static and public. - - - - - Looks up a localized string similar to The return type of operator True or False must be bool. - - - - - Looks up a localized string similar to Cannot specify only Out attribute on a ref parameter. Use both In and Out attributes, or neither.. - - - - - Looks up a localized string similar to Outputs without source must have the /out option specified. - - - - - Looks up a localized string similar to Could not write to output file '{0}' -- '{1}'. - - - - - Looks up a localized string similar to '{0}' cannot define overloaded methods that differ only on ref and out. - - - - - Looks up a localized string similar to Cannot define overloaded constructor '{0}' because it differs from another constructor only on ref and out. - - - - - Looks up a localized string similar to Do not override object.Finalize. Instead, provide a destructor.. - - - - - Looks up a localized string similar to '{0}': no suitable method found to override. - - - - - Looks up a localized string similar to A member '{0}' marked as override cannot be marked as new or virtual. - - - - - Looks up a localized string similar to Constraints for override and explicit interface implementation methods are inherited from the base method, so they cannot be specified directly. - - - - - Looks up a localized string similar to Overloadable binary operator expected. - - - - - Looks up a localized string similar to Overloadable operator expected. - - - - - Looks up a localized string similar to Overloadable unary operator expected. - - - - - Looks up a localized string similar to The parameter has multiple distinct default values.. - - - - - Looks up a localized string similar to '{0}': static types cannot be used as parameters. - - - - - Looks up a localized string similar to Parameter not valid for the specified unmanaged type.. - - - - - Looks up a localized string similar to The params parameter cannot be declared as ref or out. - - - - - Looks up a localized string similar to A params parameter must be the last parameter in a formal parameter list. - - - - - Looks up a localized string similar to The params parameter must be a single dimensional array. - - - - - Looks up a localized string similar to The out parameter '{0}' must be assigned to before control leaves the current method. - - - - - Looks up a localized string similar to A partial method cannot have out parameters. - - - - - Looks up a localized string similar to Both partial method declarations must be extension methods or neither may be an extension method. - - - - - Looks up a localized string similar to Partial method declarations of '{0}' have inconsistent type parameter constraints. - - - - - Looks up a localized string similar to Partial methods with only a defining declaration or removed conditional methods cannot be used in expression trees. - - - - - Looks up a localized string similar to A partial method cannot have access modifiers or the virtual, abstract, override, new, sealed, or extern modifiers. - - - - - Looks up a localized string similar to No defining declaration found for implementing declaration of partial method '{0}'. - - - - - Looks up a localized string similar to Partial methods must have a void return type. - - - - - Looks up a localized string similar to A partial method may not explicitly implement an interface method. - - - - - Looks up a localized string similar to A partial method must be declared within a partial class or partial struct. - - - - - Looks up a localized string similar to Only methods, classes, structs, or interfaces may be partial. - - - - - Looks up a localized string similar to A partial method may not have multiple implementing declarations. - - - - - Looks up a localized string similar to A partial method may not have multiple defining declarations. - - - - - Looks up a localized string similar to Both partial method declarations must use a params parameter or neither may use a params parameter. - - - - - Looks up a localized string similar to Both partial method declarations must be static or neither may be static. - - - - - Looks up a localized string similar to Cannot create delegate from method '{0}' because it is a partial method without an implementing declaration. - - - - - Looks up a localized string similar to Both partial method declarations must be unsafe or neither may be unsafe. - - - - - Looks up a localized string similar to The 'partial' modifier can only appear immediately before 'class', 'struct', 'interface', or 'void'. - - - - - Looks up a localized string similar to Partial declarations of '{0}' have conflicting accessibility modifiers. - - - - - Looks up a localized string similar to Partial declarations of '{0}' must not specify different base classes. - - - - - Looks up a localized string similar to Partial declarations of '{0}' must be all classes, all structs, or all interfaces. - - - - - Looks up a localized string similar to Partial declarations of '{0}' have inconsistent constraints for type parameter '{1}'. - - - - - Looks up a localized string similar to Partial declarations of '{0}' must have the same type parameter names in the same order. - - - - - Looks up a localized string similar to Partial declarations of '{0}' must have the same type parameter names and variance modifiers in the same order. - - - - - Looks up a localized string similar to Error reading file '{0}' specified for the named argument '{1}' for PermissionSet attribute: '{2}'. - - - - - Looks up a localized string similar to Unable to resolve file path '{0}' specified for the named argument '{1}' for PermissionSet attribute. - - - - - Looks up a localized string similar to Neither 'is' nor 'as' is valid on pointer types. - - - - - Looks up a localized string similar to Cannot define/undefine preprocessor symbols after first token in file. - - - - - Looks up a localized string similar to Preprocessor directive expected. - - - - - Looks up a localized string similar to Cannot use #load after first token in file. - - - - - Looks up a localized string similar to Cannot use #r after first token in file. - - - - - Looks up a localized string similar to Predefined type '{0}' is not defined or imported. - - - - - Looks up a localized string similar to SecurityAction value '{0}' is invalid for PrincipalPermission attribute. - - - - - Looks up a localized string similar to '{0}': abstract properties cannot have private accessors. - - - - - Looks up a localized string similar to '{0}': accessibility modifiers may not be used on accessors in an interface. - - - - - Looks up a localized string similar to '{0}': property or indexer cannot have void type. - - - - - Looks up a localized string similar to The property or indexer '{0}' cannot be used in this context because it lacks the get accessor. - - - - - Looks up a localized string similar to '{0}': property or indexer must have at least one accessor. - - - - - Looks up a localized string similar to '{0}': static classes cannot contain protected members. - - - - - Looks up a localized string similar to '{0}': new protected member declared in struct. - - - - - Looks up a localized string similar to The * or -> operator must be applied to a pointer. - - - - - Looks up a localized string similar to A pointer must be indexed by only one value. - - - - - Looks up a localized string similar to Error signing output with public key from container '{0}' -- {1}. - - - - - Looks up a localized string similar to Error signing output with public key from file '{0}' -- {1}. - - - - - Looks up a localized string similar to The range variable '{0}' has already been declared. - - - - - Looks up a localized string similar to The name '{0}' is not in scope on the right side of 'equals'. Consider swapping the expressions on either side of 'equals'.. - - - - - Looks up a localized string similar to Multiple implementations of the query pattern were found for source type '{0}'. Ambiguous call to '{1}'.. - - - - - Looks up a localized string similar to Could not find an implementation of the query pattern for source type '{0}'. '{1}' not found.. - - - - - Looks up a localized string similar to Could not find an implementation of the query pattern for source type '{0}'. '{1}' not found. Consider explicitly specifying the type of the range variable '{2}'.. - - - - - Looks up a localized string similar to Could not find an implementation of the query pattern for source type '{0}'. '{1}' not found. Are you missing a reference to 'System.Core.dll' or a using directive for 'System.Linq'?. - - - - - Looks up a localized string similar to The name '{0}' is not in scope on the left side of 'equals'. Consider swapping the expressions on either side of 'equals'.. - - - - - Looks up a localized string similar to Cannot pass the range variable '{0}' as an out or ref parameter. - - - - - Looks up a localized string similar to Cannot assign {0} to a range variable. - - - - - Looks up a localized string similar to The range variable '{0}' conflicts with a previous declaration of '{0}'. - - - - - Looks up a localized string similar to Range variable '{0}' cannot be assigned to -- it is read only. - - - - - Looks up a localized string similar to The range variable '{0}' cannot have the same name as a method type parameter. - - - - - Looks up a localized string similar to The type of the expression in the {0} clause is incorrect. Type inference failed in the call to '{1}'.. - - - - - Looks up a localized string similar to The type of one of the expressions in the {0} clause is incorrect. Type inference failed in the call to '{1}'.. - - - - - Looks up a localized string similar to An expression of type '{0}' is not allowed in a subsequent from clause in a query expression with source type '{1}'. Type inference failed in the call to '{2}'.. - - - - - Looks up a localized string similar to } expected. - - - - - Looks up a localized string similar to Members of readonly field '{0}' of type '{1}' cannot be assigned with an object initializer because it is of a value type. - - - - - Looks up a localized string similar to Constructor '{0}' cannot call itself. - - - - - Looks up a localized string similar to Type of '{0}' cannot be inferred since its initializer directly or indirectly refers to the definition.. - - - - - Looks up a localized string similar to The type '{2}' must be a reference type in order to use it as parameter '{1}' in the generic type or method '{0}'. - - - - - Looks up a localized string similar to #r is only allowed in scripts. - - - - - Looks up a localized string similar to A ref or out argument must be an assignable variable. - - - - - Looks up a localized string similar to A ref or out parameter cannot have a default value. - - - - - Looks up a localized string similar to A property or indexer may not be passed as an out or ref parameter. - - - - - Looks up a localized string similar to A readonly field cannot be passed ref or out (except in a constructor). - - - - - Looks up a localized string similar to Members of readonly field '{0}' cannot be passed ref or out (except in a constructor). - - - - - Looks up a localized string similar to Cannot pass '{0}' as a ref or out argument because it is read-only. - - - - - Looks up a localized string similar to Cannot pass fields of '{0}' as a ref or out argument because it is a '{1}'. - - - - - Looks up a localized string similar to Cannot pass '{0}' as a ref or out argument because it is a '{1}'. - - - - - Looks up a localized string similar to A static readonly field cannot be passed ref or out (except in a static constructor). - - - - - Looks up a localized string similar to Fields of static readonly field '{0}' cannot be passed ref or out (except in a static constructor). - - - - - Looks up a localized string similar to The 'class' or 'struct' constraint must come before any other constraints. - - - - - Looks up a localized string similar to '{0}': cannot specify both a constraint class and the 'class' or 'struct' constraint. - - - - - Looks up a localized string similar to The assembly name '{0}' is reserved and cannot be used as a reference in an interactive session. - - - - - Looks up a localized string similar to The enumerator name '{0}' is reserved and cannot be used. - - - - - Looks up a localized string similar to Each linked resource and module must have a unique filename. Filename '{0}' is specified more than once in this assembly. - - - - - Looks up a localized string similar to Resource identifier '{0}' has already been used in this assembly. - - - - - Looks up a localized string similar to Since '{0}' returns void, a return keyword must not be followed by an object expression. - - - - - Looks up a localized string similar to Anonymous function converted to a void returning delegate cannot return a value. - - - - - Looks up a localized string similar to An object of a type convertible to '{0}' is required. - - - - - Looks up a localized string similar to '{0}': not all code paths return a value. - - - - - Looks up a localized string similar to Cannot return a value from an iterator. Use the yield return statement to return a value, or yield break to end the iteration.. - - - - - Looks up a localized string similar to Cannot modify the return value of '{0}' because it is not a variable. - - - - - Looks up a localized string similar to '{0}': static types cannot be used as return types. - - - - - Looks up a localized string similar to The type '{1}' exists in both '{0}' and '{2}'. - - - - - Looks up a localized string similar to The namespace '{1}' in '{0}' conflicts with the type '{3}' in '{2}'. - - - - - Looks up a localized string similar to The type '{1}' in '{0}' conflicts with the namespace '{3}' in '{2}'. - - - - - Looks up a localized string similar to '{0}' cannot be sealed because it is not an override. - - - - - Looks up a localized string similar to '{0}': a class cannot be both static and sealed. - - - - - Looks up a localized string similar to Security attribute '{0}' has an invalid SecurityAction value '{1}'. - - - - - Looks up a localized string similar to SecurityAction value '{0}' is invalid for security attributes applied to an assembly. - - - - - Looks up a localized string similar to SecurityAction value '{0}' is invalid for security attributes applied to a type or a method. - - - - - Looks up a localized string similar to Security attribute '{0}' is not valid on this declaration type. Security attributes are only valid on assembly, type and method declarations.. - - - - - Looks up a localized string similar to First argument to a security attribute must be a valid SecurityAction. - - - - - Looks up a localized string similar to Security attribute '{0}' cannot be applied to an Async method.. - - - - - Looks up a localized string similar to Async methods are not allowed in an Interface, Class, or Structure which has the 'SecurityCritical' or 'SecuritySafeCritical' attribute.. - - - - - Looks up a localized string similar to ; expected. - - - - - Looks up a localized string similar to { or ; expected. - - - - - Looks up a localized string similar to Key file '{0}' is missing the private key needed for signing. - - - - - Looks up a localized string similar to A single-line comment may not be used in an interpolated string.. - - - - - Looks up a localized string similar to The type or namespace name '{0}' could not be found (are you missing a using directive or an assembly reference?). - - - - - Looks up a localized string similar to The type name '{0}' could not be found. This type has been forwarded to assembly '{1}'. Consider adding a reference to that assembly.. - - - - - Looks up a localized string similar to '{0}' does not have a predefined size, therefore sizeof can only be used in an unsafe context (consider using System.Runtime.InteropServices.Marshal.SizeOf). - - - - - Looks up a localized string similar to Source file references are not supported.. - - - - - Looks up a localized string similar to Instance of type '{0}' cannot be used inside an anonymous function, query expression, iterator block or async method. - - - - - Looks up a localized string similar to Constraint cannot be special class '{0}'. - - - - - Looks up a localized string similar to stackalloc may not be used in a catch or finally block. - - - - - Looks up a localized string similar to A lambda expression with a statement body cannot be converted to an expression tree. - - - - - Looks up a localized string similar to '{1}': cannot derive from static class '{0}'. - - - - - Looks up a localized string similar to '{0}': static classes cannot implement interfaces. - - - - - Looks up a localized string similar to The constant '{0}' cannot be marked static. - - - - - Looks up a localized string similar to '{0}': a static constructor must be parameterless. - - - - - Looks up a localized string similar to '{0}': access modifiers are not allowed on static constructors. - - - - - Looks up a localized string similar to '{0}': static constructor cannot have an explicit 'this' or 'base' constructor call. - - - - - Looks up a localized string similar to Static class '{0}' cannot derive from type '{1}'. Static classes must derive from object.. - - - - - Looks up a localized string similar to The second operand of an 'is' or 'as' operator may not be static type '{0}'. - - - - - Looks up a localized string similar to Static field or property '{0}' cannot be assigned in an object initializer. - - - - - Looks up a localized string similar to A static member '{0}' cannot be marked as override, virtual, or abstract. - - - - - Looks up a localized string similar to Struct member '{0}' of type '{1}' causes a cycle in the struct layout. - - - - - Looks up a localized string similar to The FieldOffset attribute is not allowed on static or const fields. - - - - - Looks up a localized string similar to The FieldOffset attribute can only be placed on members of types marked with the StructLayout(LayoutKind.Explicit). - - - - - Looks up a localized string similar to Structs cannot contain explicit parameterless constructors. - - - - - Looks up a localized string similar to '{0}': structs cannot call base class constructors. - - - - - Looks up a localized string similar to Sub-expression cannot be used in an argument to nameof.. - - - - - Looks up a localized string similar to Control cannot fall out of switch from final case label ('{0}'). - - - - - Looks up a localized string similar to Control cannot fall through from one case label ('{0}') to another. - - - - - Looks up a localized string similar to A switch expression or case label must be a bool, char, string, integral, enum, or corresponding nullable type. - - - - - Looks up a localized string similar to Command-line syntax error: Missing ':<number>' for '{0}' option. - - - - - Looks up a localized string similar to Command-line syntax error: Missing '{0}' for '{1}' option. - - - - - Looks up a localized string similar to 'MethodImplOptions.Synchronized' cannot be applied to an async method. - - - - - Looks up a localized string similar to Syntax error, '{0}' expected. - - - - - Looks up a localized string similar to System.Void cannot be used from C# -- use typeof(void) to get the void type object. - - - - - Looks up a localized string similar to Since '{0}' is an async method that returns 'Task', a return keyword must not be followed by an object expression. Did you intend to return 'Task<T>'?. - - - - - Looks up a localized string similar to Async lambda expression converted to a 'Task' returning delegate cannot return a value. Did you intend to return 'Task<T>'?. - - - - - Looks up a localized string similar to Keyword 'this' is not available in the current context. - - - - - Looks up a localized string similar to Keyword 'this' is not valid in a static property, static method, or static field initializer. - - - - - Looks up a localized string similar to Keyword 'this' or 'base' expected. - - - - - Looks up a localized string similar to Anonymous methods, lambda expressions, and query expressions inside structs cannot access instance members of 'this'. Consider copying 'this' to a local variable outside the anonymous method, lambda expression or query expression and using the local instead.. - - - - - Looks up a localized string similar to Catch clauses cannot follow the general catch clause of a try statement. - - - - - Looks up a localized string similar to Too many characters in character literal. - - - - - Looks up a localized string similar to Only 65534 locals, including those generated by the compiler, are allowed. - - - - - Looks up a localized string similar to A format specifier may not contain trailing whitespace.. - - - - - Looks up a localized string similar to The {1} '{0}' cannot be used with type arguments. - - - - - Looks up a localized string similar to Type expected. - - - - - Looks up a localized string similar to Type parameter declaration must be an identifier not a type. - - - - - Looks up a localized string similar to Cannot convert null to type parameter '{0}' because it could be a non-nullable value type. Consider using 'default({0})' instead.. - - - - - Looks up a localized string similar to Type parameter '{0}' has the same name as the containing type, or method. - - - - - Looks up a localized string similar to The contextual keyword 'var' may only appear within a local variable declaration or in script code. - - - - - Looks up a localized string similar to The contextual keyword 'var' cannot be used in a range variable declaration. - - - - - Looks up a localized string similar to '{1}' does not define type parameter '{0}'. - - - - - Looks up a localized string similar to Field '{0}' must be fully assigned before control is returned to the caller. - - - - - Looks up a localized string similar to Auto-implemented property '{0}' must be fully assigned before control is returned to the caller.. - - - - - Looks up a localized string similar to Cannot modify the result of an unboxing conversion. - - - - - Looks up a localized string similar to Missing close delimiter '}' for interpolated expression started with '{'.. - - - - - Looks up a localized string similar to A '{0}' character must be escaped (by doubling) in an interpolated string.. - - - - - Looks up a localized string similar to Unexpected use of an aliased name. - - - - - Looks up a localized string similar to Type arguments are not allowed in the nameof operator.. - - - - - Looks up a localized string similar to Unexpected character '{0}'. - - - - - Looks up a localized string similar to Unexpected preprocessor directive. - - - - - Looks up a localized string similar to Unexpected use of a generic name. - - - - - Looks up a localized string similar to Semicolon after method or accessor block is not valid. - - - - - Looks up a localized string similar to Unexpected token '{0}'. - - - - - Looks up a localized string similar to Unexpected use of an unbound generic name. - - - - - Looks up a localized string similar to Invalid variance: The type parameter '{1}' must be {3} valid on '{0}'. '{1}' is {2}.. - - - - - Looks up a localized string similar to '{0}' cannot implement both '{1}' and '{2}' because they may unify for some type parameter substitutions. - - - - - Looks up a localized string similar to '{0}' does not implement inherited abstract member '{1}'. - - - - - Looks up a localized string similar to '{0}' does not implement interface member '{1}'. '{2}' is not public.. - - - - - Looks up a localized string similar to '{0}' does not implement interface member '{1}'. - - - - - Looks up a localized string similar to A previous catch clause already catches all exceptions of this or of a super type ('{0}'). - - - - - Looks up a localized string similar to Async methods cannot have unsafe parameters or return types. - - - - - Looks up a localized string similar to Iterators cannot have unsafe parameters or yield types. - - - - - Looks up a localized string similar to Pointers and fixed size buffers may only be used in an unsafe context. - - - - - Looks up a localized string similar to Unsafe type '{0}' cannot be used in object creation. - - - - - Looks up a localized string similar to Transparent identifier member access failed for field '{0}' of '{1}'. Does the data being queried implement the query pattern?. - - - - - Looks up a localized string similar to Unterminated string literal. - - - - - Looks up a localized string similar to Use of unassigned local variable '{0}'. - - - - - Looks up a localized string similar to Use of possibly unassigned field '{0}'. - - - - - Looks up a localized string similar to Use of unassigned out parameter '{0}'. - - - - - Looks up a localized string similar to Use of possibly unassigned auto-implemented property '{0}'. - - - - - Looks up a localized string similar to The 'this' object cannot be used before all of its fields are assigned to. - - - - - Looks up a localized string similar to A using clause must precede all other elements defined in the namespace except extern alias declarations. - - - - - Looks up a localized string similar to The type '{2}' must be a non-nullable value type in order to use it as parameter '{1}' in the generic type or method '{0}'. - - - - - Looks up a localized string similar to Cannot convert null to '{0}' because it is a non-nullable value type. - - - - - Looks up a localized string similar to Syntax error; value expected. - - - - - Looks up a localized string similar to Extension method '{0}' defined on value type '{1}' cannot be used to create delegates. - - - - - Looks up a localized string similar to Members of property '{0}' of type '{1}' cannot be assigned with an object initializer because it is of a value type. - - - - - Looks up a localized string similar to __arglist is not allowed in the parameter list of async methods. - - - - - Looks up a localized string similar to An expression tree lambda may not contain a method with variable arguments. - - - - - Looks up a localized string similar to __arglist is not allowed in the parameter list of iterators. - - - - - Looks up a localized string similar to An __arglist parameter must be the last parameter in a formal parameter list. - - - - - Looks up a localized string similar to Cannot declare a variable of static type '{0}'. - - - - - Looks up a localized string similar to Cannot use local variable '{0}' before it is declared. - - - - - Looks up a localized string similar to Cannot use local variable '{0}' before it is declared. The declaration of the local variable hides the field '{1}'.. - - - - - Looks up a localized string similar to '{0}': virtual or abstract members cannot be private. - - - - - Looks up a localized string similar to The operation in question is undefined on void pointers. - - - - - Looks up a localized string similar to '{0}': a field cannot be both volatile and readonly. - - - - - Looks up a localized string similar to '{0}': a volatile field cannot be of the type '{1}'. - - - - - Looks up a localized string similar to A Windows Runtime event may not be passed as an out or ref parameter.. - - - - - Looks up a localized string similar to The yield statement cannot be used inside an anonymous method or lambda expression. - - - - - Looks up a localized string similar to Cannot use 'yield' in top-level script code. - - - - - Looks up a localized string similar to Algorithm '{0}' is not supported. - - - - - Looks up a localized string similar to Code page '{0}' is invalid or not installed. - - - - - Looks up a localized string similar to Unexpected error writing debug information -- '{0}'. - - - - - Looks up a localized string similar to File name '{0}' is empty, contains invalid characters, has a drive specification without an absolute path, or is too long. - - - - - Looks up a localized string similar to Invalid target type for /target: must specify 'exe', 'winexe', 'library', or 'module'. - - - - - Looks up a localized string similar to Metadata file '{0}' could not be opened -- {1}. - - - - - Looks up a localized string similar to Cannot create short filename '{0}' when a long filename with the same short filename already exists. - - - - - Looks up a localized string similar to Generic parameter is definition when expected to be reference {0}. - - - - - Looks up a localized string similar to Unused extern alias.. - - - - - Looks up a localized string similar to Unused extern alias. - - - - - Looks up a localized string similar to Unnecessary using directive.. - - - - - Looks up a localized string similar to Unnecessary using directive. - - - - - Looks up a localized string similar to anonymous method. - - - - - Looks up a localized string similar to await in catch blocks and finally blocks. - - - - - Looks up a localized string similar to collection. - - - - - Looks up a localized string similar to contravariant. - - - - - Looks up a localized string similar to contravariantly. - - - - - Looks up a localized string similar to covariant. - - - - - Looks up a localized string similar to covariantly. - - - - - Looks up a localized string similar to - Visual C# Compiler Options - - - OUTPUT FILES - - /out:<file> Specify output file name (default: base name of - file with main class or first file) - /target:exe Build a console executable (default) (Short - form: /t:exe) - /target:winexe Build a Windows executable (Short form: - /t:winexe) - /target:library [rest of string was truncated]";. - - - - - Looks up a localized string similar to directory does not exist. - - - - - Looks up a localized string similar to path is too long or invalid. - - - - - Looks up a localized string similar to anonymous methods. - - - - - Looks up a localized string similar to anonymous types. - - - - - Looks up a localized string similar to async function. - - - - - Looks up a localized string similar to automatically implemented properties. - - - - - Looks up a localized string similar to auto property initializer. - - - - - Looks up a localized string similar to collection initializer. - - - - - Looks up a localized string similar to declaration expression. - - - - - Looks up a localized string similar to default operator. - - - - - Looks up a localized string similar to dictionary initializer. - - - - - Looks up a localized string similar to dynamic. - - - - - Looks up a localized string similar to exception filter. - - - - - Looks up a localized string similar to expression-bodied indexer. - - - - - Looks up a localized string similar to expression-bodied method. - - - - - Looks up a localized string similar to expression-bodied property. - - - - - Looks up a localized string similar to extension method. - - - - - Looks up a localized string similar to extern alias. - - - - - Looks up a localized string similar to fixed size buffers. - - - - - Looks up a localized string similar to generics. - - - - - Looks up a localized string similar to namespace alias qualifier. - - - - - Looks up a localized string similar to implicitly typed array. - - - - - Looks up a localized string similar to implicitly typed local variable. - - - - - Looks up a localized string similar to interpolated strings. - - - - - Looks up a localized string similar to iterators. - - - - - Looks up a localized string similar to lambda expression. - - - - - Looks up a localized string similar to module as an attribute target specifier. - - - - - Looks up a localized string similar to named argument. - - - - - Looks up a localized string similar to nameof operator. - - - - - Looks up a localized string similar to nullable types. - - - - - Looks up a localized string similar to null propagating operator. - - - - - Looks up a localized string similar to object initializer. - - - - - Looks up a localized string similar to optional parameter. - - - - - Looks up a localized string similar to partial method. - - - - - Looks up a localized string similar to partial types. - - - - - Looks up a localized string similar to #pragma. - - - - - Looks up a localized string similar to access modifiers on properties. - - - - - Looks up a localized string similar to query expression. - - - - - Looks up a localized string similar to readonly automatically implemented properties. - - - - - Looks up a localized string similar to static classes. - - - - - Looks up a localized string similar to switch on boolean type. - - - - - Looks up a localized string similar to type variance. - - - - - Looks up a localized string similar to using static. - - - - - Looks up a localized string similar to fixed variable. - - - - - Looks up a localized string similar to foreach iteration variable. - - - - - Looks up a localized string similar to <global namespace>. - - - - - Looks up a localized string similar to invariantly. - - - - - Looks up a localized string similar to lambda expression. - - - - - Looks up a localized string similar to LIB environment variable. - - - - - Looks up a localized string similar to /LIB option. - - - - - Looks up a localized string similar to {0} version {1}. - - - - - Looks up a localized string similar to Copyright (C) Microsoft Corporation. All rights reserved.. - - - - - Looks up a localized string similar to method group. - - - - - Looks up a localized string similar to <namespace>. - - - - - Looks up a localized string similar to <null>. - - - - - Looks up a localized string similar to Operation caused a stack overflow.. - - - - - Looks up a localized string similar to <path list>. - - - - - Looks up a localized string similar to /REFERENCEPATH option. - - - - - Looks up a localized string similar to (Location of symbol related to previous error). - - - - - Looks up a localized string similar to (Location of symbol related to previous warning). - - - - - Looks up a localized string similar to using alias. - - - - - Looks up a localized string similar to event. - - - - - Looks up a localized string similar to extern alias. - - - - - Looks up a localized string similar to field. - - - - - Looks up a localized string similar to label. - - - - - Looks up a localized string similar to method. - - - - - Looks up a localized string similar to namespace. - - - - - Looks up a localized string similar to property. - - - - - Looks up a localized string similar to type. - - - - - Looks up a localized string similar to type parameter. - - - - - Looks up a localized string similar to element. - - - - - Looks up a localized string similar to variable. - - - - - Looks up a localized string similar to <text>. - - - - - Looks up a localized string similar to Microsoft (R) Visual C# Compiler. - - - - - Looks up a localized string similar to using variable. - - - - - Looks up a localized string similar to 'experimental'. - - - - - Looks up a localized string similar to Include tag is invalid . - - - - - Looks up a localized string similar to Failed to insert some or all of included XML . - - - - - Looks up a localized string similar to <!-- Badly formed XML comment ignored for member "{0}" -->. - - - - - Looks up a localized string similar to Badly formed XML file "{0}" cannot be included . - - - - - Looks up a localized string similar to Missing file attribute. - - - - - Looks up a localized string similar to Missing path attribute. - - - - - Looks up a localized string similar to No matching elements were found for the following include tag . - - - - - Looks up a localized string similar to Skipping some types in analyzer assembly {0} due to a ReflectionTypeLoadException : {1}.. - - - - - Looks up a localized string similar to Skip loading types in analyzer assembly that fail due to a ReflectionTypeLoadException. - - - - - Looks up a localized string similar to Called GetDeclarationName for a declaration node that can possibly contain multiple variable declarators.. - - - - - Looks up a localized string similar to items: must be non-empty. - - - - - Looks up a localized string similar to Location must be provided in order to provide minimal type qualification.. - - - - - Looks up a localized string similar to LookupOptions has an invalid combination of options. - - - - - Looks up a localized string similar to Must call SetMethodTestData(ConcurrentDictionary) before calling SetMethodTestData(MethodSymbol, ILBuilder). - - - - - Looks up a localized string similar to Name conflict for name {0}. - - - - - Looks up a localized string similar to SearchCriteria is expected.. - - - - - Looks up a localized string similar to Not a C# symbol.. - - - - - Looks up a localized string similar to Position is not within syntax tree with full span {0}. - - - - - Looks up a localized string similar to Position must be within span of the syntax tree.. - - - - - Looks up a localized string similar to separator is expected. - - - - - Looks up a localized string similar to Syntax node to be speculated cannot belong to a syntax tree from the current compilation.. - - - - - Looks up a localized string similar to Submission can have at most one syntax tree.. - - - - - Looks up a localized string similar to Submission can only include script code.. - - - - - Looks up a localized string similar to Syntax node is not within syntax tree. - - - - - Looks up a localized string similar to Syntax tree already present. - - - - - Looks up a localized string similar to SyntaxTree '{0}' resulted from a #load directive and cannot be removed or replaced directly.. - - - - - Looks up a localized string similar to SyntaxTree '{0}' not found to remove. - - - - - Looks up a localized string similar to SyntaxTreeSemanticModel must be provided in order to provide minimal type qualification.. - - - - - Looks up a localized string similar to The stream cannot be read from.. - - - - - Looks up a localized string similar to The stream cannot be written to.. - - - - - Looks up a localized string similar to This method can only be used to create tokens - {0} is not a token kind.. - - - - - Looks up a localized string similar to tree must have a root node with SyntaxKind.CompilationUnit. - - - - - Looks up a localized string similar to tree not part of compilation. - - - - - Looks up a localized string similar to Type argument cannot be null. - - - - - Looks up a localized string similar to Use Roslyn.Compilers.CSharp.Syntax.Literal to create numeric literal tokens.. - - - - - Looks up a localized string similar to Use Roslyn.Compilers.CSharp.Syntax.Literal to create character literal tokens.. - - - - - Looks up a localized string similar to Use Roslyn.Compilers.CSharp.Syntax.Identifier or Roslyn.Compilers.CSharp.Syntax.VerbatimIdentifier to create identifier tokens.. - - - - - Looks up a localized string similar to Alignment value {0} has a magnitude greater than {1} and may result in a large formatted string.. - - - - - Looks up a localized string similar to Alignment value has a magnitude that may result in a large formatted string. - - - - - Looks up a localized string similar to The result of the expression is always 'null' of type '{0}'. - - - - - Looks up a localized string similar to The result of the expression is always 'null'. - - - - - Looks up a localized string similar to Ambiguous reference in cref attribute: '{0}'. Assuming '{1}', but could have also matched other overloads including '{2}'.. - - - - - Looks up a localized string similar to Ambiguous reference in cref attribute. - - - - - Looks up a localized string similar to An instance of analyzer {0} cannot be created from {1} : {2}.. - - - - - Looks up a localized string similar to An analyzer instance cannot be created. - - - - - Looks up a localized string similar to Attribute '{0}' from module '{1}' will be ignored in favor of the instance appearing in source. - - - - - Looks up a localized string similar to Attribute will be ignored in favor of the instance appearing in source. - - - - - Looks up a localized string similar to Possibly incorrect assignment to local '{0}' which is the argument to a using or lock statement. The Dispose call or unlocking will happen on the original value of the local.. - - - - - Looks up a localized string similar to Possibly incorrect assignment to local which is the argument to a using or lock statement. - - - - - Looks up a localized string similar to Assignment made to same variable; did you mean to assign something else?. - - - - - Looks up a localized string similar to Assignment made to same variable. - - - - - Looks up a localized string similar to This async method lacks 'await' operators and will run synchronously. Consider using the 'await' operator to await non-blocking API calls, or 'await Task.Run(...)' to do CPU-bound work on a background thread.. - - - - - Looks up a localized string similar to Async method lacks 'await' operators and will run synchronously. - - - - - Looks up a localized string similar to '{0}' is not a valid attribute location for this declaration. Valid attribute locations for this declaration are '{1}'. All attributes in this block will be ignored.. - - - - - Looks up a localized string similar to Not a valid attribute location for this declaration. - - - - - Looks up a localized string similar to Possible unintended reference comparison; to get a value comparison, cast the left hand side to type '{0}'. - - - - - Looks up a localized string similar to Possible unintended reference comparison; left hand side needs cast. - - - - - Looks up a localized string similar to Possible unintended reference comparison; to get a value comparison, cast the right hand side to type '{0}'. - - - - - Looks up a localized string similar to Possible unintended reference comparison; right hand side needs cast. - - - - - Looks up a localized string similar to Cannot restore warning 'CS{0}' because it was disabled globally. - - - - - Looks up a localized string similar to Cannot restore warning because it was disabled globally. - - - - - Looks up a localized string similar to The language name '{0}' is invalid.. - - - - - Looks up a localized string similar to The language name is invalid. - - - - - Looks up a localized string similar to '{0}' is not a valid warning number. - - - - - Looks up a localized string similar to A number that was passed to the #pragma warning preprocessor directive was not a valid warning number. Verify that the number represents a warning, not an error.. - - - - - Looks up a localized string similar to Not a valid warning number. - - - - - Looks up a localized string similar to XML comment has cref attribute '{0}' that could not be resolved. - - - - - Looks up a localized string similar to XML comment has cref attribute that could not be resolved. - - - - - Looks up a localized string similar to Invalid type for parameter {0} in XML comment cref attribute: '{1}'. - - - - - Looks up a localized string similar to Invalid type for parameter in XML comment cref attribute. - - - - - Looks up a localized string similar to Invalid return type in XML comment cref attribute. - - - - - Looks up a localized string similar to Invalid return type in XML comment cref attribute. - - - - - Looks up a localized string similar to XML comment has syntactically incorrect cref attribute '{0}'. - - - - - Looks up a localized string similar to XML comment has syntactically incorrect cref attribute. - - - - - Looks up a localized string similar to XML comment has cref attribute '{0}' that refers to a type parameter. - - - - - Looks up a localized string similar to XML comment has cref attribute that refers to a type parameter. - - - - - Looks up a localized string similar to Bitwise-or operator used on a sign-extended operand; consider casting to a smaller unsigned type first. - - - - - Looks up a localized string similar to The compiler implicitly widened and sign-extended a variable, and then used the resulting value in a bitwise OR operation. This can result in unexpected behavior.. - - - - - Looks up a localized string similar to Bitwise-or operator used on a sign-extended operand. - - - - - Looks up a localized string similar to Passing '{0}' as ref or out or taking its address may cause a runtime exception because it is a field of a marshal-by-reference class. - - - - - Looks up a localized string similar to Passing a field of a marshal-by-reference class as ref or out or taking its address may cause a runtime exception. - - - - - Looks up a localized string similar to Call System.IDisposable.Dispose() on allocated instance of {0} before all references to it are out of scope.. - - - - - Looks up a localized string similar to Call System.IDisposable.Dispose() on allocated instance before all references to it are out of scope. - - - - - Looks up a localized string similar to Allocated instance of {0} is not disposed along all exception paths. Call System.IDisposable.Dispose() before all references to it are out of scope.. - - - - - Looks up a localized string similar to Allocated instance is not disposed along all exception paths. - - - - - Looks up a localized string similar to Object '{0}' can be disposed more than once.. - - - - - Looks up a localized string similar to Object can be disposed more than once. - - - - - Looks up a localized string similar to The CallerFilePathAttribute applied to parameter '{0}' will have no effect because it applies to a member that is used in contexts that do not allow optional arguments. - - - - - Looks up a localized string similar to The CallerFilePathAttribute will have no effect because it applies to a member that is used in contexts that do not allow optional arguments. - - - - - Looks up a localized string similar to The CallerMemberNameAttribute applied to parameter '{0}' will have no effect. It is overridden by the CallerFilePathAttribute.. - - - - - Looks up a localized string similar to The CallerMemberNameAttribute will have no effect; it is overridden by the CallerFilePathAttribute. - - - - - Looks up a localized string similar to The CallerLineNumberAttribute applied to parameter '{0}' will have no effect because it applies to a member that is used in contexts that do not allow optional arguments. - - - - - Looks up a localized string similar to The CallerLineNumberAttribute will have no effect because it applies to a member that is used in contexts that do not allow optional arguments. - - - - - Looks up a localized string similar to The CallerFilePathAttribute applied to parameter '{0}' will have no effect. It is overridden by the CallerLineNumberAttribute.. - - - - - Looks up a localized string similar to The CallerFilePathAttribute will have no effect; it is overridden by the CallerLineNumberAttribute. - - - - - Looks up a localized string similar to The CallerMemberNameAttribute applied to parameter '{0}' will have no effect. It is overridden by the CallerLineNumberAttribute.. - - - - - Looks up a localized string similar to The CallerMemberNameAttribute will have no effect; it is overridden by the CallerLineNumberAttribute. - - - - - Looks up a localized string similar to The CallerMemberNameAttribute applied to parameter '{0}' will have no effect because it applies to a member that is used in contexts that do not allow optional arguments. - - - - - Looks up a localized string similar to The CallerMemberNameAttribute will have no effect because it applies to a member that is used in contexts that do not allow optional arguments. - - - - - Looks up a localized string similar to Accessing a member on '{0}' may cause a runtime exception because it is a field of a marshal-by-reference class. - - - - - Looks up a localized string similar to This warning occurs when you try to call a method, property, or indexer on a member of a class that derives from MarshalByRefObject, and the member is a value type. Objects that inherit from MarshalByRefObject are typically intended to be marshaled by reference across an application domain. If any code ever attempts to directly access the value-type member of such an object across an application domain, a runtime exception will occur. To resolve the warning, first copy the member into a local variable and c [rest of string was truncated]";. - - - - - Looks up a localized string similar to Accessing a member on a field of a marshal-by-reference class may cause a runtime exception. - - - - - Looks up a localized string similar to Ignoring /win32manifest for module because it only applies to assemblies. - - - - - Looks up a localized string similar to Ignoring /win32manifest for module because it only applies to assemblies. - - - - - Looks up a localized string similar to Arrays as attribute arguments is not CLS-compliant. - - - - - Looks up a localized string similar to Arrays as attribute arguments is not CLS-compliant. - - - - - Looks up a localized string similar to '{0}' cannot be marked as CLS-compliant because the assembly does not have a CLSCompliant attribute. - - - - - Looks up a localized string similar to Type or member cannot be marked as CLS-compliant because the assembly does not have a CLSCompliant attribute. - - - - - Looks up a localized string similar to '{0}' does not need a CLSCompliant attribute because the assembly does not have a CLSCompliant attribute. - - - - - Looks up a localized string similar to Type or member does not need a CLSCompliant attribute because the assembly does not have a CLSCompliant attribute. - - - - - Looks up a localized string similar to Argument type '{0}' is not CLS-compliant. - - - - - Looks up a localized string similar to Argument type is not CLS-compliant. - - - - - Looks up a localized string similar to '{0}' has no accessible constructors which use only CLS-compliant types. - - - - - Looks up a localized string similar to Type has no accessible constructors which use only CLS-compliant types. - - - - - Looks up a localized string similar to '{0}': base type '{1}' is not CLS-compliant. - - - - - Looks up a localized string similar to A base type was marked as not having to be compliant with the Common Language Specification (CLS) in an assembly that was marked as being CLS compliant. Either remove the attribute that specifies the assembly is CLS compliant or remove the attribute that indicates the type is not CLS compliant.. - - - - - Looks up a localized string similar to Base type is not CLS-compliant. - - - - - Looks up a localized string similar to Type of '{0}' is not CLS-compliant. - - - - - Looks up a localized string similar to A public, protected, or protected internal variable must be of a type that is compliant with the Common Language Specification (CLS).. - - - - - Looks up a localized string similar to Type is not CLS-compliant. - - - - - Looks up a localized string similar to Identifier '{0}' is not CLS-compliant. - - - - - Looks up a localized string similar to Identifier is not CLS-compliant. - - - - - Looks up a localized string similar to Identifier '{0}' differing only in case is not CLS-compliant. - - - - - Looks up a localized string similar to Identifier differing only in case is not CLS-compliant. - - - - - Looks up a localized string similar to '{0}' is not CLS-compliant because base interface '{1}' is not CLS-compliant. - - - - - Looks up a localized string similar to Type is not CLS-compliant because base interface is not CLS-compliant. - - - - - Looks up a localized string similar to '{0}': CLS-compliant interfaces must have only CLS-compliant members. - - - - - Looks up a localized string similar to CLS-compliant interfaces must have only CLS-compliant members. - - - - - Looks up a localized string similar to Return type of '{0}' is not CLS-compliant. - - - - - Looks up a localized string similar to Return type is not CLS-compliant. - - - - - Looks up a localized string similar to Constraint type '{0}' is not CLS-compliant. - - - - - Looks up a localized string similar to Constraint type is not CLS-compliant. - - - - - Looks up a localized string similar to '{0}' cannot be marked as CLS-compliant because it is a member of non-CLS-compliant type '{1}'. - - - - - Looks up a localized string similar to Type cannot be marked as CLS-compliant because it is a member of non-CLS-compliant type. - - - - - Looks up a localized string similar to CLSCompliant attribute has no meaning when applied to parameters. Try putting it on the method instead.. - - - - - Looks up a localized string similar to CLSCompliant attribute has no meaning when applied to parameters. - - - - - Looks up a localized string similar to CLS compliance checking will not be performed on '{0}' because it is not visible from outside this assembly. - - - - - Looks up a localized string similar to CLS compliance checking will not be performed because it is not visible from outside this assembly. - - - - - Looks up a localized string similar to CLSCompliant attribute has no meaning when applied to return types. Try putting it on the method instead.. - - - - - Looks up a localized string similar to CLSCompliant attribute has no meaning when applied to return types. - - - - - Looks up a localized string similar to Added modules must be marked with the CLSCompliant attribute to match the assembly. - - - - - Looks up a localized string similar to Added modules must be marked with the CLSCompliant attribute to match the assembly. - - - - - Looks up a localized string similar to '{0}': only CLS-compliant members can be abstract. - - - - - Looks up a localized string similar to Only CLS-compliant members can be abstract. - - - - - Looks up a localized string similar to You must specify the CLSCompliant attribute on the assembly, not the module, to enable CLS compliance checking. - - - - - Looks up a localized string similar to You must specify the CLSCompliant attribute on the assembly, not the module, to enable CLS compliance checking. - - - - - Looks up a localized string similar to You cannot specify the CLSCompliant attribute on a module that differs from the CLSCompliant attribute on the assembly. - - - - - Looks up a localized string similar to You cannot specify the CLSCompliant attribute on a module that differs from the CLSCompliant attribute on the assembly. - - - - - Looks up a localized string similar to Methods with variable arguments are not CLS-compliant. - - - - - Looks up a localized string similar to Methods with variable arguments are not CLS-compliant. - - - - - Looks up a localized string similar to Overloaded method '{0}' differing only in ref or out, or in array rank, is not CLS-compliant. - - - - - Looks up a localized string similar to Overloaded method differing only in ref or out, or in array rank, is not CLS-compliant. - - - - - Looks up a localized string similar to Overloaded method '{0}' differing only by unnamed array types is not CLS-compliant. - - - - - Looks up a localized string similar to This error occurs if you have an overloaded method that takes a jagged array and the only difference between the method signatures is the element type of the array. To avoid this error, consider using a rectangular array rather than a jagged array; use an additional parameter to disambiguate the function call; rename one or more of the overloaded methods; or, if CLS Compliance is not needed, remove the CLSCompliantAttribute attribute.. - - - - - Looks up a localized string similar to Overloaded method differing only by unnamed array types is not CLS-compliant. - - - - - Looks up a localized string similar to CLS-compliant field '{0}' cannot be volatile. - - - - - Looks up a localized string similar to CLS-compliant field cannot be volatile. - - - - - Looks up a localized string similar to Option '{0}' overrides attribute '{1}' given in a source file or added module. - - - - - Looks up a localized string similar to This warning occurs if the assembly attributes AssemblyKeyFileAttribute or AssemblyKeyNameAttribute found in source conflict with the /keyfile or /keycontainer command line option or key file name or key container specified in the Project Properties.. - - - - - Looks up a localized string similar to Option overrides attribute given in a source file or added module. - - - - - Looks up a localized string similar to Comparing with null of type '{0}' always produces 'false'. - - - - - Looks up a localized string similar to Comparing with null of struct type always produces 'false'. - - - - - Looks up a localized string similar to '{0}' interface marked with 'CoClassAttribute' not marked with 'ComImportAttribute'. - - - - - Looks up a localized string similar to Interface marked with 'CoClassAttribute' not marked with 'ComImportAttribute'. - - - - - Looks up a localized string similar to Comparison made to same variable; did you mean to compare something else?. - - - - - Looks up a localized string similar to Comparison made to same variable. - - - - - Looks up a localized string similar to Different checksum values given for '{0}'. - - - - - Looks up a localized string similar to Different #pragma checksum values given. - - - - - Looks up a localized string similar to Referenced assembly '{0}' targets a different processor.. - - - - - Looks up a localized string similar to Referenced assembly targets a different processor. - - - - - Looks up a localized string similar to The fully qualified name for '{0}' is too long for debug information. Compile without '/debug' option.. - - - - - Looks up a localized string similar to Fully qualified name is too long for debug information. - - - - - Looks up a localized string similar to The default value specified for parameter '{0}' will have no effect because it applies to a member that is used in contexts that do not allow optional arguments. - - - - - Looks up a localized string similar to The default value specified will have no effect because it applies to a member that is used in contexts that do not allow optional arguments. - - - - - Looks up a localized string similar to Invalid value for '/define'; '{0}' is not a valid identifier. - - - - - Looks up a localized string similar to Invalid value for '/define'; not a valid identifier. - - - - - Looks up a localized string similar to Delay signing was specified and requires a public key, but no public key was specified. - - - - - Looks up a localized string similar to Delay signing was specified and requires a public key, but no public key was specified. - - - - - Looks up a localized string similar to The best overloaded Add method '{0}' for the collection initializer element is obsolete.. - - - - - Looks up a localized string similar to The best overloaded Add method for the collection initializer element is obsolete. - - - - - Looks up a localized string similar to The best overloaded Add method '{0}' for the collection initializer element is obsolete. {1}. - - - - - Looks up a localized string similar to The best overloaded Add method for the collection initializer element is obsolete. - - - - - Looks up a localized string similar to '{0}' is obsolete. - - - - - Looks up a localized string similar to Type or member is obsolete. - - - - - Looks up a localized string similar to '{0}' is obsolete: '{1}'. - - - - - Looks up a localized string similar to Type or member is obsolete. - - - - - Looks up a localized string similar to Expression will always cause a System.NullReferenceException because the default value of '{0}' is null. - - - - - Looks up a localized string similar to Expression will always cause a System.NullReferenceException because the type's default value is null. - - - - - Looks up a localized string similar to XML comment has a duplicate param tag for '{0}'. - - - - - Looks up a localized string similar to XML comment has a duplicate param tag. - - - - - Looks up a localized string similar to XML comment has a duplicate typeparam tag for '{0}'. - - - - - Looks up a localized string similar to XML comment has a duplicate typeparam tag. - - - - - Looks up a localized string similar to The using directive for '{0}' appeared previously in this namespace. - - - - - Looks up a localized string similar to Using directive appeared previously in this namespace. - - - - - Looks up a localized string similar to The dynamically dispatched call to method '{0}' may fail at runtime because one or more applicable overloads are conditional methods.. - - - - - Looks up a localized string similar to Dynamically dispatched call may fail at runtime because one or more applicable overloads are conditional methods. - - - - - Looks up a localized string similar to Empty switch block. - - - - - Looks up a localized string similar to Empty switch block. - - - - - Looks up a localized string similar to Single-line comment or end-of-line expected. - - - - - Looks up a localized string similar to Single-line comment or end-of-line expected after #pragma directive. - - - - - Looks up a localized string similar to '{0}' defines operator == or operator != but does not override Object.Equals(object o). - - - - - Looks up a localized string similar to Type defines operator == or operator != but does not override Object.Equals(object o). - - - - - Looks up a localized string similar to '{0}' defines operator == or operator != but does not override Object.GetHashCode(). - - - - - Looks up a localized string similar to Type defines operator == or operator != but does not override Object.GetHashCode(). - - - - - Looks up a localized string similar to '{0}' overrides Object.Equals(object o) but does not override Object.GetHashCode(). - - - - - Looks up a localized string similar to Type overrides Object.Equals(object o) but does not override Object.GetHashCode(). - - - - - Looks up a localized string similar to {0}. See also error CS{1}.. - - - - - Looks up a localized string similar to The compiler emits this warning when it overrides an error with a warning. For information about the problem, search for the error code mentioned.. - - - - - Looks up a localized string similar to Warning is overriding an error. - - - - - Looks up a localized string similar to Explicit interface implementation '{0}' matches more than one interface member. Which interface member is actually chosen is implementation-dependent. Consider using a non-explicit implementation instead.. - - - - - Looks up a localized string similar to Explicit interface implementation matches more than one interface member. - - - - - Looks up a localized string similar to Constructor '{0}' is marked external. - - - - - Looks up a localized string similar to Constructor is marked external. - - - - - Looks up a localized string similar to Method, operator, or accessor '{0}' is marked external and has no attributes on it. Consider adding a DllImport attribute to specify the external implementation.. - - - - - Looks up a localized string similar to Method, operator, or accessor is marked external and has no attributes on it. - - - - - Looks up a localized string similar to Unable to include XML fragment '{1}' of file '{0}' -- {2}. - - - - - Looks up a localized string similar to Unable to include XML fragment. - - - - - Looks up a localized string similar to Source file '{0}' specified multiple times. - - - - - Looks up a localized string similar to Source file specified multiple times. - - - - - Looks up a localized string similar to Invalid filename specified for preprocessor directive. Filename is too long or not a valid filename.. - - - - - Looks up a localized string similar to Invalid filename specified for preprocessor directive. - - - - - Looks up a localized string similar to Filter expression is a constant, consider removing the filter. - - - - - Looks up a localized string similar to Filter expression is a constant. - - - - - Looks up a localized string similar to Introducing a 'Finalize' method can interfere with destructor invocation. Did you intend to declare a destructor?. - - - - - Looks up a localized string similar to This warning occurs when you create a class with a method whose signature is public virtual void Finalize. - - If such a class is used as a base class and if the deriving class defines a destructor, the destructor will override the base class Finalize method, not Finalize.. - - - - - Looks up a localized string similar to Introducing a 'Finalize' method can interfere with destructor invocation. - - - - - Looks up a localized string similar to Defining an alias named 'global' is ill-advised since 'global::' always references the global namespace and not an alias. - - - - - Looks up a localized string similar to Defining an alias named 'global' is ill-advised. - - - - - Looks up a localized string similar to The 'goto case' value is not implicitly convertible to type '{0}'. - - - - - Looks up a localized string similar to The 'goto case' value is not implicitly convertible to the switch type. - - - - - Looks up a localized string similar to Expected identifier or numeric literal.. - - - - - Looks up a localized string similar to Expected identifier or numeric literal. - - - - - Looks up a localized string similar to Invalid #pragma checksum syntax; should be #pragma checksum "filename" "{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}" "XXXX...". - - - - - Looks up a localized string similar to Invalid #pragma checksum syntax. - - - - - Looks up a localized string similar to Expected disable or restore. - - - - - Looks up a localized string similar to Expected disable or restore after #pragma warning. - - - - - Looks up a localized string similar to Unrecognized #pragma directive. - - - - - Looks up a localized string similar to Unrecognized #pragma directive. - - - - - Looks up a localized string similar to Assignment in conditional expression is always constant; did you mean to use == instead of = ?. - - - - - Looks up a localized string similar to Assignment in conditional expression is always constant. - - - - - Looks up a localized string similar to Assembly reference '{0}' is invalid and cannot be resolved. - - - - - Looks up a localized string similar to This warning indicates that an attribute, such as InternalsVisibleToAttribute, was not specified correctly.. - - - - - Looks up a localized string similar to Assembly reference is invalid and cannot be resolved. - - - - - Looks up a localized string similar to '{0}' is not a recognized attribute location. All attributes in this block will be ignored.. - - - - - Looks up a localized string similar to Not a recognized attribute location. - - - - - Looks up a localized string similar to Invalid XML include element -- {0}. - - - - - Looks up a localized string similar to Invalid XML include element. - - - - - Looks up a localized string similar to '{0}' has the wrong signature to be an entry point. - - - - - Looks up a localized string similar to Method has the wrong signature to be an entry point. - - - - - Looks up a localized string similar to Invalid number. - - - - - Looks up a localized string similar to Invalid number. - - - - - Looks up a localized string similar to Invalid search path '{0}' specified in '{1}' -- '{2}'. - - - - - Looks up a localized string similar to Invalid search path specified. - - - - - Looks up a localized string similar to The specified version string does not conform to the recommended format - major.minor.build.revision. - - - - - Looks up a localized string similar to The specified version string does not conform to the recommended format - major.minor.build.revision. - - - - - Looks up a localized string similar to The given expression is never of the provided ('{0}') type. - - - - - Looks up a localized string similar to 'is' expression's given expression is never of the provided type. - - - - - Looks up a localized string similar to The given expression is always of the provided ('{0}') type. - - - - - Looks up a localized string similar to 'is' expression's given expression is always of the provided type. - - - - - Looks up a localized string similar to Using '{0}' to test compatibility with '{1}' is essentially identical to testing compatibility with '{2}' and will succeed for all non-null values. - - - - - Looks up a localized string similar to Using 'is' to test compatibility with 'dynamic' is essentially identical to testing compatibility with 'Object'. - - - - - Looks up a localized string similar to The 'l' suffix is easily confused with the digit '1' -- use 'L' for clarity. - - - - - Looks up a localized string similar to The 'l' suffix is easily confused with the digit '1'. - - - - - Looks up a localized string similar to '{0}': an entry point cannot be generic or in a generic type. - - - - - Looks up a localized string similar to An entry point cannot be generic or in a generic type. - - - - - Looks up a localized string similar to The entry point of the program is global script code; ignoring '{0}' entry point.. - - - - - Looks up a localized string similar to The entry point of the program is global script code; ignoring entry point. - - - - - Looks up a localized string similar to Parameter '{0}' has no matching param tag in the XML comment for '{1}' (but other parameters do). - - - - - Looks up a localized string similar to Parameter has no matching param tag in the XML comment (but other parameters do). - - - - - Looks up a localized string similar to Type parameter '{0}' has no matching typeparam tag in the XML comment on '{1}' (but other type parameters do). - - - - - Looks up a localized string similar to Type parameter has no matching typeparam tag in the XML comment (but other type parameters do). - - - - - Looks up a localized string similar to Missing XML comment for publicly visible type or member '{0}'. - - - - - Looks up a localized string similar to The /doc compiler option was specified, but one or more constructs did not have comments.. - - - - - Looks up a localized string similar to Missing XML comment for publicly visible type or member. - - - - - Looks up a localized string similar to The predefined type '{0}' is defined in multiple assemblies in the global alias; using definition from '{1}'. - - - - - Looks up a localized string similar to This error occurs when a predefined system type such as System.Int32 is found in two assemblies. One way this can happen is if you are referencing mscorlib or System.Runtime.dll from two different places, such as trying to run two versions of the .NET Framework side-by-side.. - - - - - Looks up a localized string similar to Predefined type is defined in multiple assemblies in the global alias. - - - - - Looks up a localized string similar to Member '{0}' implements interface member '{1}' in type '{2}'. There are multiple matches for the interface member at run-time. It is implementation dependent which method will be called.. - - - - - Looks up a localized string similar to This warning can be generated when two interface methods are differentiated only by whether a particular parameter is marked with ref or with out. It is best to change your code to avoid this warning because it is not obvious or guaranteed which method is called at runtime. - - Although C# distinguishes between out and ref, the CLR sees them as the same. When deciding which method implements the interface, the CLR just picks one. - - Give the compiler some way to differentiate the methods. For example, you ca [rest of string was truncated]";. - - - - - Looks up a localized string similar to Member implements interface member with multiple matches at run-time. - - - - - Looks up a localized string similar to Member '{1}' overrides '{0}'. There are multiple override candidates at run-time. It is implementation dependent which method will be called.. - - - - - Looks up a localized string similar to Member overrides base member with multiple override candidates at run-time. - - - - - Looks up a localized string similar to Indexing an array with a negative index (array indices always start at zero). - - - - - Looks up a localized string similar to Indexing an array with a negative index. - - - - - Looks up a localized string similar to The member '{0}' does not hide an inherited member. The new keyword is not required.. - - - - - Looks up a localized string similar to Member does not hide an inherited member; new keyword is not required. - - - - - Looks up a localized string similar to '{0}' hides inherited member '{1}'. To make the current member override that implementation, add the override keyword. Otherwise add the new keyword.. - - - - - Looks up a localized string similar to Member hides inherited member; missing override keyword. - - - - - Looks up a localized string similar to '{0}' hides inherited member '{1}'. Use the new keyword if hiding was intended.. - - - - - Looks up a localized string similar to A variable was declared with the same name as a variable in a base class. However, the new keyword was not used. This warning informs you that you should use new; the variable is declared as if new had been used in the declaration.. - - - - - Looks up a localized string similar to Member hides inherited member; missing new keyword. - - - - - Looks up a localized string similar to The assembly {0} does not contain any analyzers.. - - - - - Looks up a localized string similar to Assembly does not contain any analyzers. - - - - - Looks up a localized string similar to Ignoring /noconfig option because it was specified in a response file. - - - - - Looks up a localized string similar to Ignoring /noconfig option because it was specified in a response file. - - - - - Looks up a localized string similar to Feature '{0}' is not part of the standardized ISO C# language specification, and may not be accepted by other compilers. - - - - - Looks up a localized string similar to Feature is not part of the standardized ISO C# language specification, and may not be accepted by other compilers. - - - - - Looks up a localized string similar to Member '{0}' overrides obsolete member '{1}'. Add the Obsolete attribute to '{0}'.. - - - - - Looks up a localized string similar to Member overrides obsolete member. - - - - - Looks up a localized string similar to No value for RuntimeMetadataVersion found. No assembly containing System.Object was found nor was a value for RuntimeMetadataVersion specified through options.. - - - - - Looks up a localized string similar to No value for RuntimeMetadataVersion found. - - - - - Looks up a localized string similar to No source files specified.. - - - - - Looks up a localized string similar to No source files specified. - - - - - Looks up a localized string similar to The result of the expression is always '{0}' since a value of type '{1}' is never equal to 'null' of type '{2}'. - - - - - Looks up a localized string similar to The result of the expression is always the same since a value of this type is never equal to 'null'. - - - - - Looks up a localized string similar to The result of the expression is always '{0}' since a value of type '{1}' is never equal to 'null' of type '{2}'. - - - - - Looks up a localized string similar to The result of the expression is always the same since a value of this type is never equal to 'null'. - - - - - Looks up a localized string similar to Obsolete member '{0}' overrides non-obsolete member '{1}'. - - - - - Looks up a localized string similar to Obsolete member overrides non-obsolete member. - - - - - Looks up a localized string similar to '{0}' does not implement the '{1}' pattern. '{2}' has the wrong signature.. - - - - - Looks up a localized string similar to Type does not implement the collection pattern; member has the wrong signature. - - - - - Looks up a localized string similar to '{0}' does not implement the '{1}' pattern. '{2}' is ambiguous with '{3}'.. - - - - - Looks up a localized string similar to Type does not implement the collection pattern; members are ambiguous. - - - - - Looks up a localized string similar to '{0}' does not implement the '{1}' pattern. '{2}' is either static or not public.. - - - - - Looks up a localized string similar to Type does not implement the collection pattern; member is either static or not public. - - - - - Looks up a localized string similar to Local name '{0}' is too long for PDB. Consider shortening or compiling without /debug.. - - - - - Looks up a localized string similar to Local name is too long for PDB. - - - - - Looks up a localized string similar to Possible mistaken empty statement. - - - - - Looks up a localized string similar to Possible mistaken empty statement. - - - - - Looks up a localized string similar to '{0}': new protected member declared in sealed class. - - - - - Looks up a localized string similar to New protected member declared in sealed class. - - - - - Looks up a localized string similar to Referenced assembly '{0}' has different culture setting of '{1}'.. - - - - - Looks up a localized string similar to Referenced assembly has different culture setting. - - - - - Looks up a localized string similar to Referenced assembly '{0}' does not have a strong name.. - - - - - Looks up a localized string similar to Referenced assembly does not have a strong name. - - - - - Looks up a localized string similar to A reference was created to embedded interop assembly '{0}' because of an indirect reference to that assembly created by assembly '{1}'. Consider changing the 'Embed Interop Types' property on either assembly.. - - - - - Looks up a localized string similar to You have added a reference to an assembly using /link (Embed Interop Types property set to True). This instructs the compiler to embed interop type information from that assembly. However, the compiler cannot embed interop type information from that assembly because another assembly that you have referenced also references that assembly using /reference (Embed Interop Types property set to False). - - To embed interop type information for both assemblies, use /link for references to each assembly (set the Em [rest of string was truncated]";. - - - - - Looks up a localized string similar to A reference was created to embedded interop assembly because of an indirect assembly reference. - - - - - Looks up a localized string similar to The type '{1}' in '{0}' conflicts with the imported type '{3}' in '{2}'. Using the type defined in '{0}'.. - - - - - Looks up a localized string similar to Type conflicts with imported type. - - - - - Looks up a localized string similar to The type '{1}' in '{0}' conflicts with the imported namespace '{3}' in '{2}'. Using the type defined in '{0}'.. - - - - - Looks up a localized string similar to Type conflicts with imported namespace. - - - - - Looks up a localized string similar to The namespace '{1}' in '{0}' conflicts with the imported type '{3}' in '{2}'. Using the namespace defined in '{0}'.. - - - - - Looks up a localized string similar to Namespace conflicts with imported type. - - - - - Looks up a localized string similar to There is no defined ordering between fields in multiple declarations of partial struct '{0}'. To specify an ordering, all instance fields must be in the same declaration.. - - - - - Looks up a localized string similar to There is no defined ordering between fields in multiple declarations of partial struct. - - - - - Looks up a localized string similar to Source file has exceeded the limit of 16,707,565 lines representable in the PDB; debug information will be incorrect. - - - - - Looks up a localized string similar to Source file has exceeded the limit of 16,707,565 lines representable in the PDB; debug information will be incorrect. - - - - - Looks up a localized string similar to Type parameter '{0}' has the same name as the type parameter from outer type '{1}'. - - - - - Looks up a localized string similar to Type parameter has the same name as the type parameter from outer type. - - - - - Looks up a localized string similar to Unable to load Analyzer assembly {0} : {1}. - - - - - Looks up a localized string similar to Unable to load Analyzer assembly. - - - - - Looks up a localized string similar to Field '{0}' is never assigned to, and will always have its default value {1}. - - - - - Looks up a localized string similar to Field is never assigned to, and will always have its default value. - - - - - Looks up a localized string similar to Assuming assembly reference '{0}' used by '{1}' matches identity '{2}' of '{3}', you may need to supply runtime policy. - - - - - Looks up a localized string similar to The two assemblies differ in release and/or version number. For unification to occur, you must specify directives in the application's .config file, and you must provide the correct strong name of an assembly.. - - - - - Looks up a localized string similar to Assuming assembly reference matches identity. - - - - - Looks up a localized string similar to Assuming assembly reference '{0}' used by '{1}' matches identity '{2}' of '{3}', you may need to supply runtime policy. - - - - - Looks up a localized string similar to The two assemblies differ in release and/or version number. For unification to occur, you must specify directives in the application's .config file, and you must provide the correct strong name of an assembly.. - - - - - Looks up a localized string similar to Assuming assembly reference matches identity. - - - - - Looks up a localized string similar to The command line switch '{0}' is not yet implemented and was ignored.. - - - - - Looks up a localized string similar to Command line switch is not yet implemented. - - - - - Looks up a localized string similar to XML comment on '{1}' has a paramref tag for '{0}', but there is no parameter by that name. - - - - - Looks up a localized string similar to XML comment has a paramref tag, but there is no parameter by that name. - - - - - Looks up a localized string similar to XML comment has a param tag for '{0}', but there is no parameter by that name. - - - - - Looks up a localized string similar to XML comment has a param tag, but there is no parameter by that name. - - - - - Looks up a localized string similar to XML comment on '{1}' has a typeparamref tag for '{0}', but there is no type parameter by that name. - - - - - Looks up a localized string similar to XML comment has a typeparamref tag, but there is no type parameter by that name. - - - - - Looks up a localized string similar to XML comment has a typeparam tag for '{0}', but there is no type parameter by that name. - - - - - Looks up a localized string similar to XML comment has a typeparam tag, but there is no type parameter by that name. - - - - - Looks up a localized string similar to Because this call is not awaited, execution of the current method continues before the call is completed. Consider applying the 'await' operator to the result of the call.. - - - - - Looks up a localized string similar to The current method calls an async method that returns a Task or a Task<TResult> and doesn't apply the await operator to the result. The call to the async method starts an asynchronous task. However, because no await operator is applied, the program continues without waiting for the task to complete. In most cases, that behavior isn't what you expect. Usually other aspects of the calling method depend on the results of the call or, minimally, the called method is expected to complete before you return from t [rest of string was truncated]";. - - - - - Looks up a localized string similar to Because this call is not awaited, execution of the current method continues before the call is completed. - - - - - Looks up a localized string similar to XML comment is not placed on a valid language element. - - - - - Looks up a localized string similar to XML comment is not placed on a valid language element. - - - - - Looks up a localized string similar to Within cref attributes, nested types of generic types should be qualified.. - - - - - Looks up a localized string similar to Within cref attributes, nested types of generic types should be qualified. - - - - - Looks up a localized string similar to Unreachable code detected. - - - - - Looks up a localized string similar to Unreachable code detected. - - - - - Looks up a localized string similar to A previous catch clause already catches all exceptions. All non-exceptions thrown will be wrapped in a System.Runtime.CompilerServices.RuntimeWrappedException.. - - - - - Looks up a localized string similar to This warning is caused when a catch() block has no specified exception type after a catch (System.Exception e) block. The warning advises that the catch() block will not catch any exceptions. - - A catch() block after a catch (System.Exception e) block can catch non-CLS exceptions if the RuntimeCompatibilityAttribute is set to false in the AssemblyInfo.cs file: [assembly: RuntimeCompatibilityAttribute(WrapNonExceptionThrows = false)]. If this attribute is not set explicitly to false, all thrown non-CLS excep [rest of string was truncated]";. - - - - - Looks up a localized string similar to A previous catch clause already catches all exceptions. - - - - - Looks up a localized string similar to The event '{0}' is never used. - - - - - Looks up a localized string similar to Event is never used. - - - - - Looks up a localized string similar to The field '{0}' is never used. - - - - - Looks up a localized string similar to Field is never used. - - - - - Looks up a localized string similar to The field '{0}' is assigned but its value is never used. - - - - - Looks up a localized string similar to Field is assigned but its value is never used. - - - - - Looks up a localized string similar to This label has not been referenced. - - - - - Looks up a localized string similar to This label has not been referenced. - - - - - Looks up a localized string similar to The variable '{0}' is declared but never used. - - - - - Looks up a localized string similar to Variable is declared but never used. - - - - - Looks up a localized string similar to The variable '{0}' is assigned but its value is never used. - - - - - Looks up a localized string similar to Variable is assigned but its value is never used. - - - - - Looks up a localized string similar to Comparison to integral constant is useless; the constant is outside the range of type '{0}'. - - - - - Looks up a localized string similar to Comparison to integral constant is useless; the constant is outside the range of the type. - - - - - Looks up a localized string similar to '{0}': a reference to a volatile field will not be treated as volatile. - - - - - Looks up a localized string similar to A volatile field should not normally be passed using a ref or out parameter, since it will not be treated as volatile within the scope of the function. There are exceptions to this, such as when calling an interlocked API.. - - - - - Looks up a localized string similar to A reference to a volatile field will not be treated as volatile. - - - - - Looks up a localized string similar to #warning: '{0}'. - - - - - Looks up a localized string similar to #warning directive. - - - - - Looks up a localized string similar to XML comment has badly formed XML -- '{0}'. - - - - - Looks up a localized string similar to XML comment has badly formed XML. - - - - - Looks up a localized string similar to Badly formed XML in included comments file -- '{0}'. - - - - - Looks up a localized string similar to Badly formed XML in included comments file. - - - - - Looks up a localized string similar to Wrong number of type arguments. - - - - - Looks up a localized string similar to Expected a {0} SemanticModel.. - - - - - Looks up a localized string similar to The literal string ']]>' is not allowed in element content.. - - - - - Looks up a localized string similar to Duplicate '{0}' attribute. - - - - - Looks up a localized string similar to End tag '{0}' does not match the start tag '{1}'.. - - - - - Looks up a localized string similar to Expected an end tag for element '{0}'.. - - - - - Looks up a localized string similar to End tag was not expected at this location.. - - - - - Looks up a localized string similar to Expected '>' or '/>' to close tag '{0}'.. - - - - - Looks up a localized string similar to Unexpected character at this location.. - - - - - Looks up a localized string similar to An identifier was expected.. - - - - - Looks up a localized string similar to Incorrect syntax was used in a comment.. - - - - - Looks up a localized string similar to An invalid character was found inside an entity reference.. - - - - - Looks up a localized string similar to The character(s) '{0}' cannot be used at this location.. - - - - - Looks up a localized string similar to Invalid unicode character.. - - - - - Looks up a localized string similar to Whitespace is not allowed at this location.. - - - - - Looks up a localized string similar to The character '<' cannot be used in an attribute value.. - - - - - Looks up a localized string similar to Missing equals sign between attribute and attribute value.. - - - - - Looks up a localized string similar to Reference to undefined entity '{0}'.. - - - - - Looks up a localized string similar to Missing closing quotation mark for string literal.. - - - - - Looks up a localized string similar to Non-ASCII quotations marks may not be used around string literals.. - - - - - Looks up a localized string similar to A string literal was expected, but no opening quotation mark was found.. - - - - - Looks up a localized string similar to Required white space was missing.. - - - - - A Declaration summarizes the declaration structure of a source file. Each entity declaration - in the program that is a container (specifically namespaces, classes, interfaces, structs, - and delegate declarations) is represented by a node in this tree. At the top level, the - compilation unit is treated as a declaration of the unnamed namespace. - - Special treatment is required for namespace declarations, because a single namespace - declaration can declare more than one namespace. For example, in the declaration - - namespace A.B.C {} - - we see that namespaces A and B and C are declared. This declaration is represented as three - declarations. All three of these ContainerDeclaration objects contain a reference to the - syntax tree for the declaration. - - A "single" declaration represents a specific namespace or type declaration at a point in - source code. A "root" declaration is a special single declaration which summarizes the - contents of an entire file's types and namespaces. Each source file is represented as a tree - of single declarations. - - A "merged" declaration merges together one or more declarations for the same symbol. For - example, the root namespace has multiple single declarations (one in each source file) but - there is a single merged declaration for them all. Similarly partial classes may have - multiple declarations, grouped together under the umbrella of a merged declaration. In the - common trivial case, a merged declaration for a single declaration contains only that single - declaration. The whole program, consisting of the set of all declarations in all of the - source files, is represented by a tree of merged declarations. - - - - - A declaration table is a device which keeps track of type and namespace declarations from - parse trees. It is optimized for the case where there is one set of declarations that stays - constant, and a specific root namespace declaration corresponding to the currently edited - file which is being added and removed repeatedly. It maintains a cache of information for - "merging" the root declarations into one big summary declaration; this cache is efficiently - re-used provided that the pattern of adds and removes is as we expect. - - - - - Creates a root declaration that contains a Script class declaration (possibly in a namespace) and namespace declarations. - Top-level declarations in script code are nested in Script class. - - - - - A visitor that generates the part of the documentation comment after the initial type - and colon. - - - - - Matches symbols from an assembly in one compilation to - the corresponding assembly in another. Assumes that only - one assembly has changed between the two compilations. - - - - - Match local declarations to names to generate a map from - declaration to local slot. The names are indexed by slot and the - assumption is that declarations are in the same order as slots. - - - - - Return a version of the baseline with all definitions mapped to this compilation. - Definitions from the initial generation, from metadata, are not mapped since - the initial generation is always included as metadata. That is, the symbols from - types, methods, ... in the TypesAdded, MethodsAdded, ... collections are replaced - by the corresponding symbols from the current compilation. - - - - - Represents a reference to a generic method instantiation, closed over type parameters, - e.g. MyNamespace.Class.Method{T}() - - - - - Represents a reference to a generic type instantiation that is not nested. - e.g. MyNamespace.A{int} - - - - - Represents a reference to a generic type instantiation that is nested in a non-generic type. - e.g. A.B{int} - - - - - Represents a reference to a generic type instantiation. - Subclasses represent nested and namespace types. - - - - - The behavior of the C# command-line compiler is as follows: - 1) If the /out switch is specified, then the explicit assembly name is used. - 2) Otherwise, - a) if the assembly is executable, then the assembly name is derived from - the name of the file containing the entrypoint; - b) otherwise, the assembly name is derived from the name of the first input - file. - - Since we don't know which method is the entrypoint until well after the - SourceAssemblySymbol is created, in case 2a, its name will not reflect the - name of the file containing the entrypoint. We leave it to our caller to - provide that name explicitly. - - - In cases 1 and 2b, we expect (metadataName == sourceAssembly.MetadataName). - - - - - The compiler-generated implementation type for each fixed-size buffer. - - - - - Ignore accessibility when resolving well-known type - members, in particular for generic type arguments - (e.g.: binding to internal types in the EE). - - - - - Override the dynamic operation context type for all dynamic calls in the module. - - - - - True if this module is an ENC update. - - - - - Set the underlying implementation type for a given fixed-size buffer field. - - - - - Represents a reference to a field of a generic type instantiation. - e.g. - A{int}.Field - A{int}.B{string}.C.Field - - - - - Represents a generic method of a generic type instantiation, closed over type parameters. - e.g. - A{T}.M{S}() - A.B{T}.C.M{S}() - - - - - Represents a reference to an instantiation of a generic type nested in an instantiation of another generic type. - e.g. - A{int}.B{string} - A.B{int}.C.D{string} - - - - - Represents a method of a generic type instantiation. - e.g. - A{int}.M() - A.B{int}.C.M() - - - - - Represents a reference to a type nested in an instantiation of a generic type. - e.g. - A{int}.B - A.B{int}.C.D - - - - - Used only for testing. - - - - - Returns true if the type can be embedded. If the type is defined in a linked (/l-ed) - assembly, but doesn't meet embeddable type requirements, this function returns false - and reports appropriate diagnostics. - - - - - A diagnostic, along with the location where it occurred. - - - - - Add a diagnostic to the bag. - - - - - - - - - Add a diagnostic to the bag. - - - - - - - - - - Adds diagnostics from useSiteDiagnostics into diagnostics and returns True if there were any errors. - - - - Don't call this during a parse--it loads resources - - - Don't call this during a parse--it loads resources - - - Don't call this during a parse--it loads resources - - - - When converting an anonymous function to a delegate type, there are some diagnostics - that will occur regardless of the delegate type - particularly those that do not - depend on the substituted types (e.g. name uniqueness). Even though we need to - produce a diagnostic in such cases, we do not need to abandon overload resolution - - we can choose the overload that is best without regard to such diagnostics. - - True if seeing the ErrorCode should prevent a delegate conversion - from completing successfully. - - - - WARNING: will resolve lazy diagnostics - do not call this before the member lists are completed - or you could trigger infinite recursion. - - - - - An abstract flow pass that takes some shortcuts in analyzing finally blocks, in order to enable - the analysis to take place without tracking exceptions or repeating the analysis of a finally block - for each exit from a try statement. The shortcut results in a slightly less precise - (but still conservative) analysis, but that less precise analysis is all that is required for - the language specification. The most significant shortcut is that we do not track the state - where exceptions can arise. That does not affect the soundness for most analyses, but for those - analyses whose soundness would be affected (e.g. "data flows out"), we track "unassignments" to keep - the analysis sound. - - - - - To scan the whole body, we start outside (before) the region. - - - - - A region analysis walker that computes the set of variables that are always assigned a value - in the region. A variable is "always assigned" in a region if an analysis of the region that - starts with the variable unassigned ends with the variable assigned. - - - - - This class implements the region control flow analysis operations. Region control flow - analysis provides information about statements which enter and leave a region. The analysis - is done lazily. When created, it performs no analysis, but simply caches the arguments. - Then, the first time one of the analysis results is used it computes that one result and - caches it. Each result is computed using a custom algorithm. - - - - - A collection of statements outside the region that jump into the region. - - - - - A collection of statements inside the region that jump to locations outside the region. - - - - - Returns true if and only if the endpoint of the last statement in the region is reachable or the region contains no - statements. - - - - - A collection of return (or yield break) statements found within the region that return from the enclosing method or lambda. - - - - - Returns true iff analysis was successful. Analysis can fail if the region does not properly span a single expression, - a single statement, or a contiguous series of statements within the enclosing block. - - - - - Produce a duplicate of this flow analysis state. - - - - - - Perform control flow analysis, reporting all necessary diagnostics. Returns true if the end of - the body might be reachable... - - - - - Analyze the body, reporting all necessary diagnostics. Returns true if the end of the - body might be reachable. - - - - - - This class implements the region data flow analysis operations. Region data flow analysis - provides information how data flows into and out of a region. The analysis is done lazily. - When created, it performs no analysis, but simply caches the arguments. Then, the first time - one of the analysis results is used it computes that one result and caches it. Each result - is computed using a custom algorithm. - - - - - A collection of the local variables that are declared within the region. Note that the region must be - bounded by a method's body or a field's initializer, so method parameter symbols are never included - in the result, but lambda parameters might appear in the result. - - - - - A collection of the local variables for which a value assigned outside the region may be used inside the region. - - - - - A collection of the local variables for which a value assigned inside the region may be used outside the region. - Note that every reachable assignment to a ref or out variable will be included in the results. - - - - - A collection of the local variables for which a value is always assigned inside the region. - - - - - A collection of the local variables that are read inside the region. - - - - - A collection of local variables that are written inside the region. - - - - - A collection of the local variables that are read outside the region. - - - - - A collection of local variables that are written outside the region. - - - - - A collection of the non-constant local variables and parameters that have been referenced in anonymous functions - and therefore must be moved to a field of a frame class. - - - - - A collection of the non-constant local variables and parameters that have had their address (or the address of one - of their fields) taken using the '&' operator. - - - If there are any of these in the region, then a method should not be extracted. - - - - - Returns true iff analysis was successful. Analysis can fail if the region does not properly span a single expression, - a single statement, or a contiguous series of statements within the enclosing block. - - - - - Some variables that should be considered initially assigned. Used for region analysis. - - - - - Variables that were used anywhere, in the sense required to suppress warnings about - unused variables. - - - - - Variables that were initialized or written anywhere. - - - - - Map from variables that had their addresses taken, to the location of the first corresponding - address-of expression. - - - Doesn't include fixed statement address-of operands. - - - - - Variables that were captured by anonymous functions. - - - - - The current source assembly. - - - - - A mapping from local variables to the index of their slot in a flow analysis local state. - - - - - A set of address-of expressions for which the operand is not definitely assigned. - - - - - A mapping from the local variable slot to the symbol for the local variable itself. This - is used in the implementation of region analysis (support for extract method) to compute - the set of variables "always assigned" in a region of code. - - - - - Variable slots are allocated to local variables sequentially and never reused. This is - the index of the next slot number to use. - - - - - Tracks variables for which we have already reported a definite assignment error. This - allows us to report at most one such error per variable. - - - - - Reflects the enclosing method or lambda at the current location (in the bound tree). - - - - - A cache for remember which structs are empty. - - - - - true if we should check to ensure that out parameters are assigned on every exit point. - - - - - The topmost method of this analysis. - - - - - Constructor to be used for region analysis, for which a struct type should never be considered empty. - - - - - Perform data flow analysis, reporting all necessary diagnostics. - - - - - Analyze the body, reporting all necessary diagnostics. - - - - - Check if the variable is captured and, if so, add it to this._capturedVariables. - - The variable to be checked - If variable.Kind is RangeVariable, its underlying lambda parameter. Else null. - - - - Add the variable to the captured set. For range variables we only add it if inside the region. - - - - - - This reflects the Dev10 compiler's rules for when a variable initialization is considered a "use" - for the purpose of suppressing the warning about unused variables. - - - - - Locals are given slots when their declarations are encountered. We only need give slots - to local variables, out parameters, and the "this" variable of a struct constructs. - Other variables are not given slots, and are therefore not tracked by the analysis. This - returns -1 for a variable that is not tracked, for fields of structs that have the same - assigned status as the container, and for structs that (recursively) contain no data members. - We do not need to track references to - variables that occur before the variable is declared, as those are reported in an - earlier phase as "use before declaration". That allows us to avoid giving slots to local - variables before processing their declarations. - - - - - Force a variable to have a slot. Returns -1 if the variable has an empty struct type. - - - - - Return the slot for a variable, or -1 if it is not tracked (because, for example, it is an empty struct). - - - - - - - Check that the given variable is definitely assigned. If not, produce an error. - - - - - - - Report a given variable as not definitely assigned. Once a variable has been so - reported, we suppress further reports of that variable. - - - - - - - Mark a variable as assigned (or unassigned). - - Node being assigned to. - The value being assigned. - True if target location is considered written to. - Target kind (by-ref or not). - True if target location is considered read from. - - - - Does the struct variable at the given slot have all of its instance fields assigned? - - - - - Variables declared in a using statement are always considered used, so this is just an assert. - - - - - Produce a duplicate of this flow analysis state. - - - - - - A region analysis walker that computes the set of variables whose values flow into (are used - in) the region. A variable assigned outside is used inside if an analysis that leaves the - variable unassigned on entry to the region would cause the generation of "unassigned" errors - within the region. - - - - - A region analysis walker that computes the set of variables for - which their assigned values flow out of the region. - A variable assigned inside is used outside if an analysis that - treats assignments in the region as unassigning the variable would - cause "unassigned" errors outside the region. - - - - - A small cache for remembering empty struct types for flow analysis. - - - - - When set, we ignore private reference fields of structs loaded from metadata. - - - - - Create a cache for computing whether or not a struct type is "empty". - - Enable compatibility with the native compiler, which - ignores inaccessible fields of reference type for structs loaded from metadata. - if is true, set to the compilation from - which to check accessibility. - - - - Determine if the given type is an empty struct type. - - - - - Determine if the given type is an empty struct type,. "typesWithMembersOfThisType" contains - a list of types that have members (directly or indirectly) of this type. - to remove circularity. - - - - - Get all instance fields of a struct. They are not necessarily returned in order. - - - - - Get all instance fields of a struct. They are not necessarily returned in order. - - - - - - When deciding what struct fields to drop on the floor, the native compiler looks - through arrays, and does not ignore value types or type parameters. - - - - - Is it possible that the given symbol can be accessed somewhere in the given assembly? - For the purposes of this test, we assume that code in the given assembly might derive from - any type. So protected members are considered potentially accessible. - - - - - Specialized EmptyStructTypeCache that reports all structs as not empty - - - - - A region analysis walker that records jumps into the region. Works by overriding NoteBranch, which is - invoked by a superclass when the two endpoints of a jump have been identified. - - - - - A region analysis walker that records jumps out of the region. - - - - - The flow analysis pass. This pass reports required diagnostics for unreachable - statements and uninitialized variables (through the call to FlowAnalysisWalker.Analyze), - and inserts a final return statement if the end of a void-returning method is reachable. - - the method to be analyzed - the method's body - the receiver of the reported diagnostics - indicates whether this Script had a trailing expression - the rewritten block for the method (with a return statement possibly inserted) - - - - Produce a duplicate of this flow analysis state. - - - - - - Is the code reachable? - - - - - The compilation in which the analysis is taking place. This is needed to determine which - conditional methods will be compiled and which will be omitted. - - - - - The method whose body is being analyzed, or the field whose initializer is being analyzed. - It is used for - references to method parameters. Thus, 'member' should not be used directly, but - 'MethodParameters', 'MethodThisParameter' and 'AnalyzeOutParameters(...)' should be used - instead. - - - - - The bound node of the method or initializer being analyzed. - - - - - The flow analysis state at each label, computed by merging the state from branches to - that label with the state when we fall into the label. Entries are created when the - label is encountered. One case deserves special attention: when the destination of the - branch is a label earlier in the code, it is possible (though rarely occurs in practice) - that we are changing the state at a label that we've already analyzed. In that case we - run another pass of the analysis to allow those changes to propagate. This repeats until - no further changes to the state of these labels occurs. This can result in quadratic - performance in unlikely but possible code such as this: "int x; if (cond) goto l1; x = - 3; l5: print x; l4: goto l5; l3: goto l4; l2: goto l3; l1: goto l2;" - - - - - Set to true after an analysis scan if the analysis was incomplete due to a backward - "goto" branch changing some analysis result. In this case the caller scans again (until - this is false). Since the analysis proceeds by monotonically changing the state computed - at each label, this must terminate. - - - - - See property PendingBranches - - - - - All of the labels seen so far in this forward scan of the body - - - - - If we are tracking exceptions, then by convention the first entry in the pending branches - buffer contains a summary of the states that can arise from exceptions. - - - - - Pending escapes generated in the current scope (or more deeply nested scopes). When jump - statements (goto, break, continue, return) are processed, they are placed in the - pendingBranches buffer to be processed later by the code handling the destination - statement. As a special case, the processing of try-finally statements might modify the - contents of the pendingBranches buffer to take into account the behavior of - "intervening" finally clauses. - - - - - The definite assignment and/or reachability state at the point currently being analyzed. - - - - - Where all diagnostics are deposited. - - - - - A cache of the state at the backward branch point of each loop. This is not needed - during normal flow analysis, but is needed for DataFlowsOut region analysis. - - - - - Subclasses may override EnterRegion to perform any actions at the entry to the region. - - - - - Subclasses may override LeaveRegion to perform any action at the end of the region. - - - - - A pending branch. There are created for a return, break, continue, goto statement, - yield return, yield break, await expression, and if PreciseAbstractFlowPass.trackExceptions - is true for other - constructs that can cause an exception to be raised such as a throw statement or method - invocation. - The idea is that we don't know if the branch will eventually reach its destination - because of an intervening finally block that cannot complete normally. So we store them - up and handle them as we complete processing each construct. At the end of a block, if - there are any pending branches to a label in that block we process the branch. Otherwise - we relay it up to the enclosing construct as a pending branch of the enclosing - construct. - - - - - Perform a single pass of flow analysis. Note that after this pass, - this.backwardBranchChanged indicates if a further pass is required. - - - - - If a method is currently being analyzed returns its parameters, returns an empty array - otherwise. - - - - - If a method is currently being analyzed returns its 'this' parameter, returns null - otherwise. - - - - - Specifies whether or not method's out parameters should be analyzed. If there's more - than one location in the method being analyzed, then the method is partial and we prefer - to report an out parameter in partial method error. - - location to be used - true if the out parameters of the method should be analyzed - - - - Return the flow analysis state associated with a label. - - - - - - - Return to the caller the set of pending return statements. - - - - - - Set the current state to one that indicates that it is unreachable. - - - - - Visit a boolean condition expression. - - - - - - Visit a general expression, where we will only need to determine if variables are - assigned (or not). That is, we will not be needing AssignedWhenTrue and - AssignedWhenFalse. - - - - - - Visit a statement. - - - - - Called at the point in a loop where the backwards branch would go to. - - - - - Called at the point in a loop where the backward branch is placed. - - - - - Used to resolve break statements in each statement form that has a break statement - (loops, switch). - - - - - Used to resolve continue statements in each statement form that supports it. - - - - - Subclasses override this if they want to take special actions on processing a goto - statement, when both the jump and the label have been located. - - - - - To handle a label, we resolve all branches to that label. Returns true if the state of - the label changes as a result. - - Target label - Statement containing the target label - - - - Since branches cannot branch into constructs, only out, we save the pending branches - when visiting more nested constructs. When tracking exceptions, we store the current - state as the exception state for the following code. - - - - - We use this to restore the old set of pending branches after visiting a construct that contains nested statements. - - The old pending branches, which are to be merged with the current ones - - - - Since each language construct must be handled according to the rules of the language specification, - the default visitor reports that the construct for the node is not implemented in the compiler. - - - - - Certain (struct) types are known by the compiler to be immutable. In these cases calling a method on - the type is known (by flow analysis) not to write the receiver. - - - - - - - If the operand is definitely assigned, we may want to perform a read (in addition to - a write) so that the operand can show up as ReadInside/DataFlowsIn. - - - - - A region analysis walker that records reads and writes of all variables, both inside and outside the region. - - - - - Note that a variable is read. - - The variable - If variable.Kind is RangeVariable, its underlying lambda parameter. Else null. - - - - When we read a field from a struct, the receiver isn't seen as being read until we get to the - end of the field access expression, because we only read the relevant piece of the struct. - But we want the receiver to be considered to be read in the region in that case. - For example, if an rvalue expression is x.y.z and the region is x.y, we want x to be included - in the ReadInside set. That is implemented here. - - - - - Compute the underlying lambda parameter symbol for a range variable, if any. - - The bound node for the expansion of the range variable - - - - Represents region analysis context attributes such as compilation, region, etc... - - - - Compilation to use - - - Containing symbol if available, null otherwise - - - Bound node, not null - - - Region to be used - - - Region to be used - - - True if the input was bad, such as no first and last nodes - - - - Construct context - - - - - A region analysis walker that computes whether or not the region completes normally. It does this by determining - if the point at which the region ends is reachable. - - - - - An analysis that computes the set of variables that may be used - before being assigned anywhere within a method. - - - - - An analysis that computes the set of variables that may be used - before being assigned anywhere within a method. - - - - - A region analysis walker that records declared variables. - - - - - Specifies the language version. - - - - - C# language version 1.0. - - - - - C# language version 2.0. - - - - - C# language version 3.0. - - - Features: LINQ. - - - - - C# language version 4.0. - - - Features: dynamic. - - - - - C# language version 5.0. - - - Features: async. - - - - - C# language version 6.0. - - - Features: - - Using of a static class - Auto-property initializers - Expression-bodied methods and properties - Null-propagating operator ?. - Exception filters - - - - - - The purpose of this rewriter is to replace await-containing catch and finally handlers - with surrogate replacements that keep actual handler code in regular code blocks. - That allows these constructs to be further lowered at the async lowering pass. - - - - - Lower a block of code by performing local rewritings. - The goal is to not have exception handlers that contain awaits in them. - - 1) Await containing finally blocks: - The general strategy is to rewrite await containing handlers into synthetic handlers. - Synthetic handlers are not handlers in IL sense so it is ok to have awaits in them. - Since synthetic handlers are just blocks, we have to deal with pending exception/branch/return manually - (this is the hard part of the rewrite). - - try{ - code; - }finally{ - handler; - } - - Into ===> - - Exception ex = null; - int pendingBranch = 0; - - try{ - code; // any gotos/returns are rewritten to code that pends the necessary info and goes to finallyLabel - goto finallyLabel; - }catch (ex){ // essentially pend the currently active exception - }; - - finallyLabel: - { - handler; - if (ex != null) throw ex; // unpend the exception - unpend branches/return - } - - 2) Await containing catches: - try{ - code; - }catch (Exception ex){ - handler; - throw; - } - - - Into ===> - - Object pendingException; - int pendingCatch = 0; - - try{ - code; - }catch (Exception temp){ // essentially pend the currently active exception - pendingException = temp; - pendingCatch = 1; - }; - - switch(pendingCatch): - { - case 1: - { - Exception ex = (Exception)pendingException; - handler; - throw pendingException - } - } - - - - - Rewrites Try/Catch part of the Try/Catch/Finally - - - - - Analyses method body for try blocks with awaits in finally blocks - Also collects labels that such blocks contain. - - - - - Returns true if a finally of the given try contains awaits - - - - - Returns true if a catch contains awaits - - - - - Returns true if body contains await in a finally block. - - - - - Labels reachable from within this frame without invoking its finally. - null if there are no such labels. - - - - - Async methods have both a return type (void, Task, or Task<T>) and a 'result' type, which is the - operand type of any return expressions in the async method. The result type is void in the case of - Task-returning and void-returning async methods, and T in the case of Task<T>-returning async - methods. - - System.Runtime.CompilerServices provides a collection of async method builders that are used in the - generated code of async methods to create and manipulate the async method's task. There are three - distinct async method builder types, one of each async return type: AsyncVoidMethodBuilder, - AsyncTaskMethodBuilder, and AsyncTaskMethodBuilder<T>. - - AsyncMethodBuilderMemberCollection provides a common mechanism for accessing the well-known members of - each async method builder type. This avoids having to inspect the return style of the current async method - to pick the right async method builder member during async rewriting. - - - - - The builder's constructed type. - - - - - The result type of the constructed task: T for Task<T>, void otherwise. - - - - - Binds an exception to the method builder. - - - - - Marks the method builder as successfully completed, and sets the result if method is Task<T>-returning. - - - - - Schedules the state machine to proceed to the next action when the specified awaiter completes. - - - - - Schedules the state machine to proceed to the next action when the specified awaiter completes. This method can be called from partially trusted code. - - - - - Begins running the builder with the associated state machine. - - - - - Associates the builder with the specified state machine. - - - - - Get the constructed task for a Task-returning or Task<T>-returning async method. - - - - - The method being rewritten. - - - - - The field of the generated async class used to store the async method builder: an instance of - , , or depending on the - return type of the async method. - - - - - A collection of well-known members for the current async method builder. - - - - - The exprReturnLabel is used to label the return handling code at the end of the async state-machine - method. Return expressions are rewritten as unconditional branches to exprReturnLabel. - - - - - The label containing a return from the method when the async method has not completed. - - - - - The field of the generated async class used in generic task returning async methods to store the value - of rewritten return expressions. The return-handling code then uses SetResult on the async method builder - to make the result available to the caller. - - - - - Generate the body for MoveNext(). - - - - - Rewrite an async method into a state machine type. - - - - - The class that represents a translated async method. - - - - - If an expression node that declares synthesized short-lived locals (currently only sequence) contains an await, these locals become long-lived since their - values may be read by code that follows the await. We promote these variables to long-lived of kind . - - - - - This pass detects and reports diagnostics that do not affect lambda convertibility. - This part of the partial class focuses on features that cannot be used in expression trees. - CAVEAT: Errors may be produced for ObsoleteAttribute, but such errors don't affect lambda convertibility. - - - This pass detects and reports diagnostics that do not affect lambda convertibility. - This part of the partial class focuses on expression and operator warnings. - - - - - This is for when we are taking the address of a field. - Distinguish from . - - - - - This is for when we are dotting into a field. - Distinguish from . - - NOTE: dev11 also calls this on string initializers in fixed statements, - but never accomplishes anything since string is a reference type. This - is probably a bug, but fixing it would be a breaking change. - - - - - Based on OutputContext::IsNonAgileField. - - - - - Returns the expression if the statement is actually an expression (ExpressionStatementSyntax with no trailing semicolon). - - - - - The constructor of the class that is the translation of an iterator method. - - - - - A synthesized Finally method containing finalization code for a resumable try statement. - Finalization code for such try may run when: - 1) control flow goes out of try scope by dropping through - 2) control flow goes out of try scope by conditionally or unconditionally branching outside of one ore more try/finally frames. - 3) enumerator is disposed by the owner. - 4) enumerator is being disposed after an exception. - - It is easier to manage partial or complete finalization when every finally is factored out as a separate method. - - NOTE: Finally is a private void nonvirtual instance method with no parameters. - It is a valid JIT inlining target as long as JIT may consider inlining profitable. - - - - - The field of the generated iterator class that underlies the Current property. - - - - - Tells us if a particular try contains yield returns - - - - - When this is more that 0, returns are emitted as "methodValue = value; goto exitLabel;" - - - - - The current iterator finally frame in the tree of finally frames. - By default there is a root finally frame. - Root frame does not have a handler, but may contain nested frames. - - - - - Finally state of the next Finally frame if such created. - Finally state is a negative decreasing number starting with -3. (-2 is used for something else). - Root frame has finally state -1. - - The Finally state is the state that we are in when "between states". - Regular states are positive and are the only states that can be resumed to. - The purpose of distinct finally states is to have enough information about - which finally handlers must run when we need to finalize iterator after a fault. - - - - - Produces a Try/Finally if frame has a handler (otherwise a regular block). - Handler goes into the Finally. - If there are nested frames, they are emitted into the try block. - This way the handler for the current frame is guaranteed to run even if - nested handlers throw exceptions. - - { - switch(state) - { - case state1: - case state2: - case state3: - case state4: - try - { - switch(state) - { - case state3: - case state4: - try - { - ... more nested state dispatches if any .... - } - finally - { - // handler for a try where state3 and state4 can be observed - handler_3_4() - } - break; - } - } - finally - { - // handler for a try where state1 and state2 can be observed - handler_1_2() - } - break; - - case state5: - ... another dispatch of nested states to their finally blocks ... - break; - } - } - - - - - - Analyses method body for yields in try blocks and labels that they contain. - - - - - Returns true if given try or any of its nested try blocks contain yields - - - - - Returns true if body contains yield returns within try blocks. - - - - - Labels reachable from within this frame without invoking its finally. - null if there are none such labels. - - - - - Rewrite an iterator method into a state machine class. - - - - - The class that represents a translated iterator method. - - - - - Analyses method body for labels. - - - - - The closure doesn't declare any variables. - Display class is a singleton and may be shared with other top-level methods. - - - - - The closure only contains a reference to the containing class instance ("this"). - We don't emit a display class, lambdas are emitted directly to the containing class as its instance methods. - - - - - General closure. - Display class may only contain lambdas defined in the same top-level method. - - - - - Visit the expression, but do so in a way that ensures that its type is precise. That means that any - sometimes-unnecessary conversions (such as an implicit reference conversion) are retained. - - - - - A field of a frame class that represents a variable that has been captured in a lambda. - - - - - The rewriter for removing lambda expressions from method bodies and introducing closure classes - as containers for captured variables along the lines of the example in section 6.5.3 of the - C# language specification. - - The entry point is the public method . It operates as follows: - - First, an analysis of the whole method body is performed that determines which variables are - captured, what their scopes are, and what the nesting relationship is between scopes that - have captured variables. The result of this analysis is left in . - - Then we make a frame, or compiler-generated class, represented by an instance of - for each scope with captured variables. The generated frames are kept - in . Each frame is given a single field for each captured - variable in the corresponding scope. These are maintained in . - - Finally, we walk and rewrite the input bound tree, keeping track of the following: - (1) The current set of active frame pointers, in - (2) The current method being processed (this changes within a lambda's body), in - (3) The "this" symbol for the current method in , and - (4) The symbol that is used to access the innermost frame pointer (it could be a local variable or "this" parameter) - - There are a few key transformations done in the rewriting. - (1) Lambda expressions are turned into delegate creation expressions, and the body of the lambda is - moved into a new, compiler-generated method of a selected frame class. - (2) On entry to a scope with captured variables, we create a frame object and store it in a local variable. - (3) References to captured variables are transformed into references to fields of a frame class. - - In addition, the rewriting deposits into a (, ) - pair for each generated method. - - produces its output in two forms. First, it returns a new bound statement - for the caller to use for the body of the original method. Second, it returns a collection of - (, ) pairs for additional methods that the lambda rewriter produced. - These additional methods contain the bodies of the lambdas moved into ordinary methods of their - respective frame classes, and the caller is responsible for processing them just as it does with - the returned bound node. For example, the caller will typically perform iterator method and - asynchronous method transformations, and emit IL instructions into an assembly. - - - - - Perform a first analysis pass in preparation for removing all lambdas from a method body. The entry point is Analyze. - The results of analysis are placed in the fields seenLambda, blockParent, variableBlock, captured, and captures. - - - - - Set to true while we are analyzing the interior of an expression lambda. - - - - - Set to true of any lambda expressions were seen in the analyzed method body. - - - - - For each scope that defines variables, identifies the nearest enclosing scope that defines variables. - - - - - For each captured variable, identifies the scope in which it will be moved to a frame class. This is - normally the node where the variable is introduced, but method parameters are moved - to a frame class within the body of the method. - - - - - The syntax nodes associated with each captured variable. - - - - - For each lambda in the code, the set of variables that it captures. - - - - - Blocks that are positioned between a block declaring some lifted variables - and a block that contains the lambda that lifts said variables. - If such block itself requires a closure, then it must lift parent frame pointer into the closure - in addition to whatever else needs to be lifted. - - NOTE: This information is computed in addition to the regular analysis of the tree and only needed for rewriting. - If someone only needs diagnostics or information about captures, this information is not necessary. - needs to be called to compute this. - - - - - Optimized locations of lambdas. - - Lambda does not need to be placed in a frame that corresponds to its lexical scope if lambda does not reference any local state in that scope. - It is advantageous to place lambdas higher in the scope tree, ideally in the innermost scope of all scopes that contain variables captured by a given lambda. - Doing so reduces indirections needed when captured locals are accessed. For example locals from the innermost scope can be accessed with no indirection at all. - - NOTE: This information is computed in addition to the regular analysis of the tree and only needed for rewriting. - If someone only needs diagnostics or information about captures, this information is not necessary. - needs to be called to compute this. - - - - - Create the optimized plan for the location of lambda methods and whether scopes need access to parent scopes - - - - - Compute the nesting depth of a given block. - Top-most block (where method locals and parameters are defined) are at the depth 0. - - - - - Rewrite the given node to eliminate lambda expressions. Also returned are the method symbols and their - bound bodies for the extracted lambda bodies. These would typically be emitted by the caller such as - MethodBodyCompiler. See this class' documentation - for a more thorough explanation of the algorithm and its use by clients. - - The bound node to be rewritten - The type of the top-most frame - The "this" parameter in the top-most frame, or null if static method - The containing method of the node to be rewritten - Index of the method symbol in its containing type member list. - Information on lambdas defined in needed for debugging. - Information on closures defined in needed for debugging. - Slot allocator. - The caller's buffer into which we produce additional methods to be emitted by the caller - Diagnostic bag for diagnostics - The rewritten tree should include assignments of the original locals to the lifted proxies - - - - Create the frame types. - - - - - Produce a bound expression representing a pointer to a frame of a particular frame type. - - The syntax to attach to the bound nodes produced - The type of frame to be returned - A bound node that computes the pointer to the required frame - - - - Produce a bound expression representing a pointer to a frame of a particular frame class. - Note that for generic frames, the frameClass parameter is the generic definition, but - the resulting expression will be constructed with the current type parameters. - - The syntax to attach to the bound nodes produced - The class type of frame to be returned - A bound node that computes the pointer to the required frame - - - - Introduce a frame around the translation of the given node. - - The node whose translation should be translated to contain a frame - The frame for the translated node - A function that computes the translation of the node. It receives lists of added statements and added symbols - The translated statement, as returned from F - - - - A class that represents the set of variables in a scope that have been - captured by lambdas within that scope. - - - - - A method that results from the translation of a single lambda expression. - - - - - Lower a block of code by performing local rewritings. - - - - - Returns true if the initializer is a field initializer which should be optimized out - - - - - Generates a lowered form of the assignment operator for the given left and right sub-expressions. - Left and right sub-expressions must be in lowered form. - - - - - Generates a lowered form of the assignment operator for the given left and right sub-expressions. - Left and right sub-expressions must be in lowered form. - - - - - Spec section 7.9: if the left operand is int or uint, mask the right operand with 0x1F; - if the left operand is long or ulong, mask the right operand with 0x3F. - - - - - This rather confusing method tries to reproduce the functionality of ExpressionBinder::bindPtrAddMul and - ExpressionBinder::bindPtrMul. The basic idea is that we have a numeric expression, x, and a pointer type, - T*, and we want to multiply x by sizeof(T). Unfortunately, we need to stick in some conversions to make - everything work. - - 1) If x is an int, then convert it to an IntPtr (i.e. a native int). Dev10 offers no explanation (ExpressionBinder::bindPtrMul). - 2) Do overload resolution based on the (possibly converted) type of X and int (the type of sizeof(T)). - 3) If the result type of the chosen multiplication operator is signed, convert the product to IntPtr; - otherwise, convert the product to UIntPtr. - - - - - Rewrites arguments of an invocation according to the receiving method or indexer. - It is assumed that each argument has already been lowered, but we may need - additional rewriting for the arguments, such as generating a params array, re-ordering - arguments based on map, inserting arguments for optional parameters, etc. - is the method used for values of any optional parameters. - For indexers, this method must be an accessor, and for methods it must be the method - itself. is needed for indexers since getter and setter - may have distinct optional parameter values. - - - - - Process tempStores and add them as side-effects to arguments where needed. The return - value tells how many temps are actually needed. For unnecessary temps the corresponding - temp store will be cleared. - - - - - Gets the default value for the . - - - A syntax node corresponding to the invocation. - - - A parameter to get the default value for. - - - Indicates if caller info is to be enabled when processing this optional parameter. - The value means the decision is to be made based on the shape of the node. - - - DELIBERATE SPEC VIOLATION: When processing an implicit invocation of an Add method generated - for an element-initializer in a collection-initializer, the parameter - is set to . It means that if the optional parameter is annotated with , - or , and there is no explicit argument corresponding to it, - we will provide caller information as a value of this parameter. - This is done to match the native compiler behavior and user requests (see http://roslyn.codeplex.com/workitem/171). This behavior - does not match the C# spec that currently requires to provide caller information only in explicit invocations and query expressions. - - - - - In the expanded form of a compound assignment (or increment/decrement), the LHS appears multiple times. - If we aren't careful, this can result in repeated side-effects. This creates (ordered) temps for all of the - subexpressions that could result in side-effects and returns a side-effect-free expression that can be used - in place of the LHS in the expanded form. - - The LHS sub-expression of the compound assignment (or increment/decrement). - Populated with a list of assignment expressions that initialize the temporary locals. - Populated with a list of temporary local symbols. - True if the compound assignment is a dynamic operation. - - A side-effect-free expression representing the LHS. - The returned node needs to be lowered but its children are already lowered. - - - - - Variables local to current frame do not need temps when re-read multiple times - as long as there is no code that may write to locals in between accesses and they - are not captured. - - Example: - l += foo(ref l); - - even though l is a local, we must access it via a temp since "foo(ref l)" may change it - on between accesses. - - - - - If the condition has a constant value, then just use the selected branch. - e.g. "true ? x : y" becomes "x". - - - - - Helper method to generate a lowered conversion. - - - - - Helper method to generate a lowered conversion from the given to the given . - - - If we're converting a default parameter value to the parameter type, then the conversion can actually fail - (e.g. if the default value was specified by an attribute and was, therefore, not checked by the compiler). - Set acceptFailingConversion if you want to see default(rewrittenType) in such cases. - The error will be suppressed only for conversions from or . - - - - - Helper method to generate a lowered conversion from the given to the given . - - - If we're converting a default parameter value to the parameter type, then the conversion can actually fail - (e.g. if the default value was specified by an attribute and was, therefore, not checked by the compiler). - Set acceptFailingConversion if you want to see default(rewrittenType) in such cases. - The error will be suppressed only for conversions from or . - - - - - Helper method to generate a lowered conversion from the given rewrittenOperand to the given rewrittenType with the given conversion kind. - - - Conversion kind must not be a user defined conversion, use the other overload which takes a 'Conversion' parameter for generating synthesized user defined conversions. - - - - - If we have a WinRT type event, we need to encapsulate the adder call - (which returns an EventRegistrationToken) with a call to - WindowsRuntimeMarshal.AddEventHandler or RemoveEventHandler, but these - require us to create a new Func representing the adder and another - Action representing the Remover. - - The rewritten call looks something like: - - WindowsRuntimeMarshal.AddEventHandler<EventHandler> - (new Func<EventHandler, EventRegistrationToken>(@object.add), - new Action<EventRegistrationToken>(@object.remove), handler); - - Where @object is a compiler-generated local temp if needed. - - - TODO: use or delete isDynamic. - - - - - Basically, what we need to know is, if an exception occurred within the fixed statement, would - additional code in the current method be executed before its stack frame was popped? - - - - - If two (or more) fixed statements are nested, then we want to avoid having the outer - fixed statement re-traverse the lowered bound tree of the inner one. We accomplish - this by having each fixed statement cache a set of unmatched gotos that can be - reused by any containing fixed statements. - - - - - Look for gotos without corresponding labels in the lowered body of a fixed statement. - - - Assumes continue, break, etc have already been rewritten to gotos. - - - - - This is the entry point for foreach-loop lowering. It delegates to - RewriteEnumeratorForEachStatement - RewriteSingleDimensionalArrayForEachStatement - RewriteMultiDimensionalArrayForEachStatement - RewriteStringForEachStatement - - - We are diverging from the C# 4 spec (and Dev10) to follow the C# 5 spec. - The iteration variable will be declared *inside* each loop iteration, - rather than outside the loop. - - - - - Lower a foreach loop that will enumerate a collection using an enumerator. - - E e = ((C)(x)).GetEnumerator() - try { - while (e.MoveNext()) { - V v = (V)(T)e.Current; - // body - } - } - finally { - // clean up e - } - - - - - Synthesize a no-argument call to a given method, possibly applying a conversion to the receiver. - - If the receiver is of struct type and the method is an interface method, then skip the conversion - and just call the interface method directly - the code generator will detect this and generate a - constrained virtual call. - - A syntax node to attach to the synthesized bound node. - Receiver of method call. - Method to invoke. - Conversion to be applied to the receiver if not calling an interface method on a struct. - Type of the receiver after applying the conversion. - A BoundExpression representing the call. - - - - Lower a foreach loop that will enumerate the characters of a string. - - string s = x; - for (int p = 0; p < s.Length; p = p + 1) { - V v = (V)s.Chars[p]; - // body - } - - - We will follow Dev10 in diverging from the C# 4 spec by ignoring string's - implementation of IEnumerable and just indexing into its characters. - - NOTE: We're assuming that sequence points have already been generated. - Otherwise, lowering to for-loops would generated spurious ones. - - - - - Lower a foreach loop that will enumerate a single-dimensional array. - - A[] a = x; - for (int p = 0; p < a.Length; p = p + 1) { - V v = (V)a[p]; - // body - } - - - We will follow Dev10 in diverging from the C# 4 spec by ignoring Array's - implementation of IEnumerable and just indexing into its elements. - - NOTE: We're assuming that sequence points have already been generated. - Otherwise, lowering to for-loops would generated spurious ones. - - - - - Lower a foreach loop that will enumerate a multi-dimensional array. - - A[...] a = x; - int q_0 = a.GetUpperBound(0), q_1 = a.GetUpperBound(1), ...; - for (int p_0 = a.GetLowerBound(0); p_0 <= q_0; p_0 = p_0 + 1) - for (int p_1 = a.GetLowerBound(1); p_1 <= q_1; p_1 = p_1 + 1) - ... - { V v = (V)a[p_0, p_1, ...]; /* body */ } - - - We will follow Dev10 in diverging from the C# 4 spec by ignoring Array's - implementation of IEnumerable and just indexing into its elements. - - NOTE: We're assuming that sequence points have already been generated. - Otherwise, lowering to nested for-loops would generated spurious ones. - - - - - So that the binding info can return an appropriate SemanticInfo.Converted type for the collection - expression of a foreach node, it is wrapped in a BoundConversion to the collection type in the - initial bound tree. However, we may be able to optimize away (or entirely disregard) the conversion - so we pull out the bound node for the underlying expression. - - - - - Add sequence point |here|: - - foreach (Type var in |expr|) { } - - - Hit once, before looping begins. - - - - - Add sequence point |here|: - - foreach (|Type var| in expr) { } - - - Hit every iteration. - - - - - Add sequence point |here|: - - |foreach| (Type var in expr) { } - - - Hit once, before looping begins. - - - - - Lowers a lock statement to a try-finally block that calls Monitor.Enter and Monitor.Exit - before and after the body, respectively. - - - - - The strategy of this rewrite is to do rewrite "locally". - We analyze arguments of the concat in a shallow fashion assuming that - lowering and optimizations (including this one) is already done for the arguments. - Based on the arguments we select the most appropriate pattern for the current node. - - NOTE: it is not guaranteed that the node that we chose will be the most optimal since we have only - local information - i.e. we look at the arguments, but we do not know about siblings. - When we move to the parent, the node may be rewritten by this or some another optimization. - - Example: - result = ( "abc" + "def" + null ?? expr1 + "moo" + "baz" ) + expr2 - - Will rewrite into: - result = Concat("abcdef", expr2) - - However there will be transient nodes like Concat(expr1 + "moo") that will not be present in the - resulting tree. - - - - - - digs into known concat operators and unwraps their arguments - otherwise returns the expression as-is - - Generally we only need to recognize same node patterns that we create as a result of concatenation rewrite. - - - - - folds two concat operands into one expression if possible - otherwise returns null - - - - - folds two concat constants into one if possible - otherwise returns null. - It is generally always possible to concat constants, unless resulting string would be too large. - - - - - Strangely enough there is such a thing as unary concatenation and it must be rewritten. - - - - - Most of the above optimizations are not applicable in expression trees as the operator - must stay a binary operator. We cannot do much beyond constant folding which is done in binder. - - - - - Checks whether the expression represents a boxing conversion of a special value type. - If it does, it tries to return a string-based representation instead in order - to avoid allocations. If it can't, the original expression is returned. - - - - - Gets whether the type of an argument used in string concatenation can - be optimized by first calling ToString on it before passing the argument - to the String.Concat function. - - The type symbol of the argument. - - true if ToString may be used; false if using ToString could lead to observable differences in behavior. - - - - - Is there any code to execute in the given statement that could have side-effects, - such as throwing an exception? This implementation is conservative, in the sense - that it may return true when the statement actually may have no side effects. - - - - - This rewriter lowers pre-/post- increment/decrement operations (initially represented as - unary operators). We use BoundSequenceExpressions because we need to capture the RHS of the - assignment in a temp variable. - - - This rewriter assumes that it will be run before decimal rewriting (so that it does not have - to lower decimal constants and operations) and call rewriting (so that it does not have to - lower property accesses). - - - - - The rewrites are as follows: suppose the operand x is a variable of type X. The - chosen increment/decrement operator is modelled as a static method on a type T, - which takes a value of type T and returns the result of incrementing or decrementing - that value. - - x++ - X temp = x - x = (X)(T.Increment((T)temp)) - return temp - x-- - X temp = x - x = (X)(T.Decrement((T)temp)) - return temp - ++x - X temp = (X)(T.Increment((T)x)) - x = temp - return temp - --x - X temp = (X)(T.Decrement((T)x)) - x = temp - return temp - - Note: - Dev11 implements dynamic prefix operators incorrectly. - - result = ++x.P is emitted as result = SetMember{"P"}(t, UnaryOperation{Inc}(GetMember{"P"}(x))) - - The difference is that Dev11 relies on SetMember returning the same value as it was given as an argument. - Failing to do so changes the semantics of ++/-- operator which is undesirable. We emit the same pattern for - both dynamic and static operators. - - For example, we might have a class X with user-defined implicit conversions - to and from short, but no user-defined increment or decrement operators. We - would bind x++ as "X temp = x; x = (X)(short)((int)(short)temp + 1); return temp;" - - The unary operator expression representing the increment/decrement. - A bound sequence that uses a temp to achieve the correct side effects and return value. - - - - Transform an expression from a form suitable as an lvalue to a form suitable as an rvalue. - - The children of this node must already be lowered. - Fully lowered node. - - - - Rewrite a using statement into a try finally statement. Two forms are possible: - 1) using (expr) stmt - 2) using (C c = expr) stmt - - The former is handled by RewriteExpressionUsingStatement and the latter is handled by - RewriteDeclarationUsingStatement (called in a loop, once for each local declared). - - - It would be more in line with our usual pattern to rewrite using to try-finally - in the ControlFlowRewriter, but if we don't do it here the BoundMultipleLocalDeclarations - will be rewritten into a form that makes them harder to separate. - - - - - Lower "using (expression) statement" to a try-finally block. - - - - - Lower "using (ResourceType resource = expression) statement" to a try-finally block. - - - Assumes that the local symbol will be declared (i.e. in the LocalsOpt array) of an enclosing block. - Assumes that using statements with multiple locals have already been split up into multiple using statements. - - - - - The dynamic operation factories below return this struct so that the caller - have the option of separating the call-site initialization from its invocation. - - Most callers just call to get the combo but some (object and array initializers) - hoist all call-site initialization code and emit multiple invocations of the same site. - - - - - Corresponds to . - - - - - Corresponds to . - - - - - Rewrite the replacement expression for the hoisted local so all synthesized field are accessed as members - of the appropriate frame. - - - - - A walker that computes the set of local variables of an iterator/async - method that must be hoisted to the state machine. - - - Data flow analysis is used to calculate the locals. At yield/await we mark all variables as "unassigned". - When a read from an unassigned variables is reported we add the variable to the captured set. - "this" parameter is captured if a reference to "this", "base" or an instance field is encountered. - Variables used in finally also need to be captured if there is a yield in the corresponding try block. - - - - - True if we need to generate the code to do the bookkeeping so we can "finalize" the state machine - by executing code from its current state through the enclosing finally blocks. This is true for - iterators and false for async. - - - - - Generate return statements from the state machine method body. - - - - - The "state" of the state machine that is the translation of the iterator method. - - - - - Cached "state" of the state machine within the MoveNext method. We work with a copy of - the state to avoid shared mutable state between threads. (Two threads can be executing - in a Task's MoveNext method because an awaited task may complete after the awaiter has - tested whether the subtask is complete but before the awaiter has returned) - - - - - For each distinct label, the set of states that need to be dispatched to that label. - Note that there is a dispatch occurring at every try-finally statement, so this - variable takes on a new set of values inside each try block. - - - - - A mapping from each state of the state machine to the new state that will be used to execute - finally blocks in case the state machine is disposed. The Dispose method computes the new state - and then runs MoveNext. Not used if !this.useFinalizerBookkeeping. - - - - - A try block might have no state (transitions) within it, in which case it does not need - to have a state to represent finalization. This flag tells us whether the current try - block that we are within has a finalizer state. Initially true as we have the (trivial) - finalizer state of -1 at the top level. Not used if !this.useFinalizerBookkeeping. - - - - - If hasFinalizerState is true, this is the state for finalization from anywhere in this - try block. Initially set to -1, representing the no-op finalization required at the top - level. Not used if !this.useFinalizerBookkeeping. - - - - - A pool of fields used to hoist locals. They appear in this set when not in scope, - so that members of this set may be allocated to locals when the locals come into scope. - - - - - Fields allocated for temporary variables are given unique names distinguished by a number at the end. - This counter ensures they are unique within a given translated method. - - - - - Used to enumerate the instance fields of a struct. - - - - - The set of local variables and parameters that were hoisted and need a proxy. - - - - - Translate a statement that declares a given set of locals. Also allocates and frees hoisted temps as - required for the translation. - - The set of locals declared in the original version of this statement - A delegate to return the translation of the body of this statement - - - - Must remain in sync with . - - - - - Must remain in sync with . - - - - - Might the given type be, or contain, managed references? This is used to determine which - fields allocated to temporaries should be cleared when the underlying variable goes out of scope, so - that they do not cause unnecessary object retention. - - - - - The try statement is the most complex part of the state machine transformation. - Since the CLR will not allow a 'goto' into the scope of a try statement, we must - generate the dispatch to the state's label stepwise. That is done by translating - the try statements from the inside to the outside. Within a try statement, we - start with an empty dispatch table (representing the mapping from state numbers - to labels). During translation of the try statement's body, the dispatch table - will be filled in with the data necessary to dispatch once we're inside the try - block. We generate that at the head of the translated try statement. Then, we - copy all of the states from that table into the table for the enclosing construct, - but associate them with a label just before the translated try block. That way - the enclosing construct will generate the code necessary to get control into the - try block for all of those states. - - - - - Represents a synthesized state machine field. - - - - - True if the initial values of locals in the rewritten method need to be preserved. (e.g. enumerable iterator methods) - - - - - Add fields to the state machine class that control the state machine. - - - - - Initialize the state machine class. - - - - - Generate implementation-specific state machine initialization for the kickoff method body. - - - - - Generate implementation-specific state machine member method implementations. - - - - - State machine interface method implementation. - - - - - Represents a state machine MoveNext method. - Handles special behavior around inheriting some attributes from the original async/iterator method. - - - - - Represents a state machine method other than a MoveNext method. - All such methods are considered debugger hidden. - - - - - Tracks synthesized fields that are needed in a submission being compiled. - - - For every other submission referenced by this submission we add a field, so that we can access members of the target submission. - A field is also needed for the host object, if provided. - - - - - A helper class for synthesizing quantities of code. - - - - - Thrown by the bound node factory when there is a failure to synthesize code. - An appropriate diagnostic is included that should be reported. Currently - the only diagnostic handled through this mechanism is a missing special/well-known - member. - - - - - A binder suitable for performing overload resolution to synthesize a call to a helper method. - - - - - A binder used only for performing overload resolution of runtime helper methods. - - - - - Create a bound node factory. Note that the use of the factory to get special or well-known members - that do not exist will result in an exception of type being thrown. - - The top-level method that will contain the code - The syntax node to which generated code should be attributed - The state of compilation of the enclosing type - A bag where any diagnostics should be output - - - The top-level method that will contain the code - The enclosing class - The syntax node to which generated code should be attributed - The state of compilation of the enclosing type - A bag where any diagnostics should be output - - - - Get the symbol for a well-known member. The use of this method to get a well-known member - that does not exist will result in an exception of type MissingPredefinedMember being thrown - containing an appropriate diagnostic for the caller to report. - - The desired well-known member - If true, the method may return null for a missing member without an exception - A symbol for the well-known member, or null if it is missing and isOptions == true - - - - Get the symbol for a special member. The use of this method to get a special member - that does not exist will result in an exception of type MissingPredefinedMember being thrown - containing an appropriate diagnostic for the caller to report. - - The desired special member - A symbol for the special member. - - - - Check for (and assert that there are no) duplicate case labels in the switch. - - - - - - Takes an expression and returns the bound local expression "temp" - and the bound assignment expression "temp = expr". - - - - - Compiles a list of all labels that are targeted by gotos within a - node, but are not declared within the node. - - - - - newPosition represents the position we are in the final SourceText. As we consume and reuse - nodes from the old tree we will update our position in the new text accordingly. - Likewise, when we must lex tokens out of the new tree we will update as well. - - NOTE(cyrusn): We do not need an oldPosition because it is redundant given the - oldTreeCursor. The oldPosition is implicitly defined by the position of the cursor. - - - - - Affected range of a change is the range within which nodes can be affected by a change - and cannot be reused. Because of lookahead effective range of a change is larger than - the change itself. - - - - - THe cursor represents a location in the tree that we can move around to indicate where - we are in the original tree as we're incrementally parsing. When it is at a node or - token, it can either move forward to that entity's next sibling. It can also move down - to a node's first child or first token. - - Once the cursor hits the end of file, it's done. Note: the cursor will skip any other - zero length nodes in the tree. - - - - - An error/warning directive tells the compiler to indicate a syntactic error/warning - at the current location. - - Format: #error Error message string - Resulting message: from the first non-whitespace character after the directive - keyword until the end of the directive (aka EOD) at the line break or EOF. - Resulting span: [first non-whitespace char, EOD) - - Examples (pipes indicate span): - #error |foo| - #error |foo| - #error |foo | - #error |foo baz| - #error |//foo| - #error |/*foo*/| - #error |/*foo| - - The '#' token. - The 'error' or 'warning' token. - True if the error/warning should be recorded. - An ErrorDirective or WarningDirective node. - - - - These aren't acceptable in place of ASCII quotation marks in XML, - but we want to consume them (and produce an appropriate error) if - they occur in a place where a quotation mark is legal. - - - - - ACASEY: This grammar is derived from the behavior and sources of the native compiler. - Tokens start with underscores (I've cheated for _PredefinedTypeToken, which is not actually a - SyntaxKind), "*" indicates "0 or more", "?" indicates "0 or 1", and parentheses are for grouping. - - Cref = CrefType _DotToken CrefMember - | CrefType - | CrefMember - | CrefFirstType _OpenParenToken CrefParameterList? _CloseParenToken - CrefName = _IdentifierToken (_LessThanToken _IdentifierToken (_CommaToken _IdentifierToken)* _GreaterThanToken)? - CrefFirstType = ((_IdentifierToken _ColonColonToken)? CrefName) - | _PredefinedTypeToken - CrefType = CrefFirstType (_DotToken CrefName)* - CrefMember = CrefName (_OpenParenToken CrefParameterList? _CloseParenToken)? - | _ThisKeyword (_OpenBracketToken CrefParameterList _CloseBracketToken)? - | _OperatorKeyword _OperatorToken (_OpenParenToken CrefParameterList? _CloseParenToken)? - | (_ImplicitKeyword | _ExplicitKeyword) _OperatorKeyword CrefParameterType (_OpenParenToken CrefParameterList? _CloseParenToken)? - CrefParameterList = CrefParameter (_CommaToken CrefParameter)* - CrefParameter = (_RefKeyword | _OutKeyword)? CrefParameterType - CrefParameterType = CrefParameterType2 _QuestionToken? _AsteriskToken* (_OpenBracketToken _CommaToken* _CloseBracketToken)* - CrefParameterType2 = (((_IdentifierToken _ColonColonToken)? CrefParameterType3) | _PredefinedTypeToken) (_DotToken CrefParameterType3)* - CrefParameterType3 = _IdentifierToken (_LessThanToken CrefParameterType (_CommaToken CrefParameterType)* _GreaterThanToken)? - - NOTE: type parameters, not type arguments - NOTE: the first production of Cref is preferred to the other two - NOTE: pointer, array, and nullable types only work in parameters - NOTE: CrefParameterType2 and CrefParameterType3 correspond to CrefType and CrefName, respectively. - Since the only difference is that they accept non-identifier type arguments, this is accomplished - using parameters on the parsing methods (rather than whole new methods). - - - - - Parse the custom cref syntax for a named member (method, property, etc), - an indexer, an overloadable operator, or a user-defined conversion. - - - - - Parse a named member (method, property, etc), with optional type - parameters and regular parameters. - - - - - Parse an indexer member, with optional parameters. - - - - - Parse an overloadable operator, with optional parameters. - - - - - Parse a user-defined conversion, with optional parameters. - - - - - Parse a parenthesized parameter list. - - - - - Parse a bracketed parameter list. - - - - - Parse the parameter list (if any) of a cref member (name, indexer, operator, or conversion). - - - - - True if the current token could be the beginning of a cref parameter. - - - - - Parse an element of a cref parameter list. - - - "ref" and "out" work, but "params", "this", and "__arglist" don't. - - - - - Parse an identifier, optionally followed by an angle-bracketed list of type parameters. - - True to give an error when a non-identifier - type argument is seen, false to accept. No change in the shape of the tree. - - - - Parse a type. May include an alias, a predefined type, and/or a qualified name. - - - Pointer, nullable, or array types are only allowed if is false. - Leaves a dot and a name unconsumed if the name is not followed by another dot - and checkForMember is true. - - True to give an error when a non-identifier - type argument is seen, false to accept. No change in the shape of the tree. - True means that the last name should not be consumed - if it is followed by a parameter list. - - - - Parse a type. May include an alias, a predefined type, and/or a qualified name. - - - No pointer, nullable, or array types. - Leaves a dot and a name unconsumed if the name is not followed by another dot - and checkForMember is true. - - True to give an error when a non-identifier - type argument is seen, false to accept. No change in the shape of the tree. - True means that the last name should not be consumed - if it is followed by a parameter list. - - - - Once the name part of a type (including type parameter/argument lists) is parsed, - we need to consume ?, *, and rank specifiers. - - - - - Ends at appropriate quotation mark, EOF, or EndOfDocumentationComment. - - - - - Convenience method for checking the mode. - - - - - Ends at appropriate quotation mark, EOF, or EndOfDocumentationComment. - - - - - Set of well-known SyntaxTokens commonly found within XML doc comments. - - - - - Look up a well known SyntaxToken for a given XML element tag or attribute. - This is a performance optimization to avoid creating duplicate tokens for the same content. - - The text of the tag or attribute. - The leading trivia of the token. - The SyntaxToken representing the well-known tag or attribute or null if it's not well-known. - - - - Returns true if the lookahead tokens compose extern alias directive. - - - - - Parses any block or expression bodies that are present. Also parses - the trailing semicolon if one is present. - - - - - WARNING: it is possible that "list" is really the underlying builder of a SeparateSyntaxListBuilder, - so it is important that we not add anything to the list. - - - - - True if current identifier token is not really some contextual keyword - - - - - - Definitely not a type name. - - - - - Definitely a type name: either a predefined type (int, string, etc.) or an array type name (ending with a bracket). - - - - - Might be a generic (qualified) type name or a method name. - - - - - Might be a generic (qualified) type name or an expression or a method name. - - - - - Might be a non-generic (qualified) type name or an expression. - - - - - A type name with alias prefix (Alias::Name) - - - - - Nullable type (ending with ?). - - - - - Might be a pointer type or a multiplication. - - - - - Parses any statement but a declaration statement. Returns null if the lookahead looks like a declaration. - - - Variable declarations in global code are parsed as field declarations so we need to fallback if we encounter a declaration statement. - - - - - true if the current token can be the first token of a typed identifier (a type name followed by an identifier), - false if it definitely can't be, - null if we need to scan further to find out. - - - - - "Safe" substring using start and end positions rather than start and length. - If things are out of bounds just returns the empty string. That should only - be used by clients to assist in error recovery. - original string - index of first character to be included - index of last character to be included - - - - - Take the given text and treat it as the contents of a string literal, returning a token for that. - - The text for the full string literal, including the quotes and contents - The text for the string literal's contents, excluding surrounding quotes - True if the string contents should be scanned using the rules for verbatim strings - The token kind to be assigned to the resulting token - - - - This method is essentially the same as ScanIdentifier_SlowPath, - except that it can handle XML entities. Since ScanIdentifier - is hot code and since this method does extra work, it seem - worthwhile to separate it from the common case. - - - - - - - Scans a new-line sequence (either a single new-line character or a CR-LF combo). - - A trivia node with the new-line text - - - - Scans all of the whitespace (not new-lines) into a trivia node until it runs out. - - A trivia node with the whitespace text - - - - Lexer entry point for LexMode.XmlDocComment - - - - - Lexer entry point for LexMode.XmlElementTag - - - - - Determines whether this Unicode character can start a XMLName. - - The Unicode character. - - - - Determines if this Unicode character can be part of an XML Name. - - The Unicode character. - - - - Lexer entry point for LexMode.XmlAttributeText - - - - - Lexer entry point for LexerMode.XmlCharacter. - - - - - Scan a single XML character (or entity). Assumes that leading trivia has already - been consumed. - - - - - Lexer entry point for LexerMode.XmlCrefQuote, LexerMode.XmlCrefDoubleQuote, - LexerMode.XmlNameQuote, and LexerMode.XmlNameDoubleQuote. - - - - - Scan a single cref attribute token. Assumes that leading trivia has already - been consumed. - - - Within this method, characters that are not XML meta-characters can be seamlessly - replaced with the corresponding XML entities. - - - - - Given a character, advance the input if either the character or the - corresponding XML entity appears next in the text window. - - - - - - - Convenience property for determining whether we are currently lexing the - value of a cref or name attribute. - - - - - Convenience property for determining whether we are currently lexing the - value of a name attribute. - - - - - Diagnostics that occur within cref attributes need to be - wrapped with ErrorCode.WRN_ErrorOverride. - - - - - Diagnostics that occur within cref attributes need to be - wrapped with ErrorCode.WRN_ErrorOverride. - - - - - Lexer entry point for LexMode.XmlCDataSectionText - - - - - Lexer entry point for LexMode.XmlCommentText - - - - - Lexer entry point for LexMode.XmlProcessingInstructionText - - - - - Collects XML doc comment exterior trivia, and therefore is a no op unless we are in the Start or Exterior of an XML doc comment. - - List in which to collect the trivia - - - - Collects whitespace and new line trivia for XML doc comments. Does not see XML doc comment exterior trivia, and is a no op unless we are in the interior. - - List in which to collect the trivia - - - - Turn a (parsed) interpolated string nonterminal into an interpolated string token. - - - - - - Scan past the hole inside an interpolated string literal, leaving the current character on the '}' (if any) - - - - - Keeps a sliding buffer over the SourceText of a file for the lexer. Also - provides the lexer with the ability to keep track of a current "lexeme" - by leaving a marker and advancing ahead the offset. The lexer can then - decide to "keep" the lexeme by erasing the marker, or abandon the current - lexeme by moving the offset back to the marker. - - - - - In many cases, e.g. PeekChar, we need the ability to indicate that there are - no characters left and we have reached the end of the stream, or some other - invalid or not present character was asked for. Due to perf concerns, things - like nullable or out variables are not viable. Instead we need to choose a - char value which can never be legal. - - In .NET, all characters are represented in 16 bits using the UTF-16 encoding. - Fortunately for us, there are a variety of different bit patterns which - are *not* legal UTF-16 characters. 0xffff (char.MaxValue) is one of these - characters -- a legal Unicode code point, but not a legal UTF-16 bit pattern. - - - - - The current absolute position in the text file. - - - - - The current offset inside the window (relative to the window start). - - - - - The buffer backing the current window. - - - - - Returns the start of the current lexeme relative to the window start. - - - - - Number of characters in the character window. - - - - - The absolute position of the start of the current lexeme in the given - SourceText. - - - - - The number of characters in the current lexeme. - - - - - Start parsing a new lexeme. - - - - - After reading , a consumer can determine - if the InvalidCharacter was in the user's source or a sentinel. - - Comments and string literals are allowed to contain any Unicode character. - - - - - - Advance the current position by one. No guarantee that this - position is valid. - - - - - Advance the current position by n. No guarantee that this position - is valid. - - - - - Grab the next character and advance the position. - - - The next character, if there were no characters - remaining. - - - - - Gets the next character if there are any characters in the - SourceText. May advance the window if we are at the end. - - - The next character if any are available. InvalidCharacter otherwise. - - - - - Gets the character at the given offset to the current position if - the position is valid within the SourceText. - - - The next character if any are available. InvalidCharacter otherwise. - - - - - Given that the next character is an ampersand ('&'), attempt to interpret the - following characters as an XML entity. On success, populate the out parameters - with the low and high UTF-16 surrogates for the character represented by the - entity. - - e.g. '<' for &lt;. - e.g. '\uDC00' for &#x10000; (ch == '\uD800'). - True if a valid XML entity was consumed. - - NOTE: Always advances, even on failure. - - - - - If the next characters in the window match the given string, - then advance past those characters. Otherwise, do nothing. - - - - - Because syntax nodes need to be constructed with context information - to allow us to - determine whether or not they can be reused during incremental parsing - the syntax - factory needs a view of some internal parser state. - - - Read-only outside SyntaxParser (not enforced for perf reasons). - Reference type so that the factory stays up-to-date. - - - - - If a method goes from async to non-async, or vice versa, then every occurrence of "await" - within the method (but not within a lambda) needs to be reinterpreted, to determine whether - it is a keyword or an identifier. - - - - - If the end of a query expression statement is commented out, then the following statement may - appear to be part of the query. When this occurs, identifiers within the following statement - may need to be reinterpreted as query keywords. - - - - - Converts skippedSyntax node into tokens and adds these as trivia on the target token. - Also adds the first error (in depth-first preorder) found in the skipped syntax tree to the target token. - - - - - This function searches for the given location node within the subtree rooted at root node. - If it finds it, the function computes the offset span of that child node within the root and returns true, - otherwise it returns false. - - Root node - Node to search in the subtree rooted at root node - Offset of the location node within the subtree rooted at child - - - - - NOTE: we are specifically diverging from dev11 to improve the user experience. - Since treating the "async" keyword as an identifier in older language - versions can never result in a correct program, we instead accept it as a - keyword regardless of the language version and produce an error if the version - is insufficient. - - - - Class which represents an expression that has a binary operator. - - - ExpressionSyntax node representing the expression on the left of the binary operator. - - - SyntaxToken representing the operator of the binary expression. - - - ExpressionSyntax node representing the expression on the right of the binary operator. - - - Class which represents the syntax node for identifier name. - - - SyntaxToken representing the keyword for the kind of the identifier name. - - - - Gets the separator at the given index in this list. - - The index. - - - - - WARN WARN WARN: This should be used with extreme caution - the underlying builder does - not give any indication that it is from a separated syntax list but the constraints - (node, token, node, token, ...) should still be maintained. - - - In order to avoid creating a separate pool of SeparatedSyntaxListBuilders, we expose - our underlying SyntaxListBuilder to SyntaxListPool. - - - - - Find the slot that contains the given offset. - - The target offset. Must be between 0 and . - The slot index of the slot containing the given offset. - - This implementation uses a binary search to find the first slot that contains - the given offset. - - - - - Enumerates all nodes of the tree rooted by this node (including this node). - - - - - Should only be called during construction. - - - This should probably be an extra constructor parameter, but we don't need more constructor overloads. - - - - - Gets the syntax node represented the structure of this trivia, if any. The HasStructure property can be used to - determine if this trivia has structure. - - - A CSharpSyntaxNode derived from StructuredTriviaSyntax, with the structured view of this trivia node. - If this trivia node does not have structure, returns null. - - - Some types of trivia have structure that can be accessed as additional syntax nodes. - These forms of trivia include: - directives, where the structure describes the structure of the directive. - documentation comments, where the structure describes the XML structure of the comment. - skipped tokens, where the structure describes the tokens that were skipped by the parser. - - - - - Provides caching functionality for green nonterminals with up to 3 children. - Example: - When constructing a node with given kind, flags, child1 and child2, we can look up - in the cache whether we already have a node that contains same kind, flags, - child1 and child2 and use that. - - For the purpose of children comparison, reference equality is used as a much cheaper - alternative to the structural/recursive equality. This implies that in order to de-duplicate - a node to a cache node, the children of two nodes must be already de-duplicated. - When adding a node to the cache we verify that cache does contain node's children, - since otherwise there is no reason for the node to be used. - Tokens/nulls are for this purpose considered deduplicated. Indeed most of the tokens - are deduplicated via quick-scanner caching, so we just assume they all are. - - As a result of above, "fat" nodes with 4 or more children or their recursive parents - will never be in the cache. This naturally limits the typical single cache item to be - a relatively simple expression. We do not want the cache to be completely unbounded - on the item size. - While it still may be possible to store a gigantic nested binary expression, - it should be a rare occurrence. - - We only consider "normal" nodes to be cacheable. - Nodes with diagnostics/annotations/directives/skipped, etc... have more complicated identity - and are not likely to be repetitive. - - - - - - Returns the string representation of this token, not including its leading and trailing trivia. - - The string representation of this token, not including its leading and trailing trivia. - The length of the returned string is always the same as Span.Length - - - Provides the base class from which the classes that represent name syntax nodes are derived. This is an abstract class. - - - Provides the base class from which the classes that represent simple name syntax nodes are derived. This is an abstract class. - - - SyntaxToken representing the identifier of the simple name. - - - Class which represents the syntax node for qualified name. - - - NameSyntax node representing the name on the left side of the dot token of the qualified name. - - - SyntaxToken representing the dot. - - - SimpleNameSyntax node representing the name on the right side of the dot token of the qualified name. - - - Class which represents the syntax node for generic name. - - - SyntaxToken representing the name of the identifier of the generic name. - - - TypeArgumentListSyntax node representing the list of type arguments of the generic name. - - - Class which represents the syntax node for type argument list. - - - SyntaxToken representing less than. - - - SeparatedSyntaxList of TypeSyntax node representing the type arguments. - - - SyntaxToken representing greater than. - - - Class which represents the syntax node for alias qualified name. - - - IdentifierNameSyntax node representing the name of the alias - - - SyntaxToken representing colon colon. - - - SimpleNameSyntax node representing the name that is being alias qualified. - - - Provides the base class from which the classes that represent type syntax nodes are derived. This is an abstract class. - - - Class which represents the syntax node for predefined types. - - - SyntaxToken which represents the keyword corresponding to the predefined type. - - - Class which represents the syntax node for the array type. - - - TypeSyntax node representing the type of the element of the array. - - - SyntaxList of ArrayRankSpecifierSyntax nodes representing the list of rank specifiers for the array. - - - Class which represents the syntax node for pointer type. - - - TypeSyntax node that represents the element type of the pointer. - - - SyntaxToken representing the asterisk. - - - Class which represents the syntax node for a nullable type. - - - TypeSyntax node representing the type of the element. - - - SyntaxToken representing the question mark. - - - Class which represents a placeholder in the type argument list of an unbound generic type. - - - SyntaxToken representing the omitted type argument. - - - Provides the base class from which the classes that represent expression syntax nodes are derived. This is an abstract class. - - - Class which represents the syntax node for parenthesized expression. - - - SyntaxToken representing the open parenthesis. - - - ExpressionSyntax node representing the expression enclosed within the parenthesis. - - - SyntaxToken representing the close parenthesis. - - - Class which represents the syntax node for prefix unary expression. - - - SyntaxToken representing the kind of the operator of the prefix unary expression. - - - ExpressionSyntax representing the operand of the prefix unary expression. - - - Class which represents the syntax node for an "await" expression. - - - SyntaxToken representing the kind "await" keyword. - - - ExpressionSyntax representing the operand of the "await" operator. - - - Class which represents the syntax node for postfix unary expression. - - - ExpressionSyntax representing the operand of the postfix unary expression. - - - SyntaxToken representing the kind of the operator of the postfix unary expression. - - - Class which represents the syntax node for member access expression. - - - ExpressionSyntax node representing the object that the member belongs to. - - - SyntaxToken representing the kind of the operator in the member access expression. - - - SimpleNameSyntax node representing the member being accessed. - - - Class which represents the syntax node for conditional access expression. - - - ExpressionSyntax node representing the object conditionally accessed. - - - SyntaxToken representing the question mark. - - - ExpressionSyntax node representing the access expression to be executed when the object is not null. - - - Class which represents the syntax node for member binding expression. - - - SyntaxToken representing dot. - - - SimpleNameSyntax node representing the member being bound to. - - - Class which represents the syntax node for element binding expression. - - - BracketedArgumentListSyntax node representing the list of arguments of the element binding expression. - - - Class which represents the syntax node for implicit element access expression. - - - BracketedArgumentListSyntax node representing the list of arguments of the implicit element access expression. - - - Class which represents an expression that has an assignment operator. - - - ExpressionSyntax node representing the expression on the left of the assignment operator. - - - SyntaxToken representing the operator of the assignment expression. - - - ExpressionSyntax node representing the expression on the right of the assignment operator. - - - Class which represents the syntax node for conditional expression. - - - ExpressionSyntax node representing the condition of the conditional expression. - - - SyntaxToken representing the question mark. - - - ExpressionSyntax node representing the expression to be executed when the condition is true. - - - ExpressionSyntax node representing the expression to be executed when the condition is false. - - - Provides the base class from which the classes that represent instance expression syntax nodes are derived. This is an abstract class. - - - Class which represents the syntax node for a this expression. - - - SyntaxToken representing the this keyword. - - - Class which represents the syntax node for a base expression. - - - SyntaxToken representing the base keyword. - - - Class which represents the syntax node for a literal expression. - - - SyntaxToken representing the keyword corresponding to the kind of the literal expression. - - - Class which represents the syntax node for MakeRef expression. - - - SyntaxToken representing the MakeRefKeyword. - - - SyntaxToken representing open parenthesis. - - - Argument of the primary function. - - - SyntaxToken representing close parenthesis. - - - Class which represents the syntax node for RefType expression. - - - SyntaxToken representing the RefTypeKeyword. - - - SyntaxToken representing open parenthesis. - - - Argument of the primary function. - - - SyntaxToken representing close parenthesis. - - - Class which represents the syntax node for RefValue expression. - - - SyntaxToken representing the RefValueKeyword. - - - SyntaxToken representing open parenthesis. - - - Typed reference expression. - - - Comma separating the arguments. - - - The type of the value. - - - SyntaxToken representing close parenthesis. - - - Class which represents the syntax node for Checked or Unchecked expression. - - - SyntaxToken representing the checked or unchecked keyword. - - - SyntaxToken representing open parenthesis. - - - Argument of the primary function. - - - SyntaxToken representing close parenthesis. - - - Class which represents the syntax node for Default expression. - - - SyntaxToken representing the DefaultKeyword. - - - SyntaxToken representing open parenthesis. - - - Argument of the primary function. - - - SyntaxToken representing close parenthesis. - - - Class which represents the syntax node for TypeOf expression. - - - SyntaxToken representing the TypeOfKeyword. - - - SyntaxToken representing open parenthesis. - - - The expression to return type of. - - - SyntaxToken representing close parenthesis. - - - Class which represents the syntax node for SizeOf expression. - - - SyntaxToken representing the SizeOfKeyword. - - - SyntaxToken representing open parenthesis. - - - Argument of the primary function. - - - SyntaxToken representing close parenthesis. - - - Class which represents the syntax node for invocation expression. - - - ExpressionSyntax node representing the expression part of the invocation. - - - ArgumentListSyntax node representing the list of arguments of the invocation expression. - - - Class which represents the syntax node for element access expression. - - - ExpressionSyntax node representing the expression which is accessing the element. - - - BracketedArgumentListSyntax node representing the list of arguments of the element access expression. - - - Provides the base class from which the classes that represent argument list syntax nodes are derived. This is an abstract class. - - - SeparatedSyntaxList of ArgumentSyntax nodes representing the list of arguments. - - - Class which represents the syntax node for the list of arguments. - - - SyntaxToken representing open parenthesis. - - - SeparatedSyntaxList of ArgumentSyntax representing the list of arguments. - - - SyntaxToken representing close parenthesis. - - - Class which represents the syntax node for bracketed argument list. - - - SyntaxToken representing open bracket. - - - SeparatedSyntaxList of ArgumentSyntax representing the list of arguments. - - - SyntaxToken representing close bracket. - - - Class which represents the syntax node for argument. - - - NameColonSyntax node representing the optional name arguments. - - - SyntaxToken representing the optional ref or out keyword. - - - ExpressionSyntax node representing the argument. - - - Class which represents the syntax node for name colon syntax. - - - IdentifierNameSyntax representing the identifier name. - - - SyntaxToken representing colon. - - - Class which represents the syntax node for cast expression. - - - SyntaxToken representing the open parenthesis. - - - TypeSyntax node representing the type the expression is being casted to. - - - SyntaxToken representing the close parenthesis. - - - ExpressionSyntax node representing the expression that is being casted. - - - Provides the base class from which the classes that represent anonymous function expressions are derived. - - - Gets the "async" token. - - - ExpressionSyntax or BlockSyntax representing the body of the lambda expression. - - - Class which represents the syntax node for anonymous method expression. - - - Gets the "async" token. - - - SyntaxToken representing the delegate keyword. - - - List of parameters of the anonymous method expression, or null if there no parameters are specified. - - - BlockSyntax node representing the body of the anonymous method. - - - Provides the base class from which the classes that represent lambda expressions are derived. - - - SyntaxToken representing equals greater than. - - - Class which represents the syntax node for a simple lambda expression. - - - Gets the "async" token. - - - ParameterSyntax node representing the parameter of the lambda expression. - - - SyntaxToken representing equals greater than. - - - SyntaxNode representing the body of the lambda expression. - - - Class which represents the syntax node for parenthesized lambda expression. - - - Gets the "async" token. - - - ParameterListSyntax node representing the list of parameters for the lambda expression. - - - SyntaxToken representing equals greater than. - - - SyntaxNode representing the body of the lambda expression. - - - Class which represents the syntax node for initializer expression. - - - SyntaxToken representing the open brace. - - - SeparatedSyntaxList of ExpressionSyntax representing the list of expressions in the initializer expression. - - - SyntaxToken representing the close brace. - - - Class which represents the syntax node for object creation expression. - - - SyntaxToken representing the new keyword. - - - TypeSyntax representing the type of the object being created. - - - ArgumentListSyntax representing the list of arguments passed as part of the object creation expression. - - - InitializerExpressionSyntax representing the initializer expression for the object being created. - - - NameEqualsSyntax representing the optional name of the member being initialized. - - - ExpressionSyntax representing the value the member is initialized with. - - - Class which represents the syntax node for anonymous object creation expression. - - - SyntaxToken representing the new keyword. - - - SyntaxToken representing the open brace. - - - SeparatedSyntaxList of AnonymousObjectMemberDeclaratorSyntax representing the list of object member initializers. - - - SyntaxToken representing the close brace. - - - Class which represents the syntax node for array creation expression. - - - SyntaxToken representing the new keyword. - - - ArrayTypeSyntax node representing the type of the array. - - - InitializerExpressionSyntax node representing the initializer of the array creation expression. - - - Class which represents the syntax node for implicit array creation expression. - - - SyntaxToken representing the new keyword. - - - SyntaxToken representing the open bracket. - - - SyntaxList of SyntaxToken representing the commas in the implicit array creation expression. - - - SyntaxToken representing the close bracket. - - - InitializerExpressionSyntax representing the initializer expression of the implicit array creation expression. - - - Class which represents the syntax node for stackalloc array creation expression. - - - SyntaxToken representing the stackalloc keyword. - - - TypeSyntax node representing the type of the stackalloc array. - - - Gets the identifier. - - - Gets the identifier. - - - Gets the identifier. - - - Gets the identifier. - - - Gets the identifier. - - - Class which represents a placeholder in an array size list. - - - SyntaxToken representing the omitted array size expression. - - - The first part of an interpolated string, $" or $@" - - - List of parts of the interpolated string, each one is either a literal part or an interpolation. - - - The closing quote of the interpolated string. - - - The text contents of a part of the interpolated string. - - - The text contents of the format specifier for an interpolation. - - - Represents the base class for all statements syntax classes. - - - Gets the modifier list. - - - Gets the identifier. - - - Represents a labeled statement syntax. - - - Gets the identifier. - - - Gets a SyntaxToken that represents the colon succeeding the statement's label. - - - - Represents a goto statement syntax - - - - - Gets a SyntaxToken that represents the goto keyword. - - - - - Gets a SyntaxToken that represents the case or default keywords if any exists. - - - - - Gets a constant expression for a goto case statement. - - - - - Gets a SyntaxToken that represents the semi-colon at the end of the statement. - - - - Gets the identifier. - - - - Represents an if statement syntax. - - - - - Gets a SyntaxToken that represents the if keyword. - - - - - Gets a SyntaxToken that represents the open parenthesis before the if statement's condition expression. - - - - - Gets an ExpressionSyntax that represents the condition of the if statement. - - - - - Gets a SyntaxToken that represents the close parenthesis after the if statement's condition expression. - - - - - Gets a StatementSyntax the represents the statement to be executed when the condition is true. - - - - - Gets an ElseClauseSyntax that represents the statement to be executed when the condition is false if such statement exists. - - - - Represents an else statement syntax. - - - - Gets a syntax token - - - - Represents a switch statement syntax. - - - - Gets a SyntaxToken that represents the switch keyword. - - - - - Gets a SyntaxToken that represents the open parenthesis preceding the switch expression. - - - - - Gets an ExpressionSyntax representing the expression of the switch statement. - - - - - Gets a SyntaxToken that represents the close parenthesis succeeding the switch expression. - - - - - Gets a SyntaxToken that represents the open braces preceding the switch sections. - - - - - Gets a SyntaxList of SwitchSectionSyntax's that represents the switch sections of the switch statement. - - - - - Gets a SyntaxToken that represents the open braces succeeding the switch sections. - - - - Represents a switch section syntax of a switch statement. - - - - Gets a SyntaxList of SwitchLabelSyntax's the represents the possible labels that control can transfer to within the section. - - - - - Gets a SyntaxList of StatementSyntax's the represents the statements to be executed when control transfer to a label the belongs to the section. - - - - Represents a switch label within a switch statement. - - - - Gets a SyntaxToken that represents a case or default keywords that belongs to a switch label. - - - - - Gets a SyntaxToken that represents the colon that terminates the switch label. - - - - Represents a case label within a switch statement. - - - Gets the case keyword token. - - - - Gets an ExpressionSyntax that represents the constant expression that gets matched for the case label. - - - - Represents a default label within a switch statement. - - - Gets the default keyword token. - - - Gets the attribute declaration list. - - - - Represents an ExternAlias directive syntax, e.g. "extern alias MyAlias;" with specifying "/r:MyAlias=SomeAssembly.dll " on the compiler command line. - - - - SyntaxToken representing the extern keyword. - - - SyntaxToken representing the alias keyword. - - - Gets the identifier. - - - SyntaxToken representing the semicolon token. - - - Member declaration syntax. - - - Gets the optional semicolon token. - - - Class representing one or more attributes applied to a language construct. - - - Gets the open bracket token. - - - Gets the optional construct targeted by the attribute. - - - Gets the attribute declaration list. - - - Gets the close bracket token. - - - Class representing what language construct an attribute targets. - - - Gets the identifier. - - - Gets the colon token. - - - Attribute syntax. - - - Gets the name. - - - Attribute argument list syntax. - - - Gets the open paren token. - - - Gets the arguments syntax list. - - - Gets the close paren token. - - - Attribute argument syntax. - - - Gets the expression. - - - Class representing an identifier name followed by an equals token. - - - Gets the identifier name. - - - Type parameter list syntax. - - - Gets the < token. - - - Gets the parameter list. - - - Gets the > token. - - - Type parameter syntax. - - - Gets the attribute declaration list. - - - Gets the identifier. - - - Base class for type declaration syntax. - - - Gets the attribute declaration list. - - - Gets the modifier list. - - - Gets the identifier. - - - Gets the base type list. - - - Gets the open brace token. - - - Gets the close brace token. - - - Gets the optional semicolon token. - - - Base class for type declaration syntax (class, struct, interface). - - - Gets the type keyword token ("class", "struct", "interface"). - - - Gets the type constraint list. - - - Gets the member declarations. - - - Class type declaration syntax. - - - Gets the class keyword token. - - - Struct type declaration syntax. - - - Gets the struct keyword token. - - - Interface type declaration syntax. - - - Gets the interface keyword token. - - - Enum type declaration syntax. - - - Gets the enum keyword token. - - - Gets the members declaration list. - - - Gets the optional semicolon token. - - - Delegate declaration syntax. - - - Gets the attribute declaration list. - - - Gets the modifier list. - - - Gets the "delegate" keyword. - - - Gets the return type. - - - Gets the identifier. - - - Gets the parameter list. - - - Gets the constraint clause list. - - - Gets the semicolon token. - - - Gets the attribute declaration list. - - - Gets the identifier. - - - Base list syntax. - - - Gets the colon token. - - - Gets the base type references. - - - Provides the base class from which the classes that represent base type syntax nodes are derived. This is an abstract class. - - - Type parameter constraint clause. - - - Gets the identifier. - - - Gets the colon token. - - - Gets the constraints list. - - - Base type for type parameter constraint syntax. - - - Constructor constraint syntax. - - - Gets the "new" keyword. - - - Gets the open paren keyword. - - - Gets the close paren keyword. - - - Base type for class or struct constraint syntax. - - - Gets the constraint keyword ("class" or "struct"). - - - Type constraint syntax. - - - Gets the type syntax. - - - Gets the attribute declaration list. - - - Gets the modifier list. - - - Gets the attribute declaration list. - - - Gets the modifier list. - - - Gets the attribute declaration list. - - - Gets the modifier list. - - - Base type for method declaration syntax. - - - Gets the attribute declaration list. - - - Gets the modifier list. - - - Gets the parameter list. - - - Gets the optional semicolon token. - - - Method declaration syntax. - - - Gets the return type syntax. - - - Gets the identifier. - - - Gets the constraint clause list. - - - Gets the optional semicolon token. - - - Operator declaration syntax. - - - Gets the return type. - - - Gets the "operator" keyword. - - - Gets the operator token. - - - Conversion operator declaration syntax. - - - Gets the "implicit" or "explicit" token. - - - Gets the "operator" token. - - - Gets the type. - - - Gets the optional semicolon token. - - - Constructor declaration syntax. - - - Gets the identifier. - - - Gets the optional semicolon token. - - - Constructor initializer syntax. - - - Gets the colon token. - - - Gets the "this" or "base" keyword. - - - Destructor declaration syntax. - - - Gets the tilde token. - - - Gets the identifier. - - - Gets the optional semicolon token. - - - Base type for property declaration syntax. - - - Gets the attribute declaration list. - - - Gets the modifier list. - - - Gets the type syntax. - - - Gets the optional explicit interface specifier. - - - Gets the identifier. - - - The syntax for the expression body of an expression-bodied member. - - - Gets the identifier. - - - Gets the parameter list. - - - Gets the attribute declaration list. - - - Gets the modifier list. - - - Gets the keyword token, or identifier if an erroneous accessor declaration. - - - Gets the optional body block which may be empty, but it is null if there are no braces. - - - Gets the optional semicolon token. - - - Base type for parameter list syntax. - - - Gets the parameter list. - - - Parameter list syntax. - - - Gets the open paren token. - - - Gets the close paren token. - - - Parameter list syntax with surrounding brackets. - - - Gets the open bracket token. - - - Gets the close bracket token. - - - Parameter syntax. - - - Gets the attribute declaration list. - - - Gets the modifier list. - - - Gets the identifier. - - - Gets the attribute declaration list. - - - Gets the modifier list. - - - - A symbol referenced by a cref attribute (e.g. in a <see> or <seealso> documentation comment tag). - For example, the M in <see cref="M" />. - - - - - A symbol reference that definitely refers to a type. - For example, "int", "A::B", "A.B", "A<T>", but not "M()" (has parameter list) or "this" (indexer). - NOTE: TypeCrefSyntax, QualifiedCrefSyntax, and MemberCrefSyntax overlap. The syntax in a TypeCrefSyntax - will always be bound as type, so it's safer to use QualifiedCrefSyntax or MemberCrefSyntax if the symbol - might be a non-type member. - - - - - A symbol reference to a type or non-type member that is qualified by an enclosing type or namespace. - For example, cref="System.String.ToString()". - NOTE: TypeCrefSyntax, QualifiedCrefSyntax, and MemberCrefSyntax overlap. The syntax in a TypeCrefSyntax - will always be bound as type, so it's safer to use QualifiedCrefSyntax or MemberCrefSyntax if the symbol - might be a non-type member. - - - - - The unqualified part of a CrefSyntax. - For example, "ToString()" in "object.ToString()". - NOTE: TypeCrefSyntax, QualifiedCrefSyntax, and MemberCrefSyntax overlap. The syntax in a TypeCrefSyntax - will always be bound as type, so it's safer to use QualifiedCrefSyntax or MemberCrefSyntax if the symbol - might be a non-type member. - - - - - A MemberCrefSyntax specified by a name (an identifier, predefined type keyword, or an alias-qualified name, - with an optional type parameter list) and an optional parameter list. - For example, "M", "M<T>" or "M(int)". - Also, "A::B()" or "string()". - - - - - A MemberCrefSyntax specified by a this keyword and an optional parameter list. - For example, "this" or "this[int]". - - - - - A MemberCrefSyntax specified by an operator keyword, an operator symbol and an optional parameter list. - For example, "operator +" or "operator -[int]". - NOTE: the operator must be overloadable. - - - - Gets the operator token. - - - - A MemberCrefSyntax specified by an implicit or explicit keyword, an operator keyword, a destination type, and an optional parameter list. - For example, "implicit operator int" or "explicit operator MyType(int)". - - - - - A list of cref parameters with surrounding punctuation. - Unlike regular parameters, cref parameters do not have names. - - - - Gets the parameter list. - - - - A parenthesized list of cref parameters. - - - - Gets the open paren token. - - - Gets the close paren token. - - - - A bracketed list of cref parameters. - - - - Gets the open bracket token. - - - Gets the close bracket token. - - - - An element of a BaseCrefParameterListSyntax. - Unlike a regular parameter, a cref parameter has only an optional ref or out keyword and a type - - there is no name and there are no attributes or other modifiers. - - - - Class which represents the syntax node for alias qualified name. - - - IdentifierNameSyntax node representing the name of the alias - - - SyntaxToken representing colon colon. - - - SimpleNameSyntax node representing the name that is being alias qualified. - - - Attribute syntax. - - - - Return the name used in syntax for the attribute. This is typically the class - name without the "Attribute" suffix. (For certain diagnostics, the native - compiler uses the attribute name from syntax rather than the class name.) - - - - Gets the name. - - - Class representing what language construct an attribute targets. - - - Gets the identifier. - - - Gets the colon token. - - - - Returns #r directives specified in the compilation. - - - - - Returns #load directives specified in the compilation. - - - - Gets the attribute declaration list. - - - - Adds C# specific parts to the line directive map. - - - - Gets the modifier list. - - - Delegate declaration syntax. - - - Gets the attribute declaration list. - - - Gets the modifier list. - - - Gets the "delegate" keyword. - - - Gets the return type. - - - Gets the identifier. - - - Gets the parameter list. - - - Gets the constraint clause list. - - - Gets the semicolon token. - - - - Returns true if the property is allowed by the rules of the - language to be an arbitrary expression, not just a statement expression. - - - True if, for example, this expression statement represents the last expression statement - of the interactive top-level code. - - - - Class which represents the syntax node for generic name. - - - SyntaxToken representing the name of the identifier of the generic name. - - - TypeArgumentListSyntax node representing the list of type arguments of the generic name. - - - Gets the identifier. - - - Class which represents the syntax node for anonymous method expression. - - - Gets the "async" token. - - - SyntaxToken representing the delegate keyword. - - - List of parameters of the anonymous method expression, or null if there no parameters are specified. - - - BlockSyntax node representing the body of the anonymous method. - - - - This class contains a variety of helper methods for determining whether a - position is within the scope (and not just the span) of a node. In general, - general, the scope extends from the first token up to, but not including, - the last token. For example, the open brace of a block is within the scope - of the block, but the close brace is not. - - - - - A position is considered to be inside a block if it is on or after - the open brace and strictly before the close brace. - - - - - A position is inside a property body only if it is inside an expression body. - All block bodies for properties are part of the accessor declaration (a type - of BaseMethodDeclaration), not the property declaration. - - - - - A position is inside a property body only if it is inside an expression body. - All block bodies for properties are part of the accessor declaration (a type - of BaseMethodDeclaration), not the property declaration. - - - - - A position is inside a body if it is inside the block or expression - body. - - A position is considered to be inside a block if it is on or after - the open brace and strictly before the close brace. A position is - considered to be inside an expression body if it is on or after - the '=>' and strictly before the semicolon. - - - - - Returns true if position is within the given node and before the first excluded token. - - - - - Used to determine whether it would be appropriate to use the binder for the statement (if any). - Not used to determine whether the position is syntactically within the statement. - - - - - Used to determine whether it would be appropriate to use the binder for the statement (if any). - Not used to determine whether the position is syntactically within the statement. - - - - - Used to determine whether it would be appropriate to use the binder for the statement (if any). - Not used to determine whether the position is syntactically within the statement. - - - - Gets the parameter list. - - - Method declaration syntax. - - - Gets the return type syntax. - - - Gets the identifier. - - - Gets the constraint clause list. - - - Gets the optional semicolon token. - - - Gets the optional semicolon token. - - - Provides the base class from which the classes that represent name syntax nodes are derived. This is an abstract class. - - - - Returns the unqualified (right-most) part of a qualified or alias-qualified name, or the name itself if already unqualified. - - The unqualified (right-most) part of a qualified or alias-qualified name, or the name itself if already unqualified. - If called on an instance of returns the value of the property. - If called on an instance of returns the value of the property. - If called on an instance of returns the instance itself. - - - - - This inspection is entirely syntactic. We are not trying to find the alias corresponding to the assembly symbol - containing the explicitly implemented interface symbol - there may be more than one. We just want to know - how the name was qualified in source so that we can make a similar qualification (for uniqueness purposes). - - - - Parameter list syntax. - - - Gets the open paren token. - - - Gets the close paren token. - - - Parameter syntax. - - - Gets the attribute declaration list. - - - Gets the modifier list. - - - Gets the identifier. - - - Class which represents the syntax node for qualified name. - - - NameSyntax node representing the name on the left side of the dot token of the qualified name. - - - SyntaxToken representing the dot. - - - SimpleNameSyntax node representing the name on the right side of the dot token of the qualified name. - - - Provides the base class from which the classes that represent simple name syntax nodes are derived. This is an abstract class. - - - SyntaxToken representing the identifier of the simple name. - - - - It's a non terminal Trivia CSharpSyntaxNode that has a tree underneath it. - - - - - Get parent trivia. - - - - - Returns whether the specified token is also the end of the line. This will - be true for , , - and all preprocessor directives. - - - - Base class for type declaration syntax (class, struct, interface). - - - Gets the type keyword token ("class", "struct", "interface"). - - - Gets the type constraint list. - - - Gets the member declarations. - - - Provides the base class from which the classes that represent type syntax nodes are derived. This is an abstract class. - - - Class which represents the syntax node for identifier name. - - - SyntaxToken representing the keyword for the kind of the identifier name. - - - Class which represents the syntax node for type argument list. - - - SyntaxToken representing less than. - - - SeparatedSyntaxList of TypeSyntax node representing the type arguments. - - - SyntaxToken representing greater than. - - - Class which represents the syntax node for predefined types. - - - SyntaxToken which represents the keyword corresponding to the predefined type. - - - Class which represents the syntax node for the array type. - - - TypeSyntax node representing the type of the element of the array. - - - SyntaxList of ArrayRankSpecifierSyntax nodes representing the list of rank specifiers for the array. - - - Class which represents the syntax node for pointer type. - - - TypeSyntax node that represents the element type of the pointer. - - - SyntaxToken representing the asterisk. - - - Class which represents the syntax node for a nullable type. - - - TypeSyntax node representing the type of the element. - - - SyntaxToken representing the question mark. - - - Class which represents a placeholder in the type argument list of an unbound generic type. - - - SyntaxToken representing the omitted type argument. - - - Provides the base class from which the classes that represent expression syntax nodes are derived. This is an abstract class. - - - Class which represents the syntax node for parenthesized expression. - - - SyntaxToken representing the open parenthesis. - - - ExpressionSyntax node representing the expression enclosed within the parenthesis. - - - SyntaxToken representing the close parenthesis. - - - Class which represents the syntax node for prefix unary expression. - - - SyntaxToken representing the kind of the operator of the prefix unary expression. - - - ExpressionSyntax representing the operand of the prefix unary expression. - - - Class which represents the syntax node for an "await" expression. - - - SyntaxToken representing the kind "await" keyword. - - - ExpressionSyntax representing the operand of the "await" operator. - - - Class which represents the syntax node for postfix unary expression. - - - ExpressionSyntax representing the operand of the postfix unary expression. - - - SyntaxToken representing the kind of the operator of the postfix unary expression. - - - Class which represents the syntax node for member access expression. - - - ExpressionSyntax node representing the object that the member belongs to. - - - SyntaxToken representing the kind of the operator in the member access expression. - - - SimpleNameSyntax node representing the member being accessed. - - - Class which represents the syntax node for conditional access expression. - - - ExpressionSyntax node representing the object conditionally accessed. - - - SyntaxToken representing the question mark. - - - ExpressionSyntax node representing the access expression to be executed when the object is not null. - - - Class which represents the syntax node for member binding expression. - - - SyntaxToken representing dot. - - - SimpleNameSyntax node representing the member being bound to. - - - Class which represents the syntax node for element binding expression. - - - BracketedArgumentListSyntax node representing the list of arguments of the element binding expression. - - - Class which represents the syntax node for implicit element access expression. - - - BracketedArgumentListSyntax node representing the list of arguments of the implicit element access expression. - - - Class which represents an expression that has a binary operator. - - - ExpressionSyntax node representing the expression on the left of the binary operator. - - - SyntaxToken representing the operator of the binary expression. - - - ExpressionSyntax node representing the expression on the right of the binary operator. - - - Class which represents an expression that has an assignment operator. - - - ExpressionSyntax node representing the expression on the left of the assignment operator. - - - SyntaxToken representing the operator of the assignment expression. - - - ExpressionSyntax node representing the expression on the right of the assignment operator. - - - Class which represents the syntax node for conditional expression. - - - ExpressionSyntax node representing the condition of the conditional expression. - - - SyntaxToken representing the question mark. - - - ExpressionSyntax node representing the expression to be executed when the condition is true. - - - ExpressionSyntax node representing the expression to be executed when the condition is false. - - - Provides the base class from which the classes that represent instance expression syntax nodes are derived. This is an abstract class. - - - Class which represents the syntax node for a this expression. - - - SyntaxToken representing the this keyword. - - - Class which represents the syntax node for a base expression. - - - SyntaxToken representing the base keyword. - - - Class which represents the syntax node for a literal expression. - - - SyntaxToken representing the keyword corresponding to the kind of the literal expression. - - - Class which represents the syntax node for MakeRef expression. - - - SyntaxToken representing the MakeRefKeyword. - - - SyntaxToken representing open parenthesis. - - - Argument of the primary function. - - - SyntaxToken representing close parenthesis. - - - Class which represents the syntax node for RefType expression. - - - SyntaxToken representing the RefTypeKeyword. - - - SyntaxToken representing open parenthesis. - - - Argument of the primary function. - - - SyntaxToken representing close parenthesis. - - - Class which represents the syntax node for RefValue expression. - - - SyntaxToken representing the RefValueKeyword. - - - SyntaxToken representing open parenthesis. - - - Typed reference expression. - - - Comma separating the arguments. - - - The type of the value. - - - SyntaxToken representing close parenthesis. - - - Class which represents the syntax node for Checked or Unchecked expression. - - - SyntaxToken representing the checked or unchecked keyword. - - - SyntaxToken representing open parenthesis. - - - Argument of the primary function. - - - SyntaxToken representing close parenthesis. - - - Class which represents the syntax node for Default expression. - - - SyntaxToken representing the DefaultKeyword. - - - SyntaxToken representing open parenthesis. - - - Argument of the primary function. - - - SyntaxToken representing close parenthesis. - - - Class which represents the syntax node for TypeOf expression. - - - SyntaxToken representing the TypeOfKeyword. - - - SyntaxToken representing open parenthesis. - - - The expression to return type of. - - - SyntaxToken representing close parenthesis. - - - Class which represents the syntax node for SizeOf expression. - - - SyntaxToken representing the SizeOfKeyword. - - - SyntaxToken representing open parenthesis. - - - Argument of the primary function. - - - SyntaxToken representing close parenthesis. - - - Class which represents the syntax node for invocation expression. - - - ExpressionSyntax node representing the expression part of the invocation. - - - ArgumentListSyntax node representing the list of arguments of the invocation expression. - - - Class which represents the syntax node for element access expression. - - - ExpressionSyntax node representing the expression which is accessing the element. - - - BracketedArgumentListSyntax node representing the list of arguments of the element access expression. - - - Provides the base class from which the classes that represent argument list syntax nodes are derived. This is an abstract class. - - - SeparatedSyntaxList of ArgumentSyntax nodes representing the list of arguments. - - - Class which represents the syntax node for the list of arguments. - - - SyntaxToken representing open parenthesis. - - - SeparatedSyntaxList of ArgumentSyntax representing the list of arguments. - - - SyntaxToken representing close parenthesis. - - - Class which represents the syntax node for bracketed argument list. - - - SyntaxToken representing open bracket. - - - SeparatedSyntaxList of ArgumentSyntax representing the list of arguments. - - - SyntaxToken representing close bracket. - - - Class which represents the syntax node for argument. - - - NameColonSyntax node representing the optional name arguments. - - - SyntaxToken representing the optional ref or out keyword. - - - ExpressionSyntax node representing the argument. - - - Class which represents the syntax node for name colon syntax. - - - IdentifierNameSyntax representing the identifier name. - - - SyntaxToken representing colon. - - - Class which represents the syntax node for cast expression. - - - SyntaxToken representing the open parenthesis. - - - TypeSyntax node representing the type the expression is being casted to. - - - SyntaxToken representing the close parenthesis. - - - ExpressionSyntax node representing the expression that is being casted. - - - Provides the base class from which the classes that represent anonymous function expressions are derived. - - - Gets the "async" token. - - - ExpressionSyntax or BlockSyntax representing the body of the lambda expression. - - - Provides the base class from which the classes that represent lambda expressions are derived. - - - SyntaxToken representing equals greater than. - - - Class which represents the syntax node for a simple lambda expression. - - - Gets the "async" token. - - - ParameterSyntax node representing the parameter of the lambda expression. - - - SyntaxToken representing equals greater than. - - - SyntaxNode representing the body of the lambda expression. - - - Class which represents the syntax node for parenthesized lambda expression. - - - Gets the "async" token. - - - ParameterListSyntax node representing the list of parameters for the lambda expression. - - - SyntaxToken representing equals greater than. - - - SyntaxNode representing the body of the lambda expression. - - - Class which represents the syntax node for initializer expression. - - - SyntaxToken representing the open brace. - - - SeparatedSyntaxList of ExpressionSyntax representing the list of expressions in the initializer expression. - - - SyntaxToken representing the close brace. - - - Class which represents the syntax node for object creation expression. - - - SyntaxToken representing the new keyword. - - - TypeSyntax representing the type of the object being created. - - - ArgumentListSyntax representing the list of arguments passed as part of the object creation expression. - - - InitializerExpressionSyntax representing the initializer expression for the object being created. - - - NameEqualsSyntax representing the optional name of the member being initialized. - - - ExpressionSyntax representing the value the member is initialized with. - - - Class which represents the syntax node for anonymous object creation expression. - - - SyntaxToken representing the new keyword. - - - SyntaxToken representing the open brace. - - - SeparatedSyntaxList of AnonymousObjectMemberDeclaratorSyntax representing the list of object member initializers. - - - SyntaxToken representing the close brace. - - - Class which represents the syntax node for array creation expression. - - - SyntaxToken representing the new keyword. - - - ArrayTypeSyntax node representing the type of the array. - - - InitializerExpressionSyntax node representing the initializer of the array creation expression. - - - Class which represents the syntax node for implicit array creation expression. - - - SyntaxToken representing the new keyword. - - - SyntaxToken representing the open bracket. - - - SyntaxList of SyntaxToken representing the commas in the implicit array creation expression. - - - SyntaxToken representing the close bracket. - - - InitializerExpressionSyntax representing the initializer expression of the implicit array creation expression. - - - Class which represents the syntax node for stackalloc array creation expression. - - - SyntaxToken representing the stackalloc keyword. - - - TypeSyntax node representing the type of the stackalloc array. - - - Gets the identifier. - - - Gets the identifier. - - - Gets the identifier. - - - Gets the identifier. - - - Gets the identifier. - - - Class which represents a placeholder in an array size list. - - - SyntaxToken representing the omitted array size expression. - - - The first part of an interpolated string, $" or $@" - - - List of parts of the interpolated string, each one is either a literal part or an interpolation. - - - The closing quote of the interpolated string. - - - The text contents of a part of the interpolated string. - - - The text contents of the format specifier for an interpolation. - - - Represents the base class for all statements syntax classes. - - - Gets the identifier. - - - Represents a labeled statement syntax. - - - Gets the identifier. - - - Gets a SyntaxToken that represents the colon succeeding the statement's label. - - - - Represents a goto statement syntax - - - - - Gets a SyntaxToken that represents the goto keyword. - - - - - Gets a SyntaxToken that represents the case or default keywords if any exists. - - - - - Gets a constant expression for a goto case statement. - - - - - Gets a SyntaxToken that represents the semi-colon at the end of the statement. - - - - Gets the identifier. - - - - Represents an if statement syntax. - - - - - Gets a SyntaxToken that represents the if keyword. - - - - - Gets a SyntaxToken that represents the open parenthesis before the if statement's condition expression. - - - - - Gets an ExpressionSyntax that represents the condition of the if statement. - - - - - Gets a SyntaxToken that represents the close parenthesis after the if statement's condition expression. - - - - - Gets a StatementSyntax the represents the statement to be executed when the condition is true. - - - - - Gets an ElseClauseSyntax that represents the statement to be executed when the condition is false if such statement exists. - - - - Represents an else statement syntax. - - - - Gets a syntax token - - - - Represents a switch statement syntax. - - - - Gets a SyntaxToken that represents the switch keyword. - - - - - Gets a SyntaxToken that represents the open parenthesis preceding the switch expression. - - - - - Gets an ExpressionSyntax representing the expression of the switch statement. - - - - - Gets a SyntaxToken that represents the close parenthesis succeeding the switch expression. - - - - - Gets a SyntaxToken that represents the open braces preceding the switch sections. - - - - - Gets a SyntaxList of SwitchSectionSyntax's that represents the switch sections of the switch statement. - - - - - Gets a SyntaxToken that represents the open braces succeeding the switch sections. - - - - Represents a switch section syntax of a switch statement. - - - - Gets a SyntaxList of SwitchLabelSyntax's the represents the possible labels that control can transfer to within the section. - - - - - Gets a SyntaxList of StatementSyntax's the represents the statements to be executed when control transfer to a label the belongs to the section. - - - - Represents a switch label within a switch statement. - - - - Gets a SyntaxToken that represents a case or default keywords that belongs to a switch label. - - - - - Gets a SyntaxToken that represents the colon that terminates the switch label. - - - - Represents a case label within a switch statement. - - - Gets the case keyword token. - - - - Gets an ExpressionSyntax that represents the constant expression that gets matched for the case label. - - - - Represents a default label within a switch statement. - - - Gets the default keyword token. - - - - Represents an ExternAlias directive syntax, e.g. "extern alias MyAlias;" with specifying "/r:MyAlias=SomeAssembly.dll " on the compiler command line. - - - - SyntaxToken representing the extern keyword. - - - SyntaxToken representing the alias keyword. - - - Gets the identifier. - - - SyntaxToken representing the semicolon token. - - - Member declaration syntax. - - - Class representing one or more attributes applied to a language construct. - - - Gets the open bracket token. - - - Gets the optional construct targeted by the attribute. - - - Gets the attribute declaration list. - - - Gets the close bracket token. - - - Attribute argument list syntax. - - - Gets the open paren token. - - - Gets the arguments syntax list. - - - Gets the close paren token. - - - Attribute argument syntax. - - - Gets the expression. - - - Class representing an identifier name followed by an equals token. - - - Gets the identifier name. - - - Type parameter list syntax. - - - Gets the < token. - - - Gets the parameter list. - - - Gets the > token. - - - Type parameter syntax. - - - Gets the attribute declaration list. - - - Gets the identifier. - - - Base class for type declaration syntax. - - - Gets the attribute declaration list. - - - Gets the modifier list. - - - Gets the identifier. - - - Gets the base type list. - - - Gets the open brace token. - - - Gets the close brace token. - - - Gets the optional semicolon token. - - - Class type declaration syntax. - - - Gets the class keyword token. - - - Struct type declaration syntax. - - - Gets the struct keyword token. - - - Interface type declaration syntax. - - - Gets the interface keyword token. - - - Enum type declaration syntax. - - - Gets the enum keyword token. - - - Gets the members declaration list. - - - Gets the optional semicolon token. - - - Gets the attribute declaration list. - - - Gets the identifier. - - - Base list syntax. - - - Gets the colon token. - - - Gets the base type references. - - - Provides the base class from which the classes that represent base type syntax nodes are derived. This is an abstract class. - - - Type parameter constraint clause. - - - Gets the identifier. - - - Gets the colon token. - - - Gets the constraints list. - - - Base type for type parameter constraint syntax. - - - Constructor constraint syntax. - - - Gets the "new" keyword. - - - Gets the open paren keyword. - - - Gets the close paren keyword. - - - Base type for class or struct constraint syntax. - - - Gets the constraint keyword ("class" or "struct"). - - - Type constraint syntax. - - - Gets the type syntax. - - - Gets the attribute declaration list. - - - Gets the modifier list. - - - Gets the attribute declaration list. - - - Gets the modifier list. - - - Gets the attribute declaration list. - - - Gets the modifier list. - - - Base type for method declaration syntax. - - - Gets the attribute declaration list. - - - Gets the modifier list. - - - Gets the parameter list. - - - Gets the optional semicolon token. - - - Operator declaration syntax. - - - Gets the return type. - - - Gets the "operator" keyword. - - - Gets the operator token. - - - Conversion operator declaration syntax. - - - Gets the "implicit" or "explicit" token. - - - Gets the "operator" token. - - - Gets the type. - - - Gets the optional semicolon token. - - - Constructor declaration syntax. - - - Gets the identifier. - - - Gets the optional semicolon token. - - - Constructor initializer syntax. - - - Gets the colon token. - - - Gets the "this" or "base" keyword. - - - Destructor declaration syntax. - - - Gets the tilde token. - - - Gets the identifier. - - - Gets the optional semicolon token. - - - Base type for property declaration syntax. - - - Gets the attribute declaration list. - - - Gets the modifier list. - - - Gets the type syntax. - - - Gets the optional explicit interface specifier. - - - The syntax for the expression body of an expression-bodied member. - - - Gets the identifier. - - - Gets the attribute declaration list. - - - Gets the modifier list. - - - Gets the keyword token, or identifier if an erroneous accessor declaration. - - - Gets the optional body block which may be empty, but it is null if there are no braces. - - - Gets the optional semicolon token. - - - Base type for parameter list syntax. - - - Gets the parameter list. - - - Parameter list syntax with surrounding brackets. - - - Gets the open bracket token. - - - Gets the close bracket token. - - - Gets the attribute declaration list. - - - Gets the modifier list. - - - - A symbol referenced by a cref attribute (e.g. in a <see> or <seealso> documentation comment tag). - For example, the M in <see cref="M" />. - - - - - A symbol reference that definitely refers to a type. - For example, "int", "A::B", "A.B", "A<T>", but not "M()" (has parameter list) or "this" (indexer). - NOTE: TypeCrefSyntax, QualifiedCrefSyntax, and MemberCrefSyntax overlap. The syntax in a TypeCrefSyntax - will always be bound as type, so it's safer to use QualifiedCrefSyntax or MemberCrefSyntax if the symbol - might be a non-type member. - - - - - A symbol reference to a type or non-type member that is qualified by an enclosing type or namespace. - For example, cref="System.String.ToString()". - NOTE: TypeCrefSyntax, QualifiedCrefSyntax, and MemberCrefSyntax overlap. The syntax in a TypeCrefSyntax - will always be bound as type, so it's safer to use QualifiedCrefSyntax or MemberCrefSyntax if the symbol - might be a non-type member. - - - - - The unqualified part of a CrefSyntax. - For example, "ToString()" in "object.ToString()". - NOTE: TypeCrefSyntax, QualifiedCrefSyntax, and MemberCrefSyntax overlap. The syntax in a TypeCrefSyntax - will always be bound as type, so it's safer to use QualifiedCrefSyntax or MemberCrefSyntax if the symbol - might be a non-type member. - - - - - A MemberCrefSyntax specified by a name (an identifier, predefined type keyword, or an alias-qualified name, - with an optional type parameter list) and an optional parameter list. - For example, "M", "M<T>" or "M(int)". - Also, "A::B()" or "string()". - - - - - A MemberCrefSyntax specified by a this keyword and an optional parameter list. - For example, "this" or "this[int]". - - - - - A MemberCrefSyntax specified by an operator keyword, an operator symbol and an optional parameter list. - For example, "operator +" or "operator -[int]". - NOTE: the operator must be overloadable. - - - - Gets the operator token. - - - - A MemberCrefSyntax specified by an implicit or explicit keyword, an operator keyword, a destination type, and an optional parameter list. - For example, "implicit operator int" or "explicit operator MyType(int)". - - - - - A list of cref parameters with surrounding punctuation. - Unlike regular parameters, cref parameters do not have names. - - - - Gets the parameter list. - - - - A parenthesized list of cref parameters. - - - - Gets the open paren token. - - - Gets the close paren token. - - - - A bracketed list of cref parameters. - - - - Gets the open bracket token. - - - Gets the close bracket token. - - - - An element of a BaseCrefParameterListSyntax. - Unlike a regular parameter, a cref parameter has only an optional ref or out keyword and a type - - there is no name and there are no attributes or other modifiers. - - - - - Defines a set of methods to determine how Unicode characters are treated by the C# compiler. - - - - - Returns true if the Unicode character is a hexadecimal digit. - - The Unicode character. - true if the character is a hexadecimal digit 0-9, A-F, a-f. - - - - Returns true if the Unicode character is a decimal digit. - - The Unicode character. - true if the Unicode character is a decimal digit. - - - - Returns the value of a hexadecimal Unicode character. - - The Unicode character. - - - - Returns the value of a decimal Unicode character. - - The Unicode character. - - - - Returns true if the Unicode character represents a whitespace. - - The Unicode character. - - - - Returns true if the Unicode character is a newline character. - - The Unicode character. - - - - Returns true if the Unicode character can be the starting character of a C# identifier. - - The Unicode character. - - - - Returns true if the Unicode character can be a part of a C# identifier. - - The Unicode character. - - - - Check that the name is a valid identifier. - - - - - Spec section 2.4.2 says that identifiers are compared without regard - to leading "@" characters or unicode formatting characters. As in dev10, - this is actually accomplished by dropping such characters during parsing. - Unfortunately, metadata names can still contain these characters and will - not be referenceable from source if they do (lookup will fail since the - characters will have been dropped from the search string). - See DevDiv #14432 for more. - - - - - A custom equality comparer for - - - PERF: The framework specializes EqualityComparer for enums, but only if the underlying type is System.Int32 - Since SyntaxKind's underlying type is System.UInt16, ObjectEqualityComparer will be chosen instead. - - - - - Some preprocessor keywords are only keywords when they appear after a - hash sign (#). For these keywords, the lexer will produce tokens with - Kind = SyntaxKind.IdentifierToken and ContextualKind set to the keyword - SyntaxKind. - - - This wrinkle is specifically not publicly exposed. - - - - - Member declarations that can appear in global code (other than type declarations). - - - - - Returns true if the node is the alias of an AliasQualifiedNameSyntax - - - - - Returns true if the node is the object of an invocation expression. - - - - - Returns true if the node is the object of an element access expression. - - - - - Returns true if the node is in a tree location that is expected to be a type - - - - - - - Returns true if a node is in a tree location that is expected to be either a namespace or type - - - - - - - Is the node the name of a named argument of an invocation, object creation expression, - constructor initializer, or element access, but not an attribute. - - - - - Is the expression the initializer in a fixed statement? - - - - - Displays a value in the C# style. - - - Separate from because we want to link this functionality into - the Formatter project and we don't want it to be public there. - - - - - - Returns a string representation of an object of primitive type. - - A value to display as a string. - Options used to customize formatting of an object value. - A string representation of an object of primitive type (or null if the type is not supported). - - Handles , , , - , , , , , - , , , , , - and null. - - - - - Returns true if the character should be replaced and sets - to the replacement text if the - character is replaced with text other than the Unicode escape sequence. - - - - - Returns a C# string literal with the given value. - - The value that the resulting string literal should have. - Options used to customize formatting of an object value. - A string literal with the given value. - - Escapes non-printable characters. - - - - - Returns a C# character literal with the given value. - - The value that the resulting character literal should have. - Options used to customize formatting of an object value. - A character literal with the given value. - - - - Displays a symbol in the C# style. - - - - - - Displays a symbol in the C# style, based on a . - - The symbol to be displayed. - The formatting options to apply. If null is passed, will be used. - A formatted string that can be displayed to the user. - - The return value is not expected to be syntactically valid C#. - - - - - Displays a symbol in the C# style, based on a . - Based on the context, qualify type and member names as little as possible without - introducing ambiguities. - - The symbol to be displayed. - Semantic information about the context in which the symbol is being displayed. - A position within the or . - The formatting options to apply. If null is passed, will be used. - A formatted string that can be displayed to the user. - - The return value is not expected to be syntactically valid C#. - - - - - Convert a symbol to an array of string parts, each of which has a kind. Useful for - colorizing the display string. - - The symbol to be displayed. - The formatting options to apply. If null is passed, will be used. - A list of display parts. - - Parts are not localized until they are converted to strings. - - - - - Convert a symbol to an array of string parts, each of which has a kind. Useful for - colorizing the display string. - - The symbol to be displayed. - Semantic information about the context in which the symbol is being displayed. - A position within the or . - The formatting options to apply. If null is passed, will be used. - A list of display parts. - - Parts are not localized until they are converted to strings. - - - - - Returns a string representation of an object of primitive type. - - A value to display as a string. - Whether or not to quote string literals. - Whether or not to display integral literals in hexadecimal. - A string representation of an object of primitive type (or null if the type is not supported). - - Handles , , , - , , , , , - , , , , , - and null. - - - - - Returns a C# string literal with the given value. - - The value that the resulting string literal should have. - True to put (double) quotes around the string literal. - A string literal with the given value. - - Escapes non-printable characters. - - - - - Returns a C# character literal with the given value. - - The value that the resulting character literal should have. - True to put (single) quotes around the character literal. - A character literal with the given value. - - Escapes non-printable characters. - - - - - Some error messages are particularly confusing if multiple placeholders are substituted - with the same string. For example, "cannot convert from 'Foo' to 'Foo'". Usually, this - occurs because there are two types in different contexts with the same qualified name. - The solution is to provide additional qualification on each symbol - either a source - location, an assembly path, or an assembly identity. - - - Performs the same function as ErrArgFlags::Unique in the native compiler. - - - - - Virtual dispatch based on a symbol's particular class. - - Additional argument type - Result type - - - - Call the correct VisitXXX method in this class based on the particular type of symbol that is passed in. - Return default(TResult) if symbol is null - - - - - The default Visit method called when visiting any and - if visiting specific symbol method VisitXXX is not overridden - - The visited symbol - Additional argument - - - - - Called when visiting an ; Override this method with - specific implementation; Calling default if it's not - overridden - - The visited symbol - Additional argument - - - - - Called when visiting a ; Override this method with specific - implementation; Calling default if it's not overridden - - The visited symbol - Additional argument - - - - - Called when visiting a ; Should override this method if - want to visit members of the namespace; Calling - and loop over each member; calling on it Or override this with - specific implementation; Calling if it's not - overridden - - The visited symbol - Additional argument - - - - - Called when visiting a ; Override this with specific - implementation; Calling if it's not overridden - - The visited symbol - Additional argument - - - - - Called when visiting an ; Override this with specific - implementation; Calling if it's not overridden - - The visited symbol - Additional argument - - - - - Called when visiting a ; Override this with specific - implementation; Calling if it's not overridden - - The visited symbol - Additional argument - - - - - Called when visiting an - Error symbol is created when there is compiler error; Override this with specific - implementation; Calling if it's not overridden - - The visited symbol - Additional argument - - - - - Called when visiting a ; Override this with specific - implementation; Calling if it's not overridden - - The visited symbol - Additional argument - - - - - Called when visiting a ; Override this with specific - implementation; Calling if it's not overridden - - The visited symbol - Additional argument - - - - - Called when visiting a ; Override this with specific - implementation; Calling default if it's not overridden - - The visited symbol - Additional argument - - - - - Called when visiting a ; Override this with specific - implementation; Calling default if it's not overridden - - The visited symbol - Additional argument - - - - - Called when visiting a ; Override this with specific - implementation; Calling default if it's not overridden - - The visited symbol - Additional argument - - - - - Called when visiting an ; Override this with specific - implementation; Calling default if it's not overridden - - The visited symbol - Additional argument - - - - - Called when visiting a ; Override this with specific - implementation; Calling default if it's not overridden - - The visited symbol - Additional argument - - - - - Called when visiting a ; Override this with specific - implementation; Calling default if it's not overridden - - The visited symbol - Additional argument - - - - - Called when visiting a ; Override this with specific - implementation; Calling default if it's not overridden - - The visited symbol - Additional argument - - - - - Called when visiting an ; Override this with specific - implementation; Calling default if it's not overridden - - The visited symbol - Additional argument - - - - - Called when visiting a ; Override this with specific - implementation; Calling default if it's not overridden - - The visited symbol - Additional argument - - - - - Returns the System.String that represents the current TypedConstant. - - A System.String that represents the current TypedConstant. - - - - Determine whether there is any substitution of type parameters that will - make two types identical. - - - - - Determine whether there is any substitution of type parameters that will - make two types identical. - - LHS - RHS - - Substitutions performed so far (or null for none). - Keys are type parameters, values are types (possibly type parameters). - Will be updated with new substitutions by the callee. - Should be ignored when false is returned. - - True if there exists a type map such that Map(LHS) == Map(RHS). - - Derived from Dev10's BSYMMGR::UnifyTypes. - Two types will not unify if they have different custom modifiers. - - - - - Return true if the given type contains the specified type parameter. - - - - - Represents a non-terminal node in the syntax tree. - - - - - Used by structured trivia which has "parent == null", and therefore must know its - SyntaxTree explicitly when created. - - - - - Creates a clone of a red node that can be used as a root of given syntaxTree. - New node has no parents, position == 0, and syntaxTree as specified. - - - - - Returns a non-null that owns this node. - If this node was created with an explicit non-null , returns that tree. - Otherwise, if this node has a non-null parent, then returns the parent's . - Otherwise, returns a newly created rooted at this node, preserving this node's reference identity. - - - - - The node that contains this node in its Children collection. - - - - - Returns the of the node. - - - - - The language name that this node is syntax of. - - - - - The list of trivia that appears before this node in the source code. - - - - - The list of trivia that appears after this node in the source code. - - - - - Returns the string representation of this node, not including its leading and trailing trivia. - - The string representation of this node, not including its leading and trailing trivia. - The length of the returned string is always the same as Span.Length - - - - Returns full string representation of this node including its leading and trailing trivia. - - The full string representation of this node including its leading and trailing trivia. - The length of the returned string is always the same as FullSpan.Length - - - - Writes the full text of this node to the specified TextWriter. - - - - - Serialize the syntax node into a byte stream. - - - - - Deserialize a syntax node from the byte stream. - - - - - Determines whether this node is structurally equivalent to another. - - - - - Gets a for this node. - - - - - Gets a SyntaxReference for this syntax node. SyntaxReferences can be used to - regain access to a syntax node without keeping the entire tree and source text in - memory. - - - - - Gets a list of all the diagnostics in the sub tree that has this node as its root. - This method does not filter diagnostics based on #pragmas and compiler options - like nowarn, warnaserror etc. - - - - - Gets the first directive of the tree rooted by this node. - - - - - Gets the last directive of the tree rooted by this node. - - - - - Returns child node or token that contains given position. - - - - - Gets the first token of the tree rooted by this node. - - True if zero width tokens should be included, false by - default. - True if skipped tokens should be included, false by default. - True if directives should be included, false by default. - True if documentation comments should be - included, false by default. - - - - - Gets the first token of the tree rooted by this node. - - Only tokens for which this predicate returns true are included. Pass null to include - all tokens. - Steps into trivia if this is not null. Only trivia for which this delegate returns - true are included. - - - - - Gets the last non-zero-width token of the tree rooted by this node. - - True if zero width tokens should be included, false by - default. - True if skipped tokens should be included, false by default. - True if directives should be included, false by default. - True if documentation comments should be - included, false by default. - - - - - Finds a token according to the following rules: - 1) If position matches the End of the node/s FullSpan and the node is CompilationUnit, - then EoF is returned. - - 2) If node.FullSpan.Contains(position) the token that contains given position is - returned. If stepInto is not Nothing, then structured trivia that satisfies the - condition will also be visited during the search. - - 3) Otherwise an IndexOutOfRange is thrown - - - - - Finds a token according to the following rules: - 1) If position matches the End of the node/s FullSpan and the node is CompilationUnit, - then EoF is returned. - - 2) If node.FullSpan.Contains(position) then the token that contains given position is - returned. - - 3) Otherwise an ArgumentOutOfRangeException is thrown - - - - - Finds a token according to the following rules: - 1) If position matches the End of the node/s FullSpan and the node is CompilationUnit, - then EoF is returned. - - 2) If node.FullSpan.Contains(position) then the token that contains given position is - returned. - - 3) Otherwise an ArgumentOutOfRangeException is thrown - - - - - Finds a descendant trivia of this node at the specified position, where the position is - within the span of the node. - - The character position of the trivia relative to the beginning of - the file. - Specifies a function that determines per trivia node, whether to - descend into structured trivia of that node. - - - - - Finds a descendant trivia of this node whose span includes the supplied position. - - The character position of the trivia relative to the beginning of - the file. - Whether to search inside structured trivia. - - - - Determine if this node is structurally equivalent to another. - - - - - - - Represents a which descends an entire graph and - may replace or remove visited SyntaxNodes in depth-first order. - - - - - The parsed representation of a C# source document. - - - - - The options used by the parser to produce the syntax tree. - - - - - Produces a clone of a which will have current syntax tree as its parent. - - Caller must guarantee that if the same instance of makes multiple calls - to this function, only one result is observable. - - Type of the syntax node. - The original syntax node. - A clone of the original syntax node that has current as its parent. - - - - Gets the root node of the syntax tree. - - - - - Gets the root node of the syntax tree if it is already available. - - - - - Gets the root node of the syntax tree asynchronously. - - - By default, the work associated with this method will be executed immediately on the current thread. - Implementations that wish to schedule this work differently should override . - - - - - Gets the root of the syntax tree statically typed as . - - - Ensure that is true for this tree prior to invoking this method. - - Throws this exception if is false. - - - - Determines if two trees are the same, disregarding trivia differences. - - The tree to compare against. - - If true then the trees are equivalent if the contained nodes and tokens declaring metadata visible symbolic information are equivalent, - ignoring any differences of nodes inside method bodies or initializer expressions, otherwise all nodes and tokens must be equivalent. - - - - - Stores positions where preprocessor state changes. Sorted by position. - The updated state can be found in array at the same index. - - - - - Preprocessor states corresponding to positions in . - - - - - Creates a new syntax tree from a syntax node. - - - - - Creates a new syntax tree from a syntax node with text that should correspond to the syntax node. - - This is used by the ExpressionEvaluator. - - - - - Internal helper for class to create a new syntax tree rooted at the given root node. - This method does not create a clone of the given root, but instead preserves it's reference identity. - - NOTE: This method is only intended to be used from property. - NOTE: Do not use this method elsewhere, instead use method for creating a syntax tree. - - - - - Produces a syntax tree by parsing the source text. - - - - - Produces a syntax tree by parsing the source text. - - - - - Creates a new syntax based off this tree using a new source text. - - - If the new source text is a minor change from the current source text an incremental parse will occur - reusing most of the current syntax tree internal data. Otherwise, a full parse will occur using the new - source text. - - - - - Produces a pessimistic list of spans that denote the regions of text in this tree that - are changed from the text of the old tree. - - The old tree. Cannot be null. - The list is pessimistic because it may claim more or larger regions than actually changed. - - - - Gets a list of text changes that when applied to the old tree produce this tree. - - The old tree. Cannot be null. - The list of changes may be different than the original changes that produced this tree. - - - - Gets the location in terms of path, line and column for a given span. - - Span within the tree. - Cancellation token. - - that contains path, line and column information. - - The values are not affected by line mapping directives (#line). - - - - Gets the location in terms of path, line and column after applying source line mapping directives (#line). - - Span within the tree. - Cancellation token. - - A valid that contains path, line and column information. - - If the location path is mapped the resulting path is the path specified in the corresponding #line, - otherwise it's . - - - A location path is considered mapped if the first #line directive that precedes it and that - either specifies an explicit file path or is #line default exists and specifies an explicit path. - - - - - - Gets a for a . FileLinePositionSpans are used - primarily for diagnostics and source locations. - - The source to convert. - When the method returns, contains a boolean value indicating whether this span is considered hidden or not. - A resulting . - - - - Gets a boolean value indicating whether there are any hidden regions in the tree. - - True if there is at least one hidden region. - - - - Given the error code and the source location, get the warning state based on #pragma warning directives. - - Error code. - Source location. - - - - Gets a for the specified text . - - - - - Gets a list of all the diagnostics in the sub tree that has the specified node as its root. - - - This method does not filter diagnostics based on #pragmas and compiler options - like /nowarn, /warnaserror etc. - - - - - Gets a list of all the diagnostics associated with the token and any related trivia. - - - This method does not filter diagnostics based on #pragmas and compiler options - like /nowarn, /warnaserror etc. - - - - - Gets a list of all the diagnostics associated with the trivia. - - - This method does not filter diagnostics based on #pragmas and compiler options - like /nowarn, /warnaserror etc. - - - - - Gets a list of all the diagnostics in either the sub tree that has the specified node as its root or - associated with the token and its related trivia. - - - This method does not filter diagnostics based on #pragmas and compiler options - like /nowarn, /warnaserror etc. - - - - - Gets a list of all the diagnostics in the syntax tree. - - - This method does not filter diagnostics based on #pragmas and compiler options - like /nowarn, /warnaserror etc. - - - - - Represents a visitor that visits only the single CSharpSyntaxNode - passed into its Visit method and produces - a value of the type specified by the parameter. - - - The type of the return value this visitor's Visit method. - - - - Called when the visitor visits a IdentifierNameSyntax node. - - - Called when the visitor visits a QualifiedNameSyntax node. - - - Called when the visitor visits a GenericNameSyntax node. - - - Called when the visitor visits a TypeArgumentListSyntax node. - - - Called when the visitor visits a AliasQualifiedNameSyntax node. - - - Called when the visitor visits a PredefinedTypeSyntax node. - - - Called when the visitor visits a ArrayTypeSyntax node. - - - Called when the visitor visits a ArrayRankSpecifierSyntax node. - - - Called when the visitor visits a PointerTypeSyntax node. - - - Called when the visitor visits a NullableTypeSyntax node. - - - Called when the visitor visits a OmittedTypeArgumentSyntax node. - - - Called when the visitor visits a ParenthesizedExpressionSyntax node. - - - Called when the visitor visits a PrefixUnaryExpressionSyntax node. - - - Called when the visitor visits a AwaitExpressionSyntax node. - - - Called when the visitor visits a PostfixUnaryExpressionSyntax node. - - - Called when the visitor visits a MemberAccessExpressionSyntax node. - - - Called when the visitor visits a ConditionalAccessExpressionSyntax node. - - - Called when the visitor visits a MemberBindingExpressionSyntax node. - - - Called when the visitor visits a ElementBindingExpressionSyntax node. - - - Called when the visitor visits a ImplicitElementAccessSyntax node. - - - Called when the visitor visits a BinaryExpressionSyntax node. - - - Called when the visitor visits a AssignmentExpressionSyntax node. - - - Called when the visitor visits a ConditionalExpressionSyntax node. - - - Called when the visitor visits a ThisExpressionSyntax node. - - - Called when the visitor visits a BaseExpressionSyntax node. - - - Called when the visitor visits a LiteralExpressionSyntax node. - - - Called when the visitor visits a MakeRefExpressionSyntax node. - - - Called when the visitor visits a RefTypeExpressionSyntax node. - - - Called when the visitor visits a RefValueExpressionSyntax node. - - - Called when the visitor visits a CheckedExpressionSyntax node. - - - Called when the visitor visits a DefaultExpressionSyntax node. - - - Called when the visitor visits a TypeOfExpressionSyntax node. - - - Called when the visitor visits a SizeOfExpressionSyntax node. - - - Called when the visitor visits a InvocationExpressionSyntax node. - - - Called when the visitor visits a ElementAccessExpressionSyntax node. - - - Called when the visitor visits a ArgumentListSyntax node. - - - Called when the visitor visits a BracketedArgumentListSyntax node. - - - Called when the visitor visits a ArgumentSyntax node. - - - Called when the visitor visits a NameColonSyntax node. - - - Called when the visitor visits a CastExpressionSyntax node. - - - Called when the visitor visits a AnonymousMethodExpressionSyntax node. - - - Called when the visitor visits a SimpleLambdaExpressionSyntax node. - - - Called when the visitor visits a ParenthesizedLambdaExpressionSyntax node. - - - Called when the visitor visits a InitializerExpressionSyntax node. - - - Called when the visitor visits a ObjectCreationExpressionSyntax node. - - - Called when the visitor visits a AnonymousObjectMemberDeclaratorSyntax node. - - - Called when the visitor visits a AnonymousObjectCreationExpressionSyntax node. - - - Called when the visitor visits a ArrayCreationExpressionSyntax node. - - - Called when the visitor visits a ImplicitArrayCreationExpressionSyntax node. - - - Called when the visitor visits a StackAllocArrayCreationExpressionSyntax node. - - - Called when the visitor visits a QueryExpressionSyntax node. - - - Called when the visitor visits a QueryBodySyntax node. - - - Called when the visitor visits a FromClauseSyntax node. - - - Called when the visitor visits a LetClauseSyntax node. - - - Called when the visitor visits a JoinClauseSyntax node. - - - Called when the visitor visits a JoinIntoClauseSyntax node. - - - Called when the visitor visits a WhereClauseSyntax node. - - - Called when the visitor visits a OrderByClauseSyntax node. - - - Called when the visitor visits a OrderingSyntax node. - - - Called when the visitor visits a SelectClauseSyntax node. - - - Called when the visitor visits a GroupClauseSyntax node. - - - Called when the visitor visits a QueryContinuationSyntax node. - - - Called when the visitor visits a OmittedArraySizeExpressionSyntax node. - - - Called when the visitor visits a InterpolatedStringExpressionSyntax node. - - - Called when the visitor visits a InterpolatedStringTextSyntax node. - - - Called when the visitor visits a InterpolationSyntax node. - - - Called when the visitor visits a InterpolationAlignmentClauseSyntax node. - - - Called when the visitor visits a InterpolationFormatClauseSyntax node. - - - Called when the visitor visits a GlobalStatementSyntax node. - - - Called when the visitor visits a BlockSyntax node. - - - Called when the visitor visits a LocalDeclarationStatementSyntax node. - - - Called when the visitor visits a VariableDeclarationSyntax node. - - - Called when the visitor visits a VariableDeclaratorSyntax node. - - - Called when the visitor visits a EqualsValueClauseSyntax node. - - - Called when the visitor visits a ExpressionStatementSyntax node. - - - Called when the visitor visits a EmptyStatementSyntax node. - - - Called when the visitor visits a LabeledStatementSyntax node. - - - Called when the visitor visits a GotoStatementSyntax node. - - - Called when the visitor visits a BreakStatementSyntax node. - - - Called when the visitor visits a ContinueStatementSyntax node. - - - Called when the visitor visits a ReturnStatementSyntax node. - - - Called when the visitor visits a ThrowStatementSyntax node. - - - Called when the visitor visits a YieldStatementSyntax node. - - - Called when the visitor visits a WhileStatementSyntax node. - - - Called when the visitor visits a DoStatementSyntax node. - - - Called when the visitor visits a ForStatementSyntax node. - - - Called when the visitor visits a ForEachStatementSyntax node. - - - Called when the visitor visits a UsingStatementSyntax node. - - - Called when the visitor visits a FixedStatementSyntax node. - - - Called when the visitor visits a CheckedStatementSyntax node. - - - Called when the visitor visits a UnsafeStatementSyntax node. - - - Called when the visitor visits a LockStatementSyntax node. - - - Called when the visitor visits a IfStatementSyntax node. - - - Called when the visitor visits a ElseClauseSyntax node. - - - Called when the visitor visits a SwitchStatementSyntax node. - - - Called when the visitor visits a SwitchSectionSyntax node. - - - Called when the visitor visits a CaseSwitchLabelSyntax node. - - - Called when the visitor visits a DefaultSwitchLabelSyntax node. - - - Called when the visitor visits a TryStatementSyntax node. - - - Called when the visitor visits a CatchClauseSyntax node. - - - Called when the visitor visits a CatchDeclarationSyntax node. - - - Called when the visitor visits a CatchFilterClauseSyntax node. - - - Called when the visitor visits a FinallyClauseSyntax node. - - - Called when the visitor visits a CompilationUnitSyntax node. - - - Called when the visitor visits a ExternAliasDirectiveSyntax node. - - - Called when the visitor visits a UsingDirectiveSyntax node. - - - Called when the visitor visits a NamespaceDeclarationSyntax node. - - - Called when the visitor visits a AttributeListSyntax node. - - - Called when the visitor visits a AttributeTargetSpecifierSyntax node. - - - Called when the visitor visits a AttributeSyntax node. - - - Called when the visitor visits a AttributeArgumentListSyntax node. - - - Called when the visitor visits a AttributeArgumentSyntax node. - - - Called when the visitor visits a NameEqualsSyntax node. - - - Called when the visitor visits a TypeParameterListSyntax node. - - - Called when the visitor visits a TypeParameterSyntax node. - - - Called when the visitor visits a ClassDeclarationSyntax node. - - - Called when the visitor visits a StructDeclarationSyntax node. - - - Called when the visitor visits a InterfaceDeclarationSyntax node. - - - Called when the visitor visits a EnumDeclarationSyntax node. - - - Called when the visitor visits a DelegateDeclarationSyntax node. - - - Called when the visitor visits a EnumMemberDeclarationSyntax node. - - - Called when the visitor visits a BaseListSyntax node. - - - Called when the visitor visits a SimpleBaseTypeSyntax node. - - - Called when the visitor visits a TypeParameterConstraintClauseSyntax node. - - - Called when the visitor visits a ConstructorConstraintSyntax node. - - - Called when the visitor visits a ClassOrStructConstraintSyntax node. - - - Called when the visitor visits a TypeConstraintSyntax node. - - - Called when the visitor visits a FieldDeclarationSyntax node. - - - Called when the visitor visits a EventFieldDeclarationSyntax node. - - - Called when the visitor visits a ExplicitInterfaceSpecifierSyntax node. - - - Called when the visitor visits a MethodDeclarationSyntax node. - - - Called when the visitor visits a OperatorDeclarationSyntax node. - - - Called when the visitor visits a ConversionOperatorDeclarationSyntax node. - - - Called when the visitor visits a ConstructorDeclarationSyntax node. - - - Called when the visitor visits a ConstructorInitializerSyntax node. - - - Called when the visitor visits a DestructorDeclarationSyntax node. - - - Called when the visitor visits a PropertyDeclarationSyntax node. - - - Called when the visitor visits a ArrowExpressionClauseSyntax node. - - - Called when the visitor visits a EventDeclarationSyntax node. - - - Called when the visitor visits a IndexerDeclarationSyntax node. - - - Called when the visitor visits a AccessorListSyntax node. - - - Called when the visitor visits a AccessorDeclarationSyntax node. - - - Called when the visitor visits a ParameterListSyntax node. - - - Called when the visitor visits a BracketedParameterListSyntax node. - - - Called when the visitor visits a ParameterSyntax node. - - - Called when the visitor visits a IncompleteMemberSyntax node. - - - Called when the visitor visits a SkippedTokensTriviaSyntax node. - - - Called when the visitor visits a DocumentationCommentTriviaSyntax node. - - - Called when the visitor visits a TypeCrefSyntax node. - - - Called when the visitor visits a QualifiedCrefSyntax node. - - - Called when the visitor visits a NameMemberCrefSyntax node. - - - Called when the visitor visits a IndexerMemberCrefSyntax node. - - - Called when the visitor visits a OperatorMemberCrefSyntax node. - - - Called when the visitor visits a ConversionOperatorMemberCrefSyntax node. - - - Called when the visitor visits a CrefParameterListSyntax node. - - - Called when the visitor visits a CrefBracketedParameterListSyntax node. - - - Called when the visitor visits a CrefParameterSyntax node. - - - Called when the visitor visits a XmlElementSyntax node. - - - Called when the visitor visits a XmlElementStartTagSyntax node. - - - Called when the visitor visits a XmlElementEndTagSyntax node. - - - Called when the visitor visits a XmlEmptyElementSyntax node. - - - Called when the visitor visits a XmlNameSyntax node. - - - Called when the visitor visits a XmlPrefixSyntax node. - - - Called when the visitor visits a XmlTextAttributeSyntax node. - - - Called when the visitor visits a XmlCrefAttributeSyntax node. - - - Called when the visitor visits a XmlNameAttributeSyntax node. - - - Called when the visitor visits a XmlTextSyntax node. - - - Called when the visitor visits a XmlCDataSectionSyntax node. - - - Called when the visitor visits a XmlProcessingInstructionSyntax node. - - - Called when the visitor visits a XmlCommentSyntax node. - - - Called when the visitor visits a IfDirectiveTriviaSyntax node. - - - Called when the visitor visits a ElifDirectiveTriviaSyntax node. - - - Called when the visitor visits a ElseDirectiveTriviaSyntax node. - - - Called when the visitor visits a EndIfDirectiveTriviaSyntax node. - - - Called when the visitor visits a RegionDirectiveTriviaSyntax node. - - - Called when the visitor visits a EndRegionDirectiveTriviaSyntax node. - - - Called when the visitor visits a ErrorDirectiveTriviaSyntax node. - - - Called when the visitor visits a WarningDirectiveTriviaSyntax node. - - - Called when the visitor visits a BadDirectiveTriviaSyntax node. - - - Called when the visitor visits a DefineDirectiveTriviaSyntax node. - - - Called when the visitor visits a UndefDirectiveTriviaSyntax node. - - - Called when the visitor visits a LineDirectiveTriviaSyntax node. - - - Called when the visitor visits a PragmaWarningDirectiveTriviaSyntax node. - - - Called when the visitor visits a PragmaChecksumDirectiveTriviaSyntax node. - - - Called when the visitor visits a ReferenceDirectiveTriviaSyntax node. - - - Called when the visitor visits a LoadDirectiveTriviaSyntax node. - - - Called when the visitor visits a ShebangDirectiveTriviaSyntax node. - - - - Represents a visitor that visits only the single CSharpSyntaxNode - passed into its Visit method. - - - - Called when the visitor visits a IdentifierNameSyntax node. - - - Called when the visitor visits a QualifiedNameSyntax node. - - - Called when the visitor visits a GenericNameSyntax node. - - - Called when the visitor visits a TypeArgumentListSyntax node. - - - Called when the visitor visits a AliasQualifiedNameSyntax node. - - - Called when the visitor visits a PredefinedTypeSyntax node. - - - Called when the visitor visits a ArrayTypeSyntax node. - - - Called when the visitor visits a ArrayRankSpecifierSyntax node. - - - Called when the visitor visits a PointerTypeSyntax node. - - - Called when the visitor visits a NullableTypeSyntax node. - - - Called when the visitor visits a OmittedTypeArgumentSyntax node. - - - Called when the visitor visits a ParenthesizedExpressionSyntax node. - - - Called when the visitor visits a PrefixUnaryExpressionSyntax node. - - - Called when the visitor visits a AwaitExpressionSyntax node. - - - Called when the visitor visits a PostfixUnaryExpressionSyntax node. - - - Called when the visitor visits a MemberAccessExpressionSyntax node. - - - Called when the visitor visits a ConditionalAccessExpressionSyntax node. - - - Called when the visitor visits a MemberBindingExpressionSyntax node. - - - Called when the visitor visits a ElementBindingExpressionSyntax node. - - - Called when the visitor visits a ImplicitElementAccessSyntax node. - - - Called when the visitor visits a BinaryExpressionSyntax node. - - - Called when the visitor visits a AssignmentExpressionSyntax node. - - - Called when the visitor visits a ConditionalExpressionSyntax node. - - - Called when the visitor visits a ThisExpressionSyntax node. - - - Called when the visitor visits a BaseExpressionSyntax node. - - - Called when the visitor visits a LiteralExpressionSyntax node. - - - Called when the visitor visits a MakeRefExpressionSyntax node. - - - Called when the visitor visits a RefTypeExpressionSyntax node. - - - Called when the visitor visits a RefValueExpressionSyntax node. - - - Called when the visitor visits a CheckedExpressionSyntax node. - - - Called when the visitor visits a DefaultExpressionSyntax node. - - - Called when the visitor visits a TypeOfExpressionSyntax node. - - - Called when the visitor visits a SizeOfExpressionSyntax node. - - - Called when the visitor visits a InvocationExpressionSyntax node. - - - Called when the visitor visits a ElementAccessExpressionSyntax node. - - - Called when the visitor visits a ArgumentListSyntax node. - - - Called when the visitor visits a BracketedArgumentListSyntax node. - - - Called when the visitor visits a ArgumentSyntax node. - - - Called when the visitor visits a NameColonSyntax node. - - - Called when the visitor visits a CastExpressionSyntax node. - - - Called when the visitor visits a AnonymousMethodExpressionSyntax node. - - - Called when the visitor visits a SimpleLambdaExpressionSyntax node. - - - Called when the visitor visits a ParenthesizedLambdaExpressionSyntax node. - - - Called when the visitor visits a InitializerExpressionSyntax node. - - - Called when the visitor visits a ObjectCreationExpressionSyntax node. - - - Called when the visitor visits a AnonymousObjectMemberDeclaratorSyntax node. - - - Called when the visitor visits a AnonymousObjectCreationExpressionSyntax node. - - - Called when the visitor visits a ArrayCreationExpressionSyntax node. - - - Called when the visitor visits a ImplicitArrayCreationExpressionSyntax node. - - - Called when the visitor visits a StackAllocArrayCreationExpressionSyntax node. - - - Called when the visitor visits a QueryExpressionSyntax node. - - - Called when the visitor visits a QueryBodySyntax node. - - - Called when the visitor visits a FromClauseSyntax node. - - - Called when the visitor visits a LetClauseSyntax node. - - - Called when the visitor visits a JoinClauseSyntax node. - - - Called when the visitor visits a JoinIntoClauseSyntax node. - - - Called when the visitor visits a WhereClauseSyntax node. - - - Called when the visitor visits a OrderByClauseSyntax node. - - - Called when the visitor visits a OrderingSyntax node. - - - Called when the visitor visits a SelectClauseSyntax node. - - - Called when the visitor visits a GroupClauseSyntax node. - - - Called when the visitor visits a QueryContinuationSyntax node. - - - Called when the visitor visits a OmittedArraySizeExpressionSyntax node. - - - Called when the visitor visits a InterpolatedStringExpressionSyntax node. - - - Called when the visitor visits a InterpolatedStringTextSyntax node. - - - Called when the visitor visits a InterpolationSyntax node. - - - Called when the visitor visits a InterpolationAlignmentClauseSyntax node. - - - Called when the visitor visits a InterpolationFormatClauseSyntax node. - - - Called when the visitor visits a GlobalStatementSyntax node. - - - Called when the visitor visits a BlockSyntax node. - - - Called when the visitor visits a LocalDeclarationStatementSyntax node. - - - Called when the visitor visits a VariableDeclarationSyntax node. - - - Called when the visitor visits a VariableDeclaratorSyntax node. - - - Called when the visitor visits a EqualsValueClauseSyntax node. - - - Called when the visitor visits a ExpressionStatementSyntax node. - - - Called when the visitor visits a EmptyStatementSyntax node. - - - Called when the visitor visits a LabeledStatementSyntax node. - - - Called when the visitor visits a GotoStatementSyntax node. - - - Called when the visitor visits a BreakStatementSyntax node. - - - Called when the visitor visits a ContinueStatementSyntax node. - - - Called when the visitor visits a ReturnStatementSyntax node. - - - Called when the visitor visits a ThrowStatementSyntax node. - - - Called when the visitor visits a YieldStatementSyntax node. - - - Called when the visitor visits a WhileStatementSyntax node. - - - Called when the visitor visits a DoStatementSyntax node. - - - Called when the visitor visits a ForStatementSyntax node. - - - Called when the visitor visits a ForEachStatementSyntax node. - - - Called when the visitor visits a UsingStatementSyntax node. - - - Called when the visitor visits a FixedStatementSyntax node. - - - Called when the visitor visits a CheckedStatementSyntax node. - - - Called when the visitor visits a UnsafeStatementSyntax node. - - - Called when the visitor visits a LockStatementSyntax node. - - - Called when the visitor visits a IfStatementSyntax node. - - - Called when the visitor visits a ElseClauseSyntax node. - - - Called when the visitor visits a SwitchStatementSyntax node. - - - Called when the visitor visits a SwitchSectionSyntax node. - - - Called when the visitor visits a CaseSwitchLabelSyntax node. - - - Called when the visitor visits a DefaultSwitchLabelSyntax node. - - - Called when the visitor visits a TryStatementSyntax node. - - - Called when the visitor visits a CatchClauseSyntax node. - - - Called when the visitor visits a CatchDeclarationSyntax node. - - - Called when the visitor visits a CatchFilterClauseSyntax node. - - - Called when the visitor visits a FinallyClauseSyntax node. - - - Called when the visitor visits a CompilationUnitSyntax node. - - - Called when the visitor visits a ExternAliasDirectiveSyntax node. - - - Called when the visitor visits a UsingDirectiveSyntax node. - - - Called when the visitor visits a NamespaceDeclarationSyntax node. - - - Called when the visitor visits a AttributeListSyntax node. - - - Called when the visitor visits a AttributeTargetSpecifierSyntax node. - - - Called when the visitor visits a AttributeSyntax node. - - - Called when the visitor visits a AttributeArgumentListSyntax node. - - - Called when the visitor visits a AttributeArgumentSyntax node. - - - Called when the visitor visits a NameEqualsSyntax node. - - - Called when the visitor visits a TypeParameterListSyntax node. - - - Called when the visitor visits a TypeParameterSyntax node. - - - Called when the visitor visits a ClassDeclarationSyntax node. - - - Called when the visitor visits a StructDeclarationSyntax node. - - - Called when the visitor visits a InterfaceDeclarationSyntax node. - - - Called when the visitor visits a EnumDeclarationSyntax node. - - - Called when the visitor visits a DelegateDeclarationSyntax node. - - - Called when the visitor visits a EnumMemberDeclarationSyntax node. - - - Called when the visitor visits a BaseListSyntax node. - - - Called when the visitor visits a SimpleBaseTypeSyntax node. - - - Called when the visitor visits a TypeParameterConstraintClauseSyntax node. - - - Called when the visitor visits a ConstructorConstraintSyntax node. - - - Called when the visitor visits a ClassOrStructConstraintSyntax node. - - - Called when the visitor visits a TypeConstraintSyntax node. - - - Called when the visitor visits a FieldDeclarationSyntax node. - - - Called when the visitor visits a EventFieldDeclarationSyntax node. - - - Called when the visitor visits a ExplicitInterfaceSpecifierSyntax node. - - - Called when the visitor visits a MethodDeclarationSyntax node. - - - Called when the visitor visits a OperatorDeclarationSyntax node. - - - Called when the visitor visits a ConversionOperatorDeclarationSyntax node. - - - Called when the visitor visits a ConstructorDeclarationSyntax node. - - - Called when the visitor visits a ConstructorInitializerSyntax node. - - - Called when the visitor visits a DestructorDeclarationSyntax node. - - - Called when the visitor visits a PropertyDeclarationSyntax node. - - - Called when the visitor visits a ArrowExpressionClauseSyntax node. - - - Called when the visitor visits a EventDeclarationSyntax node. - - - Called when the visitor visits a IndexerDeclarationSyntax node. - - - Called when the visitor visits a AccessorListSyntax node. - - - Called when the visitor visits a AccessorDeclarationSyntax node. - - - Called when the visitor visits a ParameterListSyntax node. - - - Called when the visitor visits a BracketedParameterListSyntax node. - - - Called when the visitor visits a ParameterSyntax node. - - - Called when the visitor visits a IncompleteMemberSyntax node. - - - Called when the visitor visits a SkippedTokensTriviaSyntax node. - - - Called when the visitor visits a DocumentationCommentTriviaSyntax node. - - - Called when the visitor visits a TypeCrefSyntax node. - - - Called when the visitor visits a QualifiedCrefSyntax node. - - - Called when the visitor visits a NameMemberCrefSyntax node. - - - Called when the visitor visits a IndexerMemberCrefSyntax node. - - - Called when the visitor visits a OperatorMemberCrefSyntax node. - - - Called when the visitor visits a ConversionOperatorMemberCrefSyntax node. - - - Called when the visitor visits a CrefParameterListSyntax node. - - - Called when the visitor visits a CrefBracketedParameterListSyntax node. - - - Called when the visitor visits a CrefParameterSyntax node. - - - Called when the visitor visits a XmlElementSyntax node. - - - Called when the visitor visits a XmlElementStartTagSyntax node. - - - Called when the visitor visits a XmlElementEndTagSyntax node. - - - Called when the visitor visits a XmlEmptyElementSyntax node. - - - Called when the visitor visits a XmlNameSyntax node. - - - Called when the visitor visits a XmlPrefixSyntax node. - - - Called when the visitor visits a XmlTextAttributeSyntax node. - - - Called when the visitor visits a XmlCrefAttributeSyntax node. - - - Called when the visitor visits a XmlNameAttributeSyntax node. - - - Called when the visitor visits a XmlTextSyntax node. - - - Called when the visitor visits a XmlCDataSectionSyntax node. - - - Called when the visitor visits a XmlProcessingInstructionSyntax node. - - - Called when the visitor visits a XmlCommentSyntax node. - - - Called when the visitor visits a IfDirectiveTriviaSyntax node. - - - Called when the visitor visits a ElifDirectiveTriviaSyntax node. - - - Called when the visitor visits a ElseDirectiveTriviaSyntax node. - - - Called when the visitor visits a EndIfDirectiveTriviaSyntax node. - - - Called when the visitor visits a RegionDirectiveTriviaSyntax node. - - - Called when the visitor visits a EndRegionDirectiveTriviaSyntax node. - - - Called when the visitor visits a ErrorDirectiveTriviaSyntax node. - - - Called when the visitor visits a WarningDirectiveTriviaSyntax node. - - - Called when the visitor visits a BadDirectiveTriviaSyntax node. - - - Called when the visitor visits a DefineDirectiveTriviaSyntax node. - - - Called when the visitor visits a UndefDirectiveTriviaSyntax node. - - - Called when the visitor visits a LineDirectiveTriviaSyntax node. - - - Called when the visitor visits a PragmaWarningDirectiveTriviaSyntax node. - - - Called when the visitor visits a PragmaChecksumDirectiveTriviaSyntax node. - - - Called when the visitor visits a ReferenceDirectiveTriviaSyntax node. - - - Called when the visitor visits a LoadDirectiveTriviaSyntax node. - - - Called when the visitor visits a ShebangDirectiveTriviaSyntax node. - - - - Represents a that descends an entire graph - visiting each CSharpSyntaxNode and its child SyntaxNodes and s in depth-first order. - - - - - A class containing factory methods for constructing syntax nodes, tokens and trivia. - - - - Creates a new AnonymousMethodExpressionSyntax instance. - - - - A trivia with kind EndOfLineTrivia containing both the carriage return and line feed characters. - - - - - A trivia with kind EndOfLineTrivia containing a single line feed character. - - - - - A trivia with kind EndOfLineTrivia containing a single carriage return character. - - - - - A trivia with kind WhitespaceTrivia containing a single space character. - - - - - A trivia with kind WhitespaceTrivia containing a single tab character. - - - - - An elastic trivia with kind EndOfLineTrivia containing both the carriage return and line feed characters. - Elastic trivia are used to denote trivia that was not produced by parsing source text, and are usually not - preserved during formatting. - - - - - An elastic trivia with kind EndOfLineTrivia containing a single line feed character. Elastic trivia are used - to denote trivia that was not produced by parsing source text, and are usually not preserved during - formatting. - - - - - An elastic trivia with kind EndOfLineTrivia containing a single carriage return character. Elastic trivia - are used to denote trivia that was not produced by parsing source text, and are usually not preserved during - formatting. - - - - - An elastic trivia with kind WhitespaceTrivia containing a single space character. Elastic trivia are used to - denote trivia that was not produced by parsing source text, and are usually not preserved during formatting. - - - - - An elastic trivia with kind WhitespaceTrivia containing a single tab character. Elastic trivia are used to - denote trivia that was not produced by parsing source text, and are usually not preserved during formatting. - - - - - An elastic trivia with kind WhitespaceTrivia containing no characters. Elastic marker trivia are included - automatically by factory methods when trivia is not specified. Syntax formatting will replace elastic - markers with appropriate trivia. - - - - - Creates a trivia with kind EndOfLineTrivia containing the specified text. - - The text of the end of line. Any text can be specified here, however only carriage return and - line feed characters are recognized by the parser as end of line. - - - - Creates a trivia with kind EndOfLineTrivia containing the specified text. Elastic trivia are used to - denote trivia that was not produced by parsing source text, and are usually not preserved during formatting. - - The text of the end of line. Any text can be specified here, however only carriage return and - line feed characters are recognized by the parser as end of line. - - - - Creates a trivia with kind WhitespaceTrivia containing the specified text. - - The text of the whitespace. Any text can be specified here, however only specific - whitespace characters are recognized by the parser. - - - - Creates a trivia with kind WhitespaceTrivia containing the specified text. Elastic trivia are used to - denote trivia that was not produced by parsing source text, and are usually not preserved during formatting. - - The text of the whitespace. Any text can be specified here, however only specific - whitespace characters are recognized by the parser. - - - - Creates a trivia with kind either SingleLineCommentTrivia or MultiLineCommentTrivia containing the specified - text. - - The entire text of the comment including the leading '//' token for single line comments - or stop or start tokens for multiline comments. - - - - Creates a trivia with kind DisabledTextTrivia. Disabled text corresponds to any text between directives that - is not considered active. - - - - - Creates a trivia with kind PreprocessingMessageTrivia. - - - - - Trivia nodes represent parts of the program text that are not parts of the - syntactic grammar, such as spaces, newlines, comments, preprocessor - directives, and disabled code. - - - A representing the specific kind of . One of - , , - , , - , - - - The actual text of this token. - - - - - Creates a token corresponding to a syntax kind. This method can be used for token syntax kinds whose text - can be inferred by the kind alone. - - A syntax kind value for a token. These have the suffix Token or Keyword. - - - - - Creates a token corresponding to syntax kind. This method can be used for token syntax kinds whose text can - be inferred by the kind alone. - - A list of trivia immediately preceding the token. - A syntax kind value for a token. These have the suffix Token or Keyword. - A list of trivia immediately following the token. - - - - Creates a token corresponding to syntax kind. This method gives control over token Text and ValueText. - - For example, consider the text '<see cref="operator &#43;"/>'. To create a token for the value of - the operator symbol (&#43;), one would call - Token(default(SyntaxTriviaList), SyntaxKind.PlusToken, "&#43;", "+", default(SyntaxTriviaList)). - - A list of trivia immediately preceding the token. - A syntax kind value for a token. These have the suffix Token or Keyword. - The text from which this token was created (e.g. lexed). - How C# should interpret the text of this token. - A list of trivia immediately following the token. - - - - Creates a missing token corresponding to syntax kind. A missing token is produced by the parser when an - expected token is not found. A missing token has no text and normally has associated diagnostics. - - A syntax kind value for a token. These have the suffix Token or Keyword. - - - - Creates a missing token corresponding to syntax kind. A missing token is produced by the parser when an - expected token is not found. A missing token has no text and normally has associated diagnostics. - - A list of trivia immediately preceding the token. - A syntax kind value for a token. These have the suffix Token or Keyword. - A list of trivia immediately following the token. - - - - Creates a token with kind IdentifierToken containing the specified text. - The raw text of the identifier name, including any escapes or leading '@' - character. - - - - - Creates a token with kind IdentifierToken containing the specified text. - - A list of trivia immediately preceding the token. - The raw text of the identifier name, including any escapes or leading '@' - character. - A list of trivia immediately following the token. - - - - Creates a verbatim token with kind IdentifierToken containing the specified text. - - A list of trivia immediately preceding the token. - The raw text of the identifier name, including any escapes or leading '@' - character as it is in source. - The canonical value of the token's text. - A list of trivia immediately following the token. - - - - Creates a token with kind IdentifierToken containing the specified text. - - A list of trivia immediately preceding the token. - An alternative SyntaxKind that can be inferred for this token in special - contexts. These are usually keywords. - The raw text of the identifier name, including any escapes or leading '@' - character. - The text of the identifier name without escapes or leading '@' character. - A list of trivia immediately following the token. - - - - - Creates a token with kind NumericLiteralToken from a 4-byte signed integer value. - - The 4-byte signed integer value to be represented by the returned token. - - - - Creates a token with kind NumericLiteralToken from the text and corresponding 4-byte signed integer value. - - The raw text of the literal. - The 4-byte signed integer value to be represented by the returned token. - - - - Creates a token with kind NumericLiteralToken from the text and corresponding 4-byte signed integer value. - - A list of trivia immediately preceding the token. - The raw text of the literal. - The 4-byte signed integer value to be represented by the returned token. - A list of trivia immediately following the token. - - - - Creates a token with kind NumericLiteralToken from a 4-byte unsigned integer value. - - The 4-byte unsigned integer value to be represented by the returned token. - - - - Creates a token with kind NumericLiteralToken from the text and corresponding 4-byte unsigned integer value. - - The raw text of the literal. - The 4-byte unsigned integer value to be represented by the returned token. - - - - Creates a token with kind NumericLiteralToken from the text and corresponding 4-byte unsigned integer value. - - A list of trivia immediately preceding the token. - The raw text of the literal. - The 4-byte unsigned integer value to be represented by the returned token. - A list of trivia immediately following the token. - - - - Creates a token with kind NumericLiteralToken from an 8-byte signed integer value. - - The 8-byte signed integer value to be represented by the returned token. - - - - Creates a token with kind NumericLiteralToken from the text and corresponding 8-byte signed integer value. - - The raw text of the literal. - The 8-byte signed integer value to be represented by the returned token. - - - - Creates a token with kind NumericLiteralToken from the text and corresponding 8-byte signed integer value. - - A list of trivia immediately preceding the token. - The raw text of the literal. - The 8-byte signed integer value to be represented by the returned token. - A list of trivia immediately following the token. - - - - Creates a token with kind NumericLiteralToken from an 8-byte unsigned integer value. - - The 8-byte unsigned integer value to be represented by the returned token. - - - - Creates a token with kind NumericLiteralToken from the text and corresponding 8-byte unsigned integer value. - - The raw text of the literal. - The 8-byte unsigned integer value to be represented by the returned token. - - - - Creates a token with kind NumericLiteralToken from the text and corresponding 8-byte unsigned integer value. - - A list of trivia immediately preceding the token. - The raw text of the literal. - The 8-byte unsigned integer value to be represented by the returned token. - A list of trivia immediately following the token. - - - - Creates a token with kind NumericLiteralToken from a 4-byte floating point value. - - The 4-byte floating point value to be represented by the returned token. - - - - Creates a token with kind NumericLiteralToken from the text and corresponding 4-byte floating point value. - - The raw text of the literal. - The 4-byte floating point value to be represented by the returned token. - - - - Creates a token with kind NumericLiteralToken from the text and corresponding 4-byte floating point value. - - A list of trivia immediately preceding the token. - The raw text of the literal. - The 4-byte floating point value to be represented by the returned token. - A list of trivia immediately following the token. - - - - Creates a token with kind NumericLiteralToken from an 8-byte floating point value. - - The 8-byte floating point value to be represented by the returned token. - - - - Creates a token with kind NumericLiteralToken from the text and corresponding 8-byte floating point value. - - The raw text of the literal. - The 8-byte floating point value to be represented by the returned token. - - - - Creates a token with kind NumericLiteralToken from the text and corresponding 8-byte floating point value. - - A list of trivia immediately preceding the token. - The raw text of the literal. - The 8-byte floating point value to be represented by the returned token. - A list of trivia immediately following the token. - - - - Creates a token with kind NumericLiteralToken from a decimal value. - - The decimal value to be represented by the returned token. - - - - Creates a token with kind NumericLiteralToken from the text and corresponding decimal value. - - The raw text of the literal. - The decimal value to be represented by the returned token. - - - - Creates a token with kind NumericLiteralToken from the text and corresponding decimal value. - - A list of trivia immediately preceding the token. - The raw text of the literal. - The decimal value to be represented by the returned token. - A list of trivia immediately following the token. - - - - Creates a token with kind StringLiteralToken from a string value. - - The string value to be represented by the returned token. - - - - Creates a token with kind StringLiteralToken from the text and corresponding string value. - - The raw text of the literal, including quotes and escape sequences. - The string value to be represented by the returned token. - - - - Creates a token with kind StringLiteralToken from the text and corresponding string value. - - A list of trivia immediately preceding the token. - The raw text of the literal, including quotes and escape sequences. - The string value to be represented by the returned token. - A list of trivia immediately following the token. - - - - Creates a token with kind CharacterLiteralToken from a character value. - - The character value to be represented by the returned token. - - - - Creates a token with kind CharacterLiteralToken from the text and corresponding character value. - - The raw text of the literal, including quotes and escape sequences. - The character value to be represented by the returned token. - - - - Creates a token with kind CharacterLiteralToken from the text and corresponding character value. - - A list of trivia immediately preceding the token. - The raw text of the literal, including quotes and escape sequences. - The character value to be represented by the returned token. - A list of trivia immediately following the token. - - - - Creates a token with kind BadToken. - - A list of trivia immediately preceding the token. - The raw text of the bad token. - A list of trivia immediately following the token. - - - - Creates a token with kind XmlTextLiteralToken. - - A list of trivia immediately preceding the token. - The raw text of the literal. - The xml text value. - A list of trivia immediately following the token. - - - - Creates a token with kind XmlTextLiteralNewLineToken. - - A list of trivia immediately preceding the token. - The raw text of the literal. - The xml text new line value. - A list of trivia immediately following the token. - - - - Creates a token with kind XmlEntityLiteralToken. - - A list of trivia immediately preceding the token. - The raw text of the literal. - The xml entity value. - A list of trivia immediately following the token. - - - - Creates a trivia with kind DocumentationCommentExteriorTrivia. - - The raw text of the literal. - - - - Creates an empty list of syntax nodes. - - The specific type of the element nodes. - - - - Creates a singleton list of syntax nodes. - - The specific type of the element nodes. - The single element node. - - - - - Creates a list of syntax nodes. - - The specific type of the element nodes. - A sequence of element nodes. - - - - Creates an empty list of tokens. - - - - - Creates a singleton list of tokens. - - The single token. - - - - Creates a list of tokens. - - An array of tokens. - - - - Creates a list of tokens. - - - - - - - Creates a trivia from a StructuredTriviaSyntax node. - - - - - Creates an empty list of trivia. - - - - - Creates a singleton list of trivia. - - A single trivia. - - - - Creates a list of trivia. - - An array of trivia. - - - - Creates a list of trivia. - - A sequence of trivia. - - - - Creates an empty separated list. - - The specific type of the element nodes. - - - - Creates a singleton separated list. - - The specific type of the element nodes. - A single node. - - - - Creates a separated list of nodes from a sequence of nodes, synthesizing comma separators in between. - - The specific type of the element nodes. - A sequence of syntax nodes. - - - - Creates a separated list of nodes from a sequence of nodes and a sequence of separator tokens. - - The specific type of the element nodes. - A sequence of syntax nodes. - A sequence of token to be interleaved between the nodes. The number of tokens must - be one less than the number of nodes. - - - - Creates a separated list from a sequence of nodes and tokens, starting with a node and alternating between additional nodes and separator tokens. - - The specific type of the element nodes. - A sequence of nodes or tokens, alternating between nodes and separator tokens. - - - - Creates a separated list from a , where the list elements start with a node and then alternate between - additional nodes and separator tokens. - - The specific type of the element nodes. - The list of nodes and tokens. - - - - Creates an empty . - - - - - Create a from a sequence of . - - The sequence of nodes and tokens - - - - Create a from one or more . - - The nodes and tokens - - - - Creates an IdentifierNameSyntax node. - - The identifier name. - - - - Create a new syntax tree from a syntax node. - - - - - Produces a syntax tree by parsing the source text. - - - - - Produces a syntax tree by parsing the source text. - - - - - Parse a list of trivia rules for leading trivia. - - - - - Parse a list of trivia rules for leading trivia. - - - - - Parse a list of trivia using the parsing rules for trailing trivia. - - - - - Parse a C# language token. - - The text of the token including leading and trailing trivia. - Optional offset into text. - - - - Parse a sequence of C# language tokens. - - The text of all the tokens. - An integer to use as the starting position of the first token. - Optional offset into text. - Parse options. - - - - Parse a NameSyntax node using the grammar rule for names. - - - - - Parse a TypeNameSyntax node using the grammar rule for type names. - - - - - Parse an ExpressionSyntax node using the lowest precedence grammar rule for expressions. - - The text of the expression. - Optional offset into text. - The optional parse options to use. If no options are specified default options are - used. - True if extra tokens in the input should be treated as an error - - - - Parse a StatementSyntaxNode using grammar rule for statements. - - The text of the statement. - Optional offset into text. - The optional parse options to use. If no options are specified default options are - used. - True if extra tokens in the input should be treated as an error - - - - Parse a CompilationUnitSyntax using the grammar rule for an entire compilation unit (file). To produce a - SyntaxTree instance, use CSharpSyntaxTree.ParseText instead. - - The text of the compilation unit. - Optional offset into text. - The optional parse options to use. If no options are specified default options are - used. - - - - Parse a ParameterListSyntax node. - - The text of the parenthesized parameter list. - Optional offset into text. - The optional parse options to use. If no options are specified default options are - used. - True if extra tokens in the input should be treated as an error - - - - Parse a BracketedParameterListSyntax node. - - The text of the bracketed parameter list. - Optional offset into text. - The optional parse options to use. If no options are specified default options are - used. - True if extra tokens in the input should be treated as an error - - - - Parse an ArgumentListSyntax node. - - The text of the parenthesized argument list. - Optional offset into text. - The optional parse options to use. If no options are specified default options are - used. - True if extra tokens in the input should be treated as an error - - - - Parse a BracketedArgumentListSyntax node. - - The text of the bracketed argument list. - Optional offset into text. - The optional parse options to use. If no options are specified default options are - used. - True if extra tokens in the input should be treated as an error - - - - Parse an AttributeArgumentListSyntax node. - - The text of the attribute argument list. - Optional offset into text. - The optional parse options to use. If no options are specified default options are - used. - True if extra tokens in the input should be treated as an error - - - - Helper method for wrapping a string in an SourceText. - - - - - Determines if two trees are the same, disregarding trivia differences. - - The original tree. - The new tree. - - If true then the trees are equivalent if the contained nodes and tokens declaring - metadata visible symbolic information are equivalent, ignoring any differences of nodes inside method bodies - or initializer expressions, otherwise all nodes and tokens must be equivalent. - - - - - Determines if two syntax nodes are the same, disregarding trivia differences. - - The old node. - The new node. - - If true then the nodes are equivalent if the contained nodes and tokens declaring - metadata visible symbolic information are equivalent, ignoring any differences of nodes inside method bodies - or initializer expressions, otherwise all nodes and tokens must be equivalent. - - - - - Determines if two syntax nodes are the same, disregarding trivia differences. - - The old node. - The new node. - - If specified called for every child syntax node (not token) that is visited during the comparison. - If it returns true the child is recursively visited, otherwise the child and its subtree is disregarded. - - - - - Determines if two syntax tokens are the same, disregarding trivia differences. - - The old token. - The new token. - - - - Determines if two lists of tokens are the same, disregarding trivia differences. - - The old token list. - The new token list. - - - - Determines if two lists of syntax nodes are the same, disregarding trivia differences. - - The old list. - The new list. - - If true then the nodes are equivalent if the contained nodes and tokens declaring - metadata visible symbolic information are equivalent, ignoring any differences of nodes inside method bodies - or initializer expressions, otherwise all nodes and tokens must be equivalent. - - - - - Determines if two lists of syntax nodes are the same, disregarding trivia differences. - - The old list. - The new list. - - If specified called for every child syntax node (not token) that is visited during the comparison. - If it returns true the child is recursively visited, otherwise the child and its subtree is disregarded. - - - - - Determines if two lists of syntax nodes are the same, disregarding trivia differences. - - The old list. - The new list. - - If true then the nodes are equivalent if the contained nodes and tokens declaring - metadata visible symbolic information are equivalent, ignoring any differences of nodes inside method bodies - or initializer expressions, otherwise all nodes and tokens must be equivalent. - - - - - Determines if two lists of syntax nodes are the same, disregarding trivia differences. - - The old list. - The new list. - - If specified called for every child syntax node (not token) that is visited during the comparison. - If it returns true the child is recursively visited, otherwise the child and its subtree is disregarded. - - - - - Gets the containing expression that is actually a language expression and not just typed - as an ExpressionSyntax for convenience. For example, NameSyntax nodes on the right side - of qualified names and member access expressions are not language expressions, yet the - containing qualified names or member access expressions are indeed expressions. - - - - - Gets the containing expression that is actually a language expression and not just typed - as an ExpressionSyntax for convenience. For example, NameSyntax nodes on the right side - of qualified names and member access expressions are not language expressions, yet the - containing qualified names or member access expressions are indeed expressions. - Similarly, if the input node is a cref part that is not independently meaningful, then - the result will be the full cref. - - - - - Given a conditional binding expression, find corresponding conditional access node. - - - - - Converts a generic name expression into one without the generic arguments. - - - - - - - Determines whether the given text is considered a syntactically complete submission. - - - - Creates a new CaseSwitchLabelSyntax instance. - - - Creates a new DefaultSwitchLabelSyntax instance. - - - Creates a new BlockSyntax instance. - - - Creates a new BlockSyntax instance. - - - Creates a new UsingDirectiveSyntax instance. - - - Creates a new IdentifierNameSyntax instance. - - - Creates a new QualifiedNameSyntax instance. - - - Creates a new QualifiedNameSyntax instance. - - - Creates a new GenericNameSyntax instance. - - - Creates a new GenericNameSyntax instance. - - - Creates a new GenericNameSyntax instance. - - - Creates a new TypeArgumentListSyntax instance. - - - Creates a new TypeArgumentListSyntax instance. - - - Creates a new AliasQualifiedNameSyntax instance. - - - Creates a new AliasQualifiedNameSyntax instance. - - - Creates a new AliasQualifiedNameSyntax instance. - - - Creates a new PredefinedTypeSyntax instance. - - - Creates a new ArrayTypeSyntax instance. - - - Creates a new ArrayTypeSyntax instance. - - - Creates a new ArrayRankSpecifierSyntax instance. - - - Creates a new ArrayRankSpecifierSyntax instance. - - - Creates a new PointerTypeSyntax instance. - - - Creates a new PointerTypeSyntax instance. - - - Creates a new NullableTypeSyntax instance. - - - Creates a new NullableTypeSyntax instance. - - - Creates a new OmittedTypeArgumentSyntax instance. - - - Creates a new OmittedTypeArgumentSyntax instance. - - - Creates a new ParenthesizedExpressionSyntax instance. - - - Creates a new ParenthesizedExpressionSyntax instance. - - - Creates a new PrefixUnaryExpressionSyntax instance. - - - Creates a new PrefixUnaryExpressionSyntax instance. - - - Creates a new AwaitExpressionSyntax instance. - - - Creates a new AwaitExpressionSyntax instance. - - - Creates a new PostfixUnaryExpressionSyntax instance. - - - Creates a new PostfixUnaryExpressionSyntax instance. - - - Creates a new MemberAccessExpressionSyntax instance. - - - Creates a new MemberAccessExpressionSyntax instance. - - - Creates a new ConditionalAccessExpressionSyntax instance. - - - Creates a new ConditionalAccessExpressionSyntax instance. - - - Creates a new MemberBindingExpressionSyntax instance. - - - Creates a new MemberBindingExpressionSyntax instance. - - - Creates a new ElementBindingExpressionSyntax instance. - - - Creates a new ElementBindingExpressionSyntax instance. - - - Creates a new ImplicitElementAccessSyntax instance. - - - Creates a new ImplicitElementAccessSyntax instance. - - - Creates a new BinaryExpressionSyntax instance. - - - Creates a new BinaryExpressionSyntax instance. - - - Creates a new AssignmentExpressionSyntax instance. - - - Creates a new AssignmentExpressionSyntax instance. - - - Creates a new ConditionalExpressionSyntax instance. - - - Creates a new ConditionalExpressionSyntax instance. - - - Creates a new ThisExpressionSyntax instance. - - - Creates a new ThisExpressionSyntax instance. - - - Creates a new BaseExpressionSyntax instance. - - - Creates a new BaseExpressionSyntax instance. - - - Creates a new LiteralExpressionSyntax instance. - - - Creates a new LiteralExpressionSyntax instance. - - - Creates a new MakeRefExpressionSyntax instance. - - - Creates a new MakeRefExpressionSyntax instance. - - - Creates a new RefTypeExpressionSyntax instance. - - - Creates a new RefTypeExpressionSyntax instance. - - - Creates a new RefValueExpressionSyntax instance. - - - Creates a new RefValueExpressionSyntax instance. - - - Creates a new CheckedExpressionSyntax instance. - - - Creates a new CheckedExpressionSyntax instance. - - - Creates a new DefaultExpressionSyntax instance. - - - Creates a new DefaultExpressionSyntax instance. - - - Creates a new TypeOfExpressionSyntax instance. - - - Creates a new TypeOfExpressionSyntax instance. - - - Creates a new SizeOfExpressionSyntax instance. - - - Creates a new SizeOfExpressionSyntax instance. - - - Creates a new InvocationExpressionSyntax instance. - - - Creates a new InvocationExpressionSyntax instance. - - - Creates a new ElementAccessExpressionSyntax instance. - - - Creates a new ElementAccessExpressionSyntax instance. - - - Creates a new ArgumentListSyntax instance. - - - Creates a new ArgumentListSyntax instance. - - - Creates a new BracketedArgumentListSyntax instance. - - - Creates a new BracketedArgumentListSyntax instance. - - - Creates a new ArgumentSyntax instance. - - - Creates a new ArgumentSyntax instance. - - - Creates a new NameColonSyntax instance. - - - Creates a new NameColonSyntax instance. - - - Creates a new NameColonSyntax instance. - - - Creates a new CastExpressionSyntax instance. - - - Creates a new CastExpressionSyntax instance. - - - Creates a new AnonymousMethodExpressionSyntax instance. - - - Creates a new AnonymousMethodExpressionSyntax instance. - - - Creates a new AnonymousMethodExpressionSyntax instance. - - - Creates a new SimpleLambdaExpressionSyntax instance. - - - Creates a new SimpleLambdaExpressionSyntax instance. - - - Creates a new ParenthesizedLambdaExpressionSyntax instance. - - - Creates a new ParenthesizedLambdaExpressionSyntax instance. - - - Creates a new ParenthesizedLambdaExpressionSyntax instance. - - - Creates a new InitializerExpressionSyntax instance. - - - Creates a new InitializerExpressionSyntax instance. - - - Creates a new ObjectCreationExpressionSyntax instance. - - - Creates a new ObjectCreationExpressionSyntax instance. - - - Creates a new ObjectCreationExpressionSyntax instance. - - - Creates a new AnonymousObjectMemberDeclaratorSyntax instance. - - - Creates a new AnonymousObjectMemberDeclaratorSyntax instance. - - - Creates a new AnonymousObjectCreationExpressionSyntax instance. - - - Creates a new AnonymousObjectCreationExpressionSyntax instance. - - - Creates a new ArrayCreationExpressionSyntax instance. - - - Creates a new ArrayCreationExpressionSyntax instance. - - - Creates a new ArrayCreationExpressionSyntax instance. - - - Creates a new ImplicitArrayCreationExpressionSyntax instance. - - - Creates a new ImplicitArrayCreationExpressionSyntax instance. - - - Creates a new ImplicitArrayCreationExpressionSyntax instance. - - - Creates a new StackAllocArrayCreationExpressionSyntax instance. - - - Creates a new StackAllocArrayCreationExpressionSyntax instance. - - - Creates a new QueryExpressionSyntax instance. - - - Creates a new QueryBodySyntax instance. - - - Creates a new QueryBodySyntax instance. - - - Creates a new FromClauseSyntax instance. - - - Creates a new FromClauseSyntax instance. - - - Creates a new FromClauseSyntax instance. - - - Creates a new FromClauseSyntax instance. - - - Creates a new LetClauseSyntax instance. - - - Creates a new LetClauseSyntax instance. - - - Creates a new LetClauseSyntax instance. - - - Creates a new JoinClauseSyntax instance. - - - Creates a new JoinClauseSyntax instance. - - - Creates a new JoinClauseSyntax instance. - - - Creates a new JoinClauseSyntax instance. - - - Creates a new JoinIntoClauseSyntax instance. - - - Creates a new JoinIntoClauseSyntax instance. - - - Creates a new JoinIntoClauseSyntax instance. - - - Creates a new WhereClauseSyntax instance. - - - Creates a new WhereClauseSyntax instance. - - - Creates a new OrderByClauseSyntax instance. - - - Creates a new OrderByClauseSyntax instance. - - - Creates a new OrderingSyntax instance. - - - Creates a new OrderingSyntax instance. - - - Creates a new SelectClauseSyntax instance. - - - Creates a new SelectClauseSyntax instance. - - - Creates a new GroupClauseSyntax instance. - - - Creates a new GroupClauseSyntax instance. - - - Creates a new QueryContinuationSyntax instance. - - - Creates a new QueryContinuationSyntax instance. - - - Creates a new QueryContinuationSyntax instance. - - - Creates a new OmittedArraySizeExpressionSyntax instance. - - - Creates a new OmittedArraySizeExpressionSyntax instance. - - - Creates a new InterpolatedStringExpressionSyntax instance. - - - Creates a new InterpolatedStringExpressionSyntax instance. - - - Creates a new InterpolatedStringExpressionSyntax instance. - - - Creates a new InterpolatedStringTextSyntax instance. - - - Creates a new InterpolatedStringTextSyntax instance. - - - Creates a new InterpolationSyntax instance. - - - Creates a new InterpolationSyntax instance. - - - Creates a new InterpolationSyntax instance. - - - Creates a new InterpolationAlignmentClauseSyntax instance. - - - Creates a new InterpolationFormatClauseSyntax instance. - - - Creates a new InterpolationFormatClauseSyntax instance. - - - Creates a new GlobalStatementSyntax instance. - - - Creates a new BlockSyntax instance. - - - Creates a new BlockSyntax instance. - - - Creates a new LocalDeclarationStatementSyntax instance. - - - Creates a new LocalDeclarationStatementSyntax instance. - - - Creates a new LocalDeclarationStatementSyntax instance. - - - Creates a new VariableDeclarationSyntax instance. - - - Creates a new VariableDeclarationSyntax instance. - - - Creates a new VariableDeclaratorSyntax instance. - - - Creates a new VariableDeclaratorSyntax instance. - - - Creates a new VariableDeclaratorSyntax instance. - - - Creates a new EqualsValueClauseSyntax instance. - - - Creates a new EqualsValueClauseSyntax instance. - - - Creates a new ExpressionStatementSyntax instance. - - - Creates a new ExpressionStatementSyntax instance. - - - Creates a new EmptyStatementSyntax instance. - - - Creates a new EmptyStatementSyntax instance. - - - Creates a new LabeledStatementSyntax instance. - - - Creates a new LabeledStatementSyntax instance. - - - Creates a new LabeledStatementSyntax instance. - - - Creates a new GotoStatementSyntax instance. - - - Creates a new GotoStatementSyntax instance. - - - Creates a new GotoStatementSyntax instance. - - - Creates a new BreakStatementSyntax instance. - - - Creates a new BreakStatementSyntax instance. - - - Creates a new ContinueStatementSyntax instance. - - - Creates a new ContinueStatementSyntax instance. - - - Creates a new ReturnStatementSyntax instance. - - - Creates a new ReturnStatementSyntax instance. - - - Creates a new ThrowStatementSyntax instance. - - - Creates a new ThrowStatementSyntax instance. - - - Creates a new YieldStatementSyntax instance. - - - Creates a new YieldStatementSyntax instance. - - - Creates a new WhileStatementSyntax instance. - - - Creates a new WhileStatementSyntax instance. - - - Creates a new DoStatementSyntax instance. - - - Creates a new DoStatementSyntax instance. - - - Creates a new ForStatementSyntax instance. - - - Creates a new ForStatementSyntax instance. - - - Creates a new ForStatementSyntax instance. - - - Creates a new ForEachStatementSyntax instance. - - - Creates a new ForEachStatementSyntax instance. - - - Creates a new ForEachStatementSyntax instance. - - - Creates a new UsingStatementSyntax instance. - - - Creates a new UsingStatementSyntax instance. - - - Creates a new UsingStatementSyntax instance. - - - Creates a new FixedStatementSyntax instance. - - - Creates a new FixedStatementSyntax instance. - - - Creates a new CheckedStatementSyntax instance. - - - Creates a new CheckedStatementSyntax instance. - - - Creates a new UnsafeStatementSyntax instance. - - - Creates a new UnsafeStatementSyntax instance. - - - Creates a new LockStatementSyntax instance. - - - Creates a new LockStatementSyntax instance. - - - Creates a new IfStatementSyntax instance. - - - Creates a new IfStatementSyntax instance. - - - Creates a new IfStatementSyntax instance. - - - Creates a new ElseClauseSyntax instance. - - - Creates a new ElseClauseSyntax instance. - - - Creates a new SwitchStatementSyntax instance. - - - Creates a new SwitchStatementSyntax instance. - - - Creates a new SwitchStatementSyntax instance. - - - Creates a new SwitchSectionSyntax instance. - - - Creates a new SwitchSectionSyntax instance. - - - Creates a new CaseSwitchLabelSyntax instance. - - - Creates a new CaseSwitchLabelSyntax instance. - - - Creates a new DefaultSwitchLabelSyntax instance. - - - Creates a new DefaultSwitchLabelSyntax instance. - - - Creates a new TryStatementSyntax instance. - - - Creates a new TryStatementSyntax instance. - - - Creates a new TryStatementSyntax instance. - - - Creates a new CatchClauseSyntax instance. - - - Creates a new CatchClauseSyntax instance. - - - Creates a new CatchClauseSyntax instance. - - - Creates a new CatchDeclarationSyntax instance. - - - Creates a new CatchDeclarationSyntax instance. - - - Creates a new CatchDeclarationSyntax instance. - - - Creates a new CatchFilterClauseSyntax instance. - - - Creates a new CatchFilterClauseSyntax instance. - - - Creates a new FinallyClauseSyntax instance. - - - Creates a new FinallyClauseSyntax instance. - - - Creates a new CompilationUnitSyntax instance. - - - Creates a new CompilationUnitSyntax instance. - - - Creates a new CompilationUnitSyntax instance. - - - Creates a new ExternAliasDirectiveSyntax instance. - - - Creates a new ExternAliasDirectiveSyntax instance. - - - Creates a new ExternAliasDirectiveSyntax instance. - - - Creates a new UsingDirectiveSyntax instance. - - - Creates a new UsingDirectiveSyntax instance. - - - Creates a new UsingDirectiveSyntax instance. - - - Creates a new NamespaceDeclarationSyntax instance. - - - Creates a new NamespaceDeclarationSyntax instance. - - - Creates a new NamespaceDeclarationSyntax instance. - - - Creates a new AttributeListSyntax instance. - - - Creates a new AttributeListSyntax instance. - - - Creates a new AttributeListSyntax instance. - - - Creates a new AttributeTargetSpecifierSyntax instance. - - - Creates a new AttributeTargetSpecifierSyntax instance. - - - Creates a new AttributeSyntax instance. - - - Creates a new AttributeSyntax instance. - - - Creates a new AttributeArgumentListSyntax instance. - - - Creates a new AttributeArgumentListSyntax instance. - - - Creates a new AttributeArgumentSyntax instance. - - - Creates a new AttributeArgumentSyntax instance. - - - Creates a new NameEqualsSyntax instance. - - - Creates a new NameEqualsSyntax instance. - - - Creates a new NameEqualsSyntax instance. - - - Creates a new TypeParameterListSyntax instance. - - - Creates a new TypeParameterListSyntax instance. - - - Creates a new TypeParameterSyntax instance. - - - Creates a new TypeParameterSyntax instance. - - - Creates a new TypeParameterSyntax instance. - - - Creates a new ClassDeclarationSyntax instance. - - - Creates a new ClassDeclarationSyntax instance. - - - Creates a new ClassDeclarationSyntax instance. - - - Creates a new ClassDeclarationSyntax instance. - - - Creates a new StructDeclarationSyntax instance. - - - Creates a new StructDeclarationSyntax instance. - - - Creates a new StructDeclarationSyntax instance. - - - Creates a new StructDeclarationSyntax instance. - - - Creates a new InterfaceDeclarationSyntax instance. - - - Creates a new InterfaceDeclarationSyntax instance. - - - Creates a new InterfaceDeclarationSyntax instance. - - - Creates a new InterfaceDeclarationSyntax instance. - - - Creates a new EnumDeclarationSyntax instance. - - - Creates a new EnumDeclarationSyntax instance. - - - Creates a new EnumDeclarationSyntax instance. - - - Creates a new EnumDeclarationSyntax instance. - - - Creates a new DelegateDeclarationSyntax instance. - - - Creates a new DelegateDeclarationSyntax instance. - - - Creates a new DelegateDeclarationSyntax instance. - - - Creates a new DelegateDeclarationSyntax instance. - - - Creates a new EnumMemberDeclarationSyntax instance. - - - Creates a new EnumMemberDeclarationSyntax instance. - - - Creates a new EnumMemberDeclarationSyntax instance. - - - Creates a new BaseListSyntax instance. - - - Creates a new BaseListSyntax instance. - - - Creates a new SimpleBaseTypeSyntax instance. - - - Creates a new TypeParameterConstraintClauseSyntax instance. - - - Creates a new TypeParameterConstraintClauseSyntax instance. - - - Creates a new TypeParameterConstraintClauseSyntax instance. - - - Creates a new TypeParameterConstraintClauseSyntax instance. - - - Creates a new ConstructorConstraintSyntax instance. - - - Creates a new ConstructorConstraintSyntax instance. - - - Creates a new ClassOrStructConstraintSyntax instance. - - - Creates a new ClassOrStructConstraintSyntax instance. - - - Creates a new TypeConstraintSyntax instance. - - - Creates a new FieldDeclarationSyntax instance. - - - Creates a new FieldDeclarationSyntax instance. - - - Creates a new FieldDeclarationSyntax instance. - - - Creates a new EventFieldDeclarationSyntax instance. - - - Creates a new EventFieldDeclarationSyntax instance. - - - Creates a new EventFieldDeclarationSyntax instance. - - - Creates a new ExplicitInterfaceSpecifierSyntax instance. - - - Creates a new ExplicitInterfaceSpecifierSyntax instance. - - - Creates a new MethodDeclarationSyntax instance. - - - Creates a new MethodDeclarationSyntax instance. - - - Creates a new MethodDeclarationSyntax instance. - - - Creates a new MethodDeclarationSyntax instance. - - - Creates a new OperatorDeclarationSyntax instance. - - - Creates a new OperatorDeclarationSyntax instance. - - - Creates a new OperatorDeclarationSyntax instance. - - - Creates a new ConversionOperatorDeclarationSyntax instance. - - - Creates a new ConversionOperatorDeclarationSyntax instance. - - - Creates a new ConversionOperatorDeclarationSyntax instance. - - - Creates a new ConstructorDeclarationSyntax instance. - - - Creates a new ConstructorDeclarationSyntax instance. - - - Creates a new ConstructorDeclarationSyntax instance. - - - Creates a new ConstructorDeclarationSyntax instance. - - - Creates a new ConstructorInitializerSyntax instance. - - - Creates a new ConstructorInitializerSyntax instance. - - - Creates a new DestructorDeclarationSyntax instance. - - - Creates a new DestructorDeclarationSyntax instance. - - - Creates a new DestructorDeclarationSyntax instance. - - - Creates a new DestructorDeclarationSyntax instance. - - - Creates a new PropertyDeclarationSyntax instance. - - - Creates a new PropertyDeclarationSyntax instance. - - - Creates a new PropertyDeclarationSyntax instance. - - - Creates a new PropertyDeclarationSyntax instance. - - - Creates a new ArrowExpressionClauseSyntax instance. - - - Creates a new ArrowExpressionClauseSyntax instance. - - - Creates a new EventDeclarationSyntax instance. - - - Creates a new EventDeclarationSyntax instance. - - - Creates a new EventDeclarationSyntax instance. - - - Creates a new EventDeclarationSyntax instance. - - - Creates a new IndexerDeclarationSyntax instance. - - - Creates a new IndexerDeclarationSyntax instance. - - - Creates a new IndexerDeclarationSyntax instance. - - - Creates a new AccessorListSyntax instance. - - - Creates a new AccessorListSyntax instance. - - - Creates a new AccessorDeclarationSyntax instance. - - - Creates a new AccessorDeclarationSyntax instance. - - - Creates a new AccessorDeclarationSyntax instance. - - - Creates a new ParameterListSyntax instance. - - - Creates a new ParameterListSyntax instance. - - - Creates a new BracketedParameterListSyntax instance. - - - Creates a new BracketedParameterListSyntax instance. - - - Creates a new ParameterSyntax instance. - - - Creates a new ParameterSyntax instance. - - - Creates a new IncompleteMemberSyntax instance. - - - Creates a new IncompleteMemberSyntax instance. - - - Creates a new SkippedTokensTriviaSyntax instance. - - - Creates a new SkippedTokensTriviaSyntax instance. - - - Creates a new DocumentationCommentTriviaSyntax instance. - - - Creates a new DocumentationCommentTriviaSyntax instance. - - - Creates a new TypeCrefSyntax instance. - - - Creates a new QualifiedCrefSyntax instance. - - - Creates a new QualifiedCrefSyntax instance. - - - Creates a new NameMemberCrefSyntax instance. - - - Creates a new NameMemberCrefSyntax instance. - - - Creates a new IndexerMemberCrefSyntax instance. - - - Creates a new IndexerMemberCrefSyntax instance. - - - Creates a new OperatorMemberCrefSyntax instance. - - - Creates a new OperatorMemberCrefSyntax instance. - - - Creates a new OperatorMemberCrefSyntax instance. - - - Creates a new ConversionOperatorMemberCrefSyntax instance. - - - Creates a new ConversionOperatorMemberCrefSyntax instance. - - - Creates a new ConversionOperatorMemberCrefSyntax instance. - - - Creates a new CrefParameterListSyntax instance. - - - Creates a new CrefParameterListSyntax instance. - - - Creates a new CrefBracketedParameterListSyntax instance. - - - Creates a new CrefBracketedParameterListSyntax instance. - - - Creates a new CrefParameterSyntax instance. - - - Creates a new CrefParameterSyntax instance. - - - Creates a new XmlElementSyntax instance. - - - Creates a new XmlElementSyntax instance. - - - Creates a new XmlElementStartTagSyntax instance. - - - Creates a new XmlElementStartTagSyntax instance. - - - Creates a new XmlElementStartTagSyntax instance. - - - Creates a new XmlElementEndTagSyntax instance. - - - Creates a new XmlElementEndTagSyntax instance. - - - Creates a new XmlEmptyElementSyntax instance. - - - Creates a new XmlEmptyElementSyntax instance. - - - Creates a new XmlEmptyElementSyntax instance. - - - Creates a new XmlNameSyntax instance. - - - Creates a new XmlNameSyntax instance. - - - Creates a new XmlNameSyntax instance. - - - Creates a new XmlPrefixSyntax instance. - - - Creates a new XmlPrefixSyntax instance. - - - Creates a new XmlPrefixSyntax instance. - - - Creates a new XmlTextAttributeSyntax instance. - - - Creates a new XmlTextAttributeSyntax instance. - - - Creates a new XmlTextAttributeSyntax instance. - - - Creates a new XmlCrefAttributeSyntax instance. - - - Creates a new XmlCrefAttributeSyntax instance. - - - Creates a new XmlNameAttributeSyntax instance. - - - Creates a new XmlNameAttributeSyntax instance. - - - Creates a new XmlNameAttributeSyntax instance. - - - Creates a new XmlTextSyntax instance. - - - Creates a new XmlTextSyntax instance. - - - Creates a new XmlCDataSectionSyntax instance. - - - Creates a new XmlCDataSectionSyntax instance. - - - Creates a new XmlProcessingInstructionSyntax instance. - - - Creates a new XmlProcessingInstructionSyntax instance. - - - Creates a new XmlProcessingInstructionSyntax instance. - - - Creates a new XmlCommentSyntax instance. - - - Creates a new XmlCommentSyntax instance. - - - Creates a new IfDirectiveTriviaSyntax instance. - - - Creates a new IfDirectiveTriviaSyntax instance. - - - Creates a new ElifDirectiveTriviaSyntax instance. - - - Creates a new ElifDirectiveTriviaSyntax instance. - - - Creates a new ElseDirectiveTriviaSyntax instance. - - - Creates a new ElseDirectiveTriviaSyntax instance. - - - Creates a new EndIfDirectiveTriviaSyntax instance. - - - Creates a new EndIfDirectiveTriviaSyntax instance. - - - Creates a new RegionDirectiveTriviaSyntax instance. - - - Creates a new RegionDirectiveTriviaSyntax instance. - - - Creates a new EndRegionDirectiveTriviaSyntax instance. - - - Creates a new EndRegionDirectiveTriviaSyntax instance. - - - Creates a new ErrorDirectiveTriviaSyntax instance. - - - Creates a new ErrorDirectiveTriviaSyntax instance. - - - Creates a new WarningDirectiveTriviaSyntax instance. - - - Creates a new WarningDirectiveTriviaSyntax instance. - - - Creates a new BadDirectiveTriviaSyntax instance. - - - Creates a new BadDirectiveTriviaSyntax instance. - - - Creates a new DefineDirectiveTriviaSyntax instance. - - - Creates a new DefineDirectiveTriviaSyntax instance. - - - Creates a new DefineDirectiveTriviaSyntax instance. - - - Creates a new UndefDirectiveTriviaSyntax instance. - - - Creates a new UndefDirectiveTriviaSyntax instance. - - - Creates a new UndefDirectiveTriviaSyntax instance. - - - Creates a new LineDirectiveTriviaSyntax instance. - - - Creates a new LineDirectiveTriviaSyntax instance. - - - Creates a new LineDirectiveTriviaSyntax instance. - - - Creates a new PragmaWarningDirectiveTriviaSyntax instance. - - - Creates a new PragmaWarningDirectiveTriviaSyntax instance. - - - Creates a new PragmaWarningDirectiveTriviaSyntax instance. - - - Creates a new PragmaChecksumDirectiveTriviaSyntax instance. - - - Creates a new PragmaChecksumDirectiveTriviaSyntax instance. - - - Creates a new ReferenceDirectiveTriviaSyntax instance. - - - Creates a new ReferenceDirectiveTriviaSyntax instance. - - - Creates a new LoadDirectiveTriviaSyntax instance. - - - Creates a new LoadDirectiveTriviaSyntax instance. - - - Creates a new ShebangDirectiveTriviaSyntax instance. - - - Creates a new ShebangDirectiveTriviaSyntax instance. - - - - A SyntaxReference implementation that lazily translates the result (CSharpSyntaxNode) of the - original syntax reference to a syntax reference for its NamespaceDeclarationSyntax. - - - - - this is a basic do-nothing implementation of a syntax reference - - - - - Gets the expression-body syntax from an expression-bodied member. The - given syntax must be for a member which could contain an expression-body. - - - - - Creates a new syntax token with all whitespace and end of line trivia replaced with - regularly formatted trivia. - - The token to normalize. - A sequence of whitespace characters that defines a single level of indentation. - If true the replaced trivia is elastic trivia. - - - - Creates a new syntax token with all whitespace and end of line trivia replaced with - regularly formatted trivia. - - The token to normalize. - An optional sequence of whitespace characters that defines a - single level of indentation. - An optional sequence of whitespace characters used for end of line. - If true the replaced trivia is elastic trivia. - - - - Creates a new syntax trivia list with all whitespace and end of line trivia replaced with - regularly formatted trivia. - - The trivia list to normalize. - A sequence of whitespace characters that defines a single level of indentation. - If true the replaced trivia is elastic trivia. - - - - Creates a new syntax trivia list with all whitespace and end of line trivia replaced with - regularly formatted trivia. - - The trivia list to normalize. - An optional sequence of whitespace characters that defines a - single level of indentation. - An optional sequence of whitespace characters used for end of line. - If true the replaced trivia is elastic trivia. - - - - Updates the given SimpleNameSyntax node with the given identifier token. - This function is a wrapper that calls WithIdentifier on derived syntax nodes. - - - - The given simple name updated with the given identifier. - - - - Returns true if the specified node represents a lambda. - - - - - Given a node that represents a lambda body returns a node that represents the lambda. - - - - - See SyntaxNode.GetCorrespondingLambdaBody. - - - - - Returns true if the specified represents a body of a lambda. - - - - - When queries are translated into expressions select and group-by expressions such that - 1) select/group-by expression is the same identifier as the "source" identifier and - 2) at least one Where or OrderBy clause but no other clause is present in the contained query body or - the expression in question is a group-by expression and the body has no clause - - do not translate into lambdas. - By "source" identifier we mean the identifier specified in the from clause that initiates the query or the query continuation that includes the body. - - The above condition can be derived from the language specification (chapter 7.16.2) as follows: - - In order for 7.16.2.5 "Select clauses" to be applicable the following conditions must hold: - - There has to be at least one clause in the body, otherwise the query is reduced into a final form by 7.16.2.3 "Degenerate query expressions". - - Only where and order-by clauses may be present in the query body, otherwise a transformation in 7.16.2.4 "From, let, where, join and orderby clauses" - produces pattern that doesn't match the requirements of 7.16.2.5. - - - In order for 7.16.2.6 "Groupby clauses" to be applicable the following conditions must hold: - - Only where and order-by clauses may be present in the query body, otherwise a transformation in 7.16.2.4 "From, let, where, join and orderby clauses" - produces pattern that doesn't match the requirements of 7.16.2.5. - - - - - In C# lambda bodies are expressions or block statements. In both cases it's a single node. - In VB a lambda body might be a sequence of nodes (statements). - We define this function to minimize differences between C# and VB implementation. - - - - - If the specified node represents a lambda returns a node (or nodes) that represent its body (bodies). - - - - - Compares content of two nodes ignoring lambda bodies and trivia. - - - - - "Pair lambda" is a synthesized lambda that creates an instance of an anonymous type representing a pair of values. - - - - - Returns true if the specified node can represent a closure scope -- that is a scope of a captured variable. - Doesn't validate whether or not the node actually declares any captured variable. - - - - - This method is used to keep the code that generates binders in sync - with the code that searches for binders. We don't want the searcher - to skip over any nodes that could have associated binders, especially - if changes are made later. - - "Local binder" is a vague term that refers to binders that represent - scopes for names (e.g. BlockBinders) rather than binders that tweak - default behaviors (e.g. FieldInitializerBinders). Local binders are - created by LocalBinderFactory. - - - - - Given an initializer expression infer the name of anonymous property. - Returns default(SyntaxToken) if unsuccessful - - - - - An enumerator for diagnostic lists. - - - - - Moves the enumerator to the next diagnostic instance in the diagnostic list. - - Returns true if enumerator moved to the next diagnostic, false if the - enumerator was at the end of the diagnostic list. - - - - The current diagnostic that the enumerator is pointing at. - - - - - Gets the expression-body syntax from an expression-bodied member. The - given syntax must be for a member which could contain an expression-body. - - - - - DiagnosticAnalyzer for C# compiler's syntax/semantic/compilation diagnostics. - - - - - Returns the index of the first node of a specified kind in the node list. - - Node list. - The to find. - Returns non-negative index if the list contains a node which matches , -1 otherwise. - - - - True if the list has at least one node of the specified kind. - - - - - Returns the index of the first node of a specified kind in the node list. - - Node list. - The to find. - Returns non-negative index if the list contains a node which matches , -1 otherwise. - - - - True if the list has at least one node of the specified kind. - - - - - Returns the index of the first trivia of a specified kind in the trivia list. - - Trivia list. - The to find. - Returns non-negative index if the list contains a trivia which matches , -1 otherwise. - - - - True if the list has at least one trivia of the specified kind. - - - - - Returns the index of the first token of a specified kind in the token list. - - Token list. - The to find. - Returns non-negative index if the list contains a token which matches , -1 otherwise. - - - - Tests whether a list contains a token of a particular kind. - - - The to test for. - Returns true if the list contains a token which matches - -
-
+ + + + Microsoft.CodeAnalysis.CSharp + + + + + A Binder converts names in to symbols and syntax nodes into bound trees. It is context + dependent, relative to a location in source code. + + + This portion of the binder converts a AnonymousObjectCreationExpressionSyntax into + a bound anonymous object creation node + + + This portion of the binder converts an AwaitExpressionSyntax into a BoundExpression + + + This portion of the binder converts an into a . + + + This portion of the binder converts an into a . + + + This portion of the binder converts a QueryExpressionSyntax into a BoundExpression + + + This portion of the binder reports errors arising from resolving queries. + + + This portion of the binder converts StatementSyntax nodes into BoundStatements + + + + + Used to create a root binder. + + + + + Get the next binder in which to look up a name, if not found by this binder. + + + + + if we are in an explicitly checked context (within checked block or expression). + if we are in an explicitly unchecked context (within unchecked block or expression). + otherwise. + + + + + True if instructions that check overflow should be generated. + + + Spec 7.5.12: + For non-constant expressions (expressions that are evaluated at run-time) that are not + enclosed by any checked or unchecked operators or statements, the default overflow checking + context is unchecked unless external factors (such as compiler switches and execution + environment configuration) call for checked evaluation. + + + + + True if the compiler should check for overflow while evaluating constant expressions. + + + Spec 7.5.12: + For constant expressions (expressions that can be fully evaluated at compile-time), + the default overflow checking context is always checked. Unless a constant expression + is explicitly placed in an unchecked context, overflows that occur during the compile-time + evaluation of the expression always cause compile-time errors. + + + + + Some nodes have special binder's for their contents (like Block's) + + + + + Get locals declared immediately in scope represented by the node. + + + + + The member containing the binding context. Note that for the purposes of the compiler, + a lambda expression is considered a "member" of its enclosing method, field, or lambda. + + + + + Is the contained code within a member method body? + + + May be false in lambdas that are outside of member method bodies, e.g. lambdas in + field initializers. + + + + + Is the contained code within an iterator block? + + + Will be false in a lambda in an iterator. + + + + + Is the contained code within the syntactic span of an + iterator method? + + + Will be true in a lambda in an iterator. + + + + + If we are inside a context where a break statement is legal, + returns the that a break statement would branch to. + Returns null otherwise. + + + + + If we are inside a context where a continue statement is legal, + returns the that a continue statement would branch to. + Returns null otherwise. + + + + + Get the element type of this iterator. + + Node to report diagnostics, if any, such as "yield statement cannot be used + inside a lambda expression" + Where to place any diagnostics + Element type of the current iterator, or an error type. + + + + The imports for all containing namespace declarations (innermost-to-outermost, including global), + or null if there are none. + + + + + The type containing the binding context + + + + + Returns true if the binder is binding top-level script code. + + + + + Issue an error or warning for a symbol if it is Obsolete. If there is not enough + information to report diagnostics, then store the symbols so that diagnostics + can be reported at a later stage. + + + + + True if the symbol is definitely obsolete. + False if the symbol is definitely not obsolete. + Unknown if the symbol may be obsolete. + + NOTE: The return value reflects obsolete-ness, not whether or not the diagnostic was reported. + + + + + Expression lvalue and rvalue requirements. + + + + + Expression is the RHS of an assignment operation. + + + The following are rvalues: values, variables, null literals, properties + and indexers with getters, events. The following are not rvalues: + namespaces, types, method groups, anonymous functions. + + + + + Expression is the RHS of an assignment operation + and may be a method group. + + + + + Expression is the LHS of a simple assignment operation. + + + + + Expression is the operand of an increment + or decrement operation. + + + + + Expression is the LHS of a compound assignment + operation (such as +=). + + + + + Expression is an out parameter. + + + + + Expression is the operand of an address-of operation (&). + + + + + Expression is the receiver of a fixed buffer field access + + + + + Report diagnostics that should be reported when using a synthesized attribute. + + + + + Outside of checked, unchecked expression/block. + + + + + Within unchecked expression/block. + + + + + Within checked expression/block. + + + + + We represent the set of query variables in scope at a particular point by a RangeVariableMap. + Each query variable in scope has a key in this map. If the corresponding value is empty, then + that query variable is represented directly by a lambda parameter. If it is non-empty, then + to get the value of that query variable one starts with the first parameter of the current + lambda (the first parameter is always the transparent one), and dot through its members using + the names in the value list, in reverse order. So, for example, if the query variable "x" has + a value in this map of ["Item2", "Item1", "Item1"], then the way to compute the value of that + query variable is starting with the current lambda's first parameter P, compute "P.Item1.Item1.Item2". + See also WithQueryLambdaParametersBinder. + + + + + Actually, defines if an error ERR_AnonymousTypeNotAvailable is to be generated; + + Dev10 rules (which are based on BindingContext::InMethod()) are difficult to + reproduce, so this implementation checks both current symbol as well as syntax nodes. + + + + + Returns the type to be used as a field type; generates errors in case the type is not + supported for anonymous type fields. + + + + + Gets the rewritten attribute constructor arguments, i.e. the arguments + are in the order of parameters, which may differ from the source + if named constructor arguments are used. + + For example: + void Foo(int x, int y, int z, int w = 3); + + Foo(0, z: 2, y: 1); + + Arguments returned: 0, 1, 2, 3 + + Rewritten attribute constructor arguments + + CONSIDER: Can we share some code will call rewriting in the local rewriter? + + + + + Walk a custom attribute argument bound node and return a TypedConstant. Verify that the expression is a constant expression. + + + + + Return true iff an await with this subexpression would be legal where the expression appears. + + + + + Assuming we are in an async method, return true if we're in a context where await would be illegal. + Specifically, return true if we're in a lock, catch, or finally. + + + + + Reports an error if the await expression did not occur in an async context. + + True if the expression contains errors. + + + + Report diagnostics if the await expression occurs in a context where it is not allowed. + + True if errors were found. + + + + Finds and validates the required members of an awaitable expression, as described in spec 7.7.7.1. + + True if the expression is awaitable; false otherwise. + + + + Validates the awaited expression, returning true if no errors are found. + + + + + Finds the GetAwaiter method of an awaitable expression. + + + Spec 7.7.7.1: + An awaitable expression t has an accessible instance or extension method called GetAwaiter with no + parameters and no type parameters, and a return type A that meets the additional requirements for an + Awaiter. + NOTE: this is an error in the spec. An extension method of the form + Awaiter<T> GetAwaiter<T>(this Task<T>) may be used. + + + + + Finds the IsCompleted property of an Awaiter type. + + + Spec 7.7.7.1: + An Awaiter A has an accessible, readable instance property IsCompleted of type bool. + + + + + Checks that the Awaiter implements System.Runtime.CompilerServices.INotifyCompletion. + + + Spec 7.7.7.1: + An Awaiter A implements the interface System.Runtime.CompilerServices.INotifyCompletion. + + + + + Finds the GetResult method of an Awaiter type. + + + Spec 7.7.7.1: + An Awaiter A has an accessible instance method GetResult with no parameters and no type parameters. + + + + + Return a collection of bound constraint clauses indexed by type parameter + ordinal. All constraint clauses are bound, even if there are multiple constraints + for the same type parameter, or constraints for unrecognized type parameters. + Extra constraints are not included in the returned collection however. + + + + + Bind and return a single type parameter constraint clause. + + + + + Returns true if the type is a valid constraint type. + Otherwise returns false and generates a diagnostic. + + + + + This method implements the algorithm in spec section 7.6.5.1. + + For method group conversions, there are situations in which the conversion is + considered to exist ("Otherwise the algorithm produces a single best method M having + the same number of parameters as D and the conversion is considered to exist"), but + application of the conversion fails. These are the "final validation" steps of + overload resolution. + + + True if there is any error. + + + + + Performs the following checks: + + Spec 7.6.5: Invocation expressions (definition of Final Validation) + The method is validated in the context of the method group: If the best method is a static method, + the method group must have resulted from a simple-name or a member-access through a type. If the best + method is an instance method, the method group must have resulted from a simple-name, a member-access + through a variable or value, or a base-access. If neither of these requirements is true, a binding-time + error occurs. + (Note that the spec omits to mention, in the case of an instance method invoked through a simple name, that + the invocation must appear within the body of an instance method) + + Spec 7.5.4: Compile-time checking of dynamic overload resolution + If F is a static method, the method group must have resulted from a simple-name, a member-access through a type, + or a member-access whose receiver can't be classified as a type or value until after overload resolution (see §7.6.4.1). + If F is an instance method, the method group must have resulted from a simple-name, a member-access through a variable or value, + or a member-access whose receiver can't be classified as a type or value until after overload resolution (see §7.6.4.1). + + + True if there is any error. + + + + + Was the receiver expression compiler-generated? + + + + + This method implements the checks in spec section 15.2. + + + + + This method combines final validation (section 7.6.5.1) and delegate compatibility (section 15.2). + + CSharpSyntaxNode of the expression requiring method group conversion. + Conversion to be performed. + Optional receiver. + Method invoked as extension method. + Target delegate type. + Where diagnostics should be added. + True if a diagnostic has been added. + + + + This method is a wrapper around MethodGroupConversionHasErrors. As a preliminary step, + it checks whether a conversion exists. + + + + + We can't use BindNamespaceOrTypeSymbol, since it doesn't return inaccessible symbols (directly). + + + Guaranteed not to return null. + + CONSIDER: As in dev11, we don't handle ambiguity at this level. Hypothetically, + we could just pick one, though an "ideal" solution would probably involve a search + down all ambiguous branches. + + + + + Perform lookup (optionally, in a specified container). If nothing is found and the member name matches the containing type + name, then use the instance constructors of the type instead. The resulting symbols are sorted since tie-breaking is based + on order and we want cref binding to be repeatable. + + + Never returns null. + + + + + Given a list of viable lookup results (based on the name, arity, and containing symbol), + attempt to select one. + + + + + At this point, we have a list of viable symbols and no parameter list with which to perform + overload resolution. We'll just return the first symbol, giving a diagnostic if there are + others. + Caveat: If there are multiple candidates and only one is from source, then the source symbol + wins and no diagnostic is reported. + + + + + Replace any named type in the symbol list with its instance constructors. + Construct all candidates with the implicitly-declared CrefTypeParameterSymbols. + + + + + Given a list of method and/or property candidates, choose the first one (if any) with a signature + that matches the parameter list in the cref. Return null if there isn't one. + + + Produces a diagnostic for ambiguous matches, but not for unresolved members - WRN_BadXMLRef is + handled in BindMemberCref. + + + + + If the member is generic, construct it with the CrefTypeParameterSymbols that should be in scope. + + + + + Keep in sync with CSharpSemanticModel.GetSpeculativelyBoundExpression. + + + + + Determines whether "this" reference is available within the current context. + + The reference was explicitly specified in syntax. + True if "this" is not available due to the current method/property/field initializer being static. + True if a reference to "this" is available. + + + + Returns true if the node is in a position where an unbound type + such as (C<,>) is allowed. + + + + + Generates a new with no known type + + + + + Generates a new with no known type, and the given bound child. + + + + + Generates a new with no known type, and the given bound children. + + + + + Generates a new with no known type, given lookup resultKind. + + + + + Generates a new with no known type, given lookup resultKind and the given bound child. + + + + + Generates a new with no known type, given lookup resultKind and the given bound children. + + + + + Generates a new with no known type, given lookupResultKind and given symbols for GetSemanticInfo API. + + + + + Generates a new with no known type, given lookupResultKind and given symbols for GetSemanticInfo API, + and the given bound child. + + + + + Generates a new with no known type, given lookupResultKind and given symbols for GetSemanticInfo API, + and the given bound children. + + + + + Generates a new with no known type, given lookupResultKind and given symbols for GetSemanticInfo API, + and the given bound children. + + + + + Helper method to generate a bound expression with HasErrors set to true. + Returned bound expression is guaranteed to have a non-null type, except when is an unbound lambda. + If already has errors and meets the above type requirements, then it is returned unchanged. + Otherwise, if is a BoundBadExpression, then it is updated with the and non-null type. + Otherwise, a new wrapping is returned. + + + Returned expression need not be a , but is guaranteed to have HasErrors set to true. + + + + + Bind the expression and verify the expression matches the combination of lvalue and + rvalue requirements given by valueKind. If the expression was bound successfully, but + did not meet the requirements, the return value will be a that + (typically) wraps the subexpression. + + + + + This function is only needed for SemanticModel to perform binding for erroneous cases. + + + + + Binds a simple identifier. + + + + + This implements the casting behavior described in section 6.2.3 of the spec: + + - If the nullable conversion is from S to T?, the conversion is evaluated as the underlying conversion + from S to T followed by a wrapping from T to T?. + + This particular check is done in the binder because it involves conversion processing rules (like overflow + checking and constant folding) which are not handled by Conversions. + + + + + Gets the NameSyntax associated with the syntax node + If no syntax is attached it sets the nameString to plain text + name and returns a null NameSyntax + + Syntax node + Plain text name + + + + Gets the plain text name associated with the expression syntax node + + Expression syntax node + Plain text name + + + + This method walks through the array's InitializerExpressionSyntax and binds all the initializer expressions recursively. + NOTE: It doesn't convert the bound initializer expressions to array's element type. + NOTE: This is done separately in ConvertAndBindArrayInitialization method below. + + Initializer Syntax. + Bound expression builder. + Diagnostics. + Current array dimension being processed. + Rank of the array type. + + + + Given an array of bound initializer expressions, this method converts these bound expressions + to array's element type and generates a BoundArrayInitialization with the converted initializers. + + Diagnostics. + Initializer Syntax. + Array type. + Known array bounds. + Current array dimension being processed. + Array of bound initializer expressions. + + Index into the array of bound initializer expressions to fetch the next bound expression. + + + + + + Bind the (implicit or explicit) constructor initializer of a constructor symbol (in source). + + + Null for implicit, + BaseConstructorInitializerSyntax.ArgumentList, or + ThisConstructorInitializerSyntax.ArgumentList, or + BaseClassWithArgumentsSyntax.ArgumentList for explicit. + Constructor containing the initializer. + Accumulates errors (e.g. unable to find constructor to invoke). + A bound expression for the constructor initializer call. + + This method should be kept consistent with Compiler.BindConstructorInitializer (e.g. same error codes). + + + + + Given the type containing constructors, gets the list of candidate instance constructors and uses overload resolution to determine which one should be called. + + The containing type of the constructors. + The already bound arguments to the constructor. + The name to use in diagnostics if overload resolution fails. + The location at which to report overload resolution result diagnostics. + True to suppress overload resolution result diagnostics (but not argument diagnostics). + Where diagnostics will be reported. + If this method returns true, then it will contain a valid MethodResolutionResult. + Otherwise, it may contain a MethodResolutionResult for an inaccessible constructor (in which case, it will incorrectly indicate success) or nothing at all. + Candidate instance constructors of type used for overload resolution. + It is always legal to access a protected base class constructor + via a constructor initializer, but not from an object creation expression. + True if overload resolution successfully chose an accessible constructor. + + The two-pass algorithm (accessible constructors, then all constructors) is the reason for the unusual signature + of this method (i.e. not populating a pre-existing ). + Presently, rationalizing this behavior is not worthwhile. + + + + + Binds a member access expression + + + + + Attempt to bind the LHS of a member access expression. If this is a Color Color case (spec 7.6.4.1), + then return a BoundExpression if we can easily disambiguate or a BoundTypeOrValueExpression if we + cannot. If this is not a Color Color case, then return null. + + + + + Bind the RHS of a member access expression, given the bound LHS. + It is assumed that CheckValue has not been called on the LHS. + + + + + Create a value from the expression that can be used as a left-hand-side + of a member access. This method special-cases method and property + groups only. All other expressions are returned as is. + + + + + Report the error from member access lookup. Or, if there + was no explicit error from lookup, report "no such member". + + + + + Return true if the given type is or implements a WinRTAsyncInterface. + + + + + Return a BoundExpression representing the invalid member. + + + + + Combine the receiver and arguments of an extension method + invocation into a single argument list to allow overload resolution + to treat the invocation as a static method invocation with no receiver. + + + + + Binds a static or instance member access. + + + + + Given a viable LookupResult, report any ambiguity errors and return either a single + non-method symbol or a method or property group. If the result set represents a + collection of methods or a collection of properties where at least one of the properties + is an indexed property, then 'methodOrPropertyGroup' is populated with the method or + property group and the method returns null. Otherwise, the method returns a single + symbol and 'methodOrPropertyGroup' is empty. (Since the result set is viable, there + must be at least one symbol.) If the result set is ambiguous - either containing multiple + members of different member types, or multiple properties but no indexed properties - + then a diagnostic is reported for the ambiguity and a single symbol is returned. + + + + + Perform lookup and overload resolution on methods defined directly on the class and any + extension methods in scope. Lookup will occur for extension methods in all nested scopes + as necessary until an appropriate method is found. If analyzedArguments is null, the first + method group is returned, without overload resolution being performed. That method group + will either be the methods defined on the receiver class directly (no extension methods) + or the first set of extension methods. + + + + + Represents a small change from the enclosing/next binder. + Can specify a BindingLocation and a ContainingMemberOrLambda. + + + + + Represents a small change from the enclosing/next binder. + Can specify a receiver Expression for containing conditional member access. + + + + + It seems to be common to do both of these things at once, so provide a way to do so + without adding two links to the binder chain. + + + + + In regular C#, all field initializers are assignments to fields and the assigned expressions + may not reference instance members. + + + + + In script C#, some field initializers are assignments to fields and others are global + statements. There are no restrictions on accessing instance members. + + + + + Helper method to create a synthesized method invocation expression. + + Syntax Node. + Receiver for the method call. + Method to be invoked on the receiver. + Arguments to the method call. + Diagnostics. + Optional type arguments syntax. + Optional type arguments. + The syntax for the query clause generating this invocation expression, if any. + True to allow invocation of fields and properties of delegate type. Only methods are allowed otherwise. + False to prevent selecting a params method in unexpanded form. + Synthesized method invocation expression. + + + + Bind an expression as a method invocation. + + + + + Bind an expression as a method invocation. + + + + + Perform overload resolution on the method group or expression (BoundMethodGroup) + and arguments and return a BoundExpression representing the invocation. + + Invocation syntax node. + The syntax for the invoked method, including receiver. + Name of the invoked method. + Overload resolution result for method group executed by caller. + Arguments bound by the caller. + Method group if the invocation represents a potentially overloaded member. + Delegate type if method group represents a delegate. + Diagnostics. + + Indicates that there are additional extension method candidates of the same lookup viability in cases when + none of the instance methods are applicable to the argument list. + + The syntax for the query clause generating this invocation expression, if any. + BoundCall or error expression representing the invocation. + + + Invocation syntax node. + The syntax for the invoked method, including receiver. + + + + Replace a BoundTypeOrValueExpression with a BoundExpression for either a type (if useType is true) + or a value (if useType is false). Any other node is unmodified. + + + Call this once overload resolution has succeeded on the method group of which the BoundTypeOrValueExpression + is the receiver. Generally, useType will be true if the chosen method is static and false otherwise. + + + + + Return the delegate type if this expression represents a delegate. + + + + + Returns true if syntax form is OK (so no errors were reported) + + + + + Helper method that checks whether there is an invocable 'nameof' in scope. + + + + + Performs name lookup for simple generic or non-generic name + within an optional qualifier namespace or type symbol. + If LookupOption.AttributeTypeOnly is set, then it performs + attribute type lookup which involves attribute name lookup + with and without "Attribute" suffix. + + + + + Look for any symbols in scope with the given name and arity. + + + Makes a second attempt if the results are not viable, in order to produce more detailed failure information (symbols and diagnostics). + + + + + If qualifierOpt is null, look for any symbols in + scope with the given name and arity. + Otherwise look for symbols that are members of the specified qualifierOpt. + + + + + Look for symbols that are members of the specified namespace or type. + + + + + Lookup a member name in a submission chain. + + + We start with the current submission class and walk the submission chain back to the first submission. + The search has two phases + 1) We are looking for any symbol matching the given name, arity, and options. If we don't find any the search is over. + If we find and overloadable symbol(s) (a method or an indexer) we start looking for overloads of this kind + (lookingForOverloadsOfKind) of symbol in phase 2. + 2) If a visited submission contains a matching member of a kind different from lookingForOverloadsOfKind we stop + looking further. Otherwise, if we find viable overload(s) we add them into the result. + + Note that indexers are not supported in script but we deal with them here to handle errors. + + + + + Lookup extension methods by name and arity in the given binder and + check viability in this binder. The lookup is performed on a single + binder because extension method search stops at the first applicable + method group from the nearest enclosing namespace. + + + + + Lookup attribute name in the given binder. By default two name lookups are performed: + (1) With the provided name + (2) With an Attribute suffix added to the provided name + Lookup with Attribute suffix is performed only if LookupOptions.VerbatimAttributeName is not set. + + If either lookup is ambiguous, we return the corresponding result with ambiguous symbols. + Else if exactly one result is single viable attribute type, we return that result. + Otherwise, we return a non-viable result with LookupResult.NotAnAttributeType or an empty result. + + + + + Return the extension methods from this specific binding scope that match the name and optional + arity. Since the lookup of extension methods is iterative, proceeding one binding scope at a time, + GetCandidateExtensionMethods should not defer to the next binding scope. Instead, the caller is + responsible for walking the nested binding scopes from innermost to outermost. This method is overridden + to search the available members list in binding types that represent types, namespaces, and usings. + + + + + If the type implements one of a select few WinRT interfaces, the interface type is + projected to the CLR collection type (e.g., IVector to IList). + When importing a winmd type it may implement one or more winmd collection + interfaces. When the collection interfaces are projected, we may need + to add the projected members to the imported type so that calls to those + members succeed as normal. This method adds the interface methods to + the lookup, if necessary. The CLR understands that a call to the .NET interface + should be projected onto the WinRT interface method. + + + + + This helper is used to determine whether this symbol hides / is hidden + based on its signature, as opposed to its name. + + + CONSIDER: It might be nice to generalize this - maybe an extension method + on Symbol (e.g. IsOverloadable or HidesByName). + + + + + Distinguish from , which performs an analogous task for Add*LookupSymbolsInfo*. + + + + + Used by Add*LookupSymbolsInfo* to determine whether the symbol is of interest. + Distinguish from , which performs an analogous task for LookupSymbols*. + + + Does not consider - that is left to the caller. + + + + + A symbol is accessible for referencing in a cref if it is in the same assembly as the reference + or the symbols's effective visibility is not private. + + + + + Check whether "symbol" is accessible from this binder. + Also checks protected access via "accessThroughType". + + + + + Check whether "symbol" is accessible from this binder. + Also checks protected access via "accessThroughType", and sets "failedThroughTypeCheck" if fails + the protected access check. + + + + + Should only be called by , + which will already have checked for . + + + + + Look for names in scope + + + + + Look for names of members + + + + + Don't call this one directly - call one of the helpers. + + + + + For "receiver.event += expr", produce "receiver.add_event(expr)". + For "receiver.event -= expr", produce "receiver.remove_event(expr)". + + + Performs some validation of the accessor that couldn't be done in CheckEventValueKind, because + the specific accessor wasn't known. + + + + + If one of the (unconverted) operands has constant value null and the other has + a null constant value other than null, then they are definitely not equal + and we can give a constant value for either == or !=. This is a spec violation + that we retain from Dev10. + + The operator kind. Nothing will happen if it is not a lifted equality operator. + The left-hand operand of the operation (possibly wrapped in a conversion). + The right-hand operand of the operation (possibly wrapped in a conversion). + + If the operator represents lifted equality, then constant value true if both arguments have constant + value null, constant value false if exactly one argument has constant value null, and null otherwise. + If the operator represents lifted inequality, then constant value false if both arguments have constant + value null, constant value true if exactly one argument has constant value null, and null otherwise. + + + SPEC VIOLATION: according to the spec (section 7.19) constant expressions cannot + include implicit nullable conversions or nullable subexpressions. However, Dev10 + specifically folds over lifted == and != (see ExpressionBinder::TryFoldingNullableEquality). + Dev 10 does do compile-time evaluation of simple lifted operators, but it does so + in a rewriting pass (see NullableRewriter) - they are not treated as constant values. + + + + + Returns ConstantValue.Bad if, and only if, compound string length is out of supported limit. + The parameter contains value corresponding to the + left node, or zero, which will trigger inference. Upon return, it will + be adjusted to correspond future result node. + + + + + From ExpressionBinder::EnsureQMarkTypesCompatible: + + The v2.0 specification states that the types of the second and third operands T and S of a ternary operator + must be TT and TS such that either (a) TT==TS, or (b), TT->TS or TS->TT but not both. + + Unfortunately that is not what we implemented in v2.0. Instead, we implemented + that either (a) TT=TS or (b) T->TS or S->TT but not both. That is, we looked at the + convertibility of the expressions, not the types. + + + Changing that to the algorithm in the standard would be a breaking change. + + b ? (Func<int>)(delegate(){return 1;}) : (delegate(){return 2;}) + + and + + b ? 0 : myenum + + would suddenly stop working. (The first because o2 has no type, the second because 0 goes to + any enum but enum doesn't go to int.) + + It gets worse. We would like the 3.0 language features which require type inference to use + a consistent algorithm, and that furthermore, the algorithm be smart about choosing the best + of a set of types. However, the language committee has decided that this algorithm will NOT + consume information about the convertibility of expressions. Rather, it will gather up all + the possible types and then pick the "largest" of them. + + To maintain backwards compatibility while still participating in the spirit of consistency, + we implement an algorithm here which picks the type based on expression convertibility, but + if there is a conflict, then it chooses the larger type rather than producing a type error. + This means that b?0:myshort will have type int rather than producing an error (because 0->short, + myshort->int). + + + + + Constant folding for conditional (aka ternary) operators. + + + + + This is a clone of the Dev10 logic for reporting query errors. + + + + + This is the set of parameters and local variables that were used as arguments to + lock or using statements in enclosing scopes. + + + using (x) { } // x counts + using (IDisposable y = null) { } // y does not count + + + + + Noteworthy override is in MemberSemanticModel.IncrementalBinder (used for caching). + + + + + Report an error if this is an awaitable async method invocation that is not being awaited. + + + The checks here are equivalent to StatementBinder::CheckForUnobservedAwaitable() in the native compiler. + + + + + Wrap the initializer in a BoundFixedLocalCollectionInitializer so that the rewriter will have the + information it needs (e.g. conversions, helper methods). + + + + + The purpose of this method is to determine if the expression is classified by the + specification as a *variable*. If it is not then this code gives an appropriate error message. + + To determine the appropriate error message we need to know two things: + + (1) why do we want to know if this is a variable? Because we are trying to assign it, + increment it, or pass it by reference? + + (2) Are we trying to determine if the left hand side of a dot is a variable in order + to determine if the field or property on the right hand side of a dot is assignable? + + + + + Check the expression is of the required lvalue and rvalue specified by valueKind. + The method returns the original expression if the expression is of the required + type. Otherwise, an appropriate error is added to the diagnostics bag and the + method returns a BoundBadExpression node. The method returns the original + expression without generating any error if the expression has errors. + + + + + There are two BadEventUsage error codes and this method decides which one should + be used for a given event. + + + + + SPEC: When a property or indexer declared in a struct-type is the target of an + SPEC: assignment, the instance expression associated with the property or indexer + SPEC: access must be classified as a variable. If the instance expression is + SPEC: classified as a value, a compile-time error occurs. Because of 7.6.4, + SPEC: the same rule also applies to fields. + + + NOTE: The spec fails to impose the restriction that the receiver must be classified + as a variable (unlike for properties - 7.17.1). This seems like a bug, but we have + production code that won't build with the restriction in place (see DevDiv #15674). + + + + + Wrap a given expression e into a block as either { e; } or { return e; } + Shared between lambda and expression-bodied method binding. + + + + + Binds an expression-bodied member with expression e as either { return e;} or { e; }. + + + + + Binds a lambda with expression e as either { return e;} or { e; }. + + + + + Binds the type for the syntax taking into account possibility of "var" type. + + Type syntax to bind. + Diagnostics. + + Set to false if syntax binds to a type in the current context and true if + syntax is "var" and it binds to "var" keyword in the current context. + + + Bound type if syntax binds to a type in the current context and + null if syntax binds to "var" keyword in the current context. + + + + + Binds the type for the syntax taking into account possibility of "var" type. + + Type syntax to bind. + Diagnostics. + + Set to false if syntax binds to a type in the current context and true if + syntax is "var" and it binds to "var" keyword in the current context. + + Alias symbol if syntax binds to an alias. + + Bound type if syntax binds to a type in the current context and + null if syntax binds to "var" keyword in the current context. + + + + + Binds the type for the syntax taking into account possibility of "var" type. + If the syntax binds to an alias symbol to a type, it returns the alias symbol. + + Type syntax to bind. + Diagnostics. + + Set to false if syntax binds to a type or alias to a type in the current context and true if + syntax is "var" and it binds to "var" keyword in the current context. + + + Bound type or alias if syntax binds to a type or alias to a type in the current context and + null if syntax binds to "var" keyword in the current context. + + + + + The immediately containing namespace or named type, or the global + namespace if containing symbol is neither a namespace or named type. + + + + + Binds a simple name or the simple name portion of a qualified name. + + + + + Keep check and error in sync with ConstructBoundMethodGroupAndReportOmittedTypeArguments. + + + + + Keep check and error in sync with ConstructNamedTypeUnlessTypeArgumentOmitted. + + + + + Check generic type constraints unless the type is used as part of a type or method + declaration. In those cases, constraints checking is handled by the caller. + + + + + This is a layer on top of the Compilation version that generates a diagnostic if the special + member isn't found. + + + + + Reports use-site diagnostics for the specified symbol. + + + True if there was an error among the reported diagnostics + + + + + Reports use-site diagnostics for the specified symbol. + + + True if there was an error among the reported diagnostics + + + + + This is a layer on top of the Compilation version that generates a diagnostic if the well-known + type isn't found. + + + + + Retrieves a well-known type member and reports diagnostics. + + Null if the symbol is missing. + + + + Returns -1 if None. + + + + + Prefers symbols from source module, then from added modules, then from referenced assemblies. + Returns true if values were swapped. + + + + + Returns true if the second is a better location than the first. + + + + + Prefer symbols from source module, then from added modules, then from referenced assemblies. + + + + + This is only intended to be called when the type isn't found (i.e. not when it is found but is inaccessible, has the wrong arity, etc). + + + + + Look for a type forwarder for the given type in the containing assembly and any referenced assemblies. + If one is found, search again in the target assembly. Return the last assembly in the chain. + + The metadata name of the (potentially) forwarded type, including the arity (if non-zero). + The arity of the forwarded type. + Set to true if a cycle was found in the type forwarders. + + + Since this method is intended to be used for error reporting, it stops as soon as it finds + any type forwarder - it does not check other assemblies for consistency or better results. + + + + + True if we are currently in an unsafe region (type, member, or block). + + + Does not imply that this compilation allows unsafe regions (could be in an error recovery scenario). + To determine that, check this.Compilation.Options.AllowUnsafe. + + + + True if a diagnostic was reported, or would have been reported if not for + the suppress flag. + + + True if a diagnostic was reported, or would have been reported if not for + the suppress flag. + + + True if a diagnostic was reported, or would have been reported if not for + the suppress flag. + + + True if a diagnostic was reported, or would have been reported if not for + the suppress flag. + + + + Get the name of the method so that it can be looked up in the containing type. + + Non-null declaration syntax. + Binder for the scope around the method (may be null for operators, constructors, and destructors). + + + + Get the name of the property, indexer, or event so that it can be looked up in the containing type. + + Non-null declaration syntax. + Non-null binder for the scope around the member. + + + + Returns true if the location is within the syntax tree and span. + + + + + Returns true if containingNode has a child that contains the specified position + and has kind UsingDirective. + + + Usings can't see other usings, so this is extra info when looking at a namespace + or compilation unit scope. + + + + + Used to detect whether we are in a cref parameter type. + + + + + Used to detect whether we are in a cref return type. + + + + + We're in a <param> or <paramref> element, so we want a binder that can see + the parameters of the associated member and nothing else. + + + + + We're in a <typeparam> or <typeparamref> element, so we want a binder that can see + the type parameters of the associated member and nothing else. + + + + + Given a CrefSyntax and an associated member declaration syntax node, + construct an appropriate binder for binding the cref. + + Cref that will be bound. + The member to which the documentation comment (logically) containing + the cref syntax applies. + Corresponding binder factory. + True to get a special binder for cref parameter and return types. + + The CrefSyntax does not actually have to be within the documentation comment on the member - it + could be included from another file. + + + + + Internal version of MakeCrefBinder that allows the caller to explicitly set the underlying binder. + + + + + Walk up from an XML syntax node (attribute or tag) to the enclosing documentation comment trivia. + + + + + Return binder for binding at node. + and + are optional syntax and symbol for the member containing . + If provided, the will use the member symbol rather + than looking up the member in the containing type, allowing this method to be called + while calculating the member list. + + + Note, there is no guarantee that the factory always gives back the same binder instance for the same node. + + + + + Returns binder that binds usings and aliases + + + Specify imports in the corresponding namespace, or + for top-level imports. + + True if the binder will be used to bind a using directive. + + + + A specific location for binding. + + + + + Indicates that the current context allows unsafe constructs. + + + NOTE: Dev10 doesn't seem to treat attributes as being within the unsafe region. + Fortunately, not following this behavior should not be a breaking change since + attribute arguments have to be constants and there are no constants of unsafe + types. + + + + + Indicates that the unsafe diagnostics are not reported in the current context, regardless + of whether or not it is (part of) an unsafe region. + + + + + Indicates that this binder is being used to answer SemanticModel questions (i.e. not + for batch compilation). + + + Imports touched by a binder with this flag set are not consider "used". + + + + Remarks, mutually exclusive with . + + + Remarks, mutually exclusive with . + + + + In the debugger, one can take the address of a managed object. + + + + + In the debugger, the context is always unsafe, but one can still await. + + + + + Ignore duplicate types from the cor library. + + + + + When binding imports in scripts/submissions, using aliases (other than from the current submission) + are considered but other imports are not. + + + + + In a file that has been included in the compilation via #load. + + + + + Extension methods for the type. + + + + + A binder that knows no symbols and will not delegate further. + + + + + This is used while computing the values of constant fields. Since they can depend on each + other, we need to keep track of which ones we are currently computing in order to avoid (and + report) cycles. + + + + + This binder keeps track of the set of constant fields that are currently being evaluated + so that the set can be passed into the next call to SourceFieldSymbol.ConstantValue (and + its callers). + + + + + Each application of an attribute is effectively a constructor call. Since the attribute constructor + might have a CallerMemberName parameter, we need to keep track of which method/property/event + the attribute is on/in (e.g. on a parameter) so that we can use the name of that member as the + CallerMemberName argument. + + + + Next binder in the chain (enclosing). + Symbol to which the attribute was applied (e.g. a parameter). + + + + We're binding an attribute and this is the member to/in which the attribute was applied. + + + Method, property, event, or null. + A virtual property on Binder (i.e. our usual pattern) would be more robust, but the applicability + of this property is so narrow that it doesn't seem worthwhile. + + + + + Walk up to the nearest method/property/event. + + + + + This is a special binder used for decoding some special well-known attributes very early in the attribute binding phase. + It only binds those attribute argument syntax which can produce valid attribute arguments, but doesn't report any diagnostics. + Subsequent binding phase will rebind such erroneous attributes and generate appropriate diagnostics. + + + + + Since this method is expected to be called on every nested expression of the argument, it doesn't + need to recurse (directly). + + + + + This binder owns and lazily creates the map of SyntaxNodes to Binders associated with + the syntax with which it is created. This binder is not created in reaction to any + specific syntax node type. It is inserted into the binder chain + between the binder which it is constructed with and those that it constructs via + the LocalBinderFactory. + + + + + A distinct scope that may expose extension methods. For a particular Binder, there + are two possible scopes: one for the namespace, and another for any using statements + in the namespace. The namespace scope is searched before the using scope. + + + + + An enumerable collection of extension method scopes in search + order, from the given Binder, out through containing Binders. + + + + + An enumerator over ExtensionMethodScopes. + + + + + Information to be deduced while binding a foreach loop so that the loop can be lowered + to a while over an enumerator. Not applicable to the array or string forms. + + + + + A loop binder that (1) knows how to bind foreach loops and (2) has the foreach iteration variable in scope. + + + This binder produces BoundForEachStatements. The lowering described in the spec is performed in ControlFlowRewriter. + + + + + Bind the ForEachStatementSyntax at the root of this binder. + + + + + The spec describes an algorithm for finding the following types: + 1) Collection type + 2) Enumerator type + 3) Element type + + The implementation details are a bit difference. If we're iterating over a string or an array, then we don't need to record anything + but the inferredType (in case the iteration variable is implicitly typed). If we're iterating over anything else, then we want the + inferred type plus a ForEachEnumeratorInfo.Builder with: + 1) Collection type + 2) Element type + 3) GetEnumerator method of the collection type (return type will be the enumerator type from the spec) + 4) Current property of the enumerator type + 5) MoveNext method of the enumerator type + + The caller will have to do some extra conversion checks before creating a ForEachEnumeratorInfo for the BoundForEachStatement. + + Builder to fill in (partially, all but conversions). + The expression over which to iterate. + Populated with binding diagnostics. + Partially populated (all but conversions) or null if there was an error. + + + + Check for a GetEnumerator method on collectionExprType. Failing to satisfy the pattern is not an error - + it just means that we have to check for an interface instead. + + Type of the expression over which to iterate. + Populated with *warnings* if there are near misses. + Builder to fill in. set if the pattern in satisfied. + True if the method was found (still have to verify that the return (i.e. enumerator) type is acceptable). + + Only adds warnings, so does not affect control flow (i.e. no need to check for failure). + + + + + Perform a lookup for the specified method on the specified type. Perform overload resolution + on the lookup results. + + Type to search. + Method to search for. + Passed in for reusability. + True if failures should result in warnings; false if they should result in errors. + Populated with binding diagnostics. + The desired method or null. + + + + The overload resolution portion of FindForEachPatternMethod. + + + + + Called after it is determined that the expression being enumerated is of a type that + has a GetEnumerator method. Checks to see if the return type of the GetEnumerator + method is suitable (i.e. has Current and MoveNext). + + Must be non-null and contain a non-null GetEnumeratorMethod. + Will be populated with pattern diagnostics. + True if the return type has suitable members. + + It seems that every failure path reports the same diagnostics, so that is left to the caller. + + + + + Checks if the given type implements (or extends, in the case of an interface), + System.Collections.IEnumerable or System.Collections.Generic.IEnumerable<T>, + for at least one T. + + builder to fill in CollectionType. + Type to check. + + True if multiple T's are found. + True if some IEnumerable is found (may still be ambiguous). + + + + Report appropriate diagnostics when lookup of a pattern member (i.e. GetEnumerator, Current, or MoveNext) fails. + + Failed lookup result. + Type in which member was looked up. + Name of looked up member. + True if failures should result in warnings; false if they should result in errors. + Populated appropriately. + + + + Tracks fields that are being bound while binding their initializers. + + + Used to detect circular references like: + var x = y; + var y = x; + + + + + This binder is for binding the initializer of an implicitly typed + local variable. While binding an implicitly typed local variable + it is illegal to refer to the variable. + + + + + Represents symbols imported to the binding scope via using namespace, using alias, and extern alias. + + + + + Does not preserve diagnostics. + + + + + A binder that places the members of a symbol in scope. If there is a container declaration + with using directives, those are merged when looking up names. + + + + + Creates a binder for a container with imports (usings and extern aliases) that can be + retrieved from . + + + + + Creates a binder with given imports. + + + + + Creates a binder with given import computation function. + + + + + A binder for a method body, which places the method's parameters in scope + and notes if the method is an iterator method. + + + + + The LocalBinderFactory is used to build up the map of all Binders within a method body, and the associated + CSharpSyntaxNode. To do so it traverses all the statements, handling blocks and other + statements that create scopes. For efficiency reasons, it does not traverse into + expressions. This means that blocks within lambdas and queries are not created. + Blocks within lambdas are bound by their own LocalBinderFactory when they are + analyzed. + + For reasons of lifetime management, this type is distinct from the BinderFactory + which also creates a map from CSharpSyntaxNode to Binder. That type owns it's binders + and that type's lifetime is that of the compilation. Therefore we do not store + binders local to method bodies in that type's cache. + + + + + This binder keeps track of the local variable (if any) that is currently being evaluated + so that it can be passed into the next call to LocalSymbol.GetConstantValue (and + its callers). + + + + + Call this when you are sure there is a local declaration on this token. Returns the local. + + + + + This type exists to share code between UsingStatementBinder and LockBinder. + + + + + This class exists so these two fields can be set atomically. + CONSIDER: If this causes too many allocations, we could use start and end flags plus spinlocking + as for completion parts. + + + + + Options that can be used to modify the symbol lookup mechanism. + + + Multiple options can be combined together. LookupOptions.AreValid checks for valid combinations. + + + + + Consider all symbols, using normal accessibility rules. + + + + + Consider only namespace aliases and extern aliases. + + + + + Consider only namespaces and types. + + + + + Consider non-members, plus invocable members. + + + + + Consider only symbols that are instance members. Valid with IncludeExtensionMethods + since extension methods are invoked on an instance. + + + + + Do not consider symbols that are instance members. + + + + + Do not consider symbols that are namespaces. + + + + + Consider methods of any arity when arity zero is specified. Because type parameters can be inferred, it is + often desired to consider generic methods when no type arguments were present. + + + + + Look only for label symbols. This must be exclusive of all other options. + + + + + Usually, when determining if a member is accessible, both the type of the receiver + and the type containing the access are used. If this flag is specified, then only + the containing type will be used (i.e. as if you've written base.XX). + + + + + Include extension methods. + + + + + Consider only attribute types. + + + + + Consider lookup name to be a verbatim identifier. + If this flag is specified, then only one lookup is performed for attribute name: lookup with the given name, + and attribute name lookup with "Attribute" suffix is skipped. + + + + + Consider named types of any arity when arity zero is specified. It is specifically desired for nameof in such situations: nameof(System.Collections.Generic.List) + + + + + Do not consider symbols that are method type parameters. + + + + + Are these options valid in their current combination? + + + Some checks made here: + + - Default is valid. + - If LabelsOnly is set, it must be the only option. + - If one of MustBeInstance or MustNotBeInstance are set, the other one must not be set. + - If any of MustNotBeInstance, MustBeInstance, or MustNotBeNonInvocableMember are set, + the options are considered valid. + - If MustNotBeNamespace is set, neither NamespaceAliasesOnly nor NamespacesOrTypesOnly must be set. + - Otherwise, only one of NamespaceAliasesOnly, NamespacesOrTypesOnly, or AllMethodsOnArityZero must be set. + + + + + represents one-to-one symbol -> SingleLookupResult filter. + + + + + A LookupResult summarizes the result of a name lookup within a scope It also allows + combining name lookups from different scopes in an easy way. + + A LookupResult can be ONE OF: + empty - nothing found. + a viable result - this kind of result prevents lookup into further scopes of lower priority. + Viable results should be without error; ambiguity is handled in the caller. + (Note that handling multiple "viable" results is not the same as in the VB compiler) + a non-accessible result - this kind of result means that search continues into further scopes of lower priority for + a viable result. An error is attached with the inaccessibility errors. Non-accessible results take priority over + non-viable results. + a non-viable result - a result that means that the search continues into further scopes of lower priority for + a viable or non-accessible result. An error is attached with the error that indicates + why the result is non-viable. A typical reason would be that it is the wrong kind of symbol. + + Note that the class is poolable so its instances can be obtained from a pool via GetInstance. + Also it is a good idea to call Free on instances after they no longer needed. + + The typical pattern is "caller allocates / caller frees" - + + var result = LookupResult.GetInstance(); + + scope.Lookup(result, "foo"); + ... use result ... + + result.Clear(); + anotherScope.Lookup(result, "moo"); + ... use result ... + + result.Free(); //result and its content is invalid after this + + + + + + Currently LookupResult is intended only for name lookup, not for overload resolution. It is + not clear if overload resolution will work with the structure as is, require enhancements, + or be best served by an alternate mechanism. + + We might want to extend this to a more general priority scheme. + + + + + + Return the single symbol if there is exactly one, otherwise null. + + + + + Is the result viable with one or more symbols? + + + + + NOTE: Even there is a single viable symbol, it may be an error type symbol. + + + + + Set current result according to another. + + + + + Set current result according to another. + + + + + Merge another result with this one, with the symbols combined if both + this and other are viable. Otherwise the highest priority result wins (this if equal + priority and non-viable.) + + + + + Classifies the different ways in which a found symbol might be incorrect. + Higher values are considered "better" than lower values. These values are used + in a few different places: + 1) Inside a LookupResult to indicate the quality of a symbol from lookup. + 2) Inside a bound node (for example, BoundBadExpression), to indicate + the "binding quality" of the symbols referenced by that bound node. + 3) Inside an error type symbol, to indicate the reason that the candidate symbols + in the error type symbols were not good. + + While most of the values can occur in all places, some of the problems are not + detected at lookup time (e.g., NotAVariable), so only occur in bound nodes. + + + This enumeration is parallel to and almost the same as the CandidateReason enumeration. + Changes to one should usually result in changes to the other. + + There are two enumerations because: + 1) CandidateReason in language-independent, while this enum is language specific. + 2) The name "CandidateReason" didn't make much sense in the way LookupResultKind is used internally. + 3) Viable isn't used in CandidateReason, but we need it in LookupResultKind, and there isn't a + a way to have internal enumeration values. + + + + + Maps a LookupResultKind to a CandidateReason. Should not be called on LookupResultKind.Viable! + + + + + Packages up the various parts returned when resolving a method group. + + + + + Contains the code for determining C# accessibility rules. + + + + + Checks if 'symbol' is accessible from within assembly 'within'. + + + + + Checks if 'symbol' is accessible from within type 'within', with + an optional qualifier of type "throughTypeOpt". + + + + + Checks if 'symbol' is accessible from within type 'within', with + an qualifier of type "throughTypeOpt". Sets "failedThroughTypeCheck" to true + if it failed the "through type" check. + + + + + Checks if 'symbol' is accessible from within 'within', which must be a NamedTypeSymbol + or an AssemblySymbol. + + Note that NamedTypeSymbol, if available, is the type that is associated with the binder + that found the 'symbol', not the inner-most type that contains the access to the + 'symbol'. + + If 'symbol' is accessed off of an expression then 'throughTypeOpt' is the type of that + expression. This is needed to properly do protected access checks. Sets + "failedThroughTypeCheck" to true if this protected check failed. + + NOTE(cyrusn): I expect this function to be called a lot. As such, i do not do any memory + allocations in the function itself (including not making any iterators). This does mean + that certain helper functions that we'd like to call are inlined in this method to + prevent the overhead of returning collections or enumerators. + + + + + This method finds the best common type of a set of expressions as per section 7.5.2.14 of the specification. + NOTE: If some or all of the expressions have error types, we return error type as the inference result. + + + + + This method implements best type inference for the conditional operator ?:. + NOTE: If either expression is an error type, we return error type as the inference result. + + + + + Summarizes whether a conversion is allowed, and if so, which kind of conversion (and in some cases, the + associated symbol). + + + + + Returns true if the conversion exists, either as an implicit or explicit conversion. + + + The existence of a conversion does not necessarily imply that the conversion is valid. + For example, an ambiguous user-defined conversion may exist but may not be valid. + + + + + Returns true if the conversion is implicit. + + + Implicit conversions are described in section 6.1 of the C# language specification. + + + + + Returns true if the conversion is explicit. + + + Explicit conversions are described in section 6.2 of the C# language specification. + + + + + Returns true if the conversion is an identity conversion. + + + Identity conversions are described in section 6.1.1 of the C# language specification. + + + + + Returns true if the conversion is an implicit numeric conversion or explicit numeric conversion. + + + Implicit and explicit numeric conversions are described in sections 6.1.2 and 6.2.1 of the C# language specification. + + + + + Returns true if the conversion is an implicit enumeration conversion or explicit enumeration conversion. + + + Implicit and explicit enumeration conversions are described in sections 6.1.3 and 6.2.2 of the C# language specification. + + + + + Returns true if the conversion is an interpolated string conversion. + + + The interpolated string conversion described in section 6.1.N of the C# language specification. + + + + + Returns true if the conversion is an implicit nullable conversion or explicit nullable conversion. + + + Implicit and explicit nullable conversions are described in sections 6.1.4 and 6.2.3 of the C# language specification. + + + + + Returns true if the conversion is an implicit reference conversion or explicit reference conversion. + + + Implicit and explicit reference conversions are described in sections 6.1.6 and 6.2.4 of the C# language specification. + + + + + Returns true if the conversion is an implicit user-defined conversion or explicit user-defined conversion. + + + Implicit and explicit user-defined conversions are described in section 6.4 of the C# language specification. + + + + + Returns true if the conversion is an implicit boxing conversion. + + + Implicit boxing conversions are described in section 6.1.7 of the C# language specification. + + + + + Returns true if the conversion is an explicit unboxing conversion. + + + Explicit unboxing conversions as described in section 6.2.5 of the C# language specification. + + + + + Returns true if the conversion is an implicit null literal conversion. + + + Null literal conversions are described in section 6.1.5 of the C# language specification. + + + + + Returns true if the conversion is an implicit dynamic conversion. + + + Implicit dynamic conversions are described in section 6.1.8 of the C# language specification. + + + + + Returns true if the conversion is an implicit constant expression conversion. + + + Implicit constant expression conversions are described in section 6.1.9 of the C# language specification. + + + + + Returns true if the conversion is an implicit anonymous function conversion. + + + Implicit anonymous function conversions are described in section 6.5 of the C# language specification. + + + + + Returns true if the conversion is an implicit method group conversion. + + + Implicit method group conversions are described in section 6.6 of the C# language specification. + + + + + Returns true if the conversion is a pointer conversion + + + Pointer conversions are described in section 18.4 of the C# language specification. + + Returns true if the conversion is a conversion + a) from a pointer type to void*, + b) from a pointer type to another pointer type (other than void*), + c) from the null literal to a pointer type, + d) from an integral numeric type to a pointer type, or + e) from a pointer type to an integral numeric type. + + Does not return true for user-defined conversions to/from pointer types. + Does not return true for conversions between pointer types and IntPtr/UIntPtr. + + + + + Returns true if the conversion is a conversion to or from IntPtr or UIntPtr. + + + Returns true if the conversion is a conversion to or from IntPtr or UIntPtr. + This includes: + IntPtr to/from int + IntPtr to/from long + IntPtr to/from void* + UIntPtr to/from int + UIntPtr to/from long + UIntPtr to/from void* + + + + + Returns the method used to create the delegate for a method group conversion if is true + or the method used to perform the conversion for a user-defined conversion if is true. + Otherwise, returns null. + + + Method group conversions are described in section 6.6 of the C# language specification. + User-defined conversions are described in section 6.4 of the C# language specification. + + + + + Gives an indication of how successful the conversion was. + Viable - found a best built-in or user-defined conversion. + Empty - found no applicable built-in or user-defined conversions. + OverloadResolutionFailure - found applicable conversions, but no unique best. + + + + + Conversion applied to operand of the user-defined conversion. + + + + + Conversion applied to the result of the user-defined conversion. + + + + + The user-defined operators that were considered when attempting this conversion + (i.e. the arguments to overload resolution). + + + + + Returns a string that represents the of the conversion. + + A string that represents the of the conversion. + + + + Determines whether the specified object is equal to the current object. + + The object to compare with the current object. + true if the specified object is equal to the current object; otherwise, false. + + + + Determines whether the specified object is equal to the current object. + + The object to compare with the current object. + true if the specified object is equal to the current object; otherwise, false. + + + + Returns a hash code for the current object. + + A hash code for the current object. + + + + Returns true if the specified objects are equal and false otherwise. + + The first object. + The second object. + + + + + Returns false if the specified objects are equal and true otherwise. + + The first object. + The second object. + + + + + Determines if the source expression is convertible to the destination type via + any conversion: implicit, explicit, user-defined or built-in. + + + It is rare but possible for a source expression to be convertible to a destination type + by both an implicit user-defined conversion and a built-in explicit conversion. + In that circumstance, this method classifies the conversion as the implicit conversion. + + + + + Determines if the source expression is convertible to the destination type via + any conversion: implicit, explicit, user-defined or built-in. + + + It is rare but possible for a source expression to be convertible to a destination type + by both an implicit user-defined conversion and a built-in explicit conversion. + In that circumstance, this method classifies the conversion as the built-in conversion. + + An implicit conversion exists from an expression of a dynamic type to any type. + An explicit conversion exists from a dynamic type to any type. + When casting we prefer the explicit conversion. + + + + + Determines if the source expression is convertible to the destination type via + any built-in or user-defined implicit conversion. + + + + + Attempt a quick classification of builtin conversions. As result of "no conversion" + means that there is no built-in conversion, though there still may be a user-defined + conversion if compiling against a custom mscorlib. + + + + + IsBaseInterface returns true if baseType is on the base interface list of derivedType or + any base class of derivedType. It may be on the base interface list either directly or + indirectly. + * baseType must be an interface. + * type parameters do not have base interfaces. (They have an "effective interface list".) + * an interface is not a base of itself. + * this does not check for variance conversions; if a type inherits from + IEnumerable<string> then IEnumerable<object> is not a base interface. + + + + + Determines if the source type is convertible to the destination type via + any conversion: implicit, explicit, user-defined or built-in. + + + It is rare but possible for a source type to be convertible to a destination type + by both an implicit user-defined conversion and a built-in explicit conversion. + In that circumstance, this method classifies the conversion as the implicit conversion. + + + + + Determines if the source type is convertible to the destination type via + any conversion: implicit, explicit, user-defined or built-in. + + + It is rare but possible for a source type to be convertible to a destination type + by both an implicit user-defined conversion and a built-in explicit conversion. + In that circumstance, this method classifies the conversion as the built-in conversion. + + + + + Determines if the source type is convertible to the destination type via + any standard implicit or standard explicit conversion. + + + Not all built-in explicit conversions are standard explicit conversions. + + + + + Determines if the source type is convertible to the destination type via + any user-defined or built-in implicit conversion. + + + Not all built-in explicit conversions are standard explicit conversions. + + + + + NOTE: Keep this method in sync with AnalyzeImplicitUserDefinedConversionForSwitchGoverningType. + + + + + This method find the set of applicable user-defined and lifted conversion operators, u. + The set consists of the user-defined and lifted implicit conversion operators declared by + the classes and structs in d that convert from a type encompassing source to a type encompassed by target. + However if allowAnyTarget is true, then it considers all operators that convert from a type encompassing source + to any target. This flag must be set only if we are computing user defined conversions from a given source + type to any target type. + + + Currently allowAnyTarget flag is only set to true by AnalyzeImplicitUserDefinedConversionForSwitchGoverningType, + where we must consider user defined implicit conversions from the type of the switch expression to + any of the possible switch governing types. + + + + + Find the most specific among a set of conversion operators, with the given constraint on the conversion. + + + + + NOTE: Keep this method in sync with AnalyzeImplicitUserDefinedConversion. + + + + + Resolve method group based on the optional delegate invoke method. + If the invoke method is null, ignore arguments in resolution. + + + + + Return the Invoke method symbol if the type is a delegate + type and the Invoke method is available, otherwise null. + + + + + This is specifically a private helper function (rather than a public property or extension method) + because applying this predicate to a non-method member doesn't have a clear meaning. The goal was + simply to avoid repeating ad-hoc code in a group of related collections. + + + + + To duplicate native compiler behavior for some scenarios we force a priority among + operators. If two operators are both applicable and both have a non-null Priority, + the one with the numerically lower Priority value is preferred. + + + + + Omit ref feature for COM interop: We can pass arguments by value for ref parameters if we are invoking a method/property on an instance of a COM imported type. + This property returns a flag indicating whether we had any ref omitted argument for the given call. + + + + + Returns false for + because those diagnostics are only reported if no other candidates are + available. + + + + + Indicates why the compiler accepted or rejected the member during overload resolution. + + + + + No resolution has (yet) been determined. + + + + + The candidate member was accepted in its normal (non-expanded) form. + + + + + The candidate member was accepted in its expanded form, after expanding a "params" parameter. + + + + + The candidate member was rejected because an inferred type argument is inaccessible. + + + + + The candidate member was rejected because an argument was specified that did not have a corresponding + parameter. + + + + + The candidate member was rejected because a named argument was specified that did not have a corresponding + parameter. + + + + + The candidate member was rejected because an required parameter had no corresponding argument. + + + + + The candidate member was rejected because a named argument was used that corresponded to a previously-given positional argument. + + + + + The candidate member was rejected because it is not supported by the language or cannot be used + given the current set of assembly references. + + + + + The candidate member was rejected because it is not supported by the language. + + + No diagnostics will be reported for such candidates unless they "win" overload resolution. + + + + + The candidate member was rejected because an argument could not be converted to the appropriate parameter + type. + + + + + The candidate member was rejected because type inference failed. + + + + + The extension method candidate was rejected because type + inference based on the "instance" argument failed. + + + + + The candidate member was rejected because it a constraint on a type parameter was not satisfied. + + + + + The candidate member was rejected because another member further down in the inheritance hierarchy was + present. + + + + + The candidate member was rejected because it was considered worse that another member (according to section + 7.5.3.2 of the language specification). + + + + + Same as , but the candidate shouldn't be mentioned in an ambiguity diagnostics. + + + + + Represents the results of overload resolution for a single member. + + + + + The member considered during overload resolution. + + + + + The least overridden member that is accessible from the call site that performed overload resolution. + Typically a virtual or abstract method (but not necessarily). + + + The member whose parameter types and params modifiers were considered during overload resolution. + + + + + Indicates why the compiler accepted or rejected the member during overload resolution. + + + + + Returns true if the compiler accepted this member as the sole correct result of overload resolution. + + + + + The result of member analysis. + + + + + Return the interface with an original definition matches + the original definition of the target. If the are no matches, + or multiple matches, the return value is null. + + + + + Return the inferred type arguments using null + for any type arguments that were not inferred. + + + + + Summarizes the results of an overload resolution analysis, as described in section 7.5 of + the language specification. Describes whether overload resolution succeeded, and which + method was selected if overload resolution succeeded, as well as detailed information about + each method that was considered. + + + + + True if overload resolution successfully selected a single best method. + + + + + If overload resolution successfully selected a single best method, returns information + about that method. Otherwise returns null. + + + + + If there was a method that overload resolution considered better than all others, + returns information about that method. A method may be returned even if that method was + not considered a successful overload resolution, as long as it was better that any other + potential method considered. + + + + + Returns information about each method that was considered during overload resolution, + and what the results of overload resolution were for that method. + + + + + Returns true if one or more of the members in the group are applicable. (Note that + Succeeded implies IsApplicable but IsApplicable does not imply Succeeded. It is possible + that no applicable member was better than all others.) + + + + + Returns all methods in the group that are applicable, . + + + + + Called when overload resolution has failed. Figures out the best way to describe what went wrong. + + + Overload resolution (effectively) starts out assuming that all candidates are valid and then + gradually disqualifies them. Therefore, our strategy will be to perform our checks in the + reverse order - the farther a candidate got through the process without being flagged, the + "better" it was. + + Note that "final validation" is performed after overload resolution, + so final validation errors are not seen here. Final validation errors include + violations of constraints on method type parameters, static/instance mismatches, + and so on. + + + + + If an argument fails to convert to the type of the corresponding parameter and that + parameter is a params array, then the error message should reflect the element type + of the params array - not the array type. + + + + + The base class for all symbols (namespaces, classes, method, parameters, etc.) that are + exposed by the compiler. + + + + + Checks if 'symbol' is accessible from within named type 'within'. If 'symbol' is accessed off + of an expression then 'throughTypeOpt' is the type of that expression. This is needed to + properly do protected access checks. + + + + + Checks if 'symbol' is accessible from within assembly 'within'. + + + + + Checks if this symbol is a definition and its containing module is a SourceModuleSymbol. + + + + + Return whether the symbol is either the original definition + or distinct from the original. Intended for use in Debug.Assert + only since it may include a deep comparison. + + + + + Returns a list of attributes to emit to CustomAttribute table. + The builder is freed after all its items are enumerated. + + + + + True if this Symbol should be completed by calling ForceComplete. + Intuitively, true for source entities (from any compilation). + + + + + Gets the name of this symbol. Symbols without a name return the empty string; null is + never returned. + + + + + Gets the name of a symbol as it appears in metadata. Most of the time, this + is the same as the Name property, with the following exceptions: + 1) The metadata name of generic types includes the "`1", "`2" etc. suffix that + indicates the number of type parameters (it does not include, however, names of + containing types or namespaces). + 2) The metadata name of explicit interface names have spaces removed, compared to + the name property. + + + + + Gets the kind of this symbol. + + + + + Get the symbol that logically contains this symbol. + + + + + Returns the nearest lexically enclosing type, or null if there is none. + + + + + Gets the nearest enclosing namespace for this namespace or type. For a nested type, + returns the namespace that contains its container. + + + + + Returns the assembly containing this symbol. If this symbol is shared across multiple + assemblies, or doesn't belong to an assembly, returns null. + + + + + For a source assembly, the associated compilation. + For any other assembly, null. + For a source module, the DeclaringCompilation of the associated source assembly. + For any other module, null. + For any other symbol, the DeclaringCompilation of the associated module. + + + We're going through the containing module, rather than the containing assembly, + because of /addmodule (symbols in such modules should return null). + + Remarks, not "ContainingCompilation" because it isn't transitive. + + + + + Returns the module containing this symbol. If this symbol is shared across multiple + modules, or doesn't belong to a module, returns null. + + + + + The original definition of this symbol. If this symbol is constructed from another + symbol by type substitution then OriginalDefinition gets the original symbol as it was defined in + source or metadata. + + + + + Returns true if this is the original definition of this symbol. + + + + + + Get a source location key for sorting. For performance, it's important that this + be able to be returned from a symbol without doing any additional allocations (even + if nothing is cached yet.) + + + Only (original) source symbols and namespaces that can be merged + need implement this function if they want to do so for efficiency. + + + + + + Gets the locations where this symbol was originally defined, either in source or + metadata. Some symbols (for example, partial classes) may be defined in more than one + location. + + + + + + Get the syntax node(s) where this symbol was declared in source. Some symbols (for + example, partial classes) may be defined in more than one location. This property should + return one or more syntax nodes only if the symbol was declared in source code and also + was not implicitly declared (see the property). + + + Note that for namespace symbol, the declaring syntax might be declaring a nested + namespace. For example, the declaring syntax node for N1 in "namespace N1.N2 {...}" is + the entire for N1.N2. For the global namespace, the declaring + syntax will be the . + + + + The syntax node(s) that declared the symbol. If the symbol was declared in metadata or + was implicitly declared, returns an empty read-only array. + + + To go the opposite direction (from syntax node to symbol), see . + + + + + Helper for implementing for derived classes that store a location but not a + or . + + + + + Get this accessibility that was declared on this symbol. For symbols that do not have + accessibility declared on them, returns . + + + + + Returns true if this symbol is "static"; i.e., declared with the static modifier or + implicitly static. + + + + + Returns true if this symbol is "virtual", has an implementation, and does not override a + base class member; i.e., declared with the virtual modifier. Does not return true for + members declared as abstract or override. + + + + + Returns true if this symbol was declared to override a base class member; i.e., declared + with the override modifier. Still returns true if member was declared to override + something, but (erroneously) no member to override exists. + + + Even for metadata symbols, = true does not imply that will + be non-null. + + + + + Returns true if this symbol was declared as requiring an override; i.e., declared with + the abstract modifier. Also returns true on a type declared as "abstract", all + interface types, and members of interface types. + + + + + Returns true if this symbol was declared to override a base class member and was also + sealed from further overriding; i.e., declared with the sealed modifier. Also set for + types that do not allow a derived class (declared with sealed or static or struct + or enum or delegate). + + + + + Returns true if this symbol has external implementation; i.e., declared with the + extern modifier. + + + + + Returns true if this symbol was automatically created by the compiler, and does not + have an explicit corresponding source code declaration. + + This is intended for symbols that are ordinary symbols in the language sense, + and may be used by code, but that are simply declared implicitly rather than + with explicit language syntax. + + Examples include (this list is not exhaustive): + the default constructor for a class or struct that is created if one is not provided, + the BeginInvoke/Invoke/EndInvoke methods for a delegate, + the generated backing field for an auto property or a field-like event, + the "this" parameter for non-static methods, + the "value" parameter for a property setter, + the parameters on indexer accessor methods (not on the indexer itself), + methods in anonymous types, + + + + + Returns true if this symbol can be referenced by its name in code. Examples of symbols + that cannot be referenced by name are: + constructors, destructors, operators, explicit interface implementations, + accessor methods for properties and events, array types. + + + + + As an optimization, viability checking in the lookup code should use this property instead + of . The full name check will then be performed in the . + + + This property exists purely for performance reasons. + + + + + Perform additional checks after the member has been + added to the member list of the containing type. + + + + + Compare two symbol objects to see if they refer to the same symbol. You should always + use and , or the method, to compare two symbols for equality. + + + + + Compare two symbol objects to see if they refer to the same symbol. You should always + use == and !=, or the Equals method, to compare two symbols for equality. + + + + + Returns a string representation of this symbol, suitable for debugging purposes, or + for placing in an error message. + + + This will provide a useful representation, but it would be clearer to call + directly and provide an explicit format. + Sealed so that and can't get out of sync. + + + + + Build and add synthesized attributes for this symbol. + + + + + Convenience helper called by subclasses to add a synthesized attribute to a collection of attributes. + + + + + effective for this symbol (type or DllImport method). + Nothing if isn't applied on the containing module or it doesn't apply on this symbol. + + + Determined based upon value specified via applied on the containing module. + + + + + Always prefer . + + + + Unfortunately, when determining overriding/hiding/implementation relationships, we don't + have the "current" compilation available. We could, but that would clutter up the API + without providing much benefit. As a compromise, we consider all compilations "current". + + + Unlike in VB, we are not allowing retargeting symbols. This method is used as an approximation + for when a compilation is not available and that method will never return + true for retargeting symbols. + + + + + + Returns the Documentation Comment ID for the symbol, or null if the symbol doesn't + support documentation comments. + + + + + Fetches the documentation comment for this element with a cancellation token. + + Optionally, retrieve the comments formatted for a particular culture. No impact on source documentation comments. + Optionally, expand ]]> elements. No impact on non-source documentation comments. + Optionally, allow cancellation of documentation comment retrieval. + The XML that would be written to the documentation file for the symbol. + + + + True if the symbol has a use-site diagnostic with error severity. + + + + + Returns diagnostic info that should be reported at the use site of the symbol, or null if there is none. + + + + + Return error code that has highest priority while calculating use site error for this symbol. + Supposed to be ErrorCode, but it causes inconsistent accessibility error. + + + + + Indicates that this symbol uses metadata that cannot be supported by the language. + + Examples include: + - Pointer types in VB + - ByRef return type + - Required custom modifiers + + This is distinguished from, for example, references to metadata symbols defined in assemblies that weren't referenced. + Symbols where this returns true can never be used successfully, and thus should never appear in any IDE feature. + + This is set for metadata symbols, as follows: + Type - if a type is unsupported (e.g., a pointer type, etc.) + Method - parameter or return type is unsupported + Field - type is unsupported + Event - type is unsupported + Property - type is unsupported + Parameter - type is unsupported + + + + + Merges given diagnostic to the existing result diagnostic. + + + + + Reports specified use-site diagnostic to given diagnostic bag. + + + This method should be the only method adding use-site diagnostics to a diagnostic bag. + It performs additional adjustments of the location for unification related diagnostics and + may be the place where to add more use-site location post-processing. + + True if the diagnostic has error severity. + + + + Derive error info from a type symbol. + + + + + True if this symbol has been marked with the attribute. + This property returns if the attribute hasn't been cracked yet. + + + + + Returns data decoded from attribute or null if there is no attribute. + This property returns if attribute arguments haven't been decoded yet. + + + + + Returns true and a from the first on the symbol, + the string might be null or an invalid guid representation. False, + if there is no with string argument. + + + + + Gets the attributes for this symbol. Returns an empty if + there are no attributes. + + + + + Gets the attribute target kind corresponding to the symbol kind + If attributes cannot be applied to this symbol kind, returns + an invalid AttributeTargets value of 0 + + AttributeTargets or 0 + + + + Method to early decode the type of well-known attribute which can be queried during the BindAttributeType phase. + This method is called first during attribute binding so that any attributes that affect semantics of type binding + can be decoded here. + + + NOTE: If you are early decoding any new well-known attribute, make sure to update PostEarlyDecodeWellKnownAttributeTypes + to default initialize this data. + + + + + This method is called during attribute binding after EarlyDecodeWellKnownAttributeTypes has been executed. + Symbols should default initialize the data for early decoded well-known attributes here. + + + + + Method to early decode applied well-known attribute which can be queried by the binder. + This method is called during attribute binding after we have bound the attribute types for all attributes, + but haven't yet bound the attribute arguments/attribute constructor. + Early decoding certain well-known attributes enables the binder to use this decoded information on this symbol + when binding the attribute arguments/attribute constructor without causing attribute binding cycle. + + + + + This method is called by the binder when it is finished binding a set of attributes on the symbol so that + the symbol can extract data from the attribute arguments and potentially perform validation specific to + some well known attributes. + + NOTE: If we are decoding a well-known attribute that could be queried by the binder, consider decoding it during early decoding pass. + + + + + Symbol types should override this if they want to handle a specific well-known attribute. + If the attribute is of a type that the symbol does not wish to handle, it should delegate back to + this (base) method. + + + + + + Called to report attribute related diagnostics after all attributes have been bound and decoded. + Called even if there are no attributes. + + + This method is called by the binder from after it has finished binding attributes on the symbol, + has executed for attributes applied on the symbol and has stored the decoded data in the + lazyCustomAttributesBag on the symbol. Bound attributes haven't been stored on the bag yet. + + Post-validation for attributes that is dependent on other attributes can be done here. + + This method should not have any side effects on the symbol, i.e. it SHOULD NOT change the symbol state. + + Bound attributes. + Syntax nodes of attributes in order they are specified in source, or null if there are no attributes. + Diagnostic bag. + Specific part of the symbol to which the attributes apply, or if the attributes apply to the symbol itself. + Decoded well-known attribute data, could be null. + + + + This method does the following set of operations in the specified order: + (1) GetAttributesToBind: Merge attributes from the given attributesSyntaxLists and filter out attributes by attribute target. + (2) BindAttributeTypes: Bind all the attribute types to enable early decode of certain well-known attributes by type. + (3) EarlyDecodeWellKnownAttributes: Perform early decoding of certain well-known attributes that could be queried by the binder in subsequent steps. + (NOTE: This step has the side effect of updating the symbol state based on the data extracted from well known attributes). + (4) GetAttributes: Bind the attributes (attribute arguments and constructor) using bound attribute types. + (5) DecodeWellKnownAttributes: Decode and validate bound well known attributes. + (NOTE: This step has the side effect of updating the symbol state based on the data extracted from well known attributes). + (6) StoreBoundAttributesAndDoPostValidation: + (a) Store the bound attributes in lazyCustomAttributes in a thread safe manner. + (b) Perform some additional post attribute validations, such as + 1) Duplicate attributes, attribute usage target validation, etc. + 2) Post validation for attributes dependent on other attributes + These validations cannot be performed prior to step 6(a) as we might need to + perform a GetAttributes() call on a symbol which can introduce a cycle in attribute binding. + We avoid this cycle by performing such validations in PostDecodeWellKnownAttributes after lazyCustomAttributes have been set. + NOTE: PostDecodeWellKnownAttributes SHOULD NOT change the symbol state. + + + Current design of early decoding well-known attributes doesn't permit decoding attribute arguments/constructor as this can lead to binding cycles. + For well-known attributes used by the binder, where we need the decoded arguments, we must handle them specially in one of the following possible ways: + (a) Avoid decoding the attribute arguments during binding and delay the corresponding binder tasks to a separate post-pass executed after binding. + (b) As the cycles can be caused only when we are binding attribute arguments/constructor, special case the corresponding binder tasks based on the current BinderFlags. + + + + Specific part of the symbol to which the attributes apply, or if the attributes apply to the symbol itself. + Indicates that only early decoding should be performed. WARNING: the resulting bag will not be sealed. + Flag indicating whether lazyCustomAttributes were stored on this thread. Caller should check for this flag and perform NotePartComplete if true. + + + + Method to merge attributes from the given attributesSyntaxLists and filter out attributes by attribute target. + This is the first step in attribute binding. + + + This method can generate diagnostics for few cases where we have an invalid target specifier and the parser hasn't generated the necessary diagnostics. + It should not perform any bind operations as it can lead to an attribute binding cycle. + + + + + Method to early decode certain well-known attributes which can be queried by the binder. + This method is called during attribute binding after we have bound the attribute types for all attributes, + but haven't yet bound the attribute arguments/attribute constructor. + Early decoding certain well-known attributes enables the binder to use this decoded information on this symbol + when binding the attribute arguments/attribute constructor without causing attribute binding cycle. + + + + + This method validates attribute usage for each bound attribute and calls + on attributes with valid attribute usage. + This method is called by the binder when it is finished binding a set of attributes on the symbol so that + the symbol can extract data from the attribute arguments and potentially perform validation specific to + some well known attributes. + + + + + Validate attribute usage target and duplicate attributes. + + Bound attribute + Syntax node for attribute specification + Compilation + Symbol part to which the attribute has been applied. + Diagnostics + Set of unique attribute types applied to the symbol + + + + Ensure that attributes are bound and the ObsoleteState of this symbol is known. + + + + + Represents a result of lookup operation over a 0 or 1 symbol (as opposed to a scope). The + typical use is to represent that a particular symbol is good/bad/unavailable. + + For more explanation of Kind, Symbol, Error - see LookupResult. + + + + + This binder is for binding the argument to typeof. It traverses + the syntax marking each open type ("unbound generic type" in the + C# spec) as either allowed or not allowed, so that BindType can + appropriately return either the corresponding type symbol or an + error type. It also indicates whether the argument as a whole + should be considered open so that the flag can be set + appropriately in BoundTypeOfOperator. + + + + + This visitor walks over a type expression looking for open types. + Open types are allowed if an only if: + 1) There is no constructed generic type elsewhere in the visited syntax; and + 2) The open type is not used as a type argument or array/pointer/nullable + element type. + + + + The argument to typeof. + + Keys are GenericNameSyntax nodes representing unbound generic types. + Values are false if the node should result in an error and true otherwise. + + True if no constructed generic type was encountered. + + + + A binder that places class/interface/struct/delegate type parameters in scope + + + + + The scope within a documentation cref. Contains the implicitly declared type parameters + of the cref (see for details). + + + + + A binder that places method type parameters in scope. + + + + + Binder used to place the parameters of a method, property, indexer, or delegate + in scope when binding <param> tags inside of XML documentation comments. + + + + + Returns true if calls and delegate invocations with this + expression as the receiver should be non-virtual calls. + + + + + Returns a serializable object that is used for displaying this expression in a diagnostic message. + + + + + The set of method symbols from which this call's method was chosen. + Only kept in the tree if the call was an error and overload resolution + was unable to choose a best method. + + + + + The set of indexer symbols from which this call's indexer was chosen. + Only kept in the tree if the call was an error and overload resolution + was unable to choose a best indexer. + + + + + The set of method symbols from which this operator's method was chosen. + Only kept in the tree if the operator was an error and overload resolution + was unable to choose a best method. + + + + + The set of method symbols from which this operator's method was chosen. + Only kept in the tree if the operator was an error and overload resolution + was unable to choose a best method. + + + + + The set of method symbols from which this operator's method was chosen. + Only kept in the tree if the operator was an error and overload resolution + was unable to choose a best method. + + + + + The set of method symbols from which this operator's method was chosen. + Only kept in the tree if the operator was an error and overload resolution + was unable to choose a best method. + + + + + The set of method symbols from which this operator's method was chosen. + Only kept in the tree if the operator was an error and overload resolution + was unable to choose a best method. + + + + + The set of method symbols from which this conversion's method was chosen. + Only kept in the tree if the conversion was an error and overload resolution + was unable to choose a best method. + + + + + Returns true when conversion itself (not the operand) may have side-effects + A typical side-effect of a conversion is an exception when conversion is unsuccessful. + + + + + + This method is intended for passes other than the LocalRewriter. + Use MakeConversion helper method in the LocalRewriter instead, + it generates a synthesized conversion in its lowered form. + + + + + NOTE: This method is intended for passes other than the LocalRewriter. + NOTE: Use MakeConversion helper method in the LocalRewriter instead, + NOTE: it generates a synthesized conversion in its lowered form. + + + + + Build an object creation expression without performing any rewriting + + + + + Set if the group has a receiver but none was not specified in syntax. + + + + + Determines if a bound node, or associated syntax or type has an error (not a warning) + diagnostic associated with it. + + Typically used in the binder as a way to prevent cascading errors. + In most other cases a more lightweight HasErrors should be used. + + + + + Determines if a bound node, or any child, grandchild, etc has an error (not warning) + diagnostic associated with it. The HasError bit is initially set for a node by providing it + to the node constructor. If any child nodes of a node have + the HasErrors bit set, then it is automatically set to true on the parent bound node. + + HasErrors indicates that the tree is not emittable and used to short-circuit lowering/emit stages. + NOTE: not having HasErrors does not guarantee that we do not have any diagnostic associated + with corresponding syntax or type. + + + + + NOTE: not generally set in rewriters. + + + + + The bound expression that invokes the operation of the query clause. + + + + + The bound expression that is the invocation of a "Cast" method specified by the query translation. + + + + + The bound expression that is the query expression in "unoptimized" form. Specifically, a final ".Select" + invocation that is omitted by the specification is included here. + + + + + Consumers must provide implementation for . + + + + + We should be intentional about behavior of derived classes regarding guarding against stack overflow. + + + + + BoundExpressions to be used for emit. The expressions are assumed + to be lowered and will not be visited by . + + + + + What we need to do is find a *repeatable* arbitrary way to choose between + two errors; we can for example simply take the one that is lower in alphabetical + order when converted to a string. As an optimization, we compare error codes + first and skip string comparison if they differ. + + + + + In some cases returns are handled as gotos to return epilogue. + This is used to track the state of the epilogue. + + + + + Emits address as in & + + May introduce a temp which it will return. (otherwise returns null) + + + + + Emits address of a temp. + Used in cases where taking address directly is not possible + (typically because expression does not have a home) + + Introduce a temp which it will return. + + + + + May introduce a temp which it will return. (otherwise returns null) + + + + + Checks if expression directly or indirectly represents a value with its own home. In + such cases it is possible to get a reference without loading into a temporary. + + + + + Special HasHome for fields. Fields have homes when they are writable. + + + + + May introduce a temp which it will return. (otherwise returns null) + + + + + Emits receiver in a form that allows member accesses ( O or & ). For verifiably + reference types it is the actual reference. For generic types it is a address of the + receiver with readonly intent. For the value types it is an address of the receiver. + + isAccessConstrained indicates that receiver is a target of a constrained callvirt + in such case it is unnecessary to box a receiver that is typed to a type parameter + + May introduce a temp which it will return. (otherwise returns null) + + + + + May introduce a temp which it will return. (otherwise returns null) + + + + + Entry point to the array initialization. + Assumes that we have newly created array on the stack. + + inits could be an array of values for a single dimensional array + or an array (of array)+ of values for a multidimensional case + + in either case it is expected that number of leaf values will match number + of elements in the array and nesting level should match the rank of the array. + + + + + To handle array initialization of arbitrary rank it is convenient to + approach multidimensional initialization as a recursively nested. + + ForAll{i, j, k} Init(i, j, k) ===> + ForAll{i} ForAll{j, k} Init(i, j, k) ===> + ForAll{i} ForAll{j} ForAll{k} Init(i, j, k) + + This structure is used for capturing initializers of a given index and + the index value itself. + + + + + Emits all initializers that match indices on the stack recursively. + + Example: + if array has [0..2, 0..3, 0..2] shape + and we have {1, 2} indices on the stack + initializers for + [1, 2, 0] + [1, 2, 1] + [1, 2, 2] + + will be emitted and the top index will be pushed off the stack + as at that point we would be completely done with emitting initializers + corresponding to that index. + + + + + Count of all nontrivial initializers and count of those that are constants. + + + + + Produces a serialized blob of all constant initializers. + Non-constant initializers are matched with a zero of corresponding size. + + + + + Check if it is a regular collection of expressions or there are nested initializers. + + + + + Used to decide if we need to emit call or callvirt. + It basically checks if the receiver expression cannot be null, but it is not 100% precise. + There are cases where it really can be null, but we do not care. + + + + + checks if receiver is effectively ldarg.0 + + + + + Used to decide if we need to emit 'call' or 'callvirt' for structure method. + It basically checks if the method overrides any other and method's defining type + is not a 'special' or 'special-by-ref' type. + + + + + When array operation get long or ulong arguments the args should be + cast to native int. + Note that the cast is always checked. + + + + + Emit an element store instruction for a single dimensional array. + + + + + Emit code for a conditional (aka ternary) operator. + + + (b ? x : y) becomes + push b + if pop then goto CONSEQUENCE + push y + goto DONE + CONSEQUENCE: + push x + DONE: + + + + + Emit code for a null-coalescing operator. + + + x ?? y becomes + push x + dup x + if pop != null goto LEFT_NOT_NULL + pop + push y + LEFT_NOT_NULL: + + + + + Produces opcode for a jump that corresponds to given operation and sense. + Also produces a reverse opcode - opcode for the same condition with inverted sense. + + + + + The interesting part in the following method is the support for exception filters. + === Example: + + try + { + TryBlock + } + catch (ExceptionType ex) when (Condition) + { + Handler + } + + gets emitted as something like ===> + + Try + TryBlock + Filter + var tmp = Pop() as {ExceptionType} + if (tmp == null) + { + Push 0 + } + else + { + ex = tmp + Push Condition ? 1 : 0 + } + End Filter // leaves 1 or 0 on the stack + Catch // gets called after finalization of nested exception frames if condition above produced 1 + Pop // CLR pushes the exception object again + variable ex can be used here + Handler + EndCatch + + + + + Delegate to emit string compare call and conditional branch based on the compare result. + + Key to compare + Node for diagnostics. + Case constant to compare the key against + Target label to branch to if key = stringConstant + String equality method + + + + Gets already declared and initialized local. + + + + + Gets the name and id of the local that are going to be generated into the debug metadata. + + + + + Releases a local. + + + + + Allocates a temp without identity. + + + + + Frees a temp. + + + + + Frees an optional temp. + + + + + Clones all labels used in a finally block. + This allows creating an emittable clone of finally. + It is safe to do because no branches can go in or out of the finally handler. + + + + + The argument is BoundTryStatement (and not a BoundBlock) specifically + to support only Finally blocks where it is guaranteed to not have incoming or leaving branches. + + + + + Perform IL specific optimizations (mostly reduction of local slots) + + Method body to optimize + + When set, do not perform aggressive optimizations that degrade debugging experience. + In particular we do not do the following: + + 1) Do not elide any user defined locals, even if never read from. + Example: + { + var dummy = Foo(); // should not become just "Foo" + } + + User might want to examine dummy in the debugger. + + 2) Do not carry values on the stack between statements + Example: + { + var temp = Foo(); + temp.ToString(); // should not become Foo().ToString(); + } + + User might want to examine temp in the debugger. + + + + Produced list of "ephemeral" locals. + Essentially, these locals do not need to leave the evaluation stack. + As such they do not require an allocation of a local slot and + their load/store operations are implemented trivially. + + + + + + when current and other use spans are regular spans we can have only 2 conflict cases: + [1, 3) conflicts with [0, 2) + [1, 3) conflicts with [2, 4) + + NOTE: with regular spans, it is not possible for two spans to share an edge point + unless they belong to the same local. (because we cannot aceess two real locals at the same time) + + specifically: + [1, 3) does not conflict with [0, 1) since such spans would need to belong to the same local + + + + + Dummy locals represent implicit control flow + It is not allowed for a regular local span to cross into or + be immediately adjacent to a dummy span. + + specifically: + [1, 3) does conflict with [0, 1) since that would imply a value flowing into or out of a span surrounded by a branch/label + + + + + + The command line arguments to a C# . + + + + + Gets the compilation options for the C# + created from the . + + + + + Gets the parse options for the C# . + + + + + Should the format of error messages include the line and column of + the end of the offending text. + + + + + Get the path name starting from the + + + + + Parses a command line. + + A collection of strings representing the command line arguments. + The base directory used for qualifying file locations. + The directory to search for mscorlib, or null if not available. + A string representing additional reference paths. + a commandlinearguments object representing the parsed command line. + + + + Diagnostic for the errorCode added if the warningOptions does not mention suppressed for the errorCode. + + + + + Given a compilation and a destination directory, determine three names: + 1) The name with which the assembly should be output. + 2) The path of the assembly/module file. + 3) The path of the pdb file. + + When csc produces an executable, but the name of the resulting assembly + is not specified using the "/out" switch, the name is taken from the name + of the file (note: file, not class) containing the assembly entrypoint + (as determined by binding and the "/main" switch). + + For example, if the command is "csc /target:exe a.cs b.cs" and b.cs contains the + entrypoint, then csc will produce "b.exe" and "b.pdb" in the output directory, + with assembly name "b" and module name "b.exe" embedded in the file. + + + + + Print compiler logo + + + + + + Print Commandline help message (up to 80 English characters per line) + + + + + + A binding for an attribute. Represents the result of binding an attribute constructor and + the positional and named arguments. + + + + + Creates an AttributeSemanticModel that allows asking semantic questions about an attribute node. + + + + + Creates a speculative AttributeSemanticModel that allows asking semantic questions about an attribute node that did not appear in the original source code. + + + + + Structure containing all semantic information about an await expression. + + + + + Internal cache of built-in operators. + Cache is compilation-specific because it uses compilation-specific SpecialTypes. + + + + + Appends all trees (including any trees from #load'ed files). + + + + + Collects all the trees #load'ed by (as well as + itself) and populates + with all the trees that are safe to remove (not #load'ed by any other tree). + + + + + The compilation object is an immutable representation of a single invocation of the + compiler. Although immutable, a compilation is also on-demand, and will realize and cache + data as necessary. A compilation can produce a new compilation from existing compilation + with the application of small deltas. In many cases, it is more efficient than creating a + new compilation from scratch, as the new compilation can reuse information from the old + compilation. + + + + + Manages anonymous types declared in this compilation. Unifies types that are structurally equivalent. + + + + + The for this compilation. Do not access directly, use Assembly property + instead. This field is lazily initialized by ReferenceManager, ReferenceManager.CacheLockObject must be locked + while ReferenceManager "calculates" the value and assigns it, several threads must not perform duplicate + "calculation" simultaneously. + + + + + Holds onto data related to reference binding. + The manager is shared among multiple compilations that we expect to have the same result of reference binding. + In most cases this can be determined without performing the binding. If the compilation however contains a circular + metadata reference (a metadata reference that refers back to the compilation) we need to avoid sharing of the binding results. + We do so by creating a new reference manager for such compilation. + + + + + Contains the main method of this assembly, if there is one. + + + + + The set of trees for which a has been added to the queue. + + + + + The options the compilation was created with. + + + + + True when the compiler is run in "strict" mode, in which it enforces the language specification + in some cases even at the expense of full compatibility. Such differences typically arise when + earlier versions of the compiler failed to enforce the full language specification. + + + + + The language version that was used to parse the syntax trees of this compilation. + + + + + Creates a new compilation from scratch. Methods such as AddSyntaxTrees or AddReferences + on the returned object will allow to continue building up the Compilation incrementally. + + Simple assembly name. + The syntax trees with the source code for the new compilation. + The references for the new compilation. + The compiler options to use. + A new compilation. + + + + Creates a new compilation that can be used in scripting. + + + + + Create a duplicate of this compilation with different symbol instances. + + + + + Creates a new compilation with the specified name. + + + + + Creates a new compilation with the specified references. + + + The new will query the given for the underlying + metadata as soon as the are needed. + + The new compilation uses whatever metadata is currently being provided by the . + E.g. if the current compilation references a metadata file that has changed since the creation of the compilation + the new compilation is going to use the updated version, while the current compilation will be using the previous (it doesn't change). + + + + + Creates a new compilation with the specified references. + + + + + Creates a new compilation with the specified compilation options. + + + + + Returns a new compilation with the given compilation set as the previous submission. + + + + + Returns a new compilation with a given event queue. + + + + + The syntax trees (parsed from source code) that this compilation was created with. + + + + + Returns true if this compilation contains the specified tree. False otherwise. + + + + + Creates a new compilation with additional syntax trees. + + + + + Creates a new compilation with additional syntax trees. + + + + + Creates a new compilation without the specified syntax trees. Preserves metadata info for use with trees + added later. + + + + + Creates a new compilation without the specified syntax trees. Preserves metadata info for use with trees + added later. + + + + + Creates a new compilation without any syntax trees. Preserves metadata info + from this compilation for use with trees added later. + + + + + Creates a new compilation without the old tree but with the new tree. + + + + + Gets the or for a metadata reference used to create this compilation. + + or corresponding to the given reference or null if there is none. + + Uses object identity when comparing two references. + + + + + All reference directives used in this compilation. + + + + + Returns a metadata reference that a given #r resolves to. + + #r directive. + Metadata reference the specified directive resolves to, or null if the doesn't match any #r directive in the compilation. + + + + Creates a new compilation with additional metadata references. + + + + + Creates a new compilation with additional metadata references. + + + + + Creates a new compilation without the specified metadata references. + + + + + Creates a new compilation without the specified metadata references. + + + + + Creates a new compilation without any metadata references + + + + + Creates a new compilation with an old metadata reference replaced with a new metadata reference. + + + + + Get all modules in this compilation, including the source module, added modules, and all + modules of referenced assemblies that do not come from an assembly with an extern alias. + Metadata imported from aliased assemblies is not visible at the source level except through + the use of an extern alias directive. So exclude them from this list which is used to construct + the global namespace. + + + + + Return a list of assembly symbols than can be accessed without using an alias. + For example: + 1) /r:A.dll /r:B.dll -> A, B + 2) /r:Foo=A.dll /r:B.dll -> B + 3) /r:Foo=A.dll /r:A.dll -> A + + + + + Gets the that corresponds to the assembly symbol. + + + + + The AssemblySymbol that represents the assembly being created. + + + + + The AssemblySymbol that represents the assembly being created. + + + + + Get a ModuleSymbol that refers to the module being created by compiling all of the code. + By getting the GlobalNamespace property of that module, all of the namespaces and types + defined in source code can be obtained. + + + + + Gets the root namespace that contains all namespaces and types defined in source code or in + referenced metadata, merged into a single namespace hierarchy. + + + + + Given for the specified module or assembly namespace, gets the corresponding compilation + namespace (merged namespace representation for all namespace declarations and references + with contributions for the namespaceSymbol). Can return null if no corresponding + namespace can be bound in this compilation with the same name. + + + + + A symbol representing the implicit Script class. This is null if the class is not + defined in the compilation. + + + + + Resolves a symbol that represents script container (Script class). Uses the + full name of the container class stored in to find the symbol. + + The Script class symbol or null if it is not defined. + + + + Global imports (including those from previous submissions, if there are any). + + + + + Imports declared by this submission (null if this isn't one). + + + + + Imports from all previous submissions. + + + + + Get the symbol for the predefined type from the COR Library referenced by this compilation. + + + + + Get the symbol for the predefined type member from the COR Library referenced by this compilation. + + + + + Gets the type within the compilation's assembly and all referenced assemblies (other than + those that can only be referenced via an extern alias) using its canonical CLR metadata name. + + + + + The TypeSymbol for the type 'dynamic' in this Compilation. + + + + + The NamedTypeSymbol for the .NET System.Object type, which could have a TypeKind of + Error if there was no COR Library in this Compilation. + + + + + Returns a new ArrayTypeSymbol representing an array type tied to the base types of the + COR Library in this Compilation. + + + + + Returns a new PointerTypeSymbol representing a pointer type tied to a type in this Compilation. + + + + + Gets a new SyntaxTreeSemanticModel for the specified syntax tree. + + + + + Returns imported symbols for the given declaration. + + + + + The bag in which semantic analysis should deposit its diagnostics. + + + + + A bag in which diagnostics that should be reported after code gen can be deposited. + + + + + Gets the diagnostics produced during the parsing stage of a compilation. There are no diagnostics for declarations or accessor or + method bodies, for example. + + + + + Gets the diagnostics produced during symbol declaration headers. There are no diagnostics for accessor or + method bodies, for example. + + + + + Gets the diagnostics produced during the analysis of method bodies and field initializers. + + + + + Gets the all the diagnostics for the compilation, including syntax, declaration, and binding. Does not + include any diagnostics that might be produced during emit. + + + + + Filter out warnings based on the compiler options (/nowarn, /warn and /warnaserror) and the pragma warning directives. + 'incoming' is freed. + + True when there is no error or warning treated as an error. + + + + Filter out warnings based on the compiler options (/nowarn, /warn and /warnaserror) and the pragma warning directives. + + True when there is no error. + + + + Return true if there is a source declaration symbol name that meets given predicate. + + + + + Return source declaration symbols whose name meets given predicate. + + + + + Returns if the compilation has all of the members necessary to emit metadata about + dynamic types. + + + + + + Returns whether the compilation has the Boolean type and if it's good. + + Returns true if Boolean is present and healthy. + + + + Determine if enum arrays can be initialized using block initialization. + + True if it's safe to use block initialization for enum arrays. + + In NetFx 4.0, block array initializers do not work on all combinations of {32/64 X Debug/Retail} when array elements are enums. + This is fixed in 4.5 thus enabling block array initialization for a very common case. + We look for the presence of which was introduced in .Net 4.5 + + + + + An array of cached well known types available for use in this Compilation. + Lazily filled by GetWellKnownType method. + + + + + Lazy cache of well known members. + Not yet known value is represented by ErrorTypeSymbol.UnknownResultType + + + + + Lookup member declaration in well known type used by this Compilation. + + + If a well-known member of a generic type instantiation is needed use this method to get the corresponding generic definition and + to construct an instantiation. + + + + + Synthesizes a custom attribute. + Returns null if the symbol is missing, + or any of the members in are missing. + The attribute is synthesized only if present. + + + Constructor of the attribute. If it doesn't exist, the attribute is not created. + + Arguments to the attribute constructor. + + Takes a list of pairs of well-known members and constants. The constants + will be passed to the field/property referenced by the well-known member. + If the well-known member does not exist in the compilation then no attribute + will be synthesized. + + + + + Given a type , which is either dynamic type OR is a constructed type with dynamic type present in it's type argument tree, + returns a synthesized DynamicAttribute with encoded dynamic transforms array. + + This method is port of AttrBind::CompileDynamicAttr from the native C# compiler. + + + + Used to generate the dynamic attributes for the required typesymbol. + + + + + ReferenceManager encapsulates functionality to create an underlying SourceAssemblySymbol + (with underlying ModuleSymbols) for Compilation and AssemblySymbols for referenced + assemblies (with underlying ModuleSymbols) all properly linked together based on + reference resolution between them. + + ReferenceManager is also responsible for reuse of metadata readers for imported modules + and assemblies as well as existing AssemblySymbols for referenced assemblies. In order + to do that, it maintains global cache for metadata readers and AssemblySymbols + associated with them. The cache uses WeakReferences to refer to the metadata readers and + AssemblySymbols to allow memory and resources being reclaimed once they are no longer + used. The tricky part about reusing existing AssemblySymbols is to find a set of + AssemblySymbols that are created for the referenced assemblies, which (the + AssemblySymbols from the set) are linked in a way, consistent with the reference + resolution between the referenced assemblies. + + When existing Compilation is used as a metadata reference, there are scenarios when its + underlying SourceAssemblySymbol cannot be used to provide symbols in context of the new + Compilation. Consider classic multi-targeting scenario: compilation C1 references v1 of + Lib.dll and compilation C2 references C1 and v2 of Lib.dll. In this case, + SourceAssemblySymbol for C1 is linked to AssemblySymbol for v1 of Lib.dll. However, + given the set of references for C2, the same reference for C1 should be resolved against + v2 of Lib.dll. In other words, in context of C2, all types from v1 of Lib.dll leaking + through C1 (through method signatures, etc.) must be retargeted to the types from v2 of + Lib.dll. In this case, ReferenceManager creates a special RetargetingAssemblySymbol for + C1, which is responsible for the type retargeting. The RetargetingAssemblySymbols could + also be reused for different Compilations, ReferenceManager maintains a cache of + RetargetingAssemblySymbols (WeakReferences) for each Compilation. + + The only public entry point of this class is CreateSourceAssembly() method. + + + + + Checks if the properties of are compatible with properties of . + Reports inconsistencies to the given diagnostic bag. + + True if the properties are compatible and hence merged, false if the duplicate reference should not merge it's properties with primary reference. + + + + C# only considers culture when comparing weak identities. + It ignores versions of weak identities and reports an error if there are two weak assembly + references passed to a compilation that have the same simple name. + + + + + Creates a from specified metadata. + + + Used by EnC to create symbols for emit baseline. The PE symbols are used by . + + The assembly references listed in the metadata AssemblyRef table are matched to the resolved references + stored on this . We assume that the dependencies of the baseline metadata are + the same as the dependencies of the current compilation. This is not exactly true when the dependencies use + time-based versioning pattern, e.g. AssemblyVersion("1.0.*"). In that case we assume only the version + changed and nothing else. + + Each AssemblyRef is matched against the assembly identities using an exact equality comparison modulo version. + AssemblyRef with lower version in metadata is matched to a PE assembly symbol with the higher version + (provided that the assembly name, culture, PKT and flags are the same) if there is no symbol with the exactly matching version. + If there are multiple symbols with higher versions selects the one with the minimal version among them. + + Matching to a higher version is necessary to support EnC for projects whose P2P dependencies use time-based versioning pattern. + The versions of the dependent projects seen from the IDE will be higher than + the one written in the metadata at the time their respective baselines are built. + + No other unification or further resolution is performed. + + + + + A map of the PE assembly symbol identities to the identities of the original metadata AssemblyRefs. + This map will be used in emit when serializing AssemblyRef table of the delta. For the delta to be compatible with + the original metadata we need to map the identities of the PE assembly symbols back to the original AssemblyRefs (if different). + In other words, we pretend that the versions of the dependencies haven't changed. + + + + + Guarded by . + + + + + Import options of the compilation being built. + + + + + For testing purposes only. + + + + + For testing purposes only. + + + + + Represents a reference to another C# compilation. + + + + + Returns the referenced Compilation. + + + + + Create a metadata reference to a compilation. + + The compilation to reference. + Extern aliases for this reference. + Should interop types be embedded in the created assembly? + + + + Applies C#-specific modification and filtering of s. + + + + + Modifies an input per the given options. For example, the + severity may be escalated, or the may be filtered out entirely + (by returning null). + + The input diagnostic + The maximum warning level to allow. Diagnostics with a higher warning level will be filtered out. + How warning diagnostics should be reported + How specific diagnostics should be reported + A diagnostic updated to reflect the options, or null if it has been filtered out + + + + Allows asking semantic questions about a tree of syntax nodes in a Compilation. Typically, + an instance is obtained by a call to .. + + + An instance of caches local symbols and semantic + information. Thus, it is much more efficient to use a single instance of when asking multiple questions about a syntax tree, because + information from the first question may be reused. This also means that holding onto an + instance of SemanticModel for a long time may keep a significant amount of memory from being + garbage collected. + + + When an answer is a named symbol that is reachable by traversing from the root of the symbol + table, (that is, from an of the ), + that symbol will be returned (i.e. the returned value will be reference-equal to one + reachable from the root of the symbol table). Symbols representing entities without names + (e.g. array-of-int) may or may not exhibit reference equality. However, some named symbols + (such as local variables) are not reachable from the root. These symbols are visible as + answers to semantic questions. When the same SemanticModel object is used, the answers + exhibit reference-equality. + + + + + + The compilation this object was obtained from. + + + + + The root node of the syntax tree that this binding is based on. + + + + + Gets symbol information about a syntax node. This is overridden by various specializations of SemanticModel. + It can assume that CheckSyntaxNode and CanGetSemanticInfo have already been called, as well as that named + argument nodes have been handled. + + The syntax node to get semantic information for. + Options to control behavior. + The cancellation token. + + + + Gets symbol information about the 'Add' method corresponding to an expression syntax within collection initializer. + This is the worker function that is overridden in various derived kinds of Semantic Models. It can assume that + CheckSyntaxNode has already been called and the is in the right place in the syntax tree. + + + + + Gets type information about a syntax node. This is overridden by various specializations of SemanticModel. + It can assume that CheckSyntaxNode and CanGetSemanticInfo have already been called, as well as that named + argument nodes have been handled. + + The syntax node to get semantic information for. + The cancellation token. + + + + Gets a list of method or indexed property symbols for a syntax node. This is overridden by various specializations of SemanticModel. + It can assume that CheckSyntaxNode and CanGetSemanticInfo have already been called, as well as that named + argument nodes have been handled. + + The syntax node to get semantic information for. + + The cancellation token. + + + + Gets a list of indexer symbols for a syntax node. This is overridden by various specializations of SemanticModel. + It can assume that CheckSyntaxNode and CanGetSemanticInfo have already been called, as well as that named + argument nodes have been handled. + + The syntax node to get semantic information for. + + The cancellation token. + + + + Gets the constant value for a syntax node. This is overridden by various specializations of SemanticModel. + It can assume that CheckSyntaxNode and CanGetSemanticInfo have already been called, as well as that named + argument nodes have been handled. + + The syntax node to get semantic information for. + The cancellation token. + + + + Bind the given expression speculatively at the given position, and return back + the resulting bound node. May return null in some error cases. + + + Keep in sync with Binder.BindCrefParameterOrReturnType. + + + + + Bind the given attribute speculatively at the given position, and return back + the resulting bound node. May return null in some error cases. + + + + + Gets the semantic information for an ordering clause in an orderby query clause. + + + + + Gets the semantic information associated with a select or group clause. + + + + + Returns what symbol(s), if any, the given expression syntax bound to in the program. + + An AliasSymbol will never be returned by this method. What the alias refers to will be + returned instead. To get information about aliases, call GetAliasInfo. + + If binding the type name C in the expression "new C(...)" the actual constructor bound to + will be returned (or all constructor if overload resolution failed). This occurs as long as C + unambiguously binds to a single type that has a constructor. If C ambiguously binds to multiple + types, or C binds to a static class, then type(s) are returned. + + + + + Returns what 'Add' method symbol(s), if any, corresponds to the given expression syntax + within . + + + + + Returns what symbol(s), if any, the given constructor initializer syntax bound to in the program. + + The syntax node to get semantic information for. + The cancellation token. + + + + Returns what symbol(s), if any, the given attribute syntax bound to in the program. + + The syntax node to get semantic information for. + The cancellation token. + + + + Gets the semantic information associated with a documentation comment cref. + + + + + Binds the expression in the context of the specified location and gets symbol information. + This method is used to get symbol information about an expression that did not actually + appear in the source code. + + A character position used to identify a declaration scope and + accessibility. This character position must be within the FullSpan of the Root syntax + node in this SemanticModel. + + A syntax node that represents a parsed expression. This syntax + node need not and typically does not appear in the source code referred to by the + SemanticModel instance. + Indicates whether to binding the expression as a full expressions, + or as a type or namespace. If SpeculativeBindingOption.BindAsTypeOrNamespace is supplied, then + expression should derive from TypeSyntax. + The symbol information for the topmost node of the expression. + + The passed in expression is interpreted as a stand-alone expression, as if it + appeared by itself somewhere within the scope that encloses "position". + + is ignored if is within a documentation + comment cref attribute value. + + + + + Bind the attribute in the context of the specified location and get semantic information + such as type, symbols and diagnostics. This method is used to get semantic information about an attribute + that did not actually appear in the source code. + + A character position used to identify a declaration scope and accessibility. This + character position must be within the FullSpan of the Root syntax node in this SemanticModel. In order to obtain + the correct scoping rules for the attribute, position should be the Start position of the Span of the symbol that + the attribute is being applied to. + + A syntax node that represents a parsed attribute. This syntax node + need not and typically does not appear in the source code referred to SemanticModel instance. + The semantic information for the topmost node of the attribute. + + + + Bind the constructor initializer in the context of the specified location and get semantic information + such as type, symbols and diagnostics. This method is used to get semantic information about a constructor + initializer that did not actually appear in the source code. + + NOTE: This will only work in locations where there is already a constructor initializer. + + A character position used to identify a declaration scope and accessibility. This + character position must be within the FullSpan of the Root syntax node in this SemanticModel. + Furthermore, it must be within the span of an existing constructor initializer. + + A syntax node that represents a parsed constructor initializer. This syntax node + need not and typically does not appear in the source code referred to SemanticModel instance. + The semantic information for the topmost node of the constructor initializer. + + + + Bind the cref in the context of the specified location and get semantic information + such as type, symbols and diagnostics. This method is used to get semantic information about a cref + that did not actually appear in the source code. + + A character position used to identify a declaration scope and accessibility. This + character position must be within the FullSpan of the Root syntax node in this SemanticModel. In order to obtain + the correct scoping rules for the cref, position should be the Start position of the Span of the original cref. + + A syntax node that represents a parsed cref. This syntax node + need not and typically does not appear in the source code referred to SemanticModel instance. + SymbolInfo options. + The semantic information for the topmost node of the cref. + + + + Gets type information about a constructor initializer. + + The syntax node to get semantic information for. + The cancellation token. + + + + Gets type information about an expression. + + The syntax node to get semantic information for. + The cancellation token. + + + + Gets type information about an attribute. + + The syntax node to get semantic information for. + The cancellation token. + + + + Gets the conversion that occurred between the expression's type and type implied by the expression's context. + + + + + Binds the expression in the context of the specified location and gets type information. + This method is used to get type information about an expression that did not actually + appear in the source code. + + A character position used to identify a declaration scope and + accessibility. This character position must be within the FullSpan of the Root syntax + node in this SemanticModel. + + A syntax node that represents a parsed expression. This syntax + node need not and typically does not appear in the source code referred to by the + SemanticModel instance. + Indicates whether to binding the expression as a full expressions, + or as a type or namespace. If SpeculativeBindingOption.BindAsTypeOrNamespace is supplied, then + expression should derive from TypeSyntax. + The type information for the topmost node of the expression. + The passed in expression is interpreted as a stand-alone expression, as if it + appeared by itself somewhere within the scope that encloses "position". + + + + Gets the conversion that occurred between the expression's type and type implied by the expression's context. + + + + + Gets a list of method or indexed property symbols for a syntax node. + + The syntax node to get semantic information for. + The cancellation token. + + + + Gets a list of method or indexed property symbols for a syntax node. + + The syntax node to get semantic information for. + The cancellation token. + + + + Gets a list of method or indexed property symbols for a syntax node. + + The syntax node to get semantic information for. + The cancellation token. + + + + Returns the list of accessible, non-hidden indexers that could be invoked with the given expression as receiver. + + Potential indexer receiver. + To cancel the computation. + Accessible, non-hidden indexers. + + If the receiver is an indexer expression, the list will contain the indexers that could be applied to the result + of accessing the indexer, not the set of candidates that were considered during construction of the indexer expression. + + + + + Gets the semantic information associated with a query clause. + + + + + If resolves to an alias name, return the AliasSymbol corresponding + to A. Otherwise return null. + + + + + Binds the name in the context of the specified location and sees if it resolves to an + alias name. If it does, return the AliasSymbol corresponding to it. Otherwise, return null. + + A character position used to identify a declaration scope and + accessibility. This character position must be within the FullSpan of the Root syntax + node in this SemanticModel. + + A syntax node that represents a name. This syntax + node need not and typically does not appear in the source code referred to by the + SemanticModel instance. + Indicates whether to binding the name as a full expression, + or as a type or namespace. If SpeculativeBindingOption.BindAsTypeOrNamespace is supplied, then + expression should derive from TypeSyntax. + The passed in name is interpreted as a stand-alone name, as if it + appeared by itself somewhere within the scope that encloses "position". + + + + Gets the binder that encloses the position. + + + + + Gets the MemberSemanticModel that contains the node. + + + + + Given a position, locates the containing token. If the position is actually within the + leading trivia of the containing token or if that token is EOF, moves one token to the + left. Returns the start position of the resulting token. + + This has the effect of moving the position left until it hits the beginning of a non-EOF + token. + + Throws an ArgumentOutOfRangeException if position is not within the root of this model. + + + + + A convenience method that determines a position from a node. If the node is missing, + then its position will be adjusted using CheckAndAdjustPosition. + + + + + Gets the available named symbols in the context of the specified location and optional container. Only + symbols that are accessible and visible from the given location are returned. + + The character position for determining the enclosing declaration scope and + accessibility. + The container to search for symbols within. If null then the enclosing declaration + scope around position is used. + The name of the symbol to find. If null is specified then symbols + with any names are returned. + Consider (reduced) extension methods. + A list of symbols that were found. If no symbols were found, an empty list is returned. + + The "position" is used to determine what variables are visible and accessible. Even if "container" is + specified, the "position" location is significant for determining which members of "containing" are + accessible. + + Labels are not considered (see ). + + Non-reduced extension methods are considered regardless of the value of . + + + + + Gets the available base type members in the context of the specified location. Akin to + calling with the container set to the immediate base type of + the type in which occurs. However, the accessibility rules + are different: protected members of the base type will be visible. + + Consider the following example: + + public class Base + { + protected void M() { } + } + + public class Derived : Base + { + void Test(Base b) + { + b.M(); // Error - cannot access protected member. + base.M(); + } + } + + Protected members of an instance of another type are only accessible if the instance is known + to be "this" instance (as indicated by the "base" keyword). + + The character position for determining the enclosing declaration scope and + accessibility. + The name of the symbol to find. If null is specified then symbols + with any names are returned. + A list of symbols that were found. If no symbols were found, an empty list is returned. + + The "position" is used to determine what variables are visible and accessible. + + Non-reduced extension methods are considered, but reduced extension methods are not. + + + + + Gets the available named static member symbols in the context of the specified location and optional container. + Only members that are accessible and visible from the given location are returned. + + Non-reduced extension methods are considered, since they are static methods. + + The character position for determining the enclosing declaration scope and + accessibility. + The container to search for symbols within. If null then the enclosing declaration + scope around position is used. + The name of the symbol to find. If null is specified then symbols + with any names are returned. + A list of symbols that were found. If no symbols were found, an empty list is returned. + + The "position" is used to determine what variables are visible and accessible. Even if "container" is + specified, the "position" location is significant for determining which members of "containing" are + accessible. + + + + + Gets the available named namespace and type symbols in the context of the specified location and optional container. + Only members that are accessible and visible from the given location are returned. + + The character position for determining the enclosing declaration scope and + accessibility. + The container to search for symbols within. If null then the enclosing declaration + scope around position is used. + The name of the symbol to find. If null is specified then symbols + with any names are returned. + A list of symbols that were found. If no symbols were found, an empty list is returned. + + The "position" is used to determine what variables are visible and accessible. Even if "container" is + specified, the "position" location is significant for determining which members of "containing" are + accessible. + + Does not return INamespaceOrTypeSymbol, because there could be aliases. + + + + + Gets the available named label symbols in the context of the specified location and optional container. + Only members that are accessible and visible from the given location are returned. + + The character position for determining the enclosing declaration scope and + accessibility. + The name of the symbol to find. If null is specified then symbols + with any names are returned. + A list of symbols that were found. If no symbols were found, an empty list is returned. + + The "position" is used to determine what variables are visible and accessible. Even if "container" is + specified, the "position" location is significant for determining which members of "containing" are + accessible. + + + + + Gets the available named symbols in the context of the specified location and optional + container. Only symbols that are accessible and visible from the given location are + returned. + + The character position for determining the enclosing declaration + scope and accessibility. + The container to search for symbols within. If null then the + enclosing declaration scope around position is used. + The name of the symbol to find. If null is specified then symbols + with any names are returned. + Additional options that affect the lookup process. + Ignore 'throughType' in accessibility checking. + Used in checking accessibility of symbols accessed via 'MyBase' or 'base'. + + The "position" is used to determine what variables are visible and accessible. Even if + "container" is specified, the "position" location is significant for determining which + members of "containing" are accessible. + + Throws an argument exception if the passed lookup options are invalid. + + + + Determines if the symbol is accessible from the specified location. + + A character position used to identify a declaration scope and + accessibility. This character position must be within the FullSpan of the Root syntax + node in this SemanticModel. + + The symbol that we are checking to see if it accessible. + + True if "symbol is accessible, false otherwise. + + This method only checks accessibility from the point of view of the accessibility + modifiers on symbol and its containing types. Even if true is returned, the given symbol + may not be able to be referenced for other reasons, such as name hiding. + + + + + Field-like events can be used as fields in types that can access private + members of the declaring type of the event. + + + + + Analyze control-flow within a part of a method body. + + The first statement to be included in the analysis. + The last statement to be included in the analysis. + An object that can be used to obtain the result of the control flow analysis. + The two statements are not contained within the same statement list. + + + + Analyze control-flow within a part of a method body. + + The statement to be included in the analysis. + An object that can be used to obtain the result of the control flow analysis. + + + + Analyze data-flow within an expression. + + The expression within the associated SyntaxTree to analyze. + An object that can be used to obtain the result of the data flow analysis. + + + + Analyze data-flow within a part of a method body. + + The first statement to be included in the analysis. + The last statement to be included in the analysis. + An object that can be used to obtain the result of the data flow analysis. + The two statements are not contained within the same statement list. + + + + Analyze data-flow within a part of a method body. + + The statement to be included in the analysis. + An object that can be used to obtain the result of the data flow analysis. + + + + Get a SemanticModel object that is associated with a method body that did not appear in this source code. + Given must lie within an existing method body of the Root syntax node for this SemanticModel. + Locals and labels declared within this existing method body are not considered to be in scope of the speculated method body. + + A character position used to identify a declaration scope and accessibility. This + character position must be within the FullSpan of the Root syntax node in this SemanticModel and must be + within the FullSpan of a Method body within the Root syntax node. + A syntax node that represents a parsed method declaration. This method should not be + present in the syntax tree associated with this object, but must have identical signature to the method containing + the given in this SemanticModel. + A SemanticModel object that can be used to inquire about the semantic + information associated with syntax nodes within . + Flag indicating whether a speculative semantic model was created. + Throws this exception if the node is contained any SyntaxTree in the current Compilation + Throws this exception if is null. + Throws this exception if this model is a speculative semantic model, i.e. is true. + Chaining of speculative semantic model is not supported. + + + + Get a SemanticModel object that is associated with a method body that did not appear in this source code. + Given must lie within an existing method body of the Root syntax node for this SemanticModel. + Locals and labels declared within this existing method body are not considered to be in scope of the speculated method body. + + A character position used to identify a declaration scope and accessibility. This + character position must be within the FullSpan of the Root syntax node in this SemanticModel and must be + within the FullSpan of a Method body within the Root syntax node. + A syntax node that represents a parsed accessor declaration. This accessor should not be + present in the syntax tree associated with this object. + A SemanticModel object that can be used to inquire about the semantic + information associated with syntax nodes within . + Flag indicating whether a speculative semantic model was created. + Throws this exception if the node is contained any SyntaxTree in the current Compilation + Throws this exception if is null. + Throws this exception if this model is a speculative semantic model, i.e. is true. + Chaining of speculative semantic model is not supported. + + + + Get a SemanticModel object that is associated with a type syntax node that did not appear in + this source code. This can be used to get detailed semantic information about sub-parts + of a type syntax that did not appear in source code. + + A character position used to identify a declaration scope and accessibility. This + character position must be within the FullSpan of the Root syntax node in this SemanticModel. + + A syntax node that represents a parsed expression. This expression should not be + present in the syntax tree associated with this object. + Indicates whether to bind the expression as a full expression, + or as a type or namespace. + A SemanticModel object that can be used to inquire about the semantic + information associated with syntax nodes within . + Flag indicating whether a speculative semantic model was created. + Throws this exception if the node is contained any SyntaxTree in the current Compilation + Throws this exception if is null. + Throws this exception if this model is a speculative semantic model, i.e. is true. + Chaining of speculative semantic model is not supported. + + + + Get a SemanticModel object that is associated with a statement that did not appear in + this source code. This can be used to get detailed semantic information about sub-parts + of a statement that did not appear in source code. + + A character position used to identify a declaration scope and accessibility. This + character position must be within the FullSpan of the Root syntax node in this SemanticModel. + A syntax node that represents a parsed statement. This statement should not be + present in the syntax tree associated with this object. + A SemanticModel object that can be used to inquire about the semantic + information associated with syntax nodes within . + Flag indicating whether a speculative semantic model was created. + Throws this exception if the node is contained any SyntaxTree in the current Compilation + Throws this exception if is null. + Throws this exception if this model is a speculative semantic model, i.e. is true. + Chaining of speculative semantic model is not supported. + + + + Get a SemanticModel object that is associated with an initializer that did not appear in + this source code. This can be used to get detailed semantic information about sub-parts + of a field initializer or default parameter value that did not appear in source code. + + A character position used to identify a declaration scope and accessibility. This + character position must be within the FullSpan of the Root syntax node in this SemanticModel. + + A syntax node that represents a parsed initializer. This initializer should not be + present in the syntax tree associated with this object. + A SemanticModel object that can be used to inquire about the semantic + information associated with syntax nodes within . + Flag indicating whether a speculative semantic model was created. + Throws this exception if the node is contained any SyntaxTree in the current Compilation. + Throws this exception if is null. + Throws this exception if this model is a speculative semantic model, i.e. is true. + Chaining of speculative semantic model is not supported. + + + + Get a SemanticModel object that is associated with an expression body that did not appear in + this source code. This can be used to get detailed semantic information about sub-parts + of an expression body that did not appear in source code. + + A character position used to identify a declaration scope and accessibility. This + character position must be within the FullSpan of the Root syntax node in this SemanticModel. + + A syntax node that represents a parsed expression body. This node should not be + present in the syntax tree associated with this object. + A SemanticModel object that can be used to inquire about the semantic + information associated with syntax nodes within . + Flag indicating whether a speculative semantic model was created. + Throws this exception if the node is contained any SyntaxTree in the current Compilation. + Throws this exception if is null. + Throws this exception if this model is a speculative semantic model, i.e. is true. + Chaining of speculative semantic model is not supported. + + + + Get a SemanticModel object that is associated with a constructor initializer that did not appear in + this source code. This can be used to get detailed semantic information about sub-parts + of a constructor initializer that did not appear in source code. + + NOTE: This will only work in locations where there is already a constructor initializer. + + A character position used to identify a declaration scope and accessibility. This + character position must be within the FullSpan of the Root syntax node in this SemanticModel. + Furthermore, it must be within the span of an existing constructor initializer. + + A syntax node that represents a parsed constructor initializer. + This node should not be present in the syntax tree associated with this object. + A SemanticModel object that can be used to inquire about the semantic + information associated with syntax nodes within . + Flag indicating whether a speculative semantic model was created. + Throws this exception if the node is contained any SyntaxTree in the current Compilation. + Throws this exception if is null. + Throws this exception if this model is a speculative semantic model, i.e. is true. + Chaining of speculative semantic model is not supported. + + + + Get a SemanticModel object that is associated with a cref that did not appear in + this source code. This can be used to get detailed semantic information about sub-parts + of a cref that did not appear in source code. + + NOTE: This will only work in locations where there is already a cref. + + A character position used to identify a declaration scope and accessibility. This + character position must be within the FullSpan of the Root syntax node in this SemanticModel. + Furthermore, it must be within the span of an existing cref. + + A syntax node that represents a parsed cref syntax. + This node should not be present in the syntax tree associated with this object. + A SemanticModel object that can be used to inquire about the semantic + information associated with syntax nodes within . + Flag indicating whether a speculative semantic model was created. + Throws this exception if the node is contained any SyntaxTree in the current Compilation. + Throws this exception if is null. + Throws this exception if this model is a speculative semantic model, i.e. is true. + Chaining of speculative semantic model is not supported. + + + + Get a SemanticModel object that is associated with an attribute that did not appear in + this source code. This can be used to get detailed semantic information about sub-parts + of an attribute that did not appear in source code. + + A character position used to identify a declaration scope and accessibility. This + character position must be within the FullSpan of the Root syntax node in this SemanticModel. + A syntax node that represents a parsed attribute. This attribute should not be + present in the syntax tree associated with this object. + A SemanticModel object that can be used to inquire about the semantic + information associated with syntax nodes within . + Flag indicating whether a speculative semantic model was created. + Throws this exception if the node is contained any SyntaxTree in the current Compilation. + Throws this exception if is null. + Throws this exception if this model is a speculative semantic model, i.e. is true. + Chaining of speculative semantic model is not supported. + + + + If this is a speculative semantic model, then returns its parent semantic model. + Otherwise, returns null. + + + + + The SyntaxTree that this object is associated with. + + + + + Determines what type of conversion, if any, would be used if a given expression was + converted to a given type. If isExplicitInSource is true, the conversion produced is + that which would be used if the conversion were done for a cast expression. + + An expression which much occur within the syntax tree + associated with this object. + The type to attempt conversion to. + True if the conversion should be determined as for a cast expression. + Returns a Conversion object that summarizes whether the conversion was + possible, and if so, what kind of conversion it was. If no conversion was possible, a + Conversion object with a false "Exists" property is returned. + To determine the conversion between two types (instead of an expression and a + type), use Compilation.ClassifyConversion. + + + + Determines what type of conversion, if any, would be used if a given expression was + converted to a given type. If isExplicitInSource is true, the conversion produced is + that which would be used if the conversion were done for a cast expression. + + The character position for determining the enclosing declaration + scope and accessibility. + The expression to classify. This expression does not need to be + present in the syntax tree associated with this object. + The type to attempt conversion to. + True if the conversion should be determined as for a cast expression. + Returns a Conversion object that summarizes whether the conversion was + possible, and if so, what kind of conversion it was. If no conversion was possible, a + Conversion object with a false "Exists" property is returned. + To determine the conversion between two types (instead of an expression and a + type), use Compilation.ClassifyConversion. + + + + Determines what type of conversion, if any, would be used if a given expression was + converted to a given type using an explicit cast. + + An expression which much occur within the syntax tree + associated with this object. + The type to attempt conversion to. + Returns a Conversion object that summarizes whether the conversion was + possible, and if so, what kind of conversion it was. If no conversion was possible, a + Conversion object with a false "Exists" property is returned. + To determine the conversion between two types (instead of an expression and a + type), use Compilation.ClassifyConversion. + + + + Determines what type of conversion, if any, would be used if a given expression was + converted to a given type using an explicit cast. + + The character position for determining the enclosing declaration + scope and accessibility. + The expression to classify. This expression does not need to be + present in the syntax tree associated with this object. + The type to attempt conversion to. + Returns a Conversion object that summarizes whether the conversion was + possible, and if so, what kind of conversion it was. If no conversion was possible, a + Conversion object with a false "Exists" property is returned. + To determine the conversion between two types (instead of an expression and a + type), use Compilation.ClassifyConversion. + + + + Given a member declaration syntax, get the corresponding symbol. + + The syntax node that declares a member. + The cancellation token. + The symbol that was declared. + + NOTE: We have no GetDeclaredSymbol overloads for following subtypes of MemberDeclarationSyntax: + NOTE: (1) GlobalStatementSyntax as they don't declare any symbols. + NOTE: (2) IncompleteMemberSyntax as there are no symbols for incomplete members. + NOTE: (3) BaseFieldDeclarationSyntax or its subtypes as these declarations can contain multiple variable declarators. + NOTE: GetDeclaredSymbol should be called on the variable declarators directly. + + + + + Given a namespace declaration syntax node, get the corresponding namespace symbol for + the declaration assembly. + + The syntax node that declares a namespace. + The cancellation token. + The namespace symbol that was declared by the namespace declaration. + + + + Given a type declaration, get the corresponding type symbol. + + The syntax node that declares a type. + The cancellation token. + The type symbol that was declared. + + NOTE: We have no GetDeclaredSymbol overloads for subtypes of BaseTypeDeclarationSyntax as all of them return a NamedTypeSymbol. + + + + + Given a delegate declaration, get the corresponding type symbol. + + The syntax node that declares a delegate. + The cancellation token. + The type symbol that was declared. + + + + Given a enum member declaration, get the corresponding field symbol. + + The syntax node that declares an enum member. + The cancellation token. + The symbol that was declared. + + + + Given a base method declaration syntax, get the corresponding method symbol. + + The syntax node that declares a method. + The cancellation token. + The symbol that was declared. + + NOTE: We have no GetDeclaredSymbol overloads for subtypes of BaseMethodDeclarationSyntax as all of them return a MethodSymbol. + + + + + Given a syntax node that declares a property, indexer or an event, get the corresponding declared symbol. + + The syntax node that declares a property, indexer or an event. + The cancellation token. + The symbol that was declared. + + + + Given a syntax node that declares a property, get the corresponding declared symbol. + + The syntax node that declares a property. + The cancellation token. + The symbol that was declared. + + + + Given a syntax node that declares an indexer, get the corresponding declared symbol. + + The syntax node that declares an indexer. + The cancellation token. + The symbol that was declared. + + + + Given a syntax node that declares a (custom) event, get the corresponding event symbol. + + The syntax node that declares a event. + The cancellation token. + The symbol that was declared. + + + + Given a syntax node of anonymous object creation initializer, get the anonymous object property symbol. + + The syntax node that declares a property. + The cancellation token. + The symbol that was declared. + + + + Given a syntax node of anonymous object creation expression, get the anonymous object type symbol. + + The syntax node that declares an anonymous object. + The cancellation token. + The symbol that was declared. + + + + Given a syntax node that declares a property or member accessor, get the corresponding + symbol. + + The syntax node that declares an accessor. + The cancellation token. + The symbol that was declared. + + + + Given a syntax node that declares an expression body, get the corresponding symbol. + + The syntax node that declares an expression body. + The cancellation token. + The symbol that was declared. + + + + Given a variable declarator syntax, get the corresponding symbol. + + The syntax node that declares a variable. + The cancellation token. + The symbol that was declared. + + + + Given a labeled statement syntax, get the corresponding label symbol. + + The syntax node of the labeled statement. + The cancellation token. + The label symbol for that label. + + + + Given a switch label syntax, get the corresponding label symbol. + + The syntax node of the switch label. + The cancellation token. + The label symbol for that label. + + + + Given a using declaration get the corresponding symbol for the using alias that was + introduced. + + + The cancellation token. + The alias symbol that was declared. + + If the using directive is an error because it attempts to introduce an alias for which an existing alias was + previously declared in the same scope, the result is a newly-constructed AliasSymbol (i.e. not one from the + symbol table). + + + + + Given an extern alias declaration get the corresponding symbol for the alias that was introduced. + + + The cancellation token. + The alias symbol that was declared, or null if a duplicate alias symbol was declared. + + + + Given a parameter declaration syntax node, get the corresponding symbol. + + The syntax node that declares a parameter. + The cancellation token. + The parameter that was declared. + + + + Given a base field declaration syntax, get the corresponding symbols. + + The syntax node that declares one or more fields or events. + The cancellation token. + The symbols that were declared. + + + + Given a type parameter declaration (field or method), get the corresponding symbol + + The cancellation token. + + + + + Given a foreach statement, get the symbol for the iteration variable + + The cancellation token. + + + + + Given a catch declaration, get the symbol for the exception variable + + The cancellation token. + + + + + Get the query range variable declared in a join into clause. + + + + + Get the query range variable declared in a query continuation clause. + + + + + Returns a list of accessible, non-hidden indexers that could be invoked with the given expression + as a receiver. + + + If the given expression is an indexer access, then this method will return the list of indexers + that could be invoked on the result, not the list of indexers that were considered. + + + + + The method group can contain "duplicate" symbols that we do not want to display in the IDE analysis. + + For example, there could be an overriding virtual method and the method it overrides both in + the method group. This, strictly speaking, is a violation of the C# specification because we are + supposed to strip out overriding methods from the method group before overload resolution; overload + resolution is supposed to treat overridden methods as being methods of the less derived type. However, + in the IDE we want to display information about the overriding method, not the overridden method, and + therefore we leave both in the method group. The overload resolution algorithm has been written + to handle this departure from the specification. + + Similarly, we might have two methods in the method group where one is a "new" method that hides + another. Again, in overload resolution this would be handled by the rule that says that methods + declared on more derived types take priority over methods declared on less derived types. Both + will be in the method group, but in the IDE we want to only display information about the + hiding method, not the hidden method. + + We can also have "diamond" inheritance of interfaces leading to multiple copies of the same + method ending up in the method group: + + interface IB { void M(); } + interface IL : IB {} + interface IR : IB {} + interface ID : IL, IR {} + ... + id.M(); + + We only want to display one symbol in the IDE, even if the member lookup algorithm is unsophisticated + and puts IB.M in the member group twice. (Again, this is a mild spec violation since a method group + is supposed to be a set, without duplicates.) + + Finally, the interaction of multiple inheritance of interfaces and hiding can lead to some subtle + situations. Suppose we make a slight modification to the scenario above: + + interface IL : IB { new void M(); } + + Again, we only want to display one symbol in the method group. The fact that there is a "path" + to IB.M from ID via IR is irrelevant; if the symbol IB.M is hidden by IL.M then it is hidden + in ID, period. + + + + + Get the semantic info of a named argument in an invocation-like expression. + + + + + Find the first parameter named "argumentName". + + + + + If the call represents an extension method invocation with an explicit receiver, return the original + methods as ReducedExtensionMethodSymbols. Otherwise, return the original methods unchanged. + + + + + If the call represents an extension method with an explicit receiver, return a + ReducedExtensionMethodSymbol if it can be constructed. Otherwise, return the + original call method. + + + + + Gets for each statement info. + + The node. + + + + Gets await expression info. + + The node. + + + + If the given node is within a preprocessing directive, gets the preprocessing symbol info for it. + + Preprocessing symbol identifier node. + + + + Options to control the internal working of GetSymbolInfoWorker. Not currently exposed + to public clients, but could be if desired. + + + + + When binding "C" new C(...), return the type C and do not return information about + which constructor was bound to. Bind "new C(...)" to get information about which constructor + was chosen. + + + + + When binding "C" new C(...), return the constructor of C that was bound to, if C unambiguously + binds to a single type with at least one constructor. + + + + + When binding a name X that was declared with a "using X=OtherTypeOrNamespace", return OtherTypeOrNamespace. + + + + + When binding a name X that was declared with a "using X=OtherTypeOrNamespace", return the alias symbol X. + + + + + Given a position in the SyntaxTree for this SemanticModel returns the innermost + NamedType that the position is considered inside of. + + + + + Structure containing all semantic information about a for each statement. + + + + + Gets the "GetEnumerator" method. + + + + + Gets the "MoveNext" method. + + + + + Gets the "Current" property. + + + + + Gets the "Dispose" method. + + + + + The intermediate type to which the output of the is converted + before being converted to the iteration variable type. + + + As you might hope, for an array, it is the element type of the array. + + + + + The conversion from the to the iteration variable type. + + + May be user-defined. + + + + + The conversion from the type of the to the . + + + + + Initializes a new instance of the structure. + + + + + A binding for a field initializer, property initializer, constructor + initializer, or a parameter default value. + Represents the result of binding a value expression rather than a + block (for that, use a ). + + + + + Creates a SemanticModel for a true field initializer (field = value) of a named type (incl. Enums). + + + + + Creates a SemanticModel for an autoprop initializer of a named type + + + + + Creates a SemanticModel for a constructor initializer (": this(...)" or ": base(...)"). + + + + + Creates a SemanticModel for a constructor initializer (": base-class(...)"). + + + + + Creates a SemanticModel for a parameter default value. + + + + + Creates a speculative SemanticModel for an initializer node (field initializer, constructor initializer, or parameter default value) + that did not appear in the original source code. + + + + This is an implementation of a special symbol comparer, which is supposed to be used for + sorting original definition symbols (explicitly or explicitly declared in source within the same + container) in lexical order of their declarations. It will not work on anything that uses non-source locations. + + + + + Binding info for expressions and statements that are part of a member declaration. + + + + + The member symbol + + + + + This overload exists for callers who + a) Already have a node in hand and don't want to search through the tree + b) May want to search from an indirect container (e.g. node containing node + containing position). + + + + + Get the bound node corresponding to the root. + + + + + Get the highest bound node in the tree associated with a particular syntax node. + + + + + Get the lowest bound node in the tree associated with a particular syntax node. Lowest is defined as last + in a pre-order traversal of the bound tree. + + + + + Returned binder doesn't need to have set - the caller will add it. + + + + + Performs the same function as GetEnclosingBinder, but is known to take place within a + specified lambda. Walks up the syntax hierarchy until a node with an associated binder + is found. + + + CONSIDER: can this share code with MemberSemanticModel.GetEnclosingBinder? + + Returned binder doesn't need to have set - the caller will add it. + + + + + Get all bounds nodes associated with a node, ordered from highest to lowest in the bound tree. + Strictly speaking, the order is that of a pre-order traversal of the bound tree. + + + + + If the node is an expression, return the nearest parent node + with semantic meaning. Otherwise return null. + + + + + The incremental binder is used when binding statements. Whenever a statement + is bound, it checks the bound node cache to see if that statement was bound, + and returns it instead of rebinding it. + + For example, we might have: + while (x > foo()) + { + y = y * x; + z = z + y; + } + + We might first get semantic info about "z", and thus bind just the statement + "z = z + y". Later, we might bind the entire While block. While binding the while + block, we can reuse the binding we did of "z = z + y". + + + NOTE: any member overridden by this binder should follow the BuckStopsHereBinder pattern. + Otherwise, a subsequent binder in the chain could suppress the caching behavior. + + + + + We override GetBinder so that the BindStatement override is still + in effect on nested binders. + + + + + Walks the bound tree and adds all non compiler generated bound nodes whose syntax matches the given one + to the cache. + + The root of the bound tree. + The cache. + The syntax node where to add bound nodes for. + + + + Decides whether to the add the bound node to the cache or not. + + The bound node. + + + + Allows asking semantic questions about a TypeSyntax (or its descendants) within a member, that did not appear in the original source code. + Typically, an instance is obtained by a call to SemanticModel.TryGetSpeculativeSemanticModel. + + + + + Creates a speculative SemanticModel for a TypeSyntax node at a position within an existing MemberSemanticModel. + + + + + Creates a SemanticModel that creates and owns the ExecutableCodeBinder for the method of which it is a model. + + + + + Creates a speculative SemanticModel for a method body that did not appear in the original source code. + + + + + Creates a speculative SemanticModel for an expression body that did not appear in the original source code. + + + + + Semantic information associated with a query clause in a C# query expression. + + + + + The .Cast<T>() operation generated from the query range variable's type restriction, + or null if the type restriction isn't specified. + + + The operation, when present is implemented via . + To access the type, when this is non-null use [0]. + If it is an extension method, it is returned in reduced form. + + + + + The operation (e.g. Select(), Where(), etc) that implements the given clause. + + + The clause can be implemented via , or + or that return a delegate. + If it is an extension method, it is returned in reduced form. + + + + + Allows asking semantic questions about a tree of syntax nodes that did not appear in the original source code. + Typically, an instance is obtained by a call to SemanticModel.TryGetSpeculativeSemanticModel. + + + + + Allows asking semantic questions about any node in a SyntaxTree within a Compilation. + + + Allows asking semantic questions about any node in a SyntaxTree within a Compilation. + + + + + The compilation this object was obtained from. + + + + + The root node of the syntax tree that this object is associated with. + + + + + The SyntaxTree that this object is associated with. + + + + + Returns true if this is a SemanticModel that ignores accessibility rules when answering semantic questions. + + + + + Gets the enclosing binder associated with the node + + + + + + + Given a namespace declaration syntax node, get the corresponding namespace symbol for the declaration + assembly. + + The syntax node that declares a namespace. + The cancellation token. + The namespace symbol that was declared by the namespace declaration. + + + + Given a type declaration, get the corresponding type symbol. + + The syntax node that declares a type. + The cancellation token. + The type symbol that was declared. + + NOTE: We have no GetDeclaredSymbol overloads for subtypes of BaseTypeDeclarationSyntax as all of them return a NamedTypeSymbol. + + + + + Given a delegate declaration, get the corresponding type symbol. + + The syntax node that declares a delegate. + The cancellation token. + The type symbol that was declared. + + + + Given an member declaration syntax, get the corresponding symbol. + + The syntax node that declares a member. + The cancellation token. + The symbol that was declared. + + NOTE: We have no GetDeclaredSymbol overloads for following subtypes of MemberDeclarationSyntax: + NOTE: (1) GlobalStatementSyntax as they don't declare any symbols. + NOTE: (2) IncompleteMemberSyntax as there are no symbols for incomplete members. + NOTE: (3) BaseFieldDeclarationSyntax or its subtypes as these declarations can contain multiple variable declarators. + NOTE: GetDeclaredSymbol should be called on the variable declarators directly. + + + + + Given a enum member declaration, get the corresponding field symbol. + + The syntax node that declares an enum member. + The cancellation token. + The symbol that was declared. + + + + Given a base method declaration syntax, get the corresponding method symbol. + + The syntax node that declares a method. + The cancellation token. + The symbol that was declared. + + NOTE: We have no GetDeclaredSymbol overloads for subtypes of BaseMethodDeclarationSyntax as all of them return a MethodSymbol. + + + + + Given a syntax node that declares a property, indexer or an event, get the corresponding declared symbol. + + The syntax node that declares a property, indexer or an event. + The cancellation token. + The symbol that was declared. + + + + Given a syntax node that declares a property, get the corresponding declared symbol. + + The syntax node that declares a property, indexer or an event. + The cancellation token. + The symbol that was declared. + + + + Given a syntax node that declares an indexer, get the corresponding declared symbol. + + The syntax node that declares an indexer. + The cancellation token. + The symbol that was declared. + + + + Given a syntax node that declares a (custom) event, get the corresponding event symbol. + + The syntax node that declares a event. + The cancellation token. + The symbol that was declared. + + + + Given an syntax node that declares a property or member accessor, get the corresponding symbol. + + The syntax node that declares an accessor. + The cancellation token. + The symbol that was declared. + + + + Finds the member in the containing symbol which is inside the given declaration span. + + + + + Given an variable declarator syntax, get the corresponding symbol. + + The syntax node that declares a variable. + The cancellation token. + The symbol that was declared. + + + + Given a labeled statement syntax, get the corresponding label symbol. + + The syntax node of the labeled statement. + The cancellation token. + The label symbol for that label. + + + + Given a switch label syntax, get the corresponding label symbol. + + The syntax node of the switch label. + The cancellation token. + The label symbol for that label. + + + + Given a using declaration get the corresponding symbol for the using alias that was introduced. + + + The cancellation token. + The alias symbol that was declared. + + If the using directive is an error because it attempts to introduce an alias for which an existing alias was + previously declared in the same scope, the result is a newly-constructed AliasSymbol (i.e. not one from the + symbol table). + + + + + Given an extern alias declaration get the corresponding symbol for the alias that was introduced. + + + The cancellation token. + The alias symbol that was declared, or null if a duplicate alias symbol was declared. + + + + Given a base field declaration syntax, get the corresponding symbols. + + The syntax node that declares one or more fields or events. + The cancellation token. + The field symbols that were declared. + + + + Given an parameter declaration syntax node, get the corresponding symbol. + + The syntax node that declares a parameter. + The cancellation token. + The parameter that was declared. + + + + Given a type parameter declaration (field or method), get the corresponding symbol + + + The cancellation token. + + + + + The type of the expression represented by the syntax node. For expressions that do not + have a type, null is returned. If the type could not be determined due to an error, than + an object derived from ErrorTypeSymbol is returned. + + + + + The type of the expression after it has undergone an implicit conversion. If the type + did not undergo an implicit conversion, returns the same as Type. + + + + + If the expression underwent an implicit conversion, return information about that + conversion. Otherwise, returns an identity conversion. + + + + + Manages anonymous types created in owning compilation. All requests for + anonymous type symbols go via the instance of this class. + + + Manages anonymous types created on module level. All requests for anonymous type symbols + go via the instance of this class, the symbol will be either created or returned from cache. + + + + + Represents an anonymous type constructor. + + + + + Represents a getter for anonymous type property. + + + + + Represents an anonymous type 'Equals' method. + + + + + Represents an anonymous type 'GetHashCode' method. + + + + + Represents an anonymous type 'ToString' method. + + + + + Current compilation + + + + + Given anonymous type descriptor provided constructs an anonymous type symbol. + + + + + Get a symbol of constructed anonymous type property by property index + + + + + Retrieves anonymous type properties types + + + + + Given an anonymous type and new field types construct a new anonymous type symbol; + a new type symbol will reuse type descriptor from the constructed type with new type arguments. + + + + + Logical equality on anonymous types that ignores custom modifiers and/or the object/dynamic distinction. + Differs from IsSameType for arrays, pointers, and generic instantiations. + + + + + Reports all use site errors in special or well known symbols required for anonymous types + + true if there was at least one error + + + + Cache of created anonymous type templates used as an implementation of anonymous + types in emit phase. + + + + + Maps delegate signature shape (number of parameters and their ref-ness) to a synthesized generic delegate symbol. + Unlike anonymous types synthesized delegates are not available through symbol APIs. They are only used in lowered bound trees. + Currently used for dynamic call-site sites whose signature doesn't match any of the well-known Func or Action types. + + + + + Given anonymous type provided constructs an implementation type symbol to be used in emit phase; + if the anonymous type has at least one field the implementation type symbol will be created based on + a generic type template generated for each 'unique' anonymous type structure, otherwise the template + type will be non-generic. + + + + + Resets numbering in anonymous type names and compiles the + anonymous type methods. Also seals the collection of templates. + + + + + The set of anonymous type templates created by + this AnonymousTypeManager, in fixed order. + + + + + The set of synthesized delegates created by + this AnonymousTypeManager. + + + + + Returns all templates owned by this type manager + + + + + Returns true if the named type is an implementation template for an anonymous type + + + + + Retrieves methods of anonymous type template which are not placed to symbol table. + In current implementation those are overridden 'ToString', 'Equals' and 'GetHashCode' + + + + + Translates anonymous type public symbol into an implementation type symbol to be used in emit. + + + + + Translates anonymous type method symbol into an implementation method symbol to be used in emit. + + + + + Comparator being used for stable ordering in anonymous type indices. + + + + + Represents an anonymous type 'public' symbol which is used in binding and lowering. + In emit phase it is being substituted with implementation symbol. + + + + Properties defined in the type + + + Maps member names to symbol(s) + + + Anonymous type manager owning this template + + + Anonymous type descriptor + + + + Represents a baking field for an anonymous type template property symbol. + + + + + Represents an anonymous type template's property symbol. + + + + + Represents a base implementation for anonymous type synthesized methods. + + + + + Represents an anonymous type 'template' which is a generic type to be used for all + anonymous type having the same structure, i.e. the same number of fields and field names. + + + + Name to be used as metadata name during emit + + + This list consists of synthesized method symbols for ToString, + Equals and GetHashCode which are not part of symbol table + + + Properties defined in the template + + + Maps member names to symbol(s) + + + Anonymous type manager owning this template + + + Smallest location of the template, actually contains the smallest location + of all the anonymous type instances created using this template during EMIT + + + Key pf the anonymous type descriptor + + + + Smallest location of the template, actually contains the smallest location + of all the anonymous type instances created using this template during EMIT; + + NOTE: if this property is queried, smallest location must not be null. + + + + + In emit phase every time a created anonymous type is referenced we try to store the lowest + location of the template. It will be used for ordering templates and assigning emitted type names. + + + + + Returns a synthesized debugger display attribute or null if one + could not be synthesized. + + + + + Represents an anonymous type template's type parameter. + + + + + Represents a compiler generated synthesized method symbol + representing string switch hash function + + + + + Compute the hashcode of a sub string using FNV-1a + See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + + + This method should be kept consistent with MethodBodySynthesizer.ConstructStringSwitchHashFunctionBody + The control flow in this method mimics lowered "for" loop. It is exactly what we want to emit + to ensure that JIT can do range check hoisting. + + + + + When C# interface implementation differs from CLR interface implementation, + we insert a synthesized explicit interface implementation that delegates + to the method that C# considers an implicit implementation. + There are two key scenarios for this: + 1) A single source method is implicitly implementing one or more interface + methods from metadata and the interface methods have different custom + modifiers. In this case, we explicitly implement the interface methods + and have (all) implementations delegate to the source method. + 2) A non-virtual, non-source method in a base type is implicitly implementing + an interface method. Since we can't change the "virtualness" of the + non-source method, we introduce an explicit implementation that delegates + to it instead. + + + + + Given a SynthesizedExplicitImplementationMethod (effectively a tuple (interface method, implementing method, implementing type)), + construct a BoundBlock body. Consider the tuple (Interface.Foo, Base.Foo, Derived). The generated method will look like: + + R Interface.Foo<T1, T2, ...>(A1 a1, A2 a2, ...) + { + //don't return the output if the return type is void + return this.Foo<T1, T2, ...>(a1, a2, ...); + } + + + + + If a sealed override property defines fewer accessors than the + original virtual property, it is necessary to synthesize a sealed + accessor so that the accessor will not be overridable from metadata. + + + + + Given a SynthesizedSealedPropertyAccessor (an accessor with a reference to the accessor it overrides), + construct a BoundBlock body. + + + + + a bound node rewriter that rewrites types properly (which in some cases the automatically-generated + base class does not). This is used in the lambda rewriter, the iterator rewriter, and the async rewriter. + + + + + A wrapper method that is created for non-virtually calling a base-class + virtual method from other classes (like those created for lambdas...). + + + + + Given a SynthesizedSealedPropertyAccessor (an accessor with a reference to the accessor it overrides), + construct a BoundBlock body. + + + + A not-null collection of synthesized methods generated for the current source type. + + + + Returns true if the specified local/parameter needs to be hoisted to a field. + Variable may be hoisted even if it is not captured, to improve debugging experience. + + + + + Contains methods related to synthesizing bound nodes in lowered form + that does not need any processing before passing to codegen + + + + + Construct a body for a method containing a call to a single other method with the same signature (modulo name). + + Bound node factory. + Method to invoke in constructed body. + True for "base.", false for "this.". + Body for implementedMethod. + + + + An ArrayTypeSymbol represents an array type, such as int[] or object[,]. + + + + + Gets the list of custom modifiers associated with the array. + Returns an empty list if there are no custom modifiers. + + + + + Gets the number of dimensions of the array. A regular single-dimensional array + has rank 1, a two-dimensional array has rank 2, etc. + + + + + Is this zero-based one-dimensional array, i.e. SZArray in CLR terms. + + + + + Specified sizes for dimensions, by position. The length can be less than , + meaning that some trailing dimensions don't have the size specified. + The most common case is none of the dimensions have the size specified - an empty array is returned. + + + + + Specified lower bounds for dimensions, by position. The length can be less than , + meaning that some trailing dimensions don't have the lower bound specified. + The most common case is all dimensions are zero bound - a null array is returned in this case. + + + + + Note, equality should be checked separately!!! + + + + + Normally C# arrays have default sizes and lower bounds - sizes are not specified and all dimensions are zero bound. + This property should return false for any deviations. + + + + + Gets the type of the elements stored in the array. + + + + + Represents SZARRAY - zero-based one-dimensional array + + + + + Represents MDARRAY - multi-dimensional array (possibly of rank 1) + + + + + Represents an attribute applied to a Symbol. + + + + + Gets the attribute class being applied. + + + + + Gets the constructor used in this application of the attribute. + + + + + Gets a reference to the source for this application of the attribute. Returns null for applications of attributes on metadata Symbols. + + + + + Gets the list of constructor arguments specified by this application of the attribute. This list contains both positional arguments + and named arguments that are formal parameters to the constructor. + + + + + Gets the list of named field or property value arguments specified by this application of the attribute. + + + + + Compares the namespace and type name with the attribute's namespace and type name. + Returns true if they are the same. + + + + + Checks if an applied attribute with the given attributeType matches the namespace name and type name of the given early attribute's description + and the attribute description has a signature with parameter count equal to the given attribute syntax's argument list count. + NOTE: We don't allow early decoded attributes to have optional parameters. + + + + + Returns the that represents the current AttributeData. + + A that represents the current AttributeData. + + + + Gets the attribute class being applied as an + + + + + Gets the constructor used in this application of the attribute as an . + + + + + Gets a reference to the source for this application of the attribute. Returns null for applications of attributes on metadata Symbols. + + + + + Decodes PermissionSetAttribute applied in source to determine if it needs any fixup during codegen. + + + PermissionSetAttribute needs fixup when it contains an assignment to the 'File' property as a single named attribute argument. + Fixup performed is ported from SecurityAttributes::FixUpPermissionSetAttribute. + It involves following steps: + 1) Verifying that the specified file name resolves to a valid path. + 2) Reading the contents of the file into a byte array. + 3) Convert each byte in the file content into two bytes containing hexadecimal characters. + 4) Replacing the 'File = fileName' named argument with 'Hex = hexFileContent' argument, where hexFileContent is the converted output from step 3) above. + + Step 1) is performed in this method, i.e. during binding. + Remaining steps are performed during serialization as we want to avoid retaining the entire file contents throughout the binding/codegen pass. + See for remaining fixup steps. + + String containing the resolved file path if PermissionSetAttribute needs fixup during codegen, null otherwise. + + + + This method determines if an applied attribute must be emitted. + Some attributes appear in symbol model to reflect the source code, + but should not be emitted. + + + + + Represents a custom modifier (modopt/modreq). + + + + + A type used as a tag that indicates which type of modification applies. + + + + + Represents an event. + + + + + The original definition of this symbol. If this symbol is constructed from another + symbol by type substitution then OriginalDefinition gets the original symbol as it was defined in + source or metadata. + + + + + The type of the event. + + + + + The 'add' accessor of the event. Null only in error scenarios. + + + + + The 'remove' accessor of the event. Null only in error scenarios. + + + + + True if this is a Windows Runtime-style event. + + A normal C# event, "event D E", has accessors + void add_E(D d) + void remove_E(D d) + + A Windows Runtime event, "event D E", has accessors + EventRegistrationToken add_E(D d) + void remove_E(EventRegistrationToken t) + + + + + True if this symbol has a special name (metadata flag SpecialName is set). + + + + + Gets the attributes on event's associated field, if any. + Returns an empty if + there are no attributes. + + + This publicly exposes the attributes of the internal backing field. + + + + + Returns the overridden event, or null. + + + + + Source: Was the member name qualified with a type name? + Metadata: Is the member an explicit implementation? + + + Will not always agree with ExplicitInterfaceImplementations.Any() + (e.g. if binding of the type part of the name fails). + + + + + Returns interface events explicitly implemented by this event. + + + Events imported from metadata can explicitly implement more than one event. + + + + + Gets the kind of this symbol. + + + + + Implements visitor pattern. + + + + + Represents a field in a class, struct or enum + + + + + The original definition of this symbol. If this symbol is constructed from another + symbol by type substitution then OriginalDefinition gets the original symbol as it was defined in + source or metadata. + + + + + Gets the type of this field. + + + + + Gets the list of custom modifiers, if any, associated with the field. + + + + + If this field serves as a backing variable for an automatically generated + property or a field-like event, returns that + property/event. Otherwise returns null. + Note, the set of possible associated symbols might be expanded in the future to + reflect changes in the languages. + + + + + Returns true if this field was declared as "readonly". + + + + + Returns true if this field was declared as "volatile". + + + + + Returns true if this field was declared as "fixed". + Note that for a fixed-size buffer declaration, this.Type will be a pointer type, of which + the pointed-to type will be the declared element type of the fixed-size buffer. + + + + + If IsFixed is true, the value between brackets in the fixed-size-buffer declaration. + If IsFixed is false FixedSize is 0. + Note that for fixed-a size buffer declaration, this.Type will be a pointer type, of which + the pointed-to type will be the declared element type of the fixed-size buffer. + + + + + If this.IsFixed is true, returns the underlying implementation type for the + fixed-size buffer when emitted. Otherwise returns null. + + + + + Returns true when field is a backing field for a captured frame pointer (typically "this"). + + + + + Returns true if this field was declared as "const" (i.e. is a constant declaration). + Also returns true for an enum member. + + + + + Returns false if the field wasn't declared as "const", or constant value was omitted or erroneous. + True otherwise. + + + + + If IsConst returns true, then returns the constant value of the field or enum member. If IsConst returns + false, then returns null. + + + + + Gets the kind of this symbol. + + + + + Returns false because field can't be abstract. + + + + + Returns false because field can't be defined externally. + + + + + Returns false because field can't be overridden. + + + + + Returns false because field can't be sealed. + + + + + Returns false because field can't be virtual. + + + + + True if this symbol has a special name (metadata flag SpecialName is set). + + + + + True if this symbol has a runtime-special name (metadata flag RuntimeSpecialName is set). + + + + + True if this field is not serialized (metadata flag NotSerialized is set). + + + + + True if this field has a pointer type. + + + By default we defer to this.Type.IsPointerType() + However in some cases this may cause circular dependency via binding a + pointer that points to the type that contains the current field. + Fortunately in those cases we do not need to force binding of the field's type + and can just check the declaration syntax if the field type is not yet known. + + + + + Describes how the field is marshalled when passed to native code. + Null if no specific marshalling information is available for the field. + + PE symbols don't provide this information and always return null. + + + + Returns the marshalling type of this field, or 0 if marshalling information isn't available. + + + By default this information is extracted from if available. + Since the compiler does only need to know the marshalling type of symbols that aren't emitted + PE symbols just decode the type from metadata and don't provide full marshalling information. + + + + + Offset assigned to the field when the containing type is laid out by the VM. + Null if unspecified. + + + + + Return error code that has highest priority while calculating use site error for this symbol. + + + + + Represents a method or method-like symbol (including constructor, + destructor, operator, or property/event accessor). + + + + + This method indicates whether or not the runtime will regard the method + as newslot (as indicated by the presence of the "newslot" modifier in the + signature). + WARN WARN WARN: We won't have a final value for this until declaration + diagnostics have been computed for all s, so pass + ignoringInterfaceImplementationChanges: true if you need a value sooner + and aren't concerned about tweaks made to satisfy interface implementation + requirements. + NOTE: Not ignoring changes can only result in a value that is more true. + + + + + This method indicates whether or not the runtime will regard the method + as virtual (as indicated by the presence of the "virtual" modifier in the + signature). + WARN WARN WARN: We won't have a final value for this until declaration + diagnostics have been computed for all s, so pass + ignoringInterfaceImplementationChanges: true if you need a value sooner + and aren't concerned about tweaks made to satisfy interface implementation + requirements. + NOTE: Not ignoring changes can only result in a value that is more true. + + + + + The original definition of this symbol. If this symbol is constructed from another + symbol by type substitution then OriginalDefinition gets the original symbol as it was defined in + source or metadata. + + + + + Gets what kind of method this is. There are several different kinds of things in the + C# language that are represented as methods. This property allow distinguishing those things + without having to decode the name of the method. + + + + + Returns the arity of this method, or the number of type parameters it takes. + A non-generic method has zero arity. + + + + + Returns whether this method is generic; i.e., does it have any type parameters? + + + + + Returns true if this method is an extension method. + + + + + True if this symbol has a special name (metadata flag SpecialName is set). + + + + + Misc implementation metadata flags (ImplFlags in metadata). + + + + + True if the type has declarative security information (HasSecurity flags). + + + + + Platform invoke information, or null if the method isn't a P/Invoke. + + + + + Declaration security information associated with this type, or null if there is none. + + + + + Marshalling information for return value (FieldMarshal in metadata). + + + + + True if the method calls another method containing security code (metadata flag RequiresSecurityObject is set). + + + A method can me marked as RequiresSecurityObject by applying the DynamicSecurityMethodAttribute in source. + DynamicSecurityMethodAttribute is a pseudo custom attribute defined as an internal class in System.Security namespace. + This attribute is set on certain security methods defined within mscorlib. + + + + + Returns true if this method hides base methods by name. This cannot be specified directly + in the C# language, but can be true for methods defined in other languages imported from + metadata. The equivalent of the "hidebyname" flag in metadata. + + + + + Returns whether this method is using CLI VARARG calling convention. This is used for C-style variable + argument lists. This is used extremely rarely in C# code and is represented using the undocumented "__arglist" keyword. + + Note that methods with "params" on the last parameter are indicated with the "IsParams" property on ParameterSymbol, and + are not represented with this property. + + + + + Returns whether this built-in operator checks for integer overflow. + + + + + Returns true if this method has no return type; i.e., returns "void". + + + + + Source: Returns whether this method is async; i.e., does it have the async modifier? + Metadata: Returns false; methods from metadata cannot be async. + + + + + Gets the return type of the method + + + + + Returns the type arguments that have been substituted for the type parameters. + If nothing has been substituted for a given type parameter, + then the type parameter itself is consider the type argument. + + + + + Get the type parameters on this method. If the method has not generic, + returns an empty list. + + + + + Call and throw if it returns false. + + + + + True if this type supports retrieving the this parameter + and false otherwise. Note that a return value of true does not guarantee a non-null + (e.g. fails for static methods). + + + + + Optimization: in many cases, the parameter count (fast) is sufficient and we + don't need the actual parameter symbols (slow). + + + The default implementation is always correct, but may be unnecessarily slow. + + + + + Gets the parameters of this method. If this method has no parameters, returns + an empty list. + + + + + Returns the method symbol that this method was constructed from. The resulting + method symbol + has the same containing type (if any), but has type arguments that are the same + as the type parameters (although its containing type might not). + + + + + Source: Was the member name qualified with a type name? + Metadata: Is the member an explicit implementation? + + + Will not always agree with ExplicitInterfaceImplementations.Any() + (e.g. if binding of the type part of the name fails). + + + + + Returns interface methods explicitly implemented by this method. + + + Methods imported from metadata can explicitly implement more than one method, + that is why return type is ImmutableArray. + + + + + Returns the list of custom modifiers, if any, associated with the returned value. + + + + + Gets the attributes on method's return type. + Returns an empty array if there are no attributes. + + + + + If this method has MethodKind of MethodKind.PropertyGet or MethodKind.PropertySet, + returns the property that this method is the getter or setter for. + If this method has MethodKind of MethodKind.EventAdd or MethodKind.EventRemove, + returns the event that this method is the adder or remover for. + Note, the set of possible associated symbols might be expanded in the future to + reflect changes in the languages. + + + + + Returns the original virtual or abstract method which a given method symbol overrides, + ignoring any other overriding methods in base classes. + + The search must respect accessibility from this type. + + + + Returns the original virtual or abstract method which a given method symbol overrides, + ignoring any other overriding methods in base classes. + Also, if the given method symbol is generic then the resulting virtual or abstract method is constructed with the + same type arguments as the given method. + + + + + If this method overrides another method (because it both had the override modifier + and there correctly was a method to override), returns the overridden method. + Note that if an overriding method D.M overrides C.M, which in turn overrides + virtual method A.M, the "overridden method" of D.M is C.M, not the original virtual + method A.M. Note also that constructed generic methods are not considered to + override anything. + + + + + Returns true if calls to this method are omitted in this syntax tree. Calls are omitted + when the called method is a partial method with no implementation part, or when the + called method is a conditional method whose condition is not true in the source file + corresponding to the given syntax tree. + + + + + Calls are conditionally omitted if both the following requirements are true: + (a) IsConditional == true, i.e. it has at least one applied/inherited conditional attribute AND + (b) None of conditional symbols corresponding to these conditional attributes are defined in the given syntaxTree. + + + Forces binding and decoding of attributes. + + + + + Returns a sequence of preprocessor symbols specified in applied on this symbol, or null if there are none. + + + + + Returns a flag indicating whether this symbol has at least one applied/inherited conditional attribute. + + + Forces binding and decoding of attributes. + + + + + Some method kinds do not participate in overriding/hiding (e.g. constructors). + + + + + Returns value 'Method' of the + + + + + Returns true if this symbol represents a constructor of a script class. + + + + + Returns if the method is implicit constructor (normal and static) + + + + + Returns if the method is implicit instance constructor + + + + + Returns true if this symbol represents a constructor of an interactive submission class. + + + + + Determines whether this method is a candidate for a default assembly entry point + (i.e. it is a static method called "Main"). + + + + + Checks if the method has an entry point compatible signature, i.e. + - the return type is either void or int + - has either no parameter or a single parameter of type string[] + + + + + If this is an extension method that can be applied to a receiver of the given type, + returns a reduced extension method symbol thus formed. Otherwise, returns null. + + + + + If this is an extension method, returns a reduced extension method + symbol representing the method. Otherwise, returns null. + + + + + If this method is a reduced extension method, returns the extension method that + should be used at call site during ILGen. Otherwise, returns null. + + + + + If this is a partial method declaration without a body, and the method also + has a part that implements it with a body, returns that implementing + definition. Otherwise null. + + + + + If this is a partial method with a body, returns the corresponding + definition part (without a body). Otherwise null. + + + + + If this method is a reduced extension method, gets the extension method definition that + this method was reduced from. Otherwise, returns null. + + + + + If this method can be applied to an object, returns the type of object it is applied to. + + + + + If this method is a reduced extension method, returns a type inferred during reduction process for the type parameter. + + Type parameter of the corresponding method. + Inferred type or Nothing if nothing was inferred. + If this is not a reduced extension method. + If is null. + If doesn't belong to the corresponding method. + + + + Apply type substitution to a generic method to create an method symbol with the given type parameters supplied. + + + + + + + Apply type substitution to a generic method to create an method symbol with the given type parameters supplied. + + + + + + + As a performance optimization, cache parameter types and refkinds - overload resolution uses them a lot. + + + + + Null if no parameter is ref/out. Otherwise the RefKind for each parameter. + + + + + Returns the map from type parameters to type arguments. + If this is not a generic method instantiation, returns null. + The map targets the original definition of the method. + + + + + Return error code that has highest priority while calculating use site error for this symbol. + + + + + If the method was written as an iterator method (i.e. with yield statements in its body) returns the + element type of the iterator. Otherwise returns null. + + + + + Generates bound block representing method's body for methods in lowered form and adds it to + a collection of method bodies of the current module. This method is supposed to only be + called for method symbols which return SynthesizesLoweredBoundBody == true. + + + + + Returns true for synthesized symbols which generate synthesized body in lowered form + + + + + Return true iff the method contains user code. + + + + + Calculates a syntax offset for a local (user-defined or long-lived synthesized) declared at . + Must be implemented by all methods that may contain user code. + + + Syntax offset is a unique identifier for the local within the emitted method body. + It's based on position of the local declarator. In single-part method bodies it's simply the distance + from the start of the method body syntax span. If a method body has multiple parts (such as a constructor + comprising of code for member initializers and constructor initializer calls) the offset is calculated + as if all source these parts were concatenated together and prepended to the constructor body. + The resulting syntax offset is then negative for locals defined outside of the constructor body. + + + + + Build and add synthesized return type attributes for this method symbol. + + + + + Represents a type other than an array, a pointer, a type parameter, and dynamic. + + + + + Gets the set of interfaces to emit on this type. This set can be different from the set returned by Interfaces property. + + + + + Add the type to the builder and then recurse on its interfaces. + + + Pre-order depth-first search. + + + + + To represent a gap in interface's v-table null value should be returned in the appropriate position, + unless the gap has a symbol (happens if it is declared in source, for example). + + + + + Returns the arity of this type, or the number of type parameters it takes. + A non-generic type has zero arity. + + + + + Returns the type parameters that this type has. If this is a non-generic type, + returns an empty ImmutableArray. + + + + + Returns the type arguments that have been substituted for the type parameters. + If nothing has been substituted for a give type parameters, + then the type parameter itself is consider the type argument. + + + + + Returns custom modifiers for the type arguments that have been substituted for the type parameters. + + + + + Returns the type symbol that this type was constructed from. This type symbol + has the same containing type (if any), but has type arguments that are the same + as the type parameters (although its containing type might not). + + + + + For enum types, gets the underlying type. Returns null on all other + kinds of types. + + + + + Returns true for a struct type containing a cycle. + This property is intended for flow analysis only + since it is only implemented for source types. + + + + + Is this a NoPia local type explicitly declared in source, i.e. + top level type with a TypeIdentifier attribute on it? + + + + + Returns true and a string from the first GuidAttribute on the type, + the string might be null or an invalid guid representation. False, + if there is no GuidAttribute with string argument. + + + + + For delegate types, gets the delegate's invoke method. Returns null on + all other kinds of types. Note that it is possible to have an ill-formed + delegate type imported from metadata which does not have an Invoke method. + Such a type will be classified as a delegate but its DelegateInvokeMethod + would be null. + + + + + Get the operators for this type by their metadata name + + + + + Get the instance constructors for this type. + + + + + Get the static constructors for this type. + + + + + Get the instance and static constructors for this type. + + + + + Get the indexers for this type. + + + Won't include indexers that are explicit interface implementations. + + + + + Returns true if this type might contain extension methods. If this property + returns false, there are no extension methods in this type. + + + This property allows the search for extension methods to be narrowed quickly. + + + + + Returns true if this type is known to be a reference type. It is never the case that + IsReferenceType and IsValueType both return true. However, for an unconstrained type + parameter, IsReferenceType and IsValueType will both return false. + + + + + Returns true if this type is known to be a value type. It is never the case that + IsReferenceType and IsValueType both return true. However, for an unconstrained type + parameter, IsReferenceType and IsValueType will both return false. + + + + + Gets the associated attribute usage info for an attribute type. + + + + + Returns true if the type is a Script class. + It might be an interactive submission class or a Script class in a csx file. + + + + + Returns true if the type is the implicit class that holds onto invalid global members (like methods or + statements in a non script file). + + + + + Gets the name of this symbol. Symbols without a name return the empty string; null is + never returned. + + + + + Return the name including the metadata arity suffix. + + + + + Should the name returned by Name property be mangled with [`arity] suffix in order to get metadata name. + Must return False for a type with Arity == 0. + + + + + Collection of names of members declared within this type. + + + + + Get all the members of this symbol. + + An ImmutableArray containing all the members of this symbol. If this symbol has no members, + returns an empty ImmutableArray. Never returns null. + + + + Get all the members of this symbol that have a particular name. + + An ImmutableArray containing all the members of this symbol with the given name. If there are + no members with this name, returns an empty ImmutableArray. Never returns null. + + + + Get all the members of this symbol that are types. + + An ImmutableArray containing all the types that are members of this symbol. If this symbol has no type members, + returns an empty ImmutableArray. Never returns null. + + + + Get all the members of this symbol that are types that have a particular name, of any arity. + + An ImmutableArray containing all the types that are members of this symbol with the given name. + If this symbol has no type members with this name, + returns an empty ImmutableArray. Never returns null. + + + + Get all the members of this symbol that are types that have a particular name and arity + + An ImmutableArray containing all the types that are members of this symbol with the given name and arity. + If this symbol has no type members with this name and arity, + returns an empty ImmutableArray. Never returns null. + + + + Get all instance field and event members. + + + For source symbols may be called while calculating + . + + + + + Get this accessibility that was declared on this symbol. For symbols that do not have + accessibility declared on them, returns NotApplicable. + + + + + Used to implement visitor pattern. + + + + + During early attribute decoding, we consider a safe subset of all members that will not + cause cyclic dependencies. Get all such members for this symbol. + + + Never returns null (empty instead). + Expected implementations: for source, return type and field members; for metadata, return all members. + + + + + During early attribute decoding, we consider a safe subset of all members that will not + cause cyclic dependencies. Get all such members for this symbol that have a particular name. + + + Never returns null (empty instead). + Expected implementations: for source, return type and field members; for metadata, return all members. + + + + + Gets the kind of this symbol. + + + + + Compares this type to another type. + + + + + Helper for more complicated cases of Equals like when we have generic instantiations or types nested within them. + + + + + Returns a constructed type given its type arguments. + + The immediate type arguments to be replaced for type + parameters in the type. + + + + Returns a constructed type given its type arguments. + + The immediate type arguments to be replaced for type + parameters in the type. + + + + Returns a constructed type given its type arguments. + + + + + + Returns an unbound generic type of this named type. + + + + + True if this type or some containing type has type parameters. + + + + + True if this is a reference to an unbound generic type. These occur only + within a typeof expression. A generic type is considered unbound + if all of the type argument lists in its fully qualified name are empty. + Note that the type arguments of an unbound generic type will be returned as error + types because they do not really have type arguments. An unbound generic type + yields null for its BaseType and an empty result for its Interfaces. + + + + + The original definition of this symbol. If this symbol is constructed from another + symbol by type substitution then OriginalDefinition gets the original symbol as it was defined in + source or metadata. + + + + + Returns the map from type parameters to type arguments. + If this is not a generic type instantiation, returns null. + The map targets the original definition of the type. + + + + + True if this symbol has a special name (metadata flag SpecialName is set). + + + + + Returns a flag indicating whether this symbol is ComImport. + + + A type can me marked as a ComImport type in source by applying the + + + + + True if the type is a Windows runtime type. + + + A type can me marked as a Windows runtime type in source by applying the WindowsRuntimeImportAttribute. + WindowsRuntimeImportAttribute is a pseudo custom attribute defined as an internal class in System.Runtime.InteropServices.WindowsRuntime namespace. + This is needed to mark Windows runtime types which are redefined in mscorlib.dll and System.Runtime.WindowsRuntime.dll. + These two assemblies are special as they implement the CLR's support for WinRT. + + + + + True if the type should have its WinRT interfaces projected onto .NET types and + have missing .NET interface members added to the type. + + + + + Returns a flag indicating whether this symbol has at least one applied/inherited conditional attribute. + + + Forces binding and decoding of attributes. + + + + + True if the type is serializable (has Serializable metadata flag). + + + + + Type layout information (ClassLayout metadata and layout kind flags). + + + + + The default charset used for type marshalling. + Can be changed via applied on the containing module. + + + + + Marshalling charset of string data fields within the type (string formatting flags in metadata). + + + + + True if the type has declarative security information (HasSecurity flags). + + + + + Declaration security information associated with this type, or null if there is none. + + + + + Returns a sequence of preprocessor symbols specified in applied on this symbol, or null if there are none. + + + + + If was applied to the type and the attribute argument is a valid named type argument, i.e. accessible class type, then it returns the type symbol for the argument. + Otherwise, returns null. + + + + This property invokes force completion of attributes. If you are accessing this property + from the binder, make sure that we are not binding within an Attribute context. + This could lead to a possible cycle in attribute binding. + We can avoid this cycle by first checking if we are within the context of an Attribute argument, + i.e. if(!binder.InAttributeArgument) { ... namedType.ComImportCoClass ... } + + + CONSIDER: We can remove the above restriction and possibility of cycle if we do an + early binding of some well known attributes. + + + + + + If class represents fixed buffer, this property returns the FixedElementField + + + + + Requires less computation than == . + + + Metadata types need to compute their base types in order to know their TypeKinds, and that can lead + to cycles if base types are already being computed. + + True if this is an interface type. + + + + Represents a namespace. + + + + + Get all the members of this symbol that are namespaces. + + An IEnumerable containing all the namespaces that are members of this symbol. + If this symbol has no namespace members, returns an empty IEnumerable. Never returns + null. + + + + Returns whether this namespace is the unnamed, global namespace that is + at the root of all namespaces. + + + + + The kind of namespace: Module, Assembly or Compilation. + Module namespaces contain only members from the containing module that share the same namespace name. + Assembly namespaces contain members for all modules in the containing assembly that share the same namespace name. + Compilation namespaces contain all members, from source or referenced metadata (assemblies and modules) that share the same namespace name. + + + + + The containing compilation for compilation namespaces. + + + + + If a namespace has Assembly or Compilation extent, it may be composed of multiple + namespaces that are merged together. If so, ConstituentNamespaces returns + all the namespaces that were merged. If this namespace was not merged, returns + an array containing only this namespace. + + + + + Containing assembly. + + + + + Gets the kind of this symbol. + + + + + Implements visitor pattern. + + + + + Get this accessibility that was declared on this symbol. For symbols that do not have + accessibility declared on them, returns NotApplicable. + + + + + Returns true if this symbol is "static"; i.e., declared with the "static" modifier or + implicitly static. + + + + + Returns true if this symbol was declared as requiring an override; i.e., declared with + the "abstract" modifier. Also returns true on a type declared as "abstract", all + interface types, and members of interface types. + + + + + Returns true if this symbol was declared to override a base class member and was also + sealed from further overriding; i.e., declared with the "sealed" modifier. Also set for + types that do not allow a derived class (declared with "sealed" or "static" or "struct" + or "enum" or "delegate"). + + + + + Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. + This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. + + + + + Returns an implicit type symbol for this namespace or null if there is none. This type + wraps misplaced global code. + + + + + Lookup a nested namespace. + + + Sequence of names for nested child namespaces. + + + Symbol for the most nested namespace, if found. Nothing + if namespace or any part of it can not be found. + + + + + Add all extension methods in this namespace to the given list. If name or arity + or both are provided, only those extension methods that match are included. + + Methods list + Optional method name + Method arity + Lookup options + + + + Represents a parameter of a method or indexer. + + + + + Gets constant value to be stored in metadata Constant table. + + + + + The original definition of this symbol. If this symbol is constructed from another + symbol by type substitution then OriginalDefinition gets the original symbol as it was defined in + source or metadata. + + + + + Gets the type of the parameter. + + + + + Determines if the parameter ref, out or neither. + + + + + The list of custom modifiers, if any, associated with the parameter. + + + + + Describes how the parameter is marshalled when passed to native code. + Null if no specific marshalling information is available for the parameter. + + PE symbols don't provide this information and always return null. + + + + Returns the marshalling type of this parameter, or 0 if marshalling information isn't available. + + + By default this information is extracted from if available. + Since the compiler does only need to know the marshalling type of symbols that aren't emitted + PE symbols just decode the type from metadata and don't provide full marshalling information. + + + + + Gets the ordinal position of the parameter. The first parameter has ordinal zero. + The "'this' parameter has ordinal -1. + + + + + Returns true if the parameter was declared as a parameter array. + + + + + Returns true if the parameter is semantically optional. + + + True iff the parameter has a default argument syntax, + or the parameter is not a params-array and Optional metadata flag is set. + + + + + True if Optional flag is set in metadata. + + + + + True if In flag is set in metadata. + + + + + True if Out flag is set in metadata. + + + + + Returns true if the parameter explicitly specifies a default value to be passed + when no value is provided as an argument to a call. + + + True if the parameter has a default argument syntax, + or the parameter is from source and is applied, + or the parameter is from metadata and HasDefault metadata flag is set. See + to determine if the parameter will be considered optional by + overload resolution. + + The default value can be obtained with property. + + + + + Returns the default value of the parameter. If + returns false then DefaultValue throws an InvalidOperationException. + + + If the parameter type is a struct and the default value of the parameter + is the default value of the struct type or of type parameter type which is + not known to be a referenced type, then this property will return null. + + The parameter has no default value. + + + + Returns the default value constant of the parameter, + or null if the parameter doesn't have a default value or + the parameter type is a struct and the default value of the parameter + is the default value of the struct type or of type parameter type which is + not known to be a referenced type. + + + This is used for emitting. It does not reflect the language semantics + (i.e. even non-optional parameters can have default values). + + + + + Gets the kind of this symbol. + + + + + Implements visitor pattern. + + + + + Get this accessibility that was declared on this symbol. For symbols that do not have + accessibility declared on them, returns NotApplicable. + + + + + Returns true if this symbol was declared as requiring an override; i.e., declared with + the "abstract" modifier. Also returns true on a type declared as "abstract", all + interface types, and members of interface types. + + + + + Returns true if this symbol was declared to override a base class member and was also + sealed from further overriding; i.e., declared with the "sealed" modifier. Also set for + types that do not allow a derived class (declared with "sealed" or "static" or "struct" + or "enum" or "delegate"). + + + + + Returns true if this symbol is "virtual", has an implementation, and does not override a + base class member; i.e., declared with the "virtual" modifier. Does not return true for + members declared as abstract or override. + + + + + Returns true if this symbol was declared to override a base class member; i.e., declared + with the "override" modifier. Still returns true if member was declared to override + something, but (erroneously) no member to override exists. + + + + + Returns true if this symbol is "static"; i.e., declared with the "static" modifier or + implicitly static. + + + + + Returns true if this symbol has external implementation; i.e., declared with the + "extern" modifier. + + + + + Returns true if the parameter is the hidden 'this' parameter. + + + + + Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. + This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. + + + + + The CLI spec says that custom modifiers must precede the ByRef type code in the encoding of a parameter. + Unfortunately, the managed C++ compiler emits them in the reverse order. In order to avoid breaking + interop scenarios, we need to support such signatures. + Should be 0 for non-ref parameters. + + + + + Represents a pointer type such as "int *". Pointer types + are used only in unsafe code. + + + + + Create a new PointerTypeSymbol. + + The type being pointed at. + + + + Create a new PointerTypeSymbol. + + The type being pointed at. + Custom modifiers for the element type of this array type. + + + + The list of custom modifiers, if any, associated with the pointer type. + + + + + Gets the type of the storage location that an instance of the pointer type points to. + + + + + Represents a property or indexer. + + + + + As a performance optimization, cache parameter types and refkinds - overload resolution uses them a lot. + + + + + The original definition of this symbol. If this symbol is constructed from another + symbol by type substitution then OriginalDefinition gets the original symbol as it was defined in + source or metadata. + + + + + The type of the property. + + + + + The list of custom modifiers, if any, associated with the type of the property. + + + + + The parameters of this property. If this property has no parameters, returns + an empty list. Parameters are only present on indexers, or on some properties + imported from a COM interface. + + + + + Optimization: in many cases, the parameter count (fast) is sufficient and we + don't need the actual parameter symbols (slow). + + + + + Returns whether the property is really an indexer. + + + In source, we regard a property as an indexer if it is declared with an IndexerDeclarationSyntax. + From metadata, we regard a property if it has parameters and is a default member of the containing + type. + CAVEAT: To ensure that this property (and indexer Names) roundtrip, source properties are not + indexers if they are explicit interface implementations (since they will not be marked as default + members in metadata). + + + + + True if this an indexed property; that is, a property with parameters + within a [ComImport] type. + + + + + True if this is a read-only property; that is, a property with no set accessor. + + + + + True if this is a write-only property; that is, a property with no get accessor. + + + + + True if this symbol has a special name (metadata flag SpecialName is set). + + + + + The 'get' accessor of the property, or null if the property is write-only. + + + + + The 'set' accessor of the property, or null if the property is read-only. + + + + + Returns the overridden property, or null. + + + + + Source: Was the member name qualified with a type name? + Metadata: Is the member an explicit implementation? + + + Will not always agree with ExplicitInterfaceImplementations.Any() + (e.g. if binding of the type part of the name fails). + + + + + Returns interface properties explicitly implemented by this property. + + + Properties imported from metadata can explicitly implement more than one property. + + + + + Gets the kind of this symbol. + + + + + Implements visitor pattern. + + + + + Return error code that has highest priority while calculating use site error for this symbol. + + + + + Represents a type parameter in a generic type or generic method. + + + + + The original definition of this symbol. If this symbol is constructed from another + symbol by type substitution then OriginalDefinition gets the original symbol as it was defined in + source or metadata. + + + + + If this is a type parameter of a reduced extension method, gets the type parameter definition that + this type parameter was reduced from. Otherwise, returns Nothing. + + + + + The ordinal position of the type parameter in the parameter list which declares + it. The first type parameter has ordinal zero. + + + + + The types that were directly specified as constraints on the type parameter. + Duplicates and cycles are removed, although the collection may include + redundant constraints where one constraint is a base type of another. + + + + + True if the parameterless constructor constraint was specified for the type parameter. + + + + + The type parameter kind of this type parameter. + + + + + The method that declared this type parameter, or null. + + + + + The type that declared this type parameter, or null. + + + + + The effective base class of the type parameter (spec 10.1.5). If the deduced + base type is a reference type, the effective base type will be the same as + the deduced base type. Otherwise if the deduced base type is a value type, + the effective base type will be the most derived reference type from which + deduced base type is derived. + + + + + The effective interface set (spec 10.1.5). + + + + + The most encompassed type (spec 6.4.2) from the constraints. + + + + + The effective interface set and any base interfaces of those + interfaces. This is AllInterfaces excluding interfaces that are + only implemented by the effective base type. + + + + + Called by , , , and . + to allow derived classes to ensure constraints within the containing + type or method are resolved in a consistent order, regardless of the + order the callers query individual type parameters. + + + + + Helper method to force type parameter constraints to be resolved. + + + + + Returns a bag of applied custom attributes and data decoded from well-known attributes. Returns null if there are no attributes applied on the symbol. + + + Forces binding and decoding of attributes. + + + + + State machine interface property implementation. + + + + + A base method symbol used as a base class for lambda method symbol and base method wrapper symbol. + + + + + Abstract base class for mutable and immutable type maps. + + + + + Substitute for a type declaration. May use alpha renaming if the container is substituted. + + + + + SubstType, but for NamedTypeSymbols only. This is used for concrete types, so no alpha substitution appears in the result. + + + + + Perform the substitution on the given type. Each occurrence of the type parameter is + replaced with its corresponding type argument from the map. + + The type to be rewritten. + The type with type parameters replaced with the type arguments. + + + + Substitute types, and return the results without duplicates, preserving the original order. + + + + + Like SubstTypes, but for NamedTypeSymbols. + + + + + Symbol representing a using alias appearing in a compilation unit or within a namespace + declaration. Generally speaking, these symbols do not appear in the set of symbols reachable + from the unnamed namespace declaration. In other words, when a using alias is used in a + program, it acts as a transparent alias, and the symbol to which it is an alias is used in + the symbol table. For example, in the source code +
+            namespace NS
+            {
+                using o = System.Object;
+                partial class C : o {}
+                partial class C : object {}
+                partial class C : System.Object {}
+            }
+            
+ all three declarations for class C are equivalent and result in the same symbol table object + for C. However, these using alias symbols do appear in the results of certain SemanticModel + APIs. Specifically, for the base clause of the first of C's class declarations, the + following APIs may produce a result that contains an AliasSymbol: +
+                SemanticInfo SemanticModel.GetSemanticInfo(ExpressionSyntax expression);
+                SemanticInfo SemanticModel.BindExpression(CSharpSyntaxNode location, ExpressionSyntax expression);
+                SemanticInfo SemanticModel.BindType(CSharpSyntaxNode location, ExpressionSyntax type);
+                SemanticInfo SemanticModel.BindNamespaceOrType(CSharpSyntaxNode location, ExpressionSyntax type);
+            
+ Also, the following are affected if container==null (and, for the latter, when arity==null + or arity==0): +
+                IList<string> SemanticModel.LookupNames(CSharpSyntaxNode location, NamespaceOrTypeSymbol container = null, LookupOptions options = LookupOptions.Default, List<string> result = null);
+                IList<Symbol> SemanticModel.LookupSymbols(CSharpSyntaxNode location, NamespaceOrTypeSymbol container = null, string name = null, int? arity = null, LookupOptions options = LookupOptions.Default, List<Symbol> results = null);
+            
+
+
+ + + Gets the for the + namespace or type referenced by the alias. + + + + + Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. + This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. + + + + + Using aliases in C# are always contained within a namespace declaration, or at the top + level within a compilation unit, within the implicit unnamed namespace declaration. We + return that as the "containing" symbol, even though the alias isn't a member of the + namespace as such. + + + + + Describes anonymous type in terms of fields + + + + Anonymous type location + + + Anonymous type fields + + + + Anonymous type descriptor Key + + The key is to be used to separate anonymous type templates in an anonymous type symbol cache. + The type descriptors with the same keys are supposed to map to 'the same' anonymous type + template in terms of the same generic type being used for their implementation. + + + + + Compares two anonymous type descriptors, takes into account fields names and types, not locations. + + + + + Compares two anonymous type descriptors, takes into account fields names and types, not locations. + + + + + Creates a new anonymous type descriptor based on 'this' one, + but having field types passed as an argument. + + + + + Describes anonymous type field in terms of its name, type and other attributes + + + + Anonymous type field name, not nothing and not empty + + + Anonymous type field location + + + Anonymous type field type + + + + Represents a .NET assembly, consisting of one or more modules. + + + + + The system assembly, which provides primitive types like Object, String, etc., e.g. mscorlib.dll. + The value is provided by ReferenceManager and must not be modified. For SourceAssemblySymbol, non-missing + coreLibrary must match one of the referenced assemblies returned by GetReferencedAssemblySymbols() method of + the main module. If there is no existing assembly that can be used as a source for the primitive types, + the value is a Compilation.MissingCorLibrary. + + + + + The system assembly, which provides primitive types like Object, String, etc., e.g. mscorlib.dll. + The value is MissingAssemblySymbol if none of the referenced assemblies can be used as a source for the + primitive types and the owning assembly cannot be used as the source too. Otherwise, it is one of + the referenced assemblies returned by GetReferencedAssemblySymbols() method or the owning assembly. + + + + + A helper method for ReferenceManager to set the system assembly, which provides primitive + types like Object, String, etc., e.g. mscorlib.dll. + + + + + Simple name the assembly. + + + This is equivalent to ., but may be + much faster to retrieve for source code assemblies, since it does not require binding + the assembly-level attributes that contain the version number and other assembly + information. + + + + + Gets the identity of this assembly. + + + + + Assembly version pattern with wildcards represented by , + or null if the version string specified in the doesn't contain a wildcard. + + For example, + AssemblyVersion("1.2.*") is represented as 1.2.65535.65535, + AssemblyVersion("1.2.3.*") is represented as 1.2.3.65535. + + + + + Target architecture of the machine. + + + + + Indicates that this PE file makes Win32 calls. See CorPEKind.pe32BitRequired for more information (http://msdn.microsoft.com/en-us/library/ms230275.aspx). + + + + + Gets the merged root namespace that contains all namespaces and types defined in the modules + of this assembly. If there is just one module in this assembly, this property just returns the + GlobalNamespace of that module. + + + + + Given a namespace symbol, returns the corresponding assembly specific namespace symbol + + + + + Gets a read-only list of all the modules in this assembly. (There must be at least one.) The first one is the main module + that holds the assembly manifest. + + + + + Does this symbol represent a missing assembly. + + + + + Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. + This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. + + + + + True if the assembly contains interactive code. + + + + + Lookup a top level type referenced from metadata, names should be + compared case-sensitively. + + + Full type name with generic name mangling. + + + Take forwarded types into account. + + + + + + Lookup a top level type referenced from metadata, names should be + compared case-sensitively. Detect cycles during lookup. + + + Full type name, possibly with generic name mangling. + + + List of assemblies lookup has already visited (since type forwarding can introduce cycles). + + + Take forwarded types into account. + + + + + Returns the type symbol for a forwarded type based its canonical CLR metadata name. + The name should refer to a non-nested type. If type with this name is not forwarded, + null is returned. + + + + + Look up the given metadata type, if it is forwarded. + + + + + Look up the given metadata type, if it is forwarded. + + + + + Lookup declaration for predefined CorLib type in this Assembly. + + The symbol for the pre-defined type or an error type if the type is not defined in the core library. + + + + Register declaration of predefined CorLib type in this Assembly. + + + + + + Continue looking for declaration of predefined CorLib type in this Assembly + while symbols for new type declarations are constructed. + + + + + Return an array of assemblies involved in canonical type resolution of + NoPia local types defined within this assembly. In other words, all + references used by previous compilation referencing this assembly. + + + + + + Return an array of assemblies referenced by this assembly, which are linked (/l-ed) by + each compilation that is using this AssemblySymbol as a reference. + If this AssemblySymbol is linked too, it will be in this array too. + + + + + Assembly is /l-ed by compilation that is using it as a reference. + + + + + Returns true and a string from the first GuidAttribute on the assembly, + the string might be null or an invalid guid representation. False, + if there is no GuidAttribute with string argument. + + + + + Gets the set of type identifiers from this assembly. + + + These names are the simple identifiers for the type, and do not include namespaces, + outer type names, or type parameters. + + This functionality can be used for features that want to quickly know if a name could be + a type for performance reasons. For example, classification does not want to incur an + expensive binding call cost if it knows that there is no type with the name that they + are looking at. + + + + + Gets the set of namespace names from this assembly. + + + + + Returns true if this assembly might contain extension methods. If this property + returns false, there are no extension methods in this assembly. + + + This property allows the search for extension methods to be narrowed quickly. + + + + + Gets the symbol for the pre-defined type from core library associated with this assembly. + + The symbol for the pre-defined type or an error type if the type is not defined in the core library. + + + + The NamedTypeSymbol for the .NET System.Object type, which could have a TypeKind of + Error if there was no COR Library in a compilation using the assembly. + + + + + Get symbol for predefined type from Cor Library used by this assembly. + + + + + + + Lookup a type within the assembly using the canonical CLR metadata name of the type. + + Type name. + Symbol for the type or null if type cannot be found or is ambiguous. + + + + Lookup a type within the assembly using its canonical CLR metadata name. + + + + If search within assembly fails, lookup in assemblies referenced by the primary module. + For source assembly, this is equivalent to all assembly references given to compilation. + + + Extra restrictions apply when searching for a well-known type. In particular, the type must be public. + + + While resolving the name, consider only types following CLS-compliant generic type names and arity encoding (ECMA-335, section 10.7.2). + I.e. arity is inferred from the name and matching type must have the same emitted name and arity. + + + A diagnostic bag to receive warnings if we should allow multiple definitions and pick one. + + Null if the type can't be found. + + + + Resolves to a available in this assembly + its referenced assemblies. + + The type to resolve. + Use referenced assemblies for resolution. + The resolved symbol if successful or null on failure. + + + + Lookup member declaration in predefined CorLib type in this Assembly. Only valid if this + assembly is the Cor Library + + + + + Lookup member declaration in predefined CorLib type used by this Assembly. + + + + + If this symbol represents a metadata assembly returns the underlying . + + Otherwise, this returns null. + + + + + Represents a PE custom attribute + + + + + Matches an attribute by metadata namespace, metadata type name. Does not load the type symbol for + the attribute. + + + + True if the attribute data matches. + + + + Matches an attribute by metadata namespace, metadata type name and metadata signature. Does not load the + type symbol for the attribute. + + Target symbol. + Attribute to match. + + An index of the target constructor signature in + signatures array, -1 if + this is not the target attribute. + + + + + Decodes applied to a specified metadata symbol and + transforms the specified metadata type, using the decoded dynamic transforms attribute argument, + by replacing each occurrence of type with dynamic type. + + + This is a port of TypeManager::ImportDynamicTransformType from the native compiler. + Comments from the C# design document for Dynamic: + SPEC: To represent the dynamic type in metadata, any indexer, field or return value typed as dynamic or known to be a constructed type + SPEC: containing dynamic will have each occurrence of dynamic erased to object and will be annotated with a [DynamicAttribute]. + SPEC: If the relevant type is a constructed type, the attribute's constructor is passed a bool array. + SPEC: This array represents a preorder traversal of each "node" in the constructed type's "tree of types", + SPEC: with true set for each "node" that is dynamic, and false set for all other types. + SPEC: When dynamic occurs as part of the base type of a type, the applicable [DynamicAttribute] is applied to the type itself. + + + + + Should be accessed through , , and . + + + + + Decodes the attributes applied to the given from metadata and checks if is applied. + If so, it transforms the given , using the decoded dynamic transforms attribute argument, + by replacing each occurrence of type with dynamic type. + If no is applied or the decoded dynamic transforms attribute argument is erroneous, + returns the unchanged . + + This method is a port of TypeManager::ImportDynamicTransformType from the native compiler. + + + + This subclass of MetadataDecoder is specifically for finding + method symbols corresponding to method MemberRefs. The parent + implementation is unsuitable because it requires a PEMethodSymbol + for context when decoding method type parameters and no such + context is available because it is precisely what we are trying + to find. Since we know in advance that there will be no context + and that signatures decoded with this class will only be used + for comparison (when searching through the methods of a known + TypeSymbol), we can return indexed type parameters instead. + + + + + Type context for resolving generic type arguments. + + + + + We know that we'll never have a method context because that's what we're + trying to find. Instead, just return an indexed type parameter that will + make comparison easier. + + + + + + + This override changes two things: + 1) Return type arguments instead of type parameters. + 2) Handle non-PE types. + + + + + Search through the members of a given type symbol to find the method that matches a particular + signature. + + Type containing the desired method symbol. + A MemberRef handle that can be used to obtain the name and signature of the method + True to only return a method. + The matching method symbol, or null if the inputs do not correspond to a valid method. + + + + Helper class to resolve metadata tokens and signatures. + + + + + Type context for resolving generic type arguments. + + + + + Method context for resolving generic method type arguments. + + + + + Lookup a type defined in referenced assembly. + + + + + + + Lookup a type defined in a module of a multi-module assembly. + + + + + Lookup a type defined in this module. + This method will be called only if the type we are + looking for hasn't been loaded yet. Otherwise, MetadataDecoder + would have found the type in TypeDefRowIdToTypeMap based on its + TypeDef row id. + + + + + Perform a check whether the type or at least one of its generic arguments + is defined in the specified assemblies. The check is performed recursively. + + + + + Find canonical type for NoPia embedded type. + + + Symbol for the canonical type or an ErrorTypeSymbol. Never returns null. + + + + + Represents an assembly imported from a PE. + + + + + An Assembly object providing metadata for the assembly. + + + + + A DocumentationProvider that provides XML documentation comments for this assembly. + + + + + The list of contained PEModuleSymbol objects. + The list doesn't use type ReadOnlyCollection(Of PEModuleSymbol) so that we + can return it from Modules property as is. + + + + + An array of assemblies involved in canonical type resolution of + NoPia local types defined within this assembly. In other words, all + references used by a compilation referencing this assembly. + The array and its content is provided by ReferenceManager and must not be modified. + + + + + An array of assemblies referenced by this assembly, which are linked (/l-ed) by + each compilation that is using this AssemblySymbol as a reference. + If this AssemblySymbol is linked too, it will be in this array too. + The array and its content is provided by ReferenceManager and must not be modified. + + + + + Assembly is /l-ed by compilation that is using it as a reference. + + + + + Assembly's custom attributes + + + + + Look up the assembly to which the given metadata type is forwarded. + + + + The assembly to which the given type is forwarded or null, if there isn't one. + + + The returned assembly may also forward the type. + + + + + The class to represent all events imported from a PE/module. + + + + + Look for a field with the same name and an appropriate type (i.e. the same type, except in WinRT). + If one is found, the caller will assume that this event was originally field-like and associate + the two symbols. + + + Perf impact: If we find a field with the same name, we will eagerly evaluate its type. + + + + + Intended behavior: this event, E, explicitly implements an interface event, IE, + if E.add explicitly implements IE.add and E.remove explicitly implements IE.remove. + + + + + The class to represent all fields imported from a PE/module. + + + + + Mark this field as the backing field of a field-like event. + The caller will also ensure that it is excluded from the member list of + the containing type (as it would be in source). + + + + + The module containing the namespace. + + + + + + The class to represent all methods imported from a PE/module. + + + + + Holds infrequently accessed fields. See for an explanation. + + + + + A single field to hold optional auxiliary data. + In many scenarios it is possible to avoid allocating this, thus saving total space in . + Even for lazily-computed values, it may be possible to avoid allocating if + the computed value is a well-known "empty" value. In this case, bits in are used + to indicate that the lazy values have been computed and, if is null, then + the "empty" value should be inferred. + + + + + Associate the method with a particular property. Returns + false if the method is already associated with a property or event. + + + + + Associate the method with a particular event. Returns + false if the method is already associated with a property or event. + + + + + Represents a net-module imported from a PE. Can be a primary module of an assembly. + + + + + Owning AssemblySymbol. This can be a PEAssemblySymbol or a SourceAssemblySymbol. + + + + + A Module object providing metadata. + + + + + Global namespace. + + + + + Cache the symbol for well-known type System.Type because we use it frequently + (for attributes). + + + + + The same value as ConcurrentDictionary.DEFAULT_CAPACITY + + + + + This is a map from TypeDef handle to the target . + It is used by to speed up type reference resolution + for metadata coming from this module. The map is lazily populated + as we load types from the module. + + + + + This is a map from TypeRef row id to the target . + It is used by to speed up type reference resolution + for metadata coming from this module. The map is lazily populated + by as we resolve TypeRefs from the module. + + + + + Module's custom attributes + + + + + Module's assembly attributes + + + + + Returns a possibly ExtensionAttribute filtered roArray of attributes. If + filterExtensionAttributes is set to true, the method will remove all ExtensionAttributes + from the returned array. If it is false, the parameter foundExtension will always be set to + false and can be safely ignored. + + The paramArrayAttribute parameter is similar to the foundExtension parameter, but instead + of just indicating if the attribute was found, the parameter is set to the attribute handle + for the ParamArrayAttribute if any is found and is null otherwise. This allows NoPia to filter + the attribute out for the symbol but still cache it separately for emit. + + + + + Get the custom attributes, but filter out any ParamArrayAttributes. + + The parameter token handle. + Set to a ParamArrayAttribute + CustomAttributeHandle if any are found. Nil token otherwise. + + + + Filters extension attributes from the attribute results. + + + True if we found an extension method, false otherwise. + The attributes on the token, minus any ExtensionAttributes. + + + + If this module forwards the given type to another assembly, return that assembly; + otherwise, return null. + + Type to look up. + Assembly symbol or null. + + The returned assembly may also forward the type. + + + + + The class to represent all types imported from a PE/module. + + + + + A set of all the names of the members in this type. + We can get names without getting members (which is a more expensive operation) + + + + + We used to sort symbols on demand and relied on row ids to figure out the order between symbols of the same kind. + However, that was fragile because, when map tables are used in metadata, row ids in the map table define the order + and we don't have them. + Members are grouped by kind. First we store fields, then methods, then properties, then events and finally nested types. + Within groups, members are sorted based on declaration order. + + + + + A map of members immediately contained within this type + grouped by their name (case-sensitively). + + + + + A map of types immediately contained within this type + grouped by their name (case-sensitively). + + + + + Lazily initialized by TypeKind property. + + + + + Need to import them for an enum from a linked assembly, when we are embedding it. These symbols are not included into lazyMembersInDeclarationOrder. + + + + + Returns the index of the first member of the specific kind. + Returns the number of members if not found. + + + + + Returns all members of the specific kind, starting at the optional offset. + Members of the same kind are assumed to be contiguous. + + + + + Specialized PENamedTypeSymbol for types with no type parameters in + metadata (no type parameters on this type and all containing types). + + + + + Specialized PENamedTypeSymbol for types with type parameters in metadata. + NOTE: the type may have Arity == 0 if it has same metadata arity as the metadata arity of the containing type. + + + + + Return true if the type parameters specified on the nested type (this), + that represent the corresponding type parameters on the containing + types, in fact match the actual type parameters on the containing types. + + + + + The base class to represent a namespace imported from a PE/module. Namespaces that differ + only by casing in name are not merged. + + + + + A map of namespaces immediately contained within this namespace + mapped by their name (case-sensitively). + + + + + A map of types immediately contained within this namespace + grouped by their name (case-sensitively). + + + + + A map of NoPia local types immediately contained in this assembly. + Maps type name (non-qualified) to the row id. Note, for VB we should use + full name. + + + + + All type members in a flat array + + + + + Returns PEModuleSymbol containing the namespace. + + PEModuleSymbol containing the namespace. + + + + Initializes namespaces and types maps with information about + namespaces and types immediately contained within this namespace. + + + The sequence of groups of TypeDef row ids for types contained within the namespace, + recursively including those from nested namespaces. The row ids must be grouped by the + fully-qualified namespace name case-sensitively. There could be multiple groups + for each fully-qualified namespace name. The groups must be sorted by + their key in case-sensitive manner. Empty string must be used as namespace name for types + immediately contained within Global namespace. Therefore, all types in this namespace, if any, + must be in several first IGroupings. + + + + + Create symbols for nested namespaces and initialize namespaces map. + + + + + Create symbols for nested types and initialize types map. + + + + + The class to represent all, but Global, namespaces imported from a PE/module. + Namespaces that differ only by casing in name are not merged. + + + + + + The parent namespace. There is always one, Global namespace contains all + top level namespaces. + + + + + + The name of the namespace. + + + + + + The sequence of groups of TypeDef row ids for types contained within the namespace, + recursively including those from nested namespaces. The row ids are grouped by the + fully-qualified namespace name case-sensitively. There could be multiple groups + for each fully-qualified namespace name. The groups are sorted by their + key in case-sensitive manner. Empty string is used as namespace name for types + immediately contained within Global namespace. Therefore, all types in this namespace, if any, + will be in several first IGroupings. + + This member is initialized by constructor and is cleared in EnsureAllMembersLoaded + as soon as symbols for children are created. + + + + + + Constructor. + + + Name of the namespace, must be not empty. + + + Containing namespace. + + + The sequence of groups of TypeDef row ids for types contained within the namespace, + recursively including those from nested namespaces. The row ids are grouped by the + fully-qualified namespace name case-sensitively. There could be multiple groups + for each fully-qualified namespace name. The groups are sorted by their + key in case-sensitive manner. Empty string is used as namespace name for types + immediately contained within Global namespace. Therefore, all types in this namespace, if any, + will be in several first IGroupings. + + + + + The class to represent all method parameters imported from a PE/module. + + + + + Attributes filtered out from m_lazyCustomAttributes, ParamArray, etc. + + + + + Construct a parameter symbol for a property loaded from metadata. + + + + + The property parameter doesn't have a name in metadata, + so this is the handle of a corresponding accessor parameter, if there is one, + or of the ParamInfo passed in, otherwise). + + + + + + Internal for testing. Non-test code should use . + + + + + The class to represent all properties imported from a PE/module. + + + + + To facilitate lookup, all indexer symbols have the same name. + Check the MetadataName property to find the name we imported. + + + + + This property can return true for bogus indexers. + Rationale: If a type in metadata has a single, bogus indexer + and a source method tries to invoke it, then Dev10 reports a bogus + indexer rather than lack of an indexer. + + + + + Intended behavior: this property, P, explicitly implements an interface property, IP, + if any of the following is true: + + 1) P.get explicitly implements IP.get and P.set explicitly implements IP.set + 2) P.get explicitly implements IP.get and there is no IP.set + 3) P.set explicitly implements IP.set and there is no IP.get + + Extra or missing accessors will not result in errors, P will simply not report that + it explicitly implements IP. + + + + + The class to represent all generic type parameters imported from a PE/module. + + + + + + First error calculating bounds. + + + + + Represents a retargeting custom attribute + + + + + Gets the retargeted System.Type type symbol. + + Target symbol on which this attribute is applied. + Retargeted System.Type type symbol. + + + + Essentially this is a wrapper around another AssemblySymbol that is responsible for retargeting + symbols from one assembly to another. It can retarget symbols for multiple assemblies at the same time. + + For example, compilation C1 references v1 of Lib.dll and compilation C2 references C1 and v2 of Lib.dll. + In this case, in context of C2, all types from v1 of Lib.dll leaking through C1 (through method + signatures, etc.) must be retargeted to the types from v2 of Lib.dll. This is what + RetargetingAssemblySymbol is responsible for. In the example above, modules in C2 do not + reference C1.m_AssemblySymbol, but reference a special RetargetingAssemblySymbol created for + C1 by ReferenceManager. + + Here is how retargeting is implemented in general: + - Symbols from underlying assembly are substituted with retargeting symbols. + - Symbols from referenced assemblies that can be reused as is (i.e. doesn't have to be retargeted) are + used as is. + - Symbols from referenced assemblies that must be retargeted are substituted with result of retargeting. + + + + + The underlying AssemblySymbol, it leaks symbols that should be retargeted. + This cannot be an instance of RetargetingAssemblySymbol. + + + + + The list of contained ModuleSymbol objects. First item in the list + is RetargetingModuleSymbol that wraps corresponding SourceModuleSymbol + from underlyingAssembly.Modules list, the rest are PEModuleSymbols for + added modules. + + + + + An array of assemblies involved in canonical type resolution of + NoPia local types defined within this assembly. In other words, all + references used by a compilation referencing this assembly. + The array and its content is provided by ReferenceManager and must not be modified. + + + + + An array of assemblies referenced by this assembly, which are linked (/l-ed) by + each compilation that is using this AssemblySymbol as a reference. + If this AssemblySymbol is linked too, it will be in this array too. + The array and its content is provided by ReferenceManager and must not be modified. + + + + + Backing field for the map from a local NoPia type to corresponding canonical type. + + + + + A map from a local NoPia type to corresponding canonical type. + + + + + Assembly is /l-ed by compilation that is using it as a reference. + + + + + Retargeted custom attributes + + + + + Constructor. + + + The underlying AssemblySymbol, cannot be an instance of RetargetingAssemblySymbol. + + + Assembly is /l-ed by compilation that is using it as a reference. + + + + + The underlying AssemblySymbol. + This cannot be an instance of RetargetingAssemblySymbol. + + + + + Lookup declaration for FX type in this Assembly. + + + + + + + + Owning RetargetingModuleSymbol. + + + + + The underlying EventSymbol, cannot be another RetargetingEventSymbol. + + + + + Represents a field in a RetargetingModuleSymbol. Essentially this is a wrapper around + another FieldSymbol that is responsible for retargeting symbols from one assembly to another. + It can retarget symbols for multiple assemblies at the same time. + + + + + Owning RetargetingModuleSymbol. + + + + + The underlying FieldSymbol, cannot be another RetargetingFieldSymbol. + + + + + Retargeted custom attributes + + + + + Represents a method in a RetargetingModuleSymbol. Essentially this is a wrapper around + another MethodSymbol that is responsible for retargeting symbols from one assembly to another. + It can retarget symbols for multiple assemblies at the same time. + + + + + Owning RetargetingModuleSymbol. + + + + + The underlying MethodSymbol, cannot be another RetargetingMethodSymbol. + + + + + Retargeted custom attributes + + + + + Retargeted return type custom attributes + + + + + Represents a primary module of a . Essentially this is a wrapper around + another that is responsible for retargeting symbols from one assembly to another. + It can retarget symbols for multiple assemblies at the same time. + + Here is how retargeting is implemented in general: + - Symbols from underlying module are substituted with retargeting symbols. + - Symbols from referenced assemblies that can be reused as is (i.e. don't have to be retargeted) are + used as is. + - Symbols from referenced assemblies that must be retargeted are substituted with result of retargeting. + + + + + Owning . + + + + + The underlying , cannot be another . + + + + + The map that captures information about what assembly should be retargeted + to what assembly. Key is the referenced by the underlying module, + value is the corresponding referenced by this module, and corresponding + retargeting map for symbols. + + + + + Retargeted custom attributes + + + + + Constructor. + + + Owning assembly. + + + The underlying ModuleSymbol, cannot be another RetargetingModuleSymbol. + + + + + The underlying ModuleSymbol, cannot be another RetargetingModuleSymbol. + + + + + A helper method for ReferenceManager to set AssemblySymbols for assemblies + referenced by this module. + + + + + Retargeting map from underlying module to this one. + + + + + Retargeting map from underlying module to the retargeting module. + + + + + RetargetingAssemblySymbol owning retargetingModule. + + + + + The underlying ModuleSymbol for retargetingModule. + + + + + The map that captures information about what assembly should be retargeted + to what assembly. Key is the AssemblySymbol referenced by the underlying module, + value is the corresponding AssemblySymbol referenced by the retargeting module, and + corresponding retargeting map for symbols. + + + + + Perform a check whether the type or at least one of its generic arguments + is an explicitly defined local type. The check is performed recursively. + + + + + Represents a type of a RetargetingModuleSymbol. Essentially this is a wrapper around + another NamedTypeSymbol that is responsible for retargeting referenced symbols from one assembly to another. + It can retarget symbols for multiple assemblies at the same time. + + + + + Owning RetargetingModuleSymbol. + + + + + The underlying NamedTypeSymbol, cannot be another RetargetingNamedTypeSymbol. + + + + + Represents a namespace of a RetargetingModuleSymbol. Essentially this is a wrapper around + another NamespaceSymbol that is responsible for retargeting symbols from one assembly to another. + It can retarget symbols for multiple assemblies at the same time. + + + + + Owning RetargetingModuleSymbol. + + + + + The underlying NamespaceSymbol, cannot be another RetargetingNamespaceSymbol. + + + + + Represents a parameter of a RetargetingMethodSymbol. Essentially this is a wrapper around + another ParameterSymbol that is responsible for retargeting symbols from one assembly to another. + It can retarget symbols for multiple assemblies at the same time. + + + + + Retargeted custom attributes + + + + + Owning RetargetingMethodSymbol. + + + + + Owning RetargetingPropertySymbol. + + + + + Owning RetargetingModuleSymbol. + + + + + The underlying PropertySymbol, cannot be another RetargetingPropertySymbol. + + + + + Retargeted custom attributes + + + + + Represents a type parameter in a RetargetingModuleSymbol. Essentially this is a wrapper around + another TypeParameterSymbol that is responsible for retargeting symbols from one assembly to another. + It can retarget symbols for multiple assemblies at the same time. + + + + + Owning RetargetingModuleSymbol. + + + + + The underlying TypeParameterSymbol, cannot be another RetargetingTypeParameterSymbol. + + + + + Retargeted custom attributes + + + + + Represents a Source custom attribute specification + + + + + If the contains any named constructor arguments or default value arguments, + it returns an array representing each argument's source argument index. A value of -1 indicates default value argument. + Otherwise, returns null. + + + + + This method finds an attribute by metadata name and signature. The algorithm for signature matching is similar to the one + in Module.GetTargetAttributeSignatureIndex. Note, the signature matching is limited to primitive types + and System.Type. It will not match an arbitrary signature but it is sufficient to match the signatures of the current set of + well known attributes. + + The symbol which is the target of the attribute + The attribute to match. + + + + Gets the System.Type type symbol from targetSymbol's containing assembly. + + Target symbol on which this attribute is applied. + System.Type type symbol. + + + + Information early-decoded from well-known custom attributes applied on a parameter. + + + + + Information decoded from early well-known custom attributes applied on a property. + + + + + Information decoded from well-known custom attributes applied on a type. + + + + + IsManagedType is simple for most named types: + enums are not managed; + non-enum, non-struct named types are managed; + generic types and their nested types are managed; + type parameters are managed; + all special types have spec'd values (basically, (non-string) primitives) are not managed; + + Only structs are complicated, because the definition is recursive. A struct type is managed + if one of its instance fields is managed. Unfortunately, this can result in infinite recursion. + If the closure is finite, and we don't find anything definitely managed, then we return true. + If the closure is infinite, we disregard all but a representative of any expanding cycle. + + Intuitively, this will only return true if there's a specific type we can point to that is would + be managed even if it had no fields. e.g. struct S { S s; } is not managed, but struct S { S s; object o; } + is because we can point to object. + + + + + Returns a boolean value if we can determine whether the type is managed + without looking at its fields and Unset otherwise. + + + + + An error type, used to represent a byref return in a metadata signature. + + + If we ever decide to support by-ref returns, don't just make this a non-error + type. For consistency with parameters and locals, we should have a bit on the + signature (i.e. on the MethodSymbol). + + + + + This enum describes the types of components that could give + us diagnostics. We shouldn't read the list of diagnostics + until all of these types are accounted for. + + + PEParameterSymbol reserves all completion part bits and uses them to track the completion state and + presence of well known attributes. + + + + + A tuple of TypeParameterSymbol and DiagnosticInfo, created for errors + reported from ConstraintsHelper rather than creating Diagnostics directly. + This decouples constraints checking from syntax and Locations, and supports + callers that may want to create Location instances lazily or not at all. + + + + + Helper methods for generic type parameter constraints. There are two sets of methods: one + set for resolving constraint "bounds" (that is, determining the effective base type, interface set, + etc.), and another set for checking for constraint violations in type and method references. + + Bounds are resolved by calling one of the ResolveBounds overloads. Typically bounds are + resolved by each TypeParameterSymbol at, or before, one of the corresponding properties + (BaseType, Interfaces, etc.) is accessed. Resolving bounds may result in errors (cycles, + inconsistent constraints, etc.) and it is the responsibility of the caller to report any such + errors as declaration errors or use-site errors (depending on whether the type parameter + was from source or metadata) and to ensure bounds are resolved for source type parameters + even if the corresponding properties are never accessed directly. + + Constraints are checked by calling one of the CheckConstraints or CheckAllConstraints + overloads for any generic type or method reference from source. In some circumstances, + references are checked at the time the generic type or generic method is bound and constructed + by the Binder. In those case, it is sufficient to call one of the CheckConstraints overloads + since compound types (such as A<T>.B<U> or A<B<T>>) are checked + incrementally as each part is bound. In other cases however, constraint checking needs to be + delayed to prevent cycles where checking constraints requires binding the syntax that is currently + being bound (such as the constraint in class C<T> where T : C<T>). In those cases, + the caller must lazily check constraints, and since the types may be compound types, it is + necessary to call CheckAllConstraints. + + + + + Determine the effective base type, effective interface set, and set of type + parameters (excluding cycles) from the type parameter constraints. Conflicts + within the constraints and constraint types are returned as diagnostics. + 'inherited' should be true if the type parameters are from an overridden + generic method. In those cases, additional constraint checks are applied. + + + + + Check all generic constraints on the given type and any containing types + (such as A<T> in A<T>.B<U>). This includes checking constraints + on generic types within the type (such as B<T> in A<B<T>[]>). + + + + + Check type parameter constraints for the containing type or method symbol. + + The generic type or method. + Conversions instance. + The map from type parameters to type arguments. + Containing symbol type parameters. + Containing symbol type arguments. + Improves error message detail. + Diagnostics. + Parameters to skip. + + True if the constraints were satisfied, false otherwise. + + + + Return true if the class type has a public parameterless constructor. + + + + + Returns true if type a is encompassed by type b (spec 6.4.3), + and returns false otherwise. + + + + + A named type symbol that results from substituting a new owner for a type declaration. + + + + + A generic named type symbol that has been constructed with type arguments distinct from its own type parameters. + + + + + Substitutes all occurrences of dynamic type with Object type. + + + + + When indexer overload resolution fails, we have two options: + 1) Create a BoundBadExpression with the candidates as child nodes; + 2) Create a BoundIndexerAccess with the error flag set. + + Option 2 is preferable, because it retains information about the arguments + (names, ref kind, etc), and results in better output from flow analysis. + However, we can't create a BoundIndexerAccess with a null indexer symbol, + so we create an ErrorPropertySymbol to fill the gap. + + + + + An ErrorSymbol is used when the compiler cannot determine a symbol object to return because + of an error. For example, if a field is declared "Foo x;", and the type "Foo" cannot be + found, an ErrorSymbol is returned when asking the field "x" what it's type is. + + + + + The underlying error. + + + + + Summary of the reason why the type is bad. + + + + + Called by to perform substitution + on types with TypeKind ErrorType. The general pattern is to use the type map + to perform substitution on the wrapped type, if any, and then construct a new + error type symbol from the result (if there was a change). + + + + + When constructing this ErrorTypeSymbol, there may have been symbols that seemed to + be what the user intended, but were unsuitable. For example, a type might have been + inaccessible, or ambiguous. This property returns the possible symbols that the user + might have intended. It will return no symbols if no possible symbols were found. + See the CandidateReason property to understand why the symbols were unsuitable. + + + + + If CandidateSymbols returns one or more symbols, returns the reason that those + symbols were not chosen. Otherwise, returns None. + + + + + Returns true if this type is known to be a reference type. It is never the case that + IsReferenceType and IsValueType both return true. However, for an unconstrained type + parameter, IsReferenceType and IsValueType will both return false. + + + + + Returns true if this type is known to be a value type. It is never the case that + IsReferenceType and IsValueType both return true. However, for an unconstrained type + parameter, IsReferenceType and IsValueType will both return false. + + + + + Collection of names of members declared within this type. + + + + + Get all the members of this symbol. + + An ImmutableArray containing all the members of this symbol. If this symbol has no members, + returns an empty ImmutableArray. Never returns Null. + + + + Get all the members of this symbol that have a particular name. + + An ImmutableArray containing all the members of this symbol with the given name. If there are + no members with this name, returns an empty ImmutableArray. Never returns Null. + + + + Get all the members of this symbol that are types. + + An ImmutableArray containing all the types that are members of this symbol. If this symbol has no type members, + returns an empty ImmutableArray. Never returns null. + + + + Get all the members of this symbol that are types that have a particular name, of any arity. + + An ImmutableArray containing all the types that are members of this symbol with the given name. + If this symbol has no type members with this name, + returns an empty ImmutableArray. Never returns null. + + + + Get all the members of this symbol that are types that have a particular name and arity + + An ImmutableArray containing all the types that are members of this symbol with the given name and arity. + If this symbol has no type members with this name and arity, + returns an empty ImmutableArray. Never returns null. + + + + Gets the kind of this symbol. + + + + + Gets the kind of this type. + + + + + Get the symbol that logically contains this symbol. + + + + + Gets the locations where this symbol was originally defined, either in source or + metadata. Some symbols (for example, partial classes) may be defined in more than one + location. + + + + + Returns the arity of this type, or the number of type parameters it takes. + A non-generic type has zero arity. + + + + + Gets the name of this symbol. Symbols without a name return the empty string; null is + never returned. + + + + + Returns the type arguments that have been substituted for the type parameters. + If nothing has been substituted for a give type parameters, + then the type parameter itself is consider the type argument. + + + + + Returns the type parameters that this type has. If this is a non-generic type, + returns an empty ImmutableArray. + + + + + Returns the type symbol that this type was constructed from. This type symbol + has the same containing type (if any), but has type arguments that are the same + as the type parameters (although its containing type might not). + + + + + Implements visitor pattern. + + + + + Get this accessibility that was declared on this symbol. For symbols that do not have + accessibility declared on them, returns NotApplicable. + + + + + Returns true if this symbol is "static"; i.e., declared with the "static" modifier or + implicitly static. + + + + + Returns true if this symbol was declared as requiring an override; i.e., declared with + the "abstract" modifier. Also returns true on a type declared as "abstract", all + interface types, and members of interface types. + + + + + Returns true if this symbol was declared to override a base class member and was also + sealed from further overriding; i.e., declared with the "sealed" modifier. Also set for + types that do not allow a derived class (declared with "sealed" or "static" or "struct" + or "enum" or "delegate"). + + + + + An error type, used to represent the type of a type binding + operation when binding fails. + + + + + If (we believe) we know which symbol the user intended, then we should retain that information + in the corresponding error symbol - it can be useful for deciding how to handle the error. + For example, we might want to know whether (we believe) the error type was supposed to be an + interface, so that we can put it in a derived type's interface list, rather than in the base + type slot. + + Sometimes we will return the original definition of the intended symbol. For example, if we see + ]]> and we have an IFoo with a different arity or accessibility + (e.g. ]]> was constructed from an error symbol based on ]]>), + then we'll return ]]>, rather than trying to construct a corresponding closed + type (which may not be difficult/possible in the case of nested types or mismatched arities). + + NOTE: Any non-null type symbol returned is guaranteed not to be an error type. + + + TypeSymbolExtensions.GetNonErrorGuess is a more discoverable version of this functionality. + However, the real definition is in this class so that it can access the private field + nonErrorGuessType. + + + + + Represents a field initializer, a property initializer, or a global statement in script code. + + + + + The field being initialized (possibly a backing field of a property), or null if this is a top-level statement in script code. + + + + + A reference to or top-level in script code. + + + + + A sum of widths of spans of all preceding initializers + (instance and static initializers are summed separately, and trivias are not counted). + + + + + Represents a label in method body + + + + + Returns false because label can't be defined externally. + + + + + Returns false because label can't be sealed. + + + + + Returns false because label can't be abstract. + + + + + Returns false because label can't be overridden. + + + + + Returns false because label can't be virtual. + + + + + Returns false because label can't be static. + + + + + Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. + This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. + + + + + Returns 'NotApplicable' because label can't be used outside the member body. + + + + + Gets the locations where the symbol was originally defined, either in source or + metadata. Some symbols (for example, partial classes) may be defined in more than one + location. + + + + + Gets the immediately containing symbol of the . + It should be the containing the label in its body. + + + + + Gets the immediately containing symbol of the . + It should be the containing the label in its body. + + + + + Returns value 'Label' of the + + + + + A structure used to lexically order symbols. For performance, it's important that this be + a STRUCTURE, and be able to be returned from a symbol without doing any additional allocations (even + if nothing is cached yet.) + + + + + Compare two lexical sort keys in a compilation. + + + + + Specifies the syntax that a user defined variable comes from. + + + + + The local is not user defined nor it is a copy of a user defined local (e.g. with a substituted type). + Check the value of for the kind of synthesized variable. + + + + + User defined local variable declared by . + + + + + User defined local constant declared by . + + + + + User defined local variable declared by in . + + + + + User defined local variable declared by in . + + + + + User defined local variable declared by . + + + + + User defined local variable declared by in . + + + + + User defined local variable declared by . + + + + + Represents a local variable in a method body. + + + + + Gets the type of this local. + + + + + WARN WARN WARN: If you access this via the semantic model, things will break (since the initializer may not have been bound). + + Whether or not this local is pinned (i.e. the type will be emitted with the "pinned" modifier). + + + Superficially, it seems as though this should always be the same as DeclarationKind == LocalDeclarationKind.Fixed. + Unfortunately, when we fix a string expression, it is not the declared local (e.g. char*) but a synthesized temp (string) + that is pinned. + + + + + Returns false because local variable can't be defined externally. + + + + + Returns false because local variable can't be sealed. + + + + + Returns false because local variable can't be abstract. + + + + + Returns false because local variable can't be overridden. + + + + + Returns false because local variable can't be virtual. + + + + + Returns false because local variable can't be declared as static in C#. + + + + + Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. + This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. + + + + + Returns 'NotApplicable' because local variable can't be used outside the member body.. + + + + + Returns value 'Local' of the + + + + + Returns true if this local variable was declared in a catch clause. + + + + + Returns true if this local variable was declared as "const" (i.e. is a constant declaration). + + + + + Returns true if the local variable is declared in resource-acquisition of a 'using statement'; + otherwise false + + + + using (var localVariable = new StreamReader("C:\\Temp\\MyFile.txt")) { ... } + + + + + + Returns true if the local variable is declared in fixed-pointer-initializer (in unsafe context) + + + + + Returns true if this local variable is declared in for-initializer + + + + + Returns true if this local variable is declared as iteration variable + + + + + Returns the syntax node that declares the variable. + + + All user-defined and long-lived synthesized variables must return a reference to a node that is + tracked by the EnC diffing algorithm. For example, for variable + the declarator is the node. + + The location of the declarator is used to calculate during emit. + + + + + Returns false if the field wasn't declared as "const", or constant value was omitted or erroneous. + True otherwise. + + + + + If IsConst returns true, then returns the constant value of the field or enum member. If IsConst returns + false, then returns null. + + + + + Returns true if the local symbol was compiler generated. + + + + + + C# 4.0 §10.6: The name, the type parameter list and the formal parameter list of a method define + the signature (§3.6) of the method. Specifically, the signature of a method consists of its + name, the number of type parameters and the number, modifiers, and types of its formal + parameters. For these purposes, any type parameter of the method that occurs in the type of + a formal parameter is identified not by its name, but by its ordinal position in the type + argument list of the method. The return type is not part of a method's signature, nor are + the names of the type parameters or the formal parameters. + + + C# 4.0 §3.6: For the purposes of signatures, the types object and dynamic are considered the + same. + + + C# 4.0 §3.6: We implement the rules for ref/out by mapping both to ref. The caller (i.e. + checking for proper overrides or partial methods, etc) should check that ref/out are + consistent. + + + + + + This instance is used when trying to determine if one member explicitly implements another, + according the C# definition. + The member signatures are compared without regard to name (including the interface part, if any) + and the return types must match. + + + + + This instance is used when trying to determine if one member implicitly implements another, + according to the C# definition. + The member names, parameters, and (return) types must match. Custom modifiers are ignored. + + + One would expect this comparer to have requireSourceMethod = true, but it doesn't because (for source types) + we allow inexact matching of custom modifiers when computing implicit member implementations. Consider the + following scenario: interface I has a method M with custom modifiers C1, source type ST includes I in its + interface list but has no method M, and metadata type MT has a method M with custom modifiers C2. + In this scenario, we want to compare I.M to MT.M without regard to custom modifiers, because if C1 != C2, + we can just synthesize an explicit implementation of I.M in ST that calls MT.M. + + + + + This instance is used as a fallback when it is determined that one member does not implicitly implement + another. It applies a looser check to determine whether the proposed implementation should be reported + as "close". + + + + + This instance is used to determine if two C# member declarations in source conflict with each other. + Names, arities, and parameter types are considered. + Return types, type parameter constraints, custom modifiers, and parameter ref kinds, etc are ignored. + + + This does the same comparison that MethodSignature used to do. + + + + + This instance is used to check whether one member overrides another, according to the C# definition. + + + + + This instance is used to check whether one property or event overrides another, according to the C# definition. + NOTE: C# ignores accessor member names. + CAVEAT: considers return types so that getters and setters will be treated the same. + + + + + Same as except that it pays attention to custom modifiers and return type. + Normally, the return type isn't considered during overriding, but this comparer is actually used to find + exact matches (i.e. before tie-breaking takes place amongst close matches). + + + + + If this returns false, then the real override comparer (whichever one is appropriate for the scenario) + will also return false. + + + + + This instance is intended to reflect the definition of signature equality used by the runtime + (ECMA-335, Partition I, §8.6.1.6 Signature Matching). + It considers return type, name, parameters, calling convention, and custom modifiers, but ignores + the difference between and . + + + + + Same as , but distinguishes between ref and out. During override resolution, + if we find two methods that match except for ref/out, we want to prefer the one that matches, even + if the runtime doesn't. + + + + + This instance is the same as RuntimeSignatureComparer. + CONSIDER: just use RuntimeSignatureComparer? + + + + + This instance is used to search for members that have the same name, parameters, (return) type, and constraints (if any) + according to the C# definition. Custom modifiers are ignored. + + + + + This instance is used to search for members that have identical signatures in every regard. + + + + + This instance is used for performing approximate overload resolution of documentation + comment cref attributes. It ignores the name, because the candidates were all found by lookup. + + + + + This instance is used as a key in the lambda return type inference. + We basically only interested in parameters since inference will set the return type to null. + + + + + Returns true if the first set of constraint types + is a subset of the second set. + + + + + SymbolExtensions for member symbols. + + + + + Get the parameters of a member symbol. Should be a method, property, or event. + + + + + Get the types of the parameters of a member symbol. Should be a method, property, or event. + + + + + Get the ref kinds of the parameters of a member symbol. Should be a method, property, or event. + + + + + Count the number of custom modifiers in/on the return type + and parameters of the specified method. + + + + + Count the number of custom modifiers in/on the type + and parameters (for indexers) of the specified property. + + + + + Return the arity of a member. + + + + + NOTE: every struct has a public parameterless constructor either used-defined or default one + + + + + default zero-init constructor symbol is added to a struct when it does not define + its own parameterless public constructor. + We do not emit this constructor and do not call it + + + + + If the event has a AddMethod, return that. Otherwise check the overridden + event, if any. Repeat for each overridden event. + + + This method exists to mimic the behavior of GetOwnOrInheritedGetMethod, but it + should only ever look at the overridden event in error scenarios. + + + + + If the event has a RemoveMethod, return that. Otherwise check the overridden + event, if any. Repeat for each overridden event. + + + This method exists to mimic the behavior of GetOwnOrInheritedSetMethod, but it + should only ever look at the overridden event in error scenarios. + + + + + Does the compilation this symbol belongs to output to a winmdobj? + + + + + + + Returns a constructed named type symbol if 'type' is generic, otherwise just returns 'type' + + + + + Returns true if the members of superType are accessible from subType due to inheritance. + + + + + The immediately containing namespace or named type, or null + if the containing symbol is neither a namespace or named type. + + + + + Returns true if all type parameter references within the given + type belong to containingSymbol or its containing types. + + + + + Returns true if all type parameter references within the given + types belong to containingSymbol or its containing types. + + + + + A MergedNamespaceSymbol represents a namespace that merges the contents of two or more other + namespaces. Any sub-namespaces with the same names are also merged if they have two or more + instances. + + Merged namespaces are used to merge the symbols from multiple metadata modules and the + source "module" into a single symbol tree that represents all the available symbols. The + compiler resolves names against this merged set of symbols. + + Typically there will not be very many merged namespaces in a Compilation: only the root + namespaces and namespaces that are used in multiple referenced modules. (Microsoft, System, + System.Xml, System.Diagnostics, System.Threading, ...) + + + + + Create a possibly merged namespace symbol. If only a single namespace is passed it, it + is just returned directly. If two or more namespaces are passed in, then a new merged + namespace is created with the given extent and container. + + The namespace extent to use, IF a merged namespace is created. + The containing namespace to used, IF a merged + namespace is created. + One or more namespaces to merged. If just one, then it + is returned. The merged namespace symbol may hold onto the array. + An optional name to give the resulting namespace. + A namespace symbol representing the merged namespace. + + + + Method that is called from the CachingLookup to lookup the children of a given name. + Looks in all the constituent namespaces. + + + + + Method that is called from the CachingLookup to get all child names. Looks in all + constituent namespaces. + + + + + Represents source or metadata assembly. + + + + + + An array of cached Cor types defined in this assembly. + Lazily filled by GetSpecialType method. + + + + + + How many Cor types have we cached so far. + + + + + Lookup declaration for predefined CorLib type in this Assembly. + + + + + + + + Register declaration of predefined CorLib type in this Assembly. + + + + + + Continue looking for declaration of predefined CorLib type in this Assembly + while symbols for new type declarations are constructed. + + + + + Not yet known value is represented by ErrorTypeSymbol.UnknownResultType + + + + + Lookup member declaration in predefined CorLib type in this Assembly. Only valid if this + assembly is the Cor Library + + + + + Determine whether this assembly has been granted access to . + Assumes that the public key has been determined. The result will be cached. + + + + + + + + If the extension method is applicable based on the "this" argument type, return + the method constructed with the inferred type arguments. If the method is not an + unconstructed generic method, type inference is skipped. If the method is not + applicable, or if constraints when inferring type parameters from the "this" type + are not satisfied, the return value is null. + + + + + The runtime considers a method to be a finalizer (i.e. a method that should be invoked + by the garbage collector) if it (directly or indirectly) overrides System.Object.Finalize. + + + As an optimization, return true immediately for metadata methods with MethodKind + Destructor - they are guaranteed to be finalizers. + + Method to inspect. + This method is used to determine the method kind of + a PEMethodSymbol, so we may need to avoid using MethodKind until we move on to a different + MethodSymbol. + + + + Returns a constructed method symbol if 'method' is generic, otherwise just returns 'method' + + + + + Some kinds of methods are not considered to be hideable by certain kinds of members. + Specifically, methods, properties, and types cannot hide constructors, destructors, + operators, conversions, or accessors. + + + + + Some kinds of methods are never considered hidden by methods, properties, or types + (constructors, destructors, operators, conversions, and accessors). + + + + + Returns whether this method is async and returns void. + + + + + Returns whether this method is async and returns a task. + + + + + Returns whether this method is async and returns a generic task. + + + + + A is a special kind of that represents + an assembly that couldn't be found. + + + + + AssemblySymbol to represent missing, for whatever reason, CorLibrary. + The symbol is created by ReferenceManager on as needed basis and is shared by all compilations + with missing CorLibraries. + + + + + An array of cached Cor types defined in this assembly. + Lazily filled by GetDeclaredSpecialType method. + + + + + + Lookup declaration for predefined CorLib type in this Assembly. Only should be + called if it is know that this is the Cor Library (mscorlib). + + + + + + A is a special kind of that represents + a type symbol that was attempted to be read from metadata, but couldn't be + found, because: + a) The metadata file it lives in wasn't referenced + b) The metadata file was referenced, but didn't contain the type + c) The metadata file was referenced, contained the correct outer type, but + didn't contains a nested type in that outer type. + + + + + Get the arity of the missing type. + + + + + Represents not nested missing type. + + + + + Either , , or -1 if not initialized. + + + + + This is the FULL namespace name (e.g., "System.Collections.Generic") + of the type that couldn't be found. + + + + + Represents nested missing type. + + + + + A is a special kind of that represents + a module that couldn't be found. + + + + + A is a special kind of that represents + a namespace that couldn't be found. + + + + + Represents a module within an assembly. Every assembly contains one or more modules. + + + + + Returns a NamespaceSymbol representing the global (root) namespace, with + module extent, that can be used to browse all of the symbols defined in this module. + + + + + Returns the containing assembly. Modules are always directly contained by an assembly, + so this property always returns the same as ContainingSymbol. + + + + + Returns value 'NetModule' of the + + + + + Module's ordinal within containing assembly's Modules array. + 0 - for a source module, etc. + -1 - for a module that doesn't have containing assembly, or has it, but is not part of Modules array. + + + + + Target architecture of the machine. + + + + + Indicates that this PE file makes Win32 calls. See CorPEKind.pe32BitRequired for more information (http://msdn.microsoft.com/en-us/library/ms230275.aspx). + + + + + Does this symbol represent a missing module. + + + + + Returns 'NotApplicable' + + + + + Returns false because module can't be declared as 'static'. + + + + + Returns false because module can't be virtual. + + + + + Returns false because module can't be overridden. + + + + + Returns false because module can't be abstract. + + + + + Returns false because module can't be sealed. + + + + + Returns false because module can't be defined externally. + + + + + Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. + This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. + + + + + Returns an array of assembly identities for assemblies referenced by this module. + Items at the same position from ReferencedAssemblies and from ReferencedAssemblySymbols + correspond to each other. + + + + + Returns an array of assembly identities for assemblies referenced by this module. + Items at the same position from GetReferencedAssemblies and from GetReferencedAssemblySymbols + should correspond to each other. + + The array and its content is provided by ReferenceManager and must not be modified. + + + + + + Returns an array of AssemblySymbol objects corresponding to assemblies referenced + by this module. Items at the same position from ReferencedAssemblies and + from ReferencedAssemblySymbols correspond to each other. + + + + + Returns an array of AssemblySymbol objects corresponding to assemblies referenced + by this module. Items at the same position from GetReferencedAssemblies and + from GetReferencedAssemblySymbols should correspond to each other. If reference is + not resolved by compiler, GetReferencedAssemblySymbols returns MissingAssemblySymbol in the + corresponding item. + + The array and its content is provided by ReferenceManager and must not be modified. + + + + + A helper method for ReferenceManager to set assembly identities for assemblies + referenced by this module and corresponding AssemblySymbols. + + A description of the assemblies referenced by this module. + + Source assembly that triggered creation of this module symbol. + For debug purposes only, this assembly symbol should not be persisted within + this module symbol because the module can be shared across multiple source + assemblies. This method will only be called for the first one. + + + + + True if this module has any unified references. + + + + + Returns a unification use-site error (if any) for a symbol contained in this module + that is referring to a specified . + + + If an assembly referenced by this module isn't exactly matching any reference given to compilation + the Assembly Manager might decide to use another reference if it matches except for version + (it unifies the version with the existing reference). + + + + + Lookup a top level type referenced from metadata, names should be + compared case-sensitively. + + + Full type name, possibly with generic name mangling. + + + Symbol for the type, or MissingMetadataSymbol if the type isn't found. + + + + + + Returns true if there is any applied CompilationRelaxationsAttribute assembly attribute for this module. + + + + + Returns true if there is any applied RuntimeCompatibilityAttribute assembly attribute for this module. + + + + + Default char set for contained types, or null if not specified. + + + + + Given a namespace symbol, returns the corresponding module specific namespace symbol + + + + + If this symbol represents a metadata module returns the underlying . + + Otherwise, this returns null. + + + + + Utility class for substituting actual type arguments for formal generic type parameters. + + + + + A NamespaceExtent represents whether a namespace contains types and sub-namespaces from a + particular module, assembly, or merged across all modules (source and metadata) in a + particular compilation. + + + + + Returns what kind of extent: Module, Assembly, or Compilation. + + + + + If the Kind is ExtendKind.Module, returns the module symbol that this namespace + encompasses. Otherwise throws InvalidOperationException. + + + + + If the Kind is ExtendKind.Assembly, returns the assembly symbol that this namespace + encompasses. Otherwise throws InvalidOperationException. + + + + + If the Kind is ExtendKind.Compilation, returns the compilation symbol that this + namespace encompasses. Otherwise throws InvalidOperationException. + + + + + Create a NamespaceExtent that represents a given ModuleSymbol. + + + + + Create a NamespaceExtent that represents a given AssemblySymbol. + + + + + Create a NamespaceExtent that represents a given Compilation. + + + + + Represents either a namespace or a type. + + + + + Returns true if this symbol is a namespace. If it is not a namespace, it must be a type. + + + + + Returns true if this symbols is a type. Equivalent to !IsNamespace. + + + + + Returns true if this symbol is "virtual", has an implementation, and does not override a + base class member; i.e., declared with the "virtual" modifier. Does not return true for + members declared as abstract or override. + + + Always returns false. + + + + + Returns true if this symbol was declared to override a base class member; i.e., declared + with the "override" modifier. Still returns true if member was declared to override + something, but (erroneously) no member to override exists. + + + Always returns false. + + + + + Returns true if this symbol has external implementation; i.e., declared with the + "extern" modifier. + + + Always returns false. + + + + + Get all the members of this symbol. + + An ImmutableArray containing all the members of this symbol. If this symbol has no members, + returns an empty ImmutableArray. Never returns null. + + + + Get all the members of this symbol. The members may not be in a particular order, and the order + may not be stable from call-to-call. + + An ImmutableArray containing all the members of this symbol. If this symbol has no members, + returns an empty ImmutableArray. Never returns null. + + + + Get all the members of this symbol that have a particular name. + + An ImmutableArray containing all the members of this symbol with the given name. If there are + no members with this name, returns an empty ImmutableArray. Never returns null. + + + + Get all the members of this symbol that are types. The members may not be in a particular order, and the order + may not be stable from call-to-call. + + An ImmutableArray containing all the types that are members of this symbol. If this symbol has no type members, + returns an empty ImmutableArray. Never returns null. + + + + Get all the members of this symbol that are types. + + An ImmutableArray containing all the types that are members of this symbol. If this symbol has no type members, + returns an empty ImmutableArray. Never returns null. + + + + Get all the members of this symbol that are types that have a particular name, of any arity. + + An ImmutableArray containing all the types that are members of this symbol with the given name. + If this symbol has no type members with this name, + returns an empty ImmutableArray. Never returns null. + + + + Get all the members of this symbol that are types that have a particular name and arity + + An IEnumerable containing all the types that are members of this symbol with the given name and arity. + If this symbol has no type members with this name and arity, + returns an empty IEnumerable. Never returns null. + + + + Get a source type symbol for the given declaration syntax. + + Null if there is no matching declaration. + + + + Get a source type symbol for the given declaration syntax. + + Null if there is no matching declaration. + + + + Get a source type symbol of given name, arity and kind. If a tree and syntax are provided, restrict the results + to those that are declared within the given syntax. + + Null if there is no matching declaration. + + + + Lookup an immediately nested type referenced from metadata, names should be + compared case-sensitively. + + + Simple type name, possibly with generic name mangling. + + + Symbol for the type, or MissingMetadataSymbol if the type isn't found. + + + + + Finds types or namespaces described by a qualified name. + + Sequence of simple plain names. + + A set of namespace or type symbols with given qualified name (might comprise of types with multiple generic arities), + or an empty set if the member can't be found (the qualified name is ambiguous or the symbol doesn't exist). + + + "C.D" matches C.D, C{T}.D, C{S,T}.D{U}, etc. + + + + + A is a special kind of that represents + an assembly that is not missing, i.e. the "real" thing. + + + + + This is a cache similar to the one used by MetaImport::GetTypeByName + in native compiler. The difference is that native compiler pre-populates + the cache when it loads types. Here we are populating the cache only + with things we looked for, so that next time we are looking for the same + thing, the lookup is fast. This cache also takes care of TypeForwarders. + Gives about 8% win on subsequent lookups in some scenarios. + + + + + + Does this symbol represent a missing assembly. + + + + + Gets the merged root namespace that contains all namespaces and types defined in the modules + of this assembly. If there is just one module in this assembly, this property just returns the + GlobalNamespace of that module. + + + + + Lookup a top level type referenced from metadata, names should be + compared case-sensitively. Detect cycles during lookup. + + + Full type name, possibly with generic name mangling. + + + List of assemblies lookup has already visited (since type forwarding can introduce cycles). + + + Take forwarded types into account. + + + + + For test purposes only. + + + + + For test purposes only. + + + + + A is a special kind of that represents + a module that is not missing, i.e. the "real" thing. + + + + + An array of objects corresponding to assemblies directly referenced by this module. + + + The contents are provided by ReferenceManager and may not be modified. + + + + + Does this symbol represent a missing module. + + + + + Returns an array of assembly identities for assemblies referenced by this module. + Items at the same position from GetReferencedAssemblies and from GetReferencedAssemblySymbols + should correspond to each other. + + + + + Returns an array of AssemblySymbol objects corresponding to assemblies referenced + by this module. Items at the same position from GetReferencedAssemblies and + from GetReferencedAssemblySymbols should correspond to each other. If reference is + not resolved by compiler, GetReferencedAssemblySymbols returns MissingAssemblySymbol in the + corresponding item. + + + + + A helper method for ReferenceManager to set assembly identities for assemblies + referenced by this module and corresponding AssemblySymbols. + + + + + Lookup a top level type referenced from metadata, names should be + compared case-sensitively. + + + Full type name, possibly with generic name mangling. + + + Symbol for the type, or MissingMetadataSymbol if the type isn't found. + + + + + + A NoPiaAmbiguousCanonicalTypeSymbol is a special kind of ErrorSymbol that represents a NoPia + embedded type symbol that was attempted to be substituted with canonical type, but the + canonical type was ambiguous. + + + + + A NoPiaIllegalGenericInstantiationSymbol is a special kind of ErrorSymbol that represents a + generic type instantiation that cannot cross assembly boundaries according to NoPia rules. + + + + + A NoPiaMissingCanonicalTypeSymbol is a special kind of ErrorSymbol that represents a NoPia + embedded type symbol that was attempted to be substituted with canonical type, but the + canonical type couldn't be found. + + + + + Initialize the ObsoleteAttributeData by fetching attributes and decoding ObsoleteAttributeData. This can be + done for Metadata symbol easily whereas trying to do this for source symbols could result in cycles. + + + + + Get the ObsoleteAttributeData by fetching attributes and decoding ObsoleteAttributeData. This can be + done for Metadata symbol easily whereas trying to do this for source symbols could result in cycles. + + + + + This method checks to see if the given symbol is Obsolete or if any symbol in the parent hierarchy is Obsolete. + + + True if some symbol in the parent hierarchy is known to be Obsolete. Unknown if any + symbol's Obsoleteness is Unknown. False, if we are certain that no symbol in the parent + hierarchy is Obsolete. + + + + + Create a diagnostic for the given symbol. This could be an error or a warning based on + the ObsoleteAttribute's arguments. + + + + + Encapsulates the MakeOverriddenOrHiddenMembers functionality for methods, properties (including indexers), + and events. + + + + + Walk up the type hierarchy from ContainingType and list members that this + member either overrides (accessible members with the same signature, if this + member is declared "override") or hides (accessible members with the same name + but different kinds, plus members that would be in the overrides list if + this member were not declared "override"). + + Members in the overridden list may be non-virtual or may have different + accessibilities, types, accessors, etc. They are really candidates to be + overridden. + + Members in the hidden list are definitely hidden. + + Members in the runtime overridden list are indistinguishable from the members + in the overridden list from the point of view of the runtime (see + FindOtherOverriddenMethodsInContainingType for details). + + + In the presence of non-C# types, the meaning of "same signature" is rather + complicated. If this member isn't from source, then it refers to the runtime's + notion of signature (i.e. including return type, custom modifiers, etc). + If this member is from source, then the process is (conceptually) as follows. + + 1) Walk up the type hierarchy, recording all matching members with the same + signature, ignoring custom modifiers and return type. Stop if a hidden + member is encountered. + 2) Apply the following "tie-breaker" rules until you have at most one member, + a) Prefer members in more derived types. + b) Prefer an exact custom modifier match (i.e. none, for a source member). + c) Prefer fewer custom modifiers (values/positions don't matter, just count). + d) Prefer earlier in GetMembers order (within the same type). + 3) If a member remains, search its containing type for other members that + have the same C# signature (overridden members) or runtime signature + (runtime overridden members). + + In metadata, properties participate in overriding only through their accessors. + That is, property/event accessors may implicitly or explicitly override other methods + and a property/event can be considered to override another property/event if its accessors + override those of the other property/event. + This implementation (like Dev10) will not follow that approach. Instead, it is + based on spec section 10.7.5, which treats properties as entities in their own + right. If all property/event accessors have conventional names in metadata and nothing + "unusual" is done with explicit overriding, this approach should produce the same + results as an implementation based on accessor overriding. + + + + + In the CLI, accessors are just regular methods and their overriding/hiding rules are the same as for + regular methods. In C#, however, accessors are intimately connected with their corresponding properties. + Rather than walking up the type hierarchy from the containing type of this accessor, looking for members + with the same name, MakePropertyAccessorOverriddenOrHiddenMembers delegates to the associated property. + For an accessor to hide a member, the hidden member must be a corresponding accessor on a property hidden + by the associated property. For an accessor to override a member, the overridden member must be a + corresponding accessor on a property (directly or indirectly) overridden by the associated property. + + Example 1: + + public class A { public virtual int P { get; set; } } + public class B : A { public override int P { get { return 1; } } } //get only + public class C : B { public override int P { set { } } } // set only + + C.P.set overrides A.P.set because C.P.set is the setter of C.P, which overrides B.P, + which overrides A.P, which has A.P.set as a setter. + + Example 2: + + public class A { public virtual int P { get; set; } } + public class B : A { public new virtual int P { get { return 1; } } } //get only + public class C : B { public override int P { set { } } } // set only + + C.P.set does not override any method because C.P overrides B.P, which has no setter + and does not override a property. + + This accessor. + The property associated with this accessor. + Members overridden or hidden by this accessor. + + This method is intended to return values consistent with the definition of C#, which + may differ from the actual meaning at runtime. + + Note: we don't need a different path for interfaces - Property.OverriddenOrHiddenMembers handles that. + + + + + In the CLI, accessors are just regular methods and their overriding/hiding rules are the same as for + regular methods. In C#, however, accessors are intimately connected with their corresponding events. + Rather than walking up the type hierarchy from the containing type of this accessor, looking for members + with the same name, MakeEventAccessorOverriddenOrHiddenMembers delegates to the associated event. + For an accessor to hide a member, the hidden member must be a corresponding accessor on a event hidden + by the associated event. For an accessor to override a member, the overridden member must be a + corresponding accessor on a event (directly or indirectly) overridden by the associated event. + + This accessor. + The event associated with this accessor. + Members overridden or hidden by this accessor. + + This method is intended to return values consistent with the definition of C#, which + may differ from the actual meaning at runtime. + + Note: we don't need a different path for interfaces - Event.OverriddenOrHiddenMembers handles that. + + CONSIDER: It is an error for an event to have only one accessor. Currently, we mimic the behavior for + properties, for consistency, but an alternative approach would be to say that nothing is overridden. + + CONSIDER: is there a way to share code with MakePropertyAccessorOverriddenOrHiddenMembers? + + + + + There are two key reasons why interface overriding/hiding is different from class overriding/hiding: + 1) interface members never override other members; and + 2) interfaces can extend multiple interfaces. + The first difference doesn't require any special handling - as long as the members have IsOverride=false, + the code for class overriding/hiding does the right thing. + The second difference is more problematic. For one thing, an interface member can hide a different member in + each base interface. We only report the first one, but we need to expose all of them in the API. More importantly, + multiple inheritance raises the possibility of diamond inheritance. Spec section 13.2.5, Interface member access, + says: "The intuitive rule for hiding in multiple-inheritance interfaces is simply this: If a member is hidden in any + access path, it is hidden in all access paths." For example, consider the following interfaces: + + interface I0 { void M(); } + interface I1 : I0 { void M(); } + interface I2 : I0, I1 { void M(); } + + I2.M does not hide I0.M, because it is already hidden by I1.M. To make this work, we need to traverse the graph + of ancestor interfaces in topological order and flag ones later in the enumeration that are hidden along some path. + + + See SymbolPreparer::checkIfaceHiding. + + + + + Look for overridden or hidden members in a specific type. + + Member that is hiding or overriding. + True if member is from the current compilation. + The type that contains member (member.ContainingType). + The type to search. + + A member with the same signature if currTypeHasExactMatch is true, + a member with (a minimal number of) different custom modifiers if there is one, + and null otherwise. + True if there's a member with the same name and kind that is not a match. + Hidden members (same name, different kind) will be added to this builder. + + There is some similarity between this member and TypeSymbol.FindPotentialImplicitImplementationMethodDeclaredInType. + When making changes to this member, think about whether or not they should also be applied in TypeSymbol. + + In incorrect or imported code, it is possible that both currTypeBestMatch and hiddenBuilder will be populated. + + + + + If representative member is non-null and is contained in a constructed type, then find + other members in the same type with the same signature. If this is an override member, + add them to the overridden and runtime overridden lists. Otherwise, add them to the + hidden list. + + + + + Some kinds of methods are not considered to be hideable by certain kinds of members. + Specifically, methods, properties, and types cannot hide constructors, destructors, + operators, conversions, or accessors. + + + + + Having found the best member to override, we want to find members with the same signature on the + best member's containing type. + + + The member that we consider to be overridden (may have different custom modifiers from the overriding member). + Assumed to already be in the overridden and runtime overridden lists. + + + If the best match was based on the custom modifier count, rather than the custom modifiers themselves + (because the overriding member is in the current compilation), then we should use the count when determining + whether the override is ambiguous. + + + If the declaring type is constructed, it's possible that two (or more) members have the same signature + (including custom modifiers). Return a list of such members so that we can report the ambiguity. + + + If the declaring type is constructed, it's possible that two (or more) members have the same signature + (including custom modifiers) in metadata (no ref/out distinction). Return a list of such members so + that we can report the ambiguity. + + Even in a non-generic type, it's possible for two indexers to have the same signature. For example, + this would be the case if the default member of a type is "get_Item" and indexers "A" and "B", + with the same signature, both have an indexer called "get_Item". + + From: SymbolPreparer.cpp + DevDiv Bugs 115384: Both out and ref parameters are implemented as references. In addition, out parameters are + decorated with OutAttribute. In CLR when a signature is looked up in virtual dispatch, CLR does not distinguish + between these to parameter types. The choice is the last method in the vtable. Therefore we check and warn if + there would potentially be a mismatch in CLRs and C#s choice of the overridden method. Unfortunately we have no + way of communicating to CLR which method is the overridden one. We only run into this problem when the + parameters are generic. + + + + + Having found that we are hiding a method with exactly the same signature + (including custom modifiers), we want to find methods with the same signature + on the declaring type because they will also be hidden. + (If the declaring type is constructed, it's possible that two or more + methods have the same signature (including custom modifiers).) + (If the representative member is an indexer, it's possible that two or more + properties have the same signature (including custom modifiers, even in a + non-generic type). + + + This kind of the hiding member. + + + The member that we consider to be hidden (must have exactly the same custom modifiers as the hiding member). + Assumed to already be in hiddenBuilder. + + + Will have all other members with the same signature (including custom modifiers) as + representativeMember added. + + + + + Given a method, find a method that it overrides from the perspective of the CLI. + Key differences from C#: non-virtual methods are ignored, the RuntimeSignatureComparer + is used (i.e. consider return types, ignore ref/out distinction). + + + WARN: Must not check method.MethodKind - PEMethodSymbol.ComputeMethodKind uses this method. + NOTE: Does not check whether the given method will be marked "newslot" in metadata (which + would indicate that it does not override anything). + WARN: If the method may override a source method and declaration diagnostics have yet to + be computed, then it is important to pass ignoreInterfaceImplementationChanges: true + (see MethodSymbol.IsMetadataVirtual for details). + + + + + Note that the access check is done using the original definitions. This is because we want to avoid + reductions in accessibility that result from type argument substitution (e.g. if an inaccessible type + has been passed as a type argument). + See DevDiv #11967 for an example. + + + + + Groups the information computed by MakeOverriddenOrHiddenMembers. + + + + + It is not suitable to call this method on a object + associated with a member within substituted type, + should be used instead. + + + + + Represents a preprocessing conditional compilation symbol. + + + + + Helper methods that exist to share code between properties and events. + + + + + If the property has a GetMethod, return that. Otherwise check the overridden + property, if any. Repeat for each overridden property. + + + + + If the property has a SetMethod, return that. Otherwise check the overridden + property, if any. Repeat for each overridden property. + + + + + A RangeVariableSymbol represents an identifier introduced in a query expression as the + identifier of a "from" clause, an "into" query continuation, a "let" clause, or a "join" clause. + + + + + Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. + This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. + + + + + An extension method with the "this" parameter removed. + Used for the public binding API only, not for compilation. + + + + + Return the extension method in reduced form if the extension method + is applicable, and satisfies type parameter constraints, based on the + "this" argument type. Otherwise, returns null. + + + + + A representation of a method symbol that is intended only to be used for comparison purposes + (esp in MethodSignatureComparer). + + + + + Intended to be used to create ParameterSymbols for a SignatureOnlyMethodSymbol. + + + + + A representation of a property symbol that is intended only to be used for comparison purposes + (esp in PropertySignatureComparer). + + + + + Generate a list containing the given field and all dependencies + of that field that require evaluation. The list is ordered by + dependencies, with fields with no dependencies first. Cycles are + broken at the first field lexically in the cycle. If multiple threads + call this method with the same field, the order of the fields + returned should be the same, although some fields may be missing + from the lists in some threads as other threads evaluate fields. + + + + + The set of fields on which the field depends. + + + + + The set of fields that depend on the field. + + + + + Build a dependency graph (a map from + field to dependencies). + + + + + Return an ordering of the compilations referenced in the graph. + The actual ordering is not important, but we need some ordering + to compare source locations across different compilations. + + + + + Return one member from one cycle in the graph. + (There must be at least one cycle. In fact, there + shouldn't be any fields without dependencies.) + + + + + Type parameters in documentation comments are complicated since they sort of act as declarations, + rather than references. Consider the following example: + + See . + class B { void M(T t) { } } + ]]> + + We make some key observations: + 1) The type parameter name in the cref is not tied to the type parameter name in the type declaration. + 2) A relationship exists between the two occurrences of "U" in the cref: they both refer to (or define) + the same symbol. + + In Roslyn, we've decided on the following representation: within the (entire) scope of a cref, the names + of all type parameters "declared" in the cref are in scope and bind to the corresponding type parameters. + This representation has one major advantage: as long as the appropriate binder (i.e. the one that knows + about the implicitly-declared type parameters) is used, TypeSyntaxes within the cref can be bound by + calling BindType. In addition to eliminating the necessity for custom binding code in the batch case, + this reduces the problem of exposing such nodes in the SemanticModel to one of ensuring that the right + enclosing binder is chosen. That is, new code will have to be written to handle CrefSyntaxes, but the + existing code for TypeSyntaxes should just work! + + In the example above, this means that, between the cref quotation marks, the name "U" binds to an + implicitly declared type parameter, whether it is in "B{U}", "M{U}", or "M{List{U[]}}". + + Of course, it's not all gravy. One thing we're giving up by using this representation is the ability to + distinguish between "declared" type parameters with the same name. Consider the following example: + + See . + class A + { + void M(T t) { } + void M(U u) { } + } + ]]> + + + The native compiler interprets this in the same way as it would interpret A{T1, T2}.M(T2) and unambiguously + (i.e. without a warning) binds to A{T, U}.M(U). Since Roslyn does not distinguish between the T's, Roslyn + reports an ambiguity warning and picks the first method. Furthermore, renaming one 'T' will rename all of + them. + + This class represents such an implicitly declared type parameter. The declaring syntax is expected to be + an IdentifierNameSyntax in the type argument list of a QualifiedNameSyntax. + + + + Out params are updated by assignment. If you require thread-safety, pass temps and then + CompareExchange them back into shared memory. + + + + Type that already has custom modifiers. + Same as , but without custom modifiers. May differ in object/dynamic. + of the parameter of which this is the type (or for a return type. + The assembly containing the signature referring to the destination type. + with custom modifiers copied from . + + + + Given a member, look for other members contained in the same type with signatures that will + not be distinguishable by the runtime. + + + + + Implemented by symbols that can be targetted by an attribute declaration (i.e. source symbols). + + + + + Returns the owner of attributes that apply to this symbol. + + + Attributes for this symbol might be retrieved from attribute list of another (owning) symbol. + In that case this property returns that owning symbol, otherwise it returns "this". + + + + + Returns a bit set of attribute locations applicable to this symbol. + + + + + Attribute location corresponding to this symbol. + + + Location of an attribute if an explicit location is not specified via attribute target specification syntax. + + + + + Represents implicit, script and submission classes. + + + + + Returns null for a submission class. + This ensures that a submission class does not inherit methods such as ToString or GetHashCode. + + + + + Indexed type parameters are used in place of type parameters for method signatures. There is + a unique mapping from index to a single IndexedTypeParameterSymbol. + + They don't have a containing symbol or locations. + + They do not have constraints, variance, or attributes. + + + + + Create a vector of n dummy type parameters. Always reuses the same type parameter symbol + for the same position. + + + + + + + Represents an assembly built by compiler. + + + + + A Compilation the assembly is created for. + + + + + Assembly's identity. + + + + + A list of modules the assembly consists of. + The first (index=0) module is a SourceModuleSymbol, which is a primary module, the rest are net-modules. + + + + + Bag of assembly's custom attributes and decoded well-known attribute data from source. + + + + + Bag of assembly's custom attributes and decoded well-known attribute data from added netmodules. + + + + + Indices of attributes that will not be emitted for one of two reasons: + - They are duplicates of another attribute (i.e. attributes that bind to the same constructor and have identical arguments) + - They are InternalsVisibleToAttributes with invalid assembly identities + + + These indices correspond to the merged assembly attributes from source and added net modules, i.e. attributes returned by method. + + + + + Map for storing effectively private or effectively internal fields declared in this assembly but never initialized nor assigned. + Each {symbol, bool} key-value pair in this map indicates the following: + (a) Key: Unassigned field symbol. + (b) Value: True if the unassigned field is effectively internal, false otherwise. + + + + + private fields declared in this assembly but never read + + + + + We imitate the native compiler's policy of not warning about unused fields + when the enclosing type is used by an extern method for a ref argument. + Here we keep track of those types. + + + + + The warnings for unused fields. + + + + + This override is essential - it's a base case of the recursive definition. + + + + + Raw assembly version as specified in the AssemblyVersionAttribute, or null if none specified. + If the string passed to AssemblyVersionAttribute contains * the version build and/or revision numbers are set to . + + + + + This represents what the user claimed in source through the AssemblyFlagsAttribute. + It may be modified as emitted due to presence or absence of the public key. + + + + + We're going to synthesize some well-known attributes for this assembly symbol. However, at synthesis time, it is + too late to report diagnostics or cancel the emit. Instead, we check for use site errors on the types and members + we know we'll need at synthesis time. + + + As in Dev10, we won't report anything if the attribute TYPES are missing (note: missing, not erroneous) because we won't + synthesize anything in that case. We'll only report diagnostics if the attribute TYPES are present and either they or + the attribute CONSTRUCTORS have errors. + + + + + If this compilation allows unsafe code (note: allows, not contains), then when we actually emit the assembly/module, + we're going to synthesize SecurityPermissionAttribute/UnverifiableCodeAttribute. However, at synthesis time, it is + too late to report diagnostics or cancel the emit. Instead, we check for use site errors on the types and members + we know we'll need at synthesis time. + + + As in Dev10, we won't report anything if the attribute TYPES are missing (note: missing, not erroneous) because we won't + synthesize anything in that case. We'll only report diagnostics if the attribute TYPES are present and either they or + the attribute CONSTRUCTORS have errors. + + + + + True if internals are exposed at all. + + + Forces binding and decoding of attributes. + This property shouldn't be accessed during binding as it can lead to attribute binding cycle. + + + + + Gets unique source assembly attributes that should be emitted, + i.e. filters out attributes with errors and duplicate attributes. + + + + + Returns a bag of applied custom attributes and data decoded from well-known attributes. Returns null if there are no attributes applied on the symbol. + + + Forces binding and decoding of attributes. + + + + + Gets the attributes applied on this symbol. + Returns an empty array if there are no attributes. + + + NOTE: This method should always be kept as a sealed override. + If you want to override attribute binding logic for a sub-class, then override method. + + + + + Returns true if the assembly attribute at the given index is a duplicate assembly attribute that must not be emitted. + Duplicate assembly attributes are attributes that bind to the same constructor and have identical arguments. + + + This method must be invoked only after all the assembly attributes have been bound. + + + + + Returns data decoded from source assembly attributes or null if there are none. + + + Forces binding and decoding of attributes. + TODO: We should replace methods GetSourceDecodedWellKnownAttributeData and GetNetModuleDecodedWellKnownAttributeData with + a single method GetDecodedWellKnownAttributeData, which merges DecodedWellKnownAttributeData from source and netmodule attributes. + + + + + Returns true if and only if at least one type within the assembly contains + extension methods. Note, this method is expensive since it potentially + inspects all types within the assembly. The expectation is that this method is + only called at emit time, when all types have been or will be traversed anyway. + + + + + Get the warnings for unused fields. This should only be fetched when all method bodies have been compiled. + + + + + Represents a source parameter cloned from another , when they must share attribute data and default constant value. + For example, parameters on a property symbol are cloned to generate parameters on accessors. + Similarly parameters on delegate invoke method are cloned to delegate begin/end invoke methods. + + + + + A source parameter, potentially with a default value, attributes, etc. + + + + + Symbol to copy bound attributes from, or null if the attributes are not shared among multiple source parameter symbols. + + + Used for parameters of partial implementation. We bind the attributes only on the definition + part and copy them over to the implementation. + + + + + Gets the syntax list of custom attributes that declares attributes for this parameter symbol. + + + + + Returns data decoded from well-known attributes applied to the symbol or null if there are no applied attributes. + + + Forces binding and decoding of attributes. + + + + + Returns data decoded from special early bound well-known attributes applied to the symbol or null if there are no applied attributes. + + + Forces binding and decoding of attributes. + + + + + Returns a bag of applied custom attributes and data decoded from well-known attributes. Returns null if there are no attributes applied on the symbol. + + + Forces binding and decoding of attributes. + + + + + Verify the default value matches the default value from any earlier attribute + (DefaultParameterValueAttribute, DateTimeConstantAttribute or DecimalConstantAttribute). + If not, report ERR_ParamDefaultValueDiffersFromAttribute. + + + + + Is the attribute syntax appearing on a parameter of a partial method implementation part? + Since attributes are merged between the parts of a partial, we need to look at the syntax where the + attribute appeared in the source to see if it corresponds to a partial method implementation part. + + + + + + + True if the parameter has default argument syntax. + + + + + True if the parameter is marked by . + + + + + This class represents an event accessor declared in source + (i.e. not one synthesized for a field-like event). + + + The accessors are associated with . + + + + + This class represents an event declared in source with explicit accessors + (i.e. not a field-like event). + + + + + Represents a constant field of an enum. + + + + + Base class for event accessors - synthesized and user defined. + + + + + A delegate field associated with a . + + + SourceFieldSymbol takes care of the initializer (plus "var" in the interactive case). + + + + + This class represents an event declared in source. It may be either + field-like (see ) or property-like (see + ). + + + + + Gets the syntax list of custom attributes applied on the event symbol. + + + + + Returns a bag of applied custom attributes and data decoded from well-known attributes. Returns null if there are no attributes applied on the symbol. + + + Forces binding and decoding of attributes. + + + + + Gets the attributes applied on this symbol. + Returns an empty array if there are no attributes. + + + NOTE: This method should always be kept as a sealed override. + If you want to override attribute binding logic for a sub-class, then override method. + + + + + Returns data decoded from well-known attributes applied to the symbol or null if there are no applied attributes. + + + Forces binding and decoding of attributes. + + + + + Returns data decoded from special early bound well-known attributes applied to the symbol or null if there are no applied attributes. + + + Forces binding and decoding of attributes. + + + + + Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. + This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. + + + + + This class represents an event declared in source without explicit accessors. + It implicitly has thread safe accessors and an associated field (of the same + name), unless it does not have an initializer and is either extern or inside + an interface, in which case it only has accessors. + + + + + Backing field for field-like event. Will be null if the event + has no initializer and is either extern or inside an interface. + + + + + Gets the syntax list of custom attributes applied on the symbol. + + + + + Returns a bag of applied custom attributes and data decoded from well-known attributes. Returns null if there are no attributes applied on the symbol. + + + Forces binding and decoding of attributes. + + + + + Gets the attributes applied on this symbol. + Returns an empty array if there are no attributes. + + + NOTE: This method should always be kept as a sealed override. + If you want to override attribute binding logic for a sub-class, then override method. + + + + + Returns data decoded from well-known attributes applied to the symbol or null if there are no applied attributes. + + + Forces binding and decoding of attributes. + + + + + Returns data decoded from special early bound well-known attributes applied to the symbol or null if there are no applied attributes. + + + Forces binding and decoding of attributes. + + + + + Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. + This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. + + + + + Verify the constant value matches the default value from any earlier attribute + (DateTimeConstantAttribute or DecimalConstantAttribute). + If not, report ERR_FieldHasMultipleDistinctConstantValues. + + + + + Return the constant value dependencies. Compute the dependencies + if necessary by evaluating the constant value but only persist the + constant value if there were no dependencies. (If there are dependencies, + the constant value will be re-evaluated after evaluating dependencies.) + + + + + Switch case labels have a constant expression associated with them. + + + + + If the label is a switch case label, returns the associated constant value with + case expression, otherwise returns null. + + + + + Represents a local variable in a method body. + + + + + Might not be a method symbol. + + + + + There are three ways to initialize a fixed statement local: + 1) with an address; + 2) with an array (or fixed-size buffer); or + 3) with a string. + + In the first two cases, the resulting local will be emitted with a "pinned" modifier. + In the third case, it is not the fixed statement local but a synthesized temp that is pinned. + Unfortunately, we can't distinguish these cases when the local is declared; we only know + once we have bound the initializer. + + + CompareExchange doesn't support bool, so use an int. First bit is true/false, second bit + is read/unread (debug-only). + + + + + Gets the name of the local variable. + + + + + Gets the locations where the local symbol was originally defined in source. + There should not be local symbols from metadata, and there should be only one local variable declared. + TODO: check if there are multiple same name local variables - error symbol or local symbol? + + + + + Store the constant value and the corresponding diagnostics together + to avoid having the former set by one thread and the latter set by + another. + + + + + Determine the constant value of this local and the corresponding diagnostics. + Set both to constantTuple in a single operation for thread safety. + + Null for the initial call, non-null if we are in the process of evaluating a constant. + If we already have the bound node for the initial value, pass it in to avoid recomputing it. + + + + Represents a named type symbol whose members are declared in source. + + + + + Compute the "effective accessibility" of the current class for the purpose of warnings about unused fields. + + + + + Encapsulates information about the non-type members of a (i.e. this) type. + 1) For non-initializers, symbols are created and stored in a list. + 2) For fields and properties, the symbols are stored in (1) and their initializers are + stored with other initialized fields and properties from the same syntax tree with + the same static-ness. + 3) For indexers, syntax (weak) references are stored for later binding. + + + CONSIDER: most types won't have indexers, so we could move the indexer list + into a subclass to spare most instances the space required for the field. + + + + + Calculates a syntax offset of a syntax position that is contained in a property or field initializer (if it is in fact contained in one). + + + + + During early attribute decoding, we consider a safe subset of all members that will not + cause cyclic dependencies. Get all such members for this symbol. + + In particular, this method will return nested types and fields (other than auto-property + backing fields). + + + + + During early attribute decoding, we consider a safe subset of all members that will not + cause cyclic dependencies. Get all such members for this symbol that have a particular name. + + In particular, this method will return nested types and fields (other than auto-property + backing fields). + + + + + Merge (already ordered) non-type, non-indexer members with (already ordered) indexer members. + + + + + Fix up a partial method by combining its defining and implementing declarations, updating the array of symbols (by name), + and returning the combined symbol. + + The symbols array containing both the latent and implementing declaration + One of the two declarations + The other declaration + An updated symbols array containing only one method symbol representing the two parts + + + + Report an error if a member (other than a method) exists with the same name + as the property accessor, or if a method exists with the same name and signature. + + + + + Report an error if a member (other than a method) exists with the same name + as the event accessor, or if a method exists with the same name and signature. + + + + + Return the location of the accessor, or if no accessor, the location of the property. + + + + + Return the location of the accessor, or if no accessor, the location of the event. + + + + + Return true if the method parameters match the parameters of the + property accessor, including the value parameter for the setter. + + + + + Return true if the method parameters match the parameters of the + event accessor, including the value parameter. + + + + + In some circumstances (e.g. implicit implementation of an interface method by a non-virtual method in a + base type from another assembly) it is necessary for the compiler to generate explicit implementations for + some interface methods. They don't go in the symbol table, but if we are emitting, then we should + generate code for them. + + + + + It's not interesting to report diagnostics on implementation of interface accessors + if the corresponding events or properties are not implemented (i.e. we want to suppress + cascading diagnostics). + Caveat: Indexed property accessors are always interesting. + Caveat: It's also uninteresting if a WinRT event is implemented by a non-WinRT event, + or vice versa. + + + + + If necessary, report a diagnostic for a hidden abstract member. + + True if a diagnostic was reported. + + + + It is invalid for a type to directly (vs through a base class) implement two interfaces that + unify (i.e. are the same for some substitution of type parameters). + + + CONSIDER: check this while building up InterfacesAndTheirBaseInterfaces (only in the SourceNamedTypeSymbol case). + + + + + Though there is a method that C# considers to be an implementation of the interface method, that + method may not be considered an implementation by the CLR. In particular, implicit implementation + methods that are non-virtual or that have different (usually fewer) custom modifiers than the + interface method, will not be considered CLR overrides. To address this problem, we either make + them virtual (in metadata, not in C#), or we introduce an explicit interface implementation that + delegates to the implicit implementation. + + Returned from FindImplementationForInterfaceMemberWithDiagnostics. + The interface method or property that is being implemented. + Synthesized implementation or null if not needed. + + + + The CLR will only look for an implementation of an interface method in a type that + 1) declares that it implements that interface; or + 2) is a base class of a type that declares that it implements the interface but not + a subtype of a class that declares that it implements the interface. + + For example, + + interface I + class A + class B : A, I + class C : B + class D : C, I + + Suppose the runtime is looking for D's implementation of a member of I. It will look in + D because of (1), will not look in C, will look in B because of (1), and will look in A + because of (2). + + The key point is that it does not look in C, which C# *does*. + + + + + If C# picks a different implementation than the CLR (see IsPossibleImplementationUnderClrRules), then we might + still be okay, but dynamic dispatch might result in C#'s choice getting called anyway. + + + This is based on SymbolPreparer::IsCLRMethodImplSame in the native compiler. + + ACASEY: What the native compiler actually does is compute the C# answer, compute the CLR answer, + and then confirm that they override the same method. What I've done here is check for the situations + where the answers could disagree. I believe the results will be equivalent. If in doubt, a more conservative + check would be implementingMethod.ContainingType.InterfacesAndTheirBaseInterfaces.Contains(@interface). + + + + + A collection of type parameter constraints, populated when + constraints for the first type parameter is requested. + + + + + If this symbol represents a partial method definition or implementation part, its other part (if any). + This should be set, if at all, before this symbol appears among the members of its owner. + The implementation part is not listed among the "members" of the enclosing type. + + + + + If this is a partial implementation part returns the definition part and vice versa. + + + + + Returns true if this symbol represents a partial method definition (the part that specifies a signature but no body). + + + + + Returns true if this symbol represents a partial method implementation (the part that specifies both signature and body). + + + + + True if this is a partial method that doesn't have an implementation part. + + + + + Returns the implementation part of a partial method definition, + or null if this is not a partial method or it is the definition part. + + + + + Returns the definition part of a partial method implementation, + or null if this is not a partial method or it is the implementation part. + + + + + Report differences between the defining and implementing + parts of a partial method. Diagnostics are reported on the + implementing part, matching Dev10 behavior. + + + + + Returns true if the two partial methods have the same constraints. + + + + + Implementers should assume that a lock has been taken on MethodChecksLockObject. + In particular, it should not (generally) be necessary to use CompareExchange to + protect assignments to fields. + + + + + We can usually lock on the syntax reference of this method, but it turns + out that some synthesized methods (e.g. field-like event accessors) also + need to do method checks. This property allows such methods to supply + their own lock objects, so that we don't have to add a new field to every + SourceMethodSymbol. + + + + + Overridden by , + which might return locations of partial methods. + + + + + Symbol to copy bound attributes from, or null if the attributes are not shared among multiple source method symbols. + + + Used for example for event accessors. The "remove" method delegates attribute binding to the "add" method. + The bound attribute data are then applied to both accessors. + + + + + Gets the syntax list of custom attributes that declares attributes for this method symbol. + + + + + Gets the syntax list of custom attributes that declares attributes for return type of this method. + + + + + Returns data decoded from special early bound well-known attributes applied to the symbol or null if there are no applied attributes. + + + Forces binding and decoding of attributes. + + + + + Returns data decoded from well-known attributes applied to the symbol or null if there are no applied attributes. + + + Forces binding and decoding of attributes. + + + + + Returns information retrieved from custom attributes on return type in source, or null if the symbol is not source symbol or there are none. + + + Forces binding and decoding of attributes. + + + + + Returns a bag of applied custom attributes and data decoded from well-known attributes. Returns null if there are no attributes applied on the symbol. + + + Forces binding and decoding of attributes. + + + + + Returns a bag of custom attributes applied on the method return value and data decoded from well-known attributes. Returns null if there are no attributes. + + + Forces binding and decoding of attributes. + + + + + Gets the attributes applied on this symbol. + Returns an empty array if there are no attributes. + + + + + Gets the attributes applied on the return value of this method symbol. + Returns an empty array if there are no attributes. + + + + + Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. + This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. + + + + + Checks to see if a body is legal given the current modifiers. + If it is not, a diagnostic is added with the current type. + + + + + Returns true if the method body is an expression, as expressed + by the syntax. False + otherwise. + + + If the method has both block body and an expression body + present, this is not treated as expression-bodied. + + + + + Represents the primary module of an assembly being built by compiler. + + + + + Owning assembly. + + + + + The declarations corresponding to the source files of this module. + + + + + The name (contains extension) + + + + + This override is essential - it's a base case of the recursive definition. + + + + + Returns a bag of applied custom attributes and data decoded from well-known attributes. Returns null if there are no attributes applied on the symbol. + + + Forces binding and decoding of attributes. + + + + + Gets the attributes applied on this symbol. + Returns an empty array if there are no attributes. + + + NOTE: This method should always be kept as a sealed override. + If you want to override attribute binding logic for a sub-class, then override method. + + + + + Returns data decoded from well-known attributes applied to the symbol or null if there are no applied attributes. + + + Forces binding and decoding of attributes. + + + + + A collection of type parameter constraints, populated when + constraints for the first type parameter are requested. + + + + + Returns a bag of applied custom attributes and data decoded from well-known attributes. Returns null if there are no attributes applied on the symbol. + + + Forces binding and decoding of attributes. + + + + + Gets the attributes applied on this symbol. + Returns an empty array if there are no attributes. + + + + + Returns data decoded from well-known attributes applied to the symbol or null if there are no applied attributes. + + + Forces binding and decoding of attributes. + + + + + Returns data decoded from special early bound well-known attributes applied to the symbol or null if there are no applied attributes. + + + Forces binding and decoding of attributes. + + + + + Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. + This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. + + + + + These won't be returned by GetAttributes on source methods, but they + will be returned by GetAttributes on metadata symbols. + + + + + Gets the BaseType of this type. If the base type could not be determined, then + an instance of ErrorType is returned. If this kind of type does not have a base type + (for example, interfaces), null is returned. Also the special class System.Object + always has a BaseType of null. + + + + + Gets the set of interfaces that this type directly implements. This set does not include + interfaces that are base interfaces of directly implemented interfaces. + + + + + Returns true if the type cannot be used as an explicit base class. + + + + + For enum types, gets the underlying type. Returns null on all other + kinds of types. + + + + + For enum types, returns the synthesized instance field used + for generating metadata. Returns null for non-enum types. + + + + + Register COR types declared in this namespace, if any, in the COR types cache. + + + + + Base class for parameters can be referred to from source code. + + + These parameters can potentially be targetted by an attribute specified in source code. + As an optimization we distinguish simple parameters (no attributes, no modifiers, etc.) and complex parameters. + + + + + True if the parameter is marked by . + + + + + True if the parameter has default argument syntax. + + + + + Gets the attributes applied on this symbol. + Returns an empty array if there are no attributes. + + + NOTE: This method should always be kept as a sealed override. + If you want to override attribute binding logic for a sub-class, then override method. + + + + + Base class for all parameters that are emitted. + + + + + Return Accessibility declared locally on the accessor, or + NotApplicable if no accessibility was declared explicitly. + + + + + If we are outputting a .winmdobj then the setter name is put_, not set_. + + + + + or + + + + + Set in constructor, might be changed while decoding . + + + + + To facilitate lookup, all indexer symbols have the same name. + Check the MetadataName property to find the name that will be + emitted (based on IndexerNameAttribute, or the default "Item"). + + + + + Even though it is declared with an IndexerDeclarationSyntax, an explicit + interface implementation is not an indexer because it will not cause the + containing type to be emitted with a DefaultMemberAttribute (and even if + there is another indexer, the name of the explicit implementation won't + match). This is important for round-tripping. + + + + + Backing field for automatically implemented property, or + for a property with an initializer. + + + + + Return true if the accessor accessibility is more restrictive + than the property accessibility, otherwise false. + + + + + If this property is sealed, then we have to emit both accessors - regardless of whether + they are present in the source - so that they can be marked final. (i.e. sealed). + + + + + Only non-null for sealed properties without both accessors. + + + + + Returns a bag of applied custom attributes and data decoded from well-known attributes. Returns null if there are no attributes applied on the symbol. + + + Forces binding and decoding of attributes. + + + + + Gets the attributes applied on this symbol. + Returns an empty array if there are no attributes. + + + NOTE: This method should always be kept as a sealed override. + If you want to override attribute binding logic for a sub-class, then override method. + + + + + Returns data decoded from well-known attributes applied to the symbol or null if there are no applied attributes. + + + Forces binding and decoding of attributes. + + + + + Returns data decoded from special early bound well-known attributes applied to the symbol or null if there are no applied attributes. + + + Forces binding and decoding of attributes. + + + + + Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. + This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. + + + + + A source parameter that has no default value, no attributes, + and is not params. + + + + + Base class for type and method type parameters. + + + + + Gets the attributes applied on this symbol. + Returns an empty array if there are no attributes. + + + NOTE: This method should always be kept as a sealed override. + If you want to override attribute binding logic for a sub-class, then override method. + + + + + Check constraints of generic types referenced in constraint types. For instance, + with "interface I<T> where T : I<T> {}", check T satisfies constraints + on I<T>. Those constraints are not checked when binding ConstraintTypes + since ConstraintTypes has not been set on I<T> at that point. + + + + + A map shared by all type parameters for an overriding method or a method + that explicitly implements an interface. The map caches the overridden method + and a type map from overridden type parameters to overriding type parameters. + + + + + A type parameter for a method that either overrides a base + type method or explicitly implements an interface method. + + + Exists to copy constraints from the corresponding type parameter of an overridden method. + + + + + The type parameter to use for determining constraints. If there is a base + method that the owner method is overriding, the corresponding type + parameter on that method is used. Otherwise, the result is null. + + + + + Class to represent a synthesized attribute + + + + + A context for binding type parameter symbols of named types. + + + + + A simple representation of a type parameter constraint clause + as a set of constraint bits and a set of constraint types. + + + + + Checks if a type is considered a "built-in integral" by CLR. + + + + + The type is one of the simple types defined in Dev10 C#, see "predeftype.h"/simple + + + + + Either a SubstitutedNestedTypeSymbol or a ConstructedNamedTypeSymbol, which share in common that they + have type parameters substituted. + + + + + This field keeps track of the s for which we already retrieved + diagnostics. We shouldn't return from ForceComplete (i.e. indicate that diagnostics are + available) until this is equal to , except that when completing + with a given position, we might not complete .Member*. + + Since completeParts is used as a flag indicating completion of other assignments + it must be volatile to ensure the read is not reordered/optimized to happen + before the writes. + + + + + Used to force (source) symbols to a given state of completion. + + The owning source symbol. + + + + Since this formula is rather opaque, a demonstration of its correctness is + provided in Roslyn.Compilers.CSharp.UnitTests.CompletionTests.TestHasAtMostOneBitSet. + + + + + Produces name of the synthesized delegate symbol that encodes the parameter byref-ness and return type of the delegate. + The arity is appended via `N suffix in MetadataName calculation since the delegate is generic. + + + + + Represents the compiler generated value parameter for property/event accessor. + This parameter has no source location/syntax, but may have attributes. + Attributes with 'param' target specifier on the accessor must be applied to the this parameter. + + + + + Represents a compiler generated backing field for an automatically implemented property. + + + + + A container synthesized for a lambda, iterator method, async method, or dynamic-sites. + + + + + Dynamic call-site delegate, for call-sites that do not + match System.Action or System.Func signatures. + + + + + Represents an interactive code entry point that is inserted into the compilation if there is not an existing one. + + + + + Represents __value field of an enum. + + + + + Event accessor that has been synthesized for a field-like event declared in source. + + + Associated with . + + + + + Represents a compiler generated field. + + + Represents a compiler generated field of given type and name. + + + + + Represents a compiler generated field or captured variable. + + + + + Represents a compiler generated synthesized method symbol + that must be emitted in the compiler generated + PrivateImplementationDetails class + + + + + Synthesized methods that must be emitted in the compiler generated + PrivateImplementationDetails class have null containing type symbol. + + + + + A base class for synthesized methods that want a this parameter. + + + + + Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. + This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. + + + + + A synthesized local variable. + + + + + Represents a simple compiler generated parameter of a given type. + + + + + For each parameter of a source method, construct a corresponding synthesized parameter + for a destination method. + + Has parameters. + Needs parameters. + Synthesized parameters to add to destination method. + + + + A type parameter for a synthesized class or method. + + + + + Utility class for substituting actual type arguments for formal generic type parameters. + + + + + The effective "bounds" of a type parameter: the constraint types, effective + interface set, and effective base type, determined from the declared + constraints, with any cycles removed. The fields are exposed by the + TypeParameterSymbol as ConstraintTypes, Interfaces, and BaseType. + + + + + The type parameters, classes, and interfaces explicitly declared as + constraint types on the containing type parameter, with cycles removed. + + + + + The set of interfaces explicitly declared on the containing type + parameter and any type parameters on which the containing + type parameter depends, with duplicates removed. + + + + + As defined in 10.1.5 of the specification. + + + + + The "exact" effective base type. + In the definition of effective base type we abstract some concrete types to their base classes: + * For each constraint of T that is a struct-type, R contains System.ValueType. + * For each constraint of T that is an enumeration type, R contains System.Enum. + * For each constraint of T that is a delegate type, R contains System.Delegate. + * For each constraint of T that is an array type, R contains System.Array. + * For each constraint of T that is a class-type C, R contains type C' which is constructed + from C by replacing all occurrences of dynamic with object. + The reason is that the CLR doesn't support operations on generic parameters that would be needed + to work with these types. For example, ldelem instruction requires the receiver to be a specific array, + not a type parameter constrained to be an array. + + When computing the deduced type we don't perform this abstraction. We keep the original constraint T. + Deduced base type is used to check that consistency rules are satisfied. + + + + + A TypeSymbol is a base class for all the symbols that represent a type + in C#. + + + + + A comparator that treats dynamic and object as "the same" types. + + + + + The original definition of this symbol. If this symbol is constructed from another + symbol by type substitution then OriginalDefinition gets the original symbol as it was defined in + source or metadata. + + + + + Gets the BaseType of this type. If the base type could not be determined, then + an instance of ErrorType is returned. If this kind of type does not have a base type + (for example, interfaces), null is returned. Also the special class System.Object + always has a BaseType of null. + + + + + Gets the set of interfaces that this type directly implements. This set does not include + interfaces that are base interfaces of directly implemented interfaces. + + + + + The list of all interfaces of which this type is a declared subtype, excluding this type + itself. This includes all declared base interfaces, all declared base interfaces of base + types, and all declared base interfaces of those results (recursively). Each result + appears exactly once in the list. This list is topologically sorted by the inheritance + relationship: if interface type A extends interface type B, then A precedes B in the + list. This is not quite the same as "all interfaces of which this type is a proper + subtype" because it does not take into account variance: AllInterfaces for + IEnumerable<string> will not include IEnumerable<object> + + + + + If this is a type parameter returns its effective base class, otherwise returns this type. + + + + + Returns true if this type derives from a given type. + + + + + Returns true if this type is equal or derives from a given type. + + + + + Determines if this type symbol represent the same type as another, according to the language + semantics. + + The other type. + True to compare without regard to custom modifiers, false by default. + True to ignore the distinction between object and dynamic, false by default. + True if the types are equivalent. + + + + We ignore custom modifiers, and the distinction between dynamic and object, when computing a type's hash code. + + + + + Produce all implemented interfaces in topologically sorted order. We use + TypeSymbol.Interfaces as the source of edge data, which has had cycles and infinitely + long dependency cycles removed. Consequently, it is possible (and we do) use the + simplest version of Tarjan's topological sorting algorithm. + + + + Gets the set of interfaces that this type directly implements, plus the base interfaces + of all such types. + + + CONSIDER: it probably isn't truly necessary to cache this. If space gets tight, consider + alternative approaches (recompute every time, cache on the side, only store on some types, + etc). + + + + + Returns the corresponding symbol in this type or a base type that implements + interfaceMember (either implicitly or explicitly), or null if no such symbol exists + (which might be either because this type doesn't implement the container of + interfaceMember, or this type doesn't supply a member that successfully implements + interfaceMember). + + + Must be a non-null interface property, method, or event. + + + + + Returns true if this type is known to be a reference type. It is never the case that + IsReferenceType and IsValueType both return true. However, for an unconstrained type + parameter, IsReferenceType and IsValueType will both return false. + + + + + Returns true if this type is known to be a value type. It is never the case that + IsReferenceType and IsValueType both return true. However, for an unconstrained type + parameter, IsReferenceType and IsValueType will both return false. + + + + + Gets the kind of this type. + + + + + Gets corresponding special TypeId of this type. + + + Not preserved in types constructed from this one. + + + + + Gets corresponding primitive type code for this type declaration. + + + + + Return error code that has highest priority while calculating use site error for this symbol. + + + + + Is this a symbol for an anonymous type (including delegate). + + + + + Is this type a managed type (false for everything but enum, pointer, and + some struct types). + + + See Type::computeManagedType. + + + + + Performs interface mapping (spec 13.4.4). + + + CONSIDER: we could probably do less work in the metadata and retargeting cases - we won't use the diagnostics. + + A non-null property on an interface type. + The type implementing the interface property (usually "this"). + Bag to which to add diagnostics. + The implementing property or null, if there isn't one. + + + + Since dev11 didn't expose a symbol API, it had the luxury of being able to accept a base class's claim that + it implements an interface. Roslyn, on the other hand, needs to be able to point to an implementing symbol + for each interface member. + + DevDiv #718115 was triggered by some unusual metadata in a Microsoft reference assembly (Silverlight System.Windows.dll). + The issue was that a type explicitly implemented the accessors of an interface event, but did not tie them together with + an event declaration. To make matters worse, it declared its own protected event with the same name as the interface + event (presumably to back the explicit implementation). As a result, when Roslyn was asked to find the implementing member + for the interface event, it found the protected event and reported an appropriate diagnostic. Would it should have done + (and does do now) is recognize that no event associated with the accessors explicitly implementing the interface accessors + and returned null. + + We resolved this issue by introducing a new step into the interface mapping algorithm: after failing to find an explicit + implementation in a type, but before searching for an implicit implementation in that type, check for an explicit implementation + of an associated accessor. If there is such an implementation, then immediately return the associated property or event, + even if it is null. That is, never attempt to find an implicit implementation for an interface property or event with an + explicitly implemented accessor. + + + + + If we were looking for an accessor, then look for an accessor on the implementation of the + corresponding interface property/event. If it is valid as an implementation (ignoring the name), + then prefer it to our current result if: + 1) our current result is null; or + 2) our current result is on the same type. + + If there is no corresponding accessor on the implementation of the corresponding interface + property/event and we found an accessor, then the accessor we found is invalid, so clear it. + + + + + These diagnostics are for members that do implicitly implement an interface member, but do so + in an undesirable way. + + + + + These diagnostics are for members that almost, but not actually, implicitly implement an interface member. + + + + + Search the declared members of a type for one that could be an implementation + of a given interface member (depending on interface declarations). + + The interface member being implemented. + True if the implementing type is from some compilation (i.e. not from metadata). + The type on which we are looking for a declared implementation of the interface member. + A member on currType that could implement the interface, or null. + A member on currType that could have been an attempt to implement the interface, or null. + + There is some similarity between this member and MemberSymbol.FindOverriddenOrHiddenMembersInType. + When making changes to this member, think about whether or not they should also be applied in MemberSymbol. + One key difference is that custom modifiers are considered when looking up overridden members, but + not when looking up implicit implementations. We're preserving this behavior from Dev10. + + + + + To implement an interface member, a candidate member must be public, non-static, and have + the same signature. "Have the same signature" has a looser definition if the type implementing + the interface is from source. + + + PROPERTIES: + NOTE: we're not checking whether this property has at least the accessors + declared in the interface. Dev10 considers it a match either way and, + reports failure to implement accessors separately. + + If the implementing type (i.e. the type with the interface in its interface + list) is in source, then we can ignore custom modifiers in/on the property + type because they will be copied into the bridge property that explicitly + implements the interface property (or they would be, if we created such + a bridge property). Bridge *methods* (not properties) are inserted in + SourceNamedTypeSymbol.ImplementInterfaceMember. + + CONSIDER: The spec for interface mapping (13.4.4) could be interpreted to mean that this + property is not an implementation unless it has an accessor for each accessor of the + interface property. For now, we prefer to represent that case as having an implemented + property and an unimplemented accessor because it makes finding accessor implementations + much easier. If we decide that we want the API to report the property as unimplemented, + then it might be appropriate to keep current result internally and just check the accessors + before returning the value from the public API (similar to the way MethodSymbol.OverriddenMethod + filters MethodSymbol.OverriddenOrHiddenMembers. + + + + + The set of abstract members in declared in this type or declared in a base type and not overridden. + + + + + Represents the method by which this type implements a given interface type + and/or the corresponding diagnostics. + + + + + Determines if the given type is a valid attribute parameter type. + + Type to validated + compilation + + + + + Gets the typed constant kind for the given attribute parameter type. + + Type to validated + compilation + TypedConstantKind for the attribute parameter type. + + + + return true if the type is constructed from System.Linq.Expressions.Expression`1 + + + + + return true if the type is constructed from a generic interface that + might be implemented by an array. + + + + + Return the default value constant for the given type, + or null if the default value is not a constant. + + + + + Visit the given type and, in the case of compound types, visit all "sub type" + (such as A in A[], or { A<T>, T, U } in A<T>.B<U>) invoking 'predicate' + with the type and 'arg' at each sub type. If the predicate returns true for any type, + traversal stops and that type is returned from this method. Otherwise if traversal + completes without the predicate returning true for any type, this method returns null. + + + + + (null TypeParameterSymbol "parameter"): Checks if the given type is a type parameter + or its referent type is a type parameter (array/pointer) or contains a type parameter (aggregate type) + (non-null TypeParameterSymbol "parameter"): above + also checks if the type parameter + is the same as "parameter" + + + + + Return true if the type contains any dynamic type reference. + + + + + Guess the non-error type that the given type was intended to represent. + If the type itself is not an error type, then it will be returned. + Otherwise, the underlying type (if any) of the error type will be + returned. + + + Any non-null type symbol returned is guaranteed not to be an error type. + + It is possible to pass in a constructed type and received back an + unconstructed type. This can occur when the type passed in was + constructed from an error type - the underlying definition will be + available, but there won't be a good way to "re-substitute" back up + to the level of the specified type. + + + + + Guess the non-error type kind that the given type was intended to represent, + if possible. If not, return TypeKind.Error. + + + + + Returns true if the type is a valid switch expression type. + + + + + Returns true if the type is one of the restricted types, namely: , + , or . + + + + + Add this instance to the set of checked types. Returns true + if this was added, false if the type was already in the set. + + + + + These special types are structs that contain fields of the same type + (e.g. contains an instance field of type ). + + + + + Compute a hash code for the constructed type. The return value will be + non-zero so callers can used zero to represent an uninitialized value. + + + + + If we are in a COM PIA with embedInteropTypes enabled we should turn properties and methods + that have the type and return type of object, respectively, into type dynamic. If the requisite conditions + are fulfilled, this method returns a dynamic type. If not, it returns the original type. + + A property type or method return type to be checked for dynamification. + Containing type. + + + + + Type variables are never considered reference types by the verifier. + + + + + Type variables are never considered value types by the verifier. + + + + + Return all of the type parameters in this type and enclosing types, + from outer-most to inner-most type. + + + + + Return all of the type parameters in this type and enclosing types, + from outer-most to inner-most type. + + + + + Return the nearest type parameter with the given name in + this type or any enclosing type. + + + + + Return true if the fully qualified name of the type's containing symbol + matches the given name. This method avoids string concatenations + in the common case where the type is a top-level type. + + + + + Count the custom modifiers within the specified TypeSymbol. + Potentially non-zero for arrays, pointers, and generic instantiations. + + + + + Check for custom modifiers within the specified TypeSymbol. + Potentially true for arrays, pointers, and generic instantiations. + + + A much less efficient implementation would be CustomModifierCount() == 0. + CONSIDER: Could share a backing method with CustomModifierCount. + + + + + Return true if this type can unify with the specified type + (i.e. is the same for some substitution of type parameters). + + + + + Used when iterating through base types in contexts in which the caller needs to avoid cycles and can't use BaseType + (perhaps because BaseType is in the process of being computed) + + + + + + + + + + Extract type under assumption that there should be no custom modifiers. + The method asserts otherwise. + + + + + This class groups together all of the functionality needed to check for error CS1961, ERR_UnexpectedVariance. + Its functionality is accessible through the NamedTypeSymbol extension method CheckInterfaceVarianceSafety and + the MethodSymbol extension method CheckMethodVarianceSafety (for checking delegate Invoke). + + + + + Accumulate diagnostics related to the variance safety of an interface. + + + + + Accumulate diagnostics related to the variance safety of a delegate. + + + + + Accumulate diagnostics related to the variance safety of an interface method. + + + + + Accumulate diagnostics related to the variance safety of an interface property. + + + + + Accumulate diagnostics related to the variance safety of an interface event. + + + + + Accumulate diagnostics related to the variance safety of an interface method/property parameter. + + + + + Accumulate diagnostics related to the variance safety of an interface method type parameters. + + + + + Returns true if the type is output-unsafe or input-unsafe, as defined in the C# spec. + Roughly, a type is output-unsafe if it could not be the return type of a method and + input-unsafe if it could not be a parameter type of a method. + + + This method is intended to match spec section 13.1.3.1 as closely as possible + (except that the output-unsafe and input-unsafe checks are merged). + + + + + 3) T is an interface, class, struct, enum, or delegate type ]]> constructed + from a generic type ]]> where for at least one A_i one + of the following holds: + a) X_i is covariant or invariant and A_i is output-unsafe [input-unsafe] + b) X_i is contravariant or invariant and A_i is input-unsafe [output-unsafe] (note: spec has "input-safe", but it's a typo) + + + Slight rewrite to make it more idiomatic for C#: + a) X_i is covariant and A_i is input-unsafe + b) X_i is contravariant and A_i is output-unsafe + c) X_i is invariant and A_i is input-unsafe or output-unsafe + + + + + Add an ERR_UnexpectedVariance diagnostic to the diagnostic bag. + + Diagnostic bag. + Type parameter that is not variance safe. + Context in which type is not variance safe (e.g. method). + Callback to provide location. + Callback argument. + Desired variance of type. + + + + Traverses the symbol table checking for CLS compliance. + + + + + Traverses the symbol table checking for CLS compliance. + + Compilation that owns the symbol table. + Will be supplemented with documentation comment diagnostics. + To stop traversing the symbol table early. + Only report diagnostics from this syntax tree, if non-null. + If and is non-null, report diagnostics within this span in the . + + + False if no further checks are required (because they would be cascading). + + + + BREAK: Dev11 reports WRN_CLS_ArrayArgumentToAttribute on all symbols, whereas roslyn reports it only + on accessible symbols. + + + + True if the symbol is okay (i.e. no warnings). + + + + NOTE: Dev11 behavior - First, it ignores arity, + which seems like a good way to disambiguate symbols (in particular, + CLS Rule 43 says that the name includes backtick-arity). Second, it + does not consider two members with identical names (i.e. not differing + in case) to collide. + + + + + This check (the only one that uses the "context" parameter is based on CLS Rule 46, + as implemented by LangCompiler::IsCLSAccessible. The idea is that C<int> and C<char> + are separate types in CLS, so they can't touch each other's protected members. + TODO: This should really have a separate error code - it's logically separate and requires explanation. + + Check the accessibility of this type (probably a parameter or return type). + Context for the accessibility check (e.g. containing type of method with as a parameter type. + + + + As in dev11, we ignore the fact that CLSCompliantAttribute is inherited (i.e. from the base type) + (see CSemanticChecker::CheckSymForCLS). This should only affect types where the syntactic parent + and the inheritance parent disagree. + + + + + Based on CompilationPass::CLSReduceSignature. + + + + + Traverses the symbol table processing XML documentation comments and optionally writing them to + a provided stream. + + + + + Traverses the symbol table processing XML documentation comments and optionally writing them to + a provided stream. + + Compilation that owns the symbol table. + Assembly name override, if specified. Otherwise the of the source assembly is used. + Stream to which XML will be written, if specified. + Will be supplemented with documentation comment diagnostics. + To stop traversing the symbol table early. + Only report diagnostics from this syntax tree, if non-null. + If and filterSpanWithinTree is non-null, report diagnostics within this span in the . + + + + Gets the XML that would be written to the documentation comment file for this assembly. + + The symbol for which to retrieve documentation comments. + True to treat includes as semantically meaningful (pull in contents from other files and bind crefs, etc). + To stop traversing the symbol table early. + + + + Write header, descend into members, and write footer. + + + + + Write own documentation comments and then descend into members. + + + + + Compile documentation comments on the symbol and write them to the stream if one is provided. + + + + + Loop over the DocumentationCommentTriviaSyntaxes. Gather + 1) concatenated XML, as a string; + 2) whether or not the XML is valid; + 3) set of type parameters covered by <typeparam> elements; + 4) set of parameters covered by <param> elements; + 5) list of <include> elements, as SyntaxNodes. + + True, if at least one documentation comment was processed; false, otherwise. + This was factored out for clarity, not because it's reusable. + + + + Similar to SymbolExtensions.GetParameters, but returns empty for unsupported symbols + and handles delegates. + + + + + Similar to SymbolExtensions.GetMemberTypeParameters, but returns empty for unsupported symbols. + + + + + A symbol requires a documentation comment if it was explicitly declared and + will be visible outside the current assembly (ignoring InternalsVisibleTo). + Exception: accessors do not require doc comments. + + + + + Get all of the DocumentationCommentTriviaSyntax associated with any declaring syntax of the + given symbol (except for partial methods, which only consider the part with the body). + + True if the nodes are all valid XML. + + + + Given the full text of a documentation comment, strip off the comment punctuation (///, /**, etc) + and add appropriate indentations. + + + + + Given a string, find the index of the first non-whitespace char. + + The string to search + The index of the first non-whitespace char in the string + + + + Find the first non-whitespace character in a given substring. + + The string to search + The start index + The last index (non-inclusive) + The index of the first non-whitespace char after index start in the string up to, but not including the end index + + + + Determine if the given string starts with the given prefix if whitespace + is first trimmed from the beginning. + + The string to search + The prefix + true if str.TrimStart().StartsWith(prefix) + + + + Given a string which may contain newline sequences, get the index of the first newline + sequence beginning at the given starting index. + + The string to split. + The starting index within the string. + The length of the newline sequence discovered. 0 if the end of the string was reached, otherwise either 1 or 2 chars + The index of the start of the first newline sequence following the start index + + + + Given the full text of a single-line style documentation comment, for each line, strip off + the comment punctuation (///) and add appropriate indentations. + + + + + Given the full text of a multi-line style documentation comment, broken into lines, strip off + the comment punctuation (/**, */, etc) and add appropriate indentations. + + + + + Remove "*/" and any following text, if it is present. + + + + + Return the longest prefix matching [whitespace]*[*][whitespace]*. + + + + + Return the longest common prefix of two strings + + + + + Bind a CrefSyntax and unwrap the result if it's an alias. + + + Does not respect DocumentationMode, so use a temporary bag if diagnostics are not desired. + + + + + Given a cref syntax that cannot be resolved, get the string that will be written to + the documentation file in place of a documentation comment ID. + + + + + Bind an XmlNameAttributeSyntax and update the sets of documented parameters and type parameters. + + + Does not respect DocumentationMode, so do not call unless diagnostics are desired. + + + + + WORKAROUND: + We're taking a dependency on the location and structure of a framework assembly resource. This is not a robust solution. + + Possible alternatives: + 1) Polish our XML parser until it matches MSXML. We don't want to reinvent the wheel. + 2) Build a map that lets us go from XML string positions back to source positions. + This is what the native compiler did, and it was a lot of work. We'd also still need to modify the message. + 3) Do not report a diagnostic. This is very unhelpful. + 4) Report a vague diagnostic (i.e. there's a problem somewhere in this doc comment). This is relatively unhelpful. + 5) Always report the message in English, so that we can pull it apart without needing to consume resource files. + This engenders a lot of ill will. + 6) Report the exception message without modification and (optionally) include the text with respect to which the + position is specified. This would not look sufficiently polished. + + + + + Walks a DocumentationCommentTriviaSyntax, binding the semantically meaningful parts + to produce diagnostics and to replace source crefs with documentation comment IDs. + + + + + Given a DocumentationCommentTriviaSyntax, return the full text, but with + documentation comment IDs substituted into crefs. + + + Still has all of the comment punctuation (///, /**, etc). + + + + + Rewrites nodes in , which is a snapshot of nodes from the original document. + We're mutating the tree as we rewrite, so it's important to grab a snapshot of the + nodes that we're going to reparent before we enumerate them. + + + + + This method boils down to Rewrite(XDocument.Load(fileAttrValue).XPathSelectElements(pathAttrValue)). + Everything else is error handling. + + + + + Respects the DocumentationMode at the source location. + + + + + Respects the DocumentationMode at the source location. + + + + + In some circumstances (e.g. implicit implementation of an interface method by a non-virtual method in a + base type from another assembly) it is necessary for the compiler to generate explicit implementations for + some interface methods. They don't go in the symbol table, but if we are emitting, then we should + generate code for them. + + + + + Synthesized parameterless constructors in structs chain to the "default" constructor + + + + + Bind the (implicit or explicit) constructor initializer of a constructor symbol. + + Constructor method. + Accumulates errors (e.g. access "this" in constructor initializer). + Used to retrieve binder. + A bound expression for the constructor initializer call. + + + + Returns true if the method is a constructor and has a this() constructor initializer. + + + + + Contains methods related to synthesizing bound nodes in initial binding + form that needs lowering, primarily method bodies for compiler-generated methods. + + + + + Generates a submission initialization part of a Script type constructor that represents an interactive submission. + + + The constructor takes a parameter of type Microsoft.CodeAnalysis.Scripting.Session - the session reference. + It adds the object being constructed into the session by calling Microsoft.CSharp.RuntimeHelpers.SessionHelpers.SetSubmission, + and retrieves strongly typed references on all previous submission script classes whose members are referenced by this submission. + The references are stored to fields of the submission (). + + + + + Construct a body for an auto-property accessor (updating or returning the backing field). + + + + + Generate an accessor for a field-like event. + + + + + Generate a thread-safe accessor for a WinRT field-like event. + + Add: + return EventRegistrationTokenTable<Event>.GetOrCreateEventRegistrationTokenTable(ref _tokenTable).AddEventHandler(value); + + Remove: + EventRegistrationTokenTable<Event>.GetOrCreateEventRegistrationTokenTable(ref _tokenTable).RemoveEventHandler(value); + + + + + Generate a thread-safe accessor for a regular field-like event. + + DelegateType tmp0 = _event; //backing field + DelegateType tmp1; + DelegateType tmp2; + do { + tmp1 = tmp0; + tmp2 = (DelegateType)Delegate.Combine(tmp1, value); //Remove for -= + tmp0 = Interlocked.CompareExchange<DelegateType>(ref _event, tmp2, tmp1); + } while ((object)tmp0 != (object)tmp1); + + Note, if System.Threading.Interlocked.CompareExchange<T> is not available, + we emit the following code and mark the method Synchronized (unless it is a struct). + + _event = (DelegateType)Delegate.Combine(_event, value); //Remove for -= + + + + + + Look for a base type method named "Finalize" that is protected (or protected internal), has no parameters, + and returns void. It doesn't need to be virtual or a destructor. + + + You may assume that this would share code and logic with PEMethodSymbol.OverridesRuntimeFinalizer, + but FUNCBRECCS::bindDestructor has its own loop that performs these checks (differently). + + + + + When compiling in metadata-only mode, is not run. This is problematic because + adds synthesized explicit implementations to the list of synthesized definitions. + In lieu of running , this class performs a quick + traversal of the symbol table and performs processing of synthesized symbols if necessary + + + + + Traverse the symbol table and call Module.AddSynthesizedDefinition for each + synthesized explicit implementation stub that has been generated (e.g. when the real + implementation doesn't have the appropriate custom modifiers). + + + + + Represents the state of compilation of one particular type. + This includes, for example, a collection of synthesized methods created during lowering. + + + WARNING: Note that the collection class is not thread-safe and will + need to be revised if emit phase is changed to support multithreading when + translating a particular type. + + + + Synthesized method info + + + Flat array of created methods, non-empty if not-null + + + + Map of wrapper methods created for base access of base type virtual methods from + other classes (like those created for lambdas...); actually each method symbol will + only need one wrapper to call it non-virtually. + + + + + Type symbol being compiled, or null if we compile a synthesized type that doesn't have a symbol (e.g. PrivateImplementationDetails). + + + + + The builder for generating code, or null if not in emit phase. + + + + + Any generated methods that don't suppress debug info will use this + list of debug imports. + + + + + A graph of method->method references for this(...) constructor initializers. + Used to detect and report initializer cycles. + + + + + The type for which this compilation state is being used. + + + + + The type passed to the runtime binder as context. + + + + + Add a 'regular' synthesized method. + + + + + Add a 'wrapper' synthesized method and map it to the original one so it can be reused. + + + Wrapper methods are created for base access of base type virtual methods from + other classes (like those created for lambdas...). + + + + The index of the next wrapped method to be used + + + + Get a 'wrapper' method for the original one. + + + Wrapper methods are created for base access of base type virtual methods from + other classes (like those created for lambdas...). + + + + Free resources allocated for this method collection + + + + Report an error if adding the edge (method1, method2) to the ctor-initializer + graph would add a new cycle to that graph. + + a calling ctor + the chained-to ctor + where to report a cyclic error if needed + a diagnostic bag for receiving the diagnostic + + + + Represents various options that affect compilation, such as + whether to emit an executable or a library, whether to optimize + generated code, and so on. + + + + + Allow unsafe regions (i.e. unsafe modifiers on members and unsafe blocks). + + + + + Global namespace usings. + + + + + Flags applied to the top-level binder created for each syntax tree in the compilation + as well as for the binder of global imports. + + + + + Insert one or more tokens in the list at the specified index. + + A new list with the tokens inserted. + + + + Creates a new token with the specified old trivia replaced with computed new trivia. + + + The trivia to be replaced; descendants of the root token. + A function that computes a replacement trivia for + the argument trivia. The first argument is the original trivia. The second argument is + the same trivia rewritten with replaced structure. + + + + Creates a new token with the specified old trivia replaced with a new trivia. The old trivia may appear in + the token's leading or trailing trivia. + + + The trivia to be replaced. + The new trivia to use in the new tree in place of the old + trivia. + + + + Returns this list as a . + + The type of the list elements in the separated list. + + + + + Gets the first directive of the tree rooted by this node. + + + + + Gets the last directive of the tree rooted by this node. + + + + + Gets the semantic information for an ordering clause in an orderby query clause. + + + + + Gets the semantic information associated with a select or group clause. + + + + + Returns what symbol(s), if any, the given expression syntax bound to in the program. + + An AliasSymbol will never be returned by this method. What the alias refers to will be + returned instead. To get information about aliases, call GetAliasInfo. + + If binding the type name C in the expression "new C(...)" the actual constructor bound to + will be returned (or all constructor if overload resolution failed). This occurs as long as C + unambiguously binds to a single type that has a constructor. If C ambiguously binds to multiple + types, or C binds to a static class, then type(s) are returned. + + + + + Returns what 'Add' method symbol(s), if any, corresponds to the given expression syntax + within . + + + + + Returns what symbol(s), if any, the given constructor initializer syntax bound to in the program. + + + + + Returns what symbol(s), if any, the given attribute syntax bound to in the program. + + + + + Gets the semantic information associated with a documentation comment cref. + + + + + Binds the expression in the context of the specified location and gets symbol information. + This method is used to get symbol information about an expression that did not actually + appear in the source code. + + + + + Binds the CrefSyntax expression in the context of the specified location and gets symbol information. + This method is used to get symbol information about an expression that did not actually + appear in the source code. + + + + + Bind the attribute in the context of the specified location and get semantic information + such as type, symbols and diagnostics. This method is used to get semantic information about an attribute + that did not actually appear in the source code. + + + + + Bind the constructor initializer in the context of the specified location and get semantic information + such as type, symbols and diagnostics. This method is used to get semantic information about a constructor + initializer that did not actually appear in the source code. + + NOTE: This will only work in locations where there is already a constructor initializer. + + + + + Gets type information about a constructor initializer. + + + + + Gets type information about an expression. + + + + + Gets type information about an attribute. + + + + + Binds the expression in the context of the specified location and gets type information. + This method is used to get type information about an expression that did not actually + appear in the source code. + + + + + Returns the list of accessible, non-hidden indexers that could be invoked with the given expression as receiver. + + + + + Gets the semantic information associated with a query clause. + + + + + If resolves to an alias name, return the AliasSymbol corresponding + to A. Otherwise return null. + + + + + Binds the name in the context of the specified location and sees if it resolves to an + alias name. If it does, return the AliasSymbol corresponding to it. Otherwise, return null. + + + + + Analyze control-flow within a part of a method body. + + + + + Analyze control-flow within a part of a method body. + + + + + Analyze data-flow within an expression. + + + + + Analyze data-flow within a part of a method body. + + + + + Analyze data-flow within a part of a method body. + + + + + Get a SemanticModel object that is associated with a method body that did not appear in this source code. + Given must lie within an existing method body of the Root syntax node for this SemanticModel. + Locals and labels declared within this existing method body are not considered to be in scope of the speculated method body. + + + + + Get a SemanticModel object that is associated with a method body that did not appear in this source code. + Given must lie within an existing method body of the Root syntax node for this SemanticModel. + Locals and labels declared within this existing method body are not considered to be in scope of the speculated method body. + + + + + Get a SemanticModel object that is associated with a type syntax node that did not appear in + this source code. This can be used to get detailed semantic information about sub-parts + of a type syntax that did not appear in source code. + + + + + Get a SemanticModel object that is associated with a cref syntax node that did not appear in + this source code. This can be used to get detailed semantic information about sub-parts + of a cref syntax that did not appear in source code. + + + + + Get a SemanticModel object that is associated with a statement that did not appear in + this source code. This can be used to get detailed semantic information about sub-parts + of a statement that did not appear in source code. + + + + + Get a SemanticModel object that is associated with an initializer that did not appear in + this source code. This can be used to get detailed semantic information about sub-parts + of a field initializer or default parameter value that did not appear in source code. + + + + + Get a SemanticModel object that is associated with an expression body that did not appear in + this source code. This can be used to get detailed semantic information about sub-parts + of an expression body that did not appear in source code. + + + + + Get a SemanticModel object that is associated with a constructor initializer that did not appear in + this source code. This can be used to get detailed semantic information about sub-parts + of a constructor initializer that did not appear in source code. + + NOTE: This will only work in locations where there is already a constructor initializer. + + + + + Get a SemanticModel object that is associated with an attribute that did not appear in + this source code. This can be used to get detailed semantic information about sub-parts + of an attribute that did not appear in source code. + + + + + Determines what type of conversion, if any, would be used if a given expression was + converted to a given type. If isExplicitInSource is true, the conversion produced is + that which would be used if the conversion were done for a cast expression. + + + + + Determines what type of conversion, if any, would be used if a given expression was + converted to a given type. If isExplicitInSource is true, the conversion produced is + that which would be used if the conversion were done for a cast expression. + + + + + Given a member declaration syntax, get the corresponding symbol. + + + + + Given a namespace declaration syntax node, get the corresponding namespace symbol for + the declaration assembly. + + + + + Given a type declaration, get the corresponding type symbol. + + + + + Given a delegate declaration, get the corresponding type symbol. + + + + + Given a enum member declaration, get the corresponding field symbol. + + + + + Given a base method declaration syntax, get the corresponding method symbol. + + + + + Given a syntax node that declares a property, indexer or an event, get the corresponding declared symbol. + + + + + Given a syntax node that declares a property, get the corresponding declared symbol. + + + + + Given a syntax node that declares an indexer, get the corresponding declared symbol. + + + + + Given a syntax node that declares a (custom) event, get the corresponding event symbol. + + + + + Given a syntax node of anonymous object creation initializer, get the anonymous object property symbol. + + + + + Given a syntax node of anonymous object creation expression, get the anonymous object type symbol. + + + + + Given a syntax node that declares a property or member accessor, get the corresponding symbol. + + + + + Given a variable declarator syntax, get the corresponding symbol. + + + + + Given a labeled statement syntax, get the corresponding label symbol. + + + + + Given a switch label syntax, get the corresponding label symbol. + + + + + Given a using declaration get the corresponding symbol for the using alias that was introduced. + + + + + Given an extern alias declaration get the corresponding symbol for the alias that was introduced. + + + + + Given a parameter declaration syntax node, get the corresponding symbol. + + + + + Given a type parameter declaration (field or method), get the corresponding symbol + + + + + Given a foreach statement, get the symbol for the iteration variable + + + + + Given a catch declaration, get the symbol for the exception variable + + + + + Get the query range variable declared in a join into clause. + + + + + Get the query range variable declared in a query continuation clause. + + + + + Emit the IL for the compilation into the specified stream. + + Compilation. + Path of the file to which the PE image will be written. + Path of the file to which the compilation's debug info will be written. + Also embedded in the output file. Null to forego PDB generation. + + Path of the file to which the compilation's XML documentation will be written. Null to forego XML generation. + Path of the file from which the compilation's Win32 resources will be read (in RES format). + Null to indicate that there are none. + List of the compilation's managed resources. Null to indicate that there are none. + To cancel the emit process. + Compilation or path is null. + Path is empty or invalid. + An error occurred while reading or writing a file. + + + + This class stores several source parsing related options and offers access to their values. + + + + + The default parse options. + + + + + Gets the language version. + + + + + Gets the names of defined preprocessor symbols. + + + + + Enable some experimental language features for testing. + + + + + A strongly-typed resource class, for looking up localized strings, etc. + + + + + Returns the cached ResourceManager instance used by this class. + + + + + Overrides the current thread's CurrentUICulture property for all + resource lookups using this strongly typed resource class. + + + + + Looks up a localized string similar to Can't reference compilation of type '{0}' from {1} compilation.. + + + + + Looks up a localized string similar to Chaining speculative semantic model is not supported. You should create a speculative model from the non-speculative ParentModel.. + + + + + Looks up a localized string similar to Compilation (C#): . + + + + + Looks up a localized string similar to Could not find file.. + + + + + Looks up a localized string similar to element is expected. + + + + + Looks up a localized string similar to Elements cannot be null.. + + + + + Looks up a localized string similar to '{0}' cannot be both extern and abstract. + + + + + Looks up a localized string similar to '{0}' cannot be both abstract and sealed. + + + + + Looks up a localized string similar to Cannot apply attribute class '{0}' because it is abstract. + + + + + Looks up a localized string similar to Cannot call an abstract base member: '{0}'. + + + + + Looks up a localized string similar to '{0}': abstract event cannot have initializer. + + + + + Looks up a localized string similar to The modifier 'abstract' is not valid on fields. Try using a property instead.. + + + + + Looks up a localized string similar to '{0}' cannot declare a body because it is marked abstract. + + + + + Looks up a localized string similar to '{0}' is abstract but it is contained in non-abstract class '{1}'. + + + + + Looks up a localized string similar to The abstract method '{0}' cannot be marked virtual. + + + + + Looks up a localized string similar to '{0}': an abstract class cannot be sealed or static. + + + + + Looks up a localized string similar to '{0}': accessibility modifiers on accessors may only be used if the property or indexer has both a get and a set accessor. + + + + + Looks up a localized string similar to Accessor '{0}' cannot implement interface member '{1}' for type '{2}'. Use an explicit interface implementation.. + + + + + Looks up a localized string similar to Properties cannot combine accessor lists with expression bodies.. + + + + + Looks up a localized string similar to '{0}' cannot be added to this assembly because it already is an assembly. + + + + + Looks up a localized string similar to An add or remove accessor expected. + + + + + Looks up a localized string similar to An add or remove accessor must have a body. + + + + + Looks up a localized string similar to Cannot take the address of a read-only local variable. + + + + + Looks up a localized string similar to Agnostic assembly cannot have a processor specific module '{0}'.. + + + + + Looks up a localized string similar to Invalid reference alias option: '{0}=' -- missing filename. + + + + + Looks up a localized string similar to Alias '{0}' not found. + + + + + Looks up a localized string similar to The namespace alias qualifier '::' always resolves to a type or namespace so is illegal here. Consider using '.' instead.. + + + + + Looks up a localized string similar to An alias-qualified name is not an expression.. + + + + + Looks up a localized string similar to Operator '{0}' is ambiguous on operands of type '{1}' and '{2}'. + + + + + Looks up a localized string similar to The call is ambiguous between the following methods or properties: '{0}' and '{1}'. + + + + + Looks up a localized string similar to '{0}' is an ambiguous reference between '{1}' and '{2}'. + + + + + Looks up a localized string similar to Ambiguity between '{0}' and '{1}'. + + + + + Looks up a localized string similar to The inherited members '{0}' and '{1}' have the same signature in type '{2}', so they cannot be overridden. + + + + + Looks up a localized string similar to Type of conditional expression cannot be determined because '{0}' and '{1}' implicitly convert to one another. + + + + + Looks up a localized string similar to Ambiguous user defined conversions '{0}' and '{1}' when converting from '{2}' to '{3}'. + + + + + Looks up a localized string similar to Operator '{0}' is ambiguous on an operand of type '{1}'. + + + + + Looks up a localized string similar to '{0}' is ambiguous between '{1}' and '{2}'; use either '@{0}' or '{0}Attribute'. + + + + + Looks up a localized string similar to Cannot use ref or out parameter '{0}' inside an anonymous method, lambda expression, or query expression. + + + + + Looks up a localized string similar to Foreach cannot operate on a '{0}'. Did you intend to invoke the '{0}'?. + + + + + Looks up a localized string similar to Cannot convert {0} to type '{1}' because it is not a delegate type. + + + + + Looks up a localized string similar to An anonymous method expression cannot be converted to an expression tree. + + + + + Looks up a localized string similar to Not all code paths return a value in {0} of type '{1}'. + + + + + Looks up a localized string similar to An anonymous type cannot have multiple properties with the same name. + + + + + Looks up a localized string similar to Cannot use anonymous type in a constant expression. + + + + + Looks up a localized string similar to Cannot assign {0} to anonymous type property. + + + + + Looks up a localized string similar to The __arglist construct is valid only within a variable argument method. + + + + + Looks up a localized string similar to Array elements cannot be of type '{0}'. + + + + + Looks up a localized string similar to A nested array initializer is expected. + + + + + Looks up a localized string similar to An array initializer of length '{0}' is expected. + + + + + Looks up a localized string similar to Array initializers can only be used in a variable or field initializer. Try using a new expression instead.. + + + + + Looks up a localized string similar to Can only use array initializer expressions to assign to array types. Try using a new expression instead.. + + + + + Looks up a localized string similar to '{0}': array elements cannot be of static type. + + + + + Looks up a localized string similar to Array size cannot be specified in a variable declaration (try initializing with a 'new' expression). + + + + + Looks up a localized string similar to The as operator must be used with a reference type or nullable type ('{0}' is a non-nullable value type). + + + + + Looks up a localized string similar to Assembly '{0}' with identity '{1}' uses '{2}' which has a higher version than referenced assembly '{3}' with identity '{4}'. + + + + + Looks up a localized string similar to The /moduleassemblyname option may only be specified when building a target type of 'module'. + + + + + Looks up a localized string similar to Assemblies '{0}' and '{1}' refer to the same metadata but only one is a linked reference (specified using /link option); consider removing one of the references.. + + + + + Looks up a localized string similar to The left-hand side of an assignment must be a variable, property or indexer. + + + + + Looks up a localized string similar to A readonly field cannot be assigned to (except in a constructor or a variable initializer). + + + + + Looks up a localized string similar to Members of readonly field '{0}' cannot be modified (except in a constructor or a variable initializer). + + + + + Looks up a localized string similar to Cannot assign to '{0}' because it is read-only. + + + + + Looks up a localized string similar to Cannot modify members of '{0}' because it is a '{1}'. + + + + + Looks up a localized string similar to Cannot assign to '{0}' because it is a '{1}'. + + + + + Looks up a localized string similar to Property or indexer '{0}' cannot be assigned to -- it is read only. + + + + + Looks up a localized string similar to A static readonly field cannot be assigned to (except in a static constructor or a variable initializer). + + + + + Looks up a localized string similar to Fields of static readonly field '{0}' cannot be assigned to (except in a static constructor or a variable initializer). + + + + + Looks up a localized string similar to The type parameter '{0}' cannot be used with the 'as' operator because it does not have a class type constraint nor a 'class' constraint. + + + + + Looks up a localized string similar to '{0}': an attribute argument cannot use type parameters. + + + + + Looks up a localized string similar to Cannot apply attribute class '{0}' because it is generic. + + + + + Looks up a localized string similar to Attribute '{0}' is not valid on property or event accessors. It is only valid on '{1}' declarations.. + + + + + Looks up a localized string similar to Attribute '{0}' is not valid on this declaration type. It is only valid on '{1}' declarations.. + + + + + Looks up a localized string similar to Attribute parameter '{0}' must be specified.. + + + + + Looks up a localized string similar to Attribute parameter '{0}' or '{1}' must be specified.. + + + + + Looks up a localized string similar to Attributes are not valid in this context.. + + + + + Looks up a localized string similar to Attribute '{0}' is only valid on classes derived from System.Attribute. + + + + + Looks up a localized string similar to Auto-implemented properties inside interfaces cannot have initializers.. + + + + + Looks up a localized string similar to Auto-implemented properties must have get accessors.. + + + + + Looks up a localized string similar to Auto-implemented properties must override all accessors of the overridden property.. + + + + + Looks up a localized string similar to Cannot await in an unsafe context. + + + + + Looks up a localized string similar to '{0}' is inaccessible due to its protection level. + + + + + Looks up a localized string similar to AppConfigPath must be absolute.. + + + + + Looks up a localized string similar to No overload for method '{0}' takes {1} arguments. + + + + + Looks up a localized string similar to Argument {0} may not be passed with the '{1}' keyword. + + + + + Looks up a localized string similar to Argument {0} must be passed with the '{1}' keyword. + + + + + Looks up a localized string similar to Argument {0}: cannot convert from '{1}' to '{2}'. + + + + + Looks up a localized string similar to '{0}' has no applicable method named '{1}' but appears to have an extension method by that name. Extension methods cannot be dynamically dispatched. Consider casting the dynamic arguments or calling the extension method without the extension method syntax.. + + + + + Looks up a localized string similar to The best overloaded Add method '{0}' for the collection initializer has some invalid arguments. + + + + + Looks up a localized string similar to The argument to the '{0}' attribute must be a valid identifier. + + + + + Looks up a localized string similar to Using the generic {1} '{0}' requires {2} type arguments. + + + + + Looks up a localized string similar to Array type specifier, [], must appear before parameter name. + + + + + Looks up a localized string similar to Async methods cannot have ref or out parameters. + + + + + Looks up a localized string similar to Async lambda expressions cannot be converted to expression trees. + + + + + Looks up a localized string similar to The 'async' modifier can only be used in methods that have a body.. + + + + + Looks up a localized string similar to The return type of an async method must be void, Task or Task<T>. + + + + + Looks up a localized string similar to Since this is an async method, the return expression must be of type '{0}' rather than 'Task<{0}>'. + + + + + Looks up a localized string similar to An attribute argument must be a constant expression, typeof expression or array creation expression of an attribute parameter type. + + + + + Looks up a localized string similar to Attribute constructor parameter '{0}' is optional, but no default parameter value was specified.. + + + + + Looks up a localized string similar to Attribute constructor parameter '{0}' has type '{1}', which is not a valid attribute parameter type. + + + + + Looks up a localized string similar to 'await' requires that the type {0} have a suitable GetAwaiter method. + + + + + Looks up a localized string similar to 'await' requires that the type '{0}' have a suitable GetAwaiter method. Are you missing a using directive for 'System'?. + + + + + Looks up a localized string similar to Cannot await '{0}'. + + + + + Looks up a localized string similar to Cannot await 'void'. + + + + + Looks up a localized string similar to 'await' cannot be used as an identifier within an async method or lambda expression. + + + + + Looks up a localized string similar to 'await' requires that the return type '{0}' of '{1}.GetAwaiter()' have suitable IsCompleted, OnCompleted, and GetResult members, and implement INotifyCompletion or ICriticalNotifyCompletion. + + + + + Looks up a localized string similar to Cannot await in a catch clause. + + + + + Looks up a localized string similar to Cannot await in the filter expression of a catch clause. + + + + + Looks up a localized string similar to Cannot await in the body of a finally clause. + + + + + Looks up a localized string similar to Cannot await in the body of a lock statement. + + + + + Looks up a localized string similar to The 'await' operator may only be used in a query expression within the first collection expression of the initial 'from' clause or within the collection expression of a 'join' clause. + + + + + Looks up a localized string similar to The 'await' operator cannot be used in a static script variable initializer.. + + + + + Looks up a localized string similar to The 'await' operator can only be used when contained within a method or lambda expression marked with the 'async' modifier. + + + + + Looks up a localized string similar to The 'await' operator can only be used within an async {0}. Consider marking this {0} with the 'async' modifier.. + + + + + Looks up a localized string similar to The 'await' operator can only be used within an async method. Consider marking this method with the 'async' modifier and changing its return type to 'Task<{0}>'.. + + + + + Looks up a localized string similar to The 'await' operator can only be used within an async method. Consider marking this method with the 'async' modifier and changing its return type to 'Task'.. + + + + + Looks up a localized string similar to Invalid image base number '{0}'. + + + + + Looks up a localized string similar to Invalid base type. + + + + + Looks up a localized string similar to One of the parameters of a binary operator must be the containing type. + + + + + Looks up a localized string similar to Operator '{0}' cannot be applied to operands of type '{1}' and '{2}'. + + + + + Looks up a localized string similar to Overloaded binary operator '{0}' takes two parameters. + + + + + Looks up a localized string similar to In order to be applicable as a short circuit operator a user-defined logical operator ('{0}') must have the same return type and parameter types. + + + + + Looks up a localized string similar to '{0}' is not a valid constraint. A type used as a constraint must be an interface, a non-sealed class or a type parameter.. + + + + + Looks up a localized string similar to The CallerFilePathAttribute may only be applied to parameters with default values. + + + + + Looks up a localized string similar to The CallerLineNumberAttribute may only be applied to parameters with default values. + + + + + Looks up a localized string similar to The CallerMemberNameAttribute may only be applied to parameters with default values. + + + + + Looks up a localized string similar to The right hand side of a fixed statement assignment may not be a cast expression. + + + + + Looks up a localized string similar to The managed coclass wrapper class signature '{0}' for interface '{1}' is not a valid class name signature. + + + + + Looks up a localized string similar to Invalid option '{0}' for /langversion; must be ISO-1, ISO-2, Default or an integer in range 1 to 6.. + + + + + Looks up a localized string similar to {0}. + + + + + Looks up a localized string similar to Invalid '{0}' value: '{1}'.. + + + + + Looks up a localized string similar to Invalid constraint type. A type used as a constraint must be an interface, a non-sealed class or a type parameter.. + + + + + Looks up a localized string similar to The type '{0}' cannot be declared const. + + + + + Looks up a localized string similar to '{0}' does not contain a constructor that takes {1} arguments. + + + + + Looks up a localized string similar to Invalid option '{0}' for /debug; must be full or pdbonly. + + + + + Looks up a localized string similar to Delegate '{0}' does not take {1} arguments. + + + + + Looks up a localized string similar to The delegate '{0}' does not have a valid constructor. + + + + + Looks up a localized string similar to Control cannot leave the body of an anonymous method or lambda expression. + + + + + Looks up a localized string similar to Name of destructor must match name of class. + + + + + Looks up a localized string similar to Preprocessor directives must appear as the first non-whitespace character on a line. + + + + + Looks up a localized string similar to '{0}': user-defined conversions to or from the dynamic type are not allowed. + + + + + Looks up a localized string similar to Cannot use an expression of type '{0}' as an argument to a dynamically dispatched operation.. + + + + + Looks up a localized string similar to Cannot use a lambda expression as an argument to a dynamically dispatched operation without first casting it to a delegate or expression tree type.. + + + + + Looks up a localized string similar to Cannot use a method group as an argument to a dynamically dispatched operation. Did you intend to invoke the method?. + + + + + Looks up a localized string similar to Query expressions over source type 'dynamic' or with a join sequence of type 'dynamic' are not allowed. + + + + + Looks up a localized string similar to The typeof operator cannot be used on the dynamic type. + + + + + Looks up a localized string similar to Embedded statement cannot be a declaration or labeled statement. + + + + + Looks up a localized string similar to A throw statement with no arguments is not allowed outside of a catch clause. + + + + + Looks up a localized string similar to A throw statement with no arguments is not allowed in a finally clause that is nested inside the nearest enclosing catch clause. + + + + + Looks up a localized string similar to The event '{0}' can only appear on the left hand side of += or -= (except when used from within the type '{1}'). + + + + + Looks up a localized string similar to The event '{0}' can only appear on the left hand side of += or -=. + + + + + Looks up a localized string similar to The type caught or thrown must be derived from System.Exception. + + + + + Looks up a localized string similar to Extension method must be defined in a non-generic static class. + + + + + Looks up a localized string similar to '{0}' does not contain a definition for '{1}' and the best extension method overload '{2}' has some invalid arguments. + + + + + Looks up a localized string similar to Extension method must be static. + + + + + Looks up a localized string similar to The extern alias '{0}' was not specified in a /reference option. + + + + + Looks up a localized string similar to Invalid extern alias for '/reference'; '{0}' is not a valid identifier. + + + + + Looks up a localized string similar to Control cannot leave the body of a finally clause. + + + + + Looks up a localized string similar to The type of a local declared in a fixed statement must be a pointer type. + + + + + Looks up a localized string similar to Type and identifier are both required in a foreach statement. + + + + + Looks up a localized string similar to foreach requires that the return type '{0}' of '{1}' must have a suitable public MoveNext method and public Current property. + + + + + Looks up a localized string similar to The return type for ++ or -- operator must match the parameter type or be derived from the parameter type. + + + + + Looks up a localized string similar to The parameter type for ++ or -- operator must be the containing type. + + + + + Looks up a localized string similar to Wrong number of indices inside []; expected {0}. + + + + + Looks up a localized string similar to The '{0}' attribute is valid only on an indexer that is not an explicit interface member declaration. + + + + + Looks up a localized string similar to Cannot apply indexing with [] to an expression of type '{0}'. + + + + + Looks up a localized string similar to '{0}' does not contain a definition for '{1}' and the best extension method overload '{2}' requires a receiver of type '{3}'. + + + + + Looks up a localized string similar to Iterators cannot have ref or out parameters. + + + + + Looks up a localized string similar to The body of '{0}' cannot be an iterator block because '{1}' is not an iterator interface type. + + + + + Looks up a localized string similar to The modifier '{0}' is not valid for this item. + + + + + Looks up a localized string similar to More than one protection modifier. + + + + + Looks up a localized string similar to Member modifier '{0}' must precede the member type and name. + + + + + Looks up a localized string similar to A namespace declaration cannot have modifiers or attributes. + + + + + Looks up a localized string similar to The best overload for '{0}' does not have a parameter named '{1}'. + + + + + Looks up a localized string similar to The delegate '{0}' does not have a parameter named '{1}'. + + + + + Looks up a localized string similar to '{0}' is not a valid named attribute argument. Named attribute arguments must be fields which are not readonly, static, or const, or read-write properties which are public and not static.. + + + + + Looks up a localized string similar to '{0}' is not a valid named attribute argument because it is not a valid attribute parameter type. + + + + + Looks up a localized string similar to A new expression requires (), [], or {} after type. + + + + + Looks up a localized string similar to Declaration is not valid; use '{0} operator <dest-type> (...' instead. + + + + + Looks up a localized string similar to The parameter modifier 'out' cannot be used with 'this' . + + + + + Looks up a localized string similar to Parameter {0} should not be declared with the '{1}' keyword. + + + + + Looks up a localized string similar to A parameter array cannot be used with 'this' modifier on an extension method. + + + + + Looks up a localized string similar to Parameter {0} must be declared with the '{1}' keyword. + + + + + Looks up a localized string similar to Parameter {0} is declared as type '{1}{2}' but should be '{3}{4}'. + + + + + Looks up a localized string similar to Error reading debug information for '{0}'. + + + + + Looks up a localized string similar to Invalid option '{0}' for /platform; must be anycpu, x86, Itanium or x64. + + + + + Looks up a localized string similar to /platform:anycpu32bitpreferred can only be used with /t:exe, /t:winexe and /t:appcontainerexe. + + + + + Looks up a localized string similar to Cannot access protected member '{0}' via a qualifier of type '{1}'; the qualifier must be of type '{2}' (or derived from it). + + + + + Looks up a localized string similar to The parameter modifier 'ref' cannot be used with 'this' . + + + + + Looks up a localized string similar to Invalid option '{0}'; Resource visibility must be either 'public' or 'private'. + + + + + Looks up a localized string similar to '{1} {0}' has the wrong return type. + + + + + Looks up a localized string similar to The first operand of an overloaded shift operator must have the same type as the containing type, and the type of the second operand must be int. + + + + + Looks up a localized string similar to '{0}' is a {1} but is used like a {2}. + + + + + Looks up a localized string similar to '{0}' is a {1}, which is not valid in the given context. + + + + + Looks up a localized string similar to Parameters or locals of type '{0}' cannot be declared in async methods or lambda expressions.. + + + + + Looks up a localized string similar to A stackalloc expression requires [] after type. + + + + + Looks up a localized string similar to Unrecognized option: '{0}'. + + + + + Looks up a localized string similar to Method '{0}' has a parameter modifier 'this' which is not on the first parameter. + + + + + Looks up a localized string similar to The type '{0}' may not be used as a type argument. + + + + + Looks up a localized string similar to The first parameter of an extension method cannot be of type '{0}'. + + + + + Looks up a localized string similar to '{0}': cannot reference a type through an expression; try '{1}' instead. + + + + + Looks up a localized string similar to Operator '{0}' cannot be applied to operand of type '{1}'. + + + + + Looks up a localized string similar to The parameter of a unary operator must be the containing type. + + + + + Looks up a localized string similar to Overloaded unary operator '{0}' takes one parameter. + + + + + Looks up a localized string similar to A 'using namespace' directive can only be applied to namespaces; '{0}' is a type not a namespace. Consider a 'using static' directive instead. + + + + + Looks up a localized string similar to A 'using static' directive can only be applied to types; '{0}' is a namespace not a type. Consider a 'using namespace' directive instead. + + + + + Looks up a localized string similar to A method with vararg cannot be generic, be in a generic type, or have a params parameter. + + + + + Looks up a localized string similar to Expected ; or = (cannot specify constructor arguments in declaration). + + + + + Looks up a localized string similar to Inconsistent accessibility: base class '{1}' is less accessible than class '{0}'. + + + + + Looks up a localized string similar to Inconsistent accessibility: base interface '{1}' is less accessible than interface '{0}'. + + + + + Looks up a localized string similar to Inconsistent accessibility: constraint type '{1}' is less accessible than '{0}'. + + + + + Looks up a localized string similar to Inconsistent accessibility: parameter type '{1}' is less accessible than delegate '{0}'. + + + + + Looks up a localized string similar to Inconsistent accessibility: return type '{1}' is less accessible than delegate '{0}'. + + + + + Looks up a localized string similar to Inconsistent accessibility: event type '{1}' is less accessible than event '{0}'. + + + + + Looks up a localized string similar to Inconsistent accessibility: field type '{1}' is less accessible than field '{0}'. + + + + + Looks up a localized string similar to Inconsistent accessibility: parameter type '{1}' is less accessible than indexer '{0}'. + + + + + Looks up a localized string similar to Inconsistent accessibility: indexer return type '{1}' is less accessible than indexer '{0}'. + + + + + Looks up a localized string similar to Inconsistent accessibility: parameter type '{1}' is less accessible than operator '{0}'. + + + + + Looks up a localized string similar to Inconsistent accessibility: return type '{1}' is less accessible than operator '{0}'. + + + + + Looks up a localized string similar to Inconsistent accessibility: parameter type '{1}' is less accessible than method '{0}'. + + + + + Looks up a localized string similar to Inconsistent accessibility: property type '{1}' is less accessible than property '{0}'. + + + + + Looks up a localized string similar to Inconsistent accessibility: return type '{1}' is less accessible than method '{0}'. + + + + + Looks up a localized string similar to Warning level must be in the range 0-4. + + + + + Looks up a localized string similar to Error reading Win32 resources -- {0}. + + + + + Looks up a localized string similar to Cannot yield a value in the body of a catch clause. + + + + + Looks up a localized string similar to Cannot yield in the body of a finally clause. + + + + + Looks up a localized string similar to Cannot yield a value in the body of a try block with a catch clause. + + + + + Looks up a localized string similar to Base class '{0}' must come before any interfaces. + + + + + Looks up a localized string similar to Type parameter '{0}' inherits conflicting constraints '{1}' and '{2}'. + + + + + Looks up a localized string similar to Use of keyword 'base' is not valid in this context. + + + + + Looks up a localized string similar to Keyword 'base' is not available in the current context. + + + + + Looks up a localized string similar to Keyword 'base' is not available in a static method. + + + + + Looks up a localized string similar to '{0}' is a binary file instead of a text file. + + + + + Looks up a localized string similar to '{0}' is not supported by the language. + + + + + Looks up a localized string similar to Property, indexer, or event '{0}' is not supported by the language; try directly calling accessor method '{1}'. + + + + + Looks up a localized string similar to Property, indexer, or event '{0}' is not supported by the language; try directly calling accessor methods '{1}' or '{2}'. + + + + + Looks up a localized string similar to Methods cannot combine block bodies with expression bodies.. + + + + + Looks up a localized string similar to '{0}' cannot implement '{1}' because it is not supported by the language. + + + + + Looks up a localized string similar to '{0}' is a type not supported by the language. + + + + + Looks up a localized string similar to An expression tree lambda may not contain an out or ref parameter. + + + + + Looks up a localized string similar to By-reference return type 'ref {0}' is not supported.. + + + + + Looks up a localized string similar to 'await' cannot be used in an expression containing the type '{0}'. + + + + + Looks up a localized string similar to Do not directly call your base class Finalize method. It is called automatically from your destructor.. + + + + + Looks up a localized string similar to Destructors and object.Finalize cannot be called directly. Consider calling IDisposable.Dispose if available.. + + + + + Looks up a localized string similar to Cannot pass null for friend assembly name. + + + + + Looks up a localized string similar to '{0}': cannot explicitly call operator or accessor. + + + + + Looks up a localized string similar to '{0}': cannot change access modifiers when overriding '{1}' inherited member '{2}'. + + + + + Looks up a localized string similar to '{0}': return type must be '{2}' to match overridden member '{1}'. + + + + + Looks up a localized string similar to '{0}': type must be '{2}' to match overridden member '{1}'. + + + + + Looks up a localized string similar to Cannot convert anonymous method block without a parameter list to delegate type '{0}' because it has one or more out parameters. + + + + + Looks up a localized string similar to Cannot convert {0} to delegate type '{1}' because the parameter types do not match the delegate parameter types. + + + + + Looks up a localized string similar to Cannot convert {0} to intended delegate type because some of the return types in the block are not implicitly convertible to the delegate return type. + + + + + Looks up a localized string similar to Cannot convert async {0} to delegate type '{1}'. An async {0} may return void, Task or Task<T>, none of which are convertible to '{1}'.. + + + + + Looks up a localized string similar to '{0}': cannot derive from sealed type '{1}'. + + + + + Looks up a localized string similar to Conflicting options specified: Win32 resource file; Win32 icon. + + + + + Looks up a localized string similar to Conflicting options specified: Win32 resource file; Win32 manifest. + + + + + Looks up a localized string similar to The type arguments for method '{0}' cannot be inferred from the usage. Try specifying the type arguments explicitly.. + + + + + Looks up a localized string similar to Cannot create temporary file -- {0}. + + + + + Looks up a localized string similar to Cannot open '{0}' for writing -- '{1}'. + + + + + Looks up a localized string similar to Error opening icon file {0} -- {1}. + + + + + Looks up a localized string similar to Error opening Win32 manifest file {0} -- {1}. + + + + + Looks up a localized string similar to Error opening Win32 resource file '{0}' -- '{1}'. + + + + + Looks up a localized string similar to '{0}': cannot override '{1}' because it is not supported by the language. + + + + + Looks up a localized string similar to '{0}': cannot override; '{1}' is not an event. + + + + + Looks up a localized string similar to '{0}': cannot override because '{1}' is not a function. + + + + + Looks up a localized string similar to '{0}': cannot override because '{1}' is not a property. + + + + + Looks up a localized string similar to '{0}': cannot override inherited member '{1}' because it is not marked virtual, abstract, or override. + + + + + Looks up a localized string similar to '{0}': cannot override inherited member '{1}' because it is sealed. + + + + + Looks up a localized string similar to Cannot read config file '{0}' -- '{1}'. + + + + + Looks up a localized string similar to Error reading resource '{0}' -- '{1}'. + + + + + Looks up a localized string similar to Error reading ruleset file {0} - {1}. + + + + + Looks up a localized string similar to Cannot link resource files when building a module. + + + + + Looks up a localized string similar to Cannot return an expression of type 'void'. + + + + + Looks up a localized string similar to Error reading Win32 manifest file '{0}' -- '{1}'. + + + + + Looks up a localized string similar to The RequiredAttribute attribute is not permitted on C# types. + + + + + Looks up a localized string similar to The operation overflows at compile time in checked mode. + + + + + Looks up a localized string similar to The evaluation of the constant value for '{0}' involves a circular definition. + + + + + Looks up a localized string similar to Circular base class dependency involving '{0}' and '{1}'. + + + + + Looks up a localized string similar to Circular constraint dependency involving '{0}' and '{1}'. + + + + + Looks up a localized string similar to The class type constraint '{0}' must come before any other constraints. + + + + + Looks up a localized string similar to '{0}': containing type does not implement interface '{1}'. + + + + + Looks up a localized string similar to An object, string, or class type expected. + + + + + Looks up a localized string similar to ) expected. + + + + + Looks up a localized string similar to '{0}' does not implement interface member '{1}'. '{2}' cannot implement an interface member because it is not public.. + + + + + Looks up a localized string similar to '{0}' does not implement interface member '{1}'. '{2}' cannot implement an interface member because it is static.. + + + + + Looks up a localized string similar to '{0}' does not implement interface member '{1}'. '{2}' cannot implement '{1}' because it does not have the matching return type of '{3}'.. + + + + + Looks up a localized string similar to Attribute '{0}' given in a source file conflicts with option '{1}'.. + + + + + Looks up a localized string similar to Cannot use alias '{0}' with '::' since the alias references a type. Use '.' instead.. + + + + + Looks up a localized string similar to Cannot initialize type '{0}' with a collection initializer because it does not implement 'System.Collections.IEnumerable'. + + + + + Looks up a localized string similar to '{0}': a class with the ComImport attribute cannot specify a base class. + + + + + Looks up a localized string similar to Since '{1}' has the ComImport attribute, '{0}' must be extern or abstract. + + + + + Looks up a localized string similar to '{0}': a class with the ComImport attribute cannot specify field initializers.. + + + + + Looks up a localized string similar to The Guid attribute must be specified with the ComImport attribute. + + + + + Looks up a localized string similar to A class with the ComImport attribute cannot have a user-defined constructor. + + + + + Looks up a localized string similar to Compilation cancelled by user. + + + + + Looks up a localized string similar to An expression tree lambda may not contain a COM call with ref omitted on arguments. + + + + + Looks up a localized string similar to '{0}' must declare a body because it is not marked abstract, extern, or partial. + + + + + Looks up a localized string similar to The Conditional attribute is not valid on '{0}' because its return type is not void. + + + + + Looks up a localized string similar to The Conditional attribute is not valid on interface members. + + + + + Looks up a localized string similar to Attribute '{0}' is only valid on methods or attribute classes. + + + + + Looks up a localized string similar to The Conditional attribute is not valid on '{0}' because it is an override method. + + + + + Looks up a localized string similar to The Conditional attribute is not valid on '{0}' because it is a constructor, destructor, operator, or explicit interface implementation. + + + + + Looks up a localized string similar to Conditional member '{0}' cannot have an out parameter. + + + + + Looks up a localized string similar to Namespace '{1}' contains a definition conflicting with alias '{0}'. + + + + + Looks up a localized string similar to Alias '{0}' conflicts with {1} definition. + + + + + Looks up a localized string similar to Assembly and module '{0}' cannot target different processors.. + + + + + Looks up a localized string similar to A constant value is expected. + + + + + Looks up a localized string similar to Length of String constant exceeds current memory limit. Try splitting the string into multiple constants.. + + + + + Looks up a localized string similar to Constant value '{0}' cannot be converted to a '{1}'. + + + + + Looks up a localized string similar to Constant value '{0}' cannot be converted to a '{1}' (use 'unchecked' syntax to override). + + + + + Looks up a localized string similar to '{0}': static classes cannot be used as constraints. + + + + + Looks up a localized string similar to Constraints are not allowed on non-generic declarations. + + + + + Looks up a localized string similar to Constraint cannot be a dynamic type '{0}'. + + + + + Looks up a localized string similar to Static classes cannot have instance constructors. + + + + + Looks up a localized string similar to A const field requires a value to be provided. + + + + + Looks up a localized string similar to User-defined conversion must convert to or from the enclosing type. + + + + + Looks up a localized string similar to '{0}': user-defined conversions to or from a base class are not allowed. + + + + + Looks up a localized string similar to '{0}': user-defined conversions to or from a derived class are not allowed. + + + + + Looks up a localized string similar to '{0}': user-defined conversions to or from an interface are not allowed. + + + + + Looks up a localized string similar to Cannot convert to static type '{0}'. + + + + + Looks up a localized string similar to Type parameter '{1}' has the 'struct' constraint so '{1}' cannot be used as a constraint for '{0}'. + + + + + Looks up a localized string similar to Cryptographic failure while creating hashes.. + + + + + Looks up a localized string similar to Bad array declarator: To declare a managed array the rank specifier precedes the variable's identifier. To declare a fixed size buffer field, use the fixed keyword before the field type.. + + + + + Looks up a localized string similar to Inherited interface '{1}' causes a cycle in the interface hierarchy of '{0}'. + + + + + Looks up a localized string similar to The type forwarder for type '{0}' in assembly '{1}' causes a cycle. + + + + + Looks up a localized string similar to Debug entry point must be a definition of a method declared in the current compilation.. + + + + + Looks up a localized string similar to Evaluation of the decimal constant expression failed. + + + + + Looks up a localized string similar to Cannot specify the DefaultMember attribute on a type containing an indexer. + + + + + Looks up a localized string similar to Argument of type '{0}' is not applicable for the DefaultParameterValue attribute. + + + + + Looks up a localized string similar to Optional parameters must appear after all required parameters. + + + + + Looks up a localized string similar to Cannot specify a default value for the 'this' parameter. + + + + + Looks up a localized string similar to Cannot specify a default value for a parameter array. + + + + + Looks up a localized string similar to Default parameter value for '{0}' must be a compile-time constant. + + + + + Looks up a localized string similar to Default values are not valid in this context.. + + + + + Looks up a localized string similar to The type of the argument to the DefaultParameterValue attribute must match the parameter type. + + + + + Looks up a localized string similar to Cannot specify default parameter value in conjunction with DefaultParameterAttribute or OptionalAttribute. + + + + + Looks up a localized string similar to Cannot create delegate with '{0}' because it or a method it overrides has a Conditional attribute. + + + + + Looks up a localized string similar to Cannot bind delegate to '{0}' because it is a member of 'System.Nullable<T>'. + + + + + Looks up a localized string similar to The best overloaded Add method '{0}' for the collection initializer element is obsolete. {1}. + + + + + Looks up a localized string similar to '{0}' is obsolete: '{1}'. + + + + + Looks up a localized string similar to '{0}': cannot implement a dynamic interface '{1}'. + + + + + Looks up a localized string similar to '{0}': cannot derive from the dynamic type. + + + + + Looks up a localized string similar to '{0}' cannot derive from special class '{1}'. + + + + + Looks up a localized string similar to Cannot derive from '{0}' because it is a type parameter. + + + + + Looks up a localized string similar to Static classes cannot contain destructors. + + + + + Looks up a localized string similar to An expression tree lambda may not contain a dictionary initializer.. + + + + + Looks up a localized string similar to The DllImport attribute cannot be applied to a method that is generic or contained in a generic type.. + + + + + Looks up a localized string similar to The DllImport attribute must be specified on a method marked 'static' and 'extern'. + + + + + Looks up a localized string similar to '{0}' does not implement '{1}'. + + + + + Looks up a localized string similar to Do not use 'System.Runtime.CompilerServices.FixedBuffer' attribute. Use the 'fixed' field modifier instead.. + + + + + Looks up a localized string similar to The type name '{0}' does not exist in the type '{1}'. + + + + + Looks up a localized string similar to The type or namespace name '{0}' does not exist in the namespace '{1}' (are you missing an assembly reference?). + + + + + Looks up a localized string similar to The type name '{0}' could not be found in the namespace '{1}'. This type has been forwarded to assembly '{2}' Consider adding a reference to that assembly.. + + + + + Looks up a localized string similar to Property accessor already defined. + + + + + Looks up a localized string similar to The using alias '{0}' appeared previously in this namespace. + + + + + Looks up a localized string similar to Duplicate '{0}' attribute. + + + + + Looks up a localized string similar to Duplicate '{0}' attribute in '{1}'. + + + + + Looks up a localized string similar to Duplicate constraint '{0}' for type parameter '{1}'. + + + + + Looks up a localized string similar to The switch statement contains multiple cases with the label value '{0}'. + + + + + Looks up a localized string similar to A constraint clause has already been specified for type parameter '{0}'. All of the constraints for a type parameter must be specified in a single where clause.. + + + + + Looks up a localized string similar to Duplicate user-defined conversion in type '{0}'. + + + + + Looks up a localized string similar to The parameter name '{0}' conflicts with an automatically-generated parameter name. + + + + + Looks up a localized string similar to Multiple assemblies with equivalent identity have been imported: '{0}' and '{1}'. Remove one of the duplicate references.. + + + + + Looks up a localized string similar to An assembly with the same simple name '{0}' has already been imported. Try removing one of the references (e.g. '{1}') or sign them to enable side-by-side.. + + + + + Looks up a localized string similar to '{0}' is already listed in interface list. + + + + + Looks up a localized string similar to The label '{0}' is a duplicate. + + + + + Looks up a localized string similar to Duplicate '{0}' modifier. + + + + + Looks up a localized string similar to Named argument '{0}' cannot be specified multiple times. + + + + + Looks up a localized string similar to '{0}' duplicate named attribute argument. + + + + + Looks up a localized string similar to The type '{0}' already contains a definition for '{1}'. + + + + + Looks up a localized string similar to The namespace '{1}' already contains a definition for '{0}'. + + + + + Looks up a localized string similar to The parameter name '{0}' is a duplicate. + + + + + Looks up a localized string similar to Cannot specify accessibility modifiers for both accessors of the property or indexer '{0}'. + + + + + Looks up a localized string similar to '{0}' duplicate TypeForwardedToAttribute. + + + + + Looks up a localized string similar to Duplicate type parameter '{0}'. + + + + + Looks up a localized string similar to A parameter can only have one '{0}' modifier. + + + + + Looks up a localized string similar to Cannot define a class or member that utilizes 'dynamic' because the compiler required type '{0}' cannot be found. Are you missing a reference?. + + + + + Looks up a localized string similar to One or more types required to compile a dynamic expression cannot be found. Are you missing a reference?. + + + + + Looks up a localized string similar to Constraint cannot be the dynamic type. + + + + + Looks up a localized string similar to Empty character literal. + + + + + Looks up a localized string similar to Element initializer cannot be empty. + + + + + Looks up a localized string similar to Empty format specifier.. + + + + + Looks up a localized string similar to Expression expected after yield return. + + + + + Looks up a localized string similar to Cannot continue since the edit includes a reference to an embedded type: '{0}'.. + + + + + Looks up a localized string similar to Cannot emit debug information for a source text without encoding.. + + + + + Looks up a localized string similar to Member '{0}' added during the current debug session can only be accessed from within its declaring assembly '{1}'.. + + + + + Looks up a localized string similar to Cannot update '{0}'; attribute '{1}' is missing.. + + + + + Looks up a localized string similar to #endif directive expected. + + + + + Looks up a localized string similar to Single-line comment or end-of-line expected. + + + + + Looks up a localized string similar to #endregion directive expected. + + + + + Looks up a localized string similar to '{0}': the enumerator value is too large to fit in its type. + + + + + Looks up a localized string similar to Enums cannot contain explicit parameterless constructors. + + + + + Looks up a localized string similar to Type or namespace definition, or end-of-file expected. + + + + + Looks up a localized string similar to Error building Win32 resources -- {0}. + + + + + Looks up a localized string similar to #error: '{0}'. + + + + + Looks up a localized string similar to There is an error in a referenced assembly '{0}'.. + + + + + Looks up a localized string similar to A '{0}' character may only be escaped by doubling '{0}{0}' in an interpolated string.. + + + + + Looks up a localized string similar to '{0}': event property must have both add and remove accessors. + + + + + Looks up a localized string similar to '{0}': event must be of a delegate type. + + + + + Looks up a localized string similar to An event in an interface cannot have add or remove accessors. + + + + + Looks up a localized string similar to Expected contextual keyword 'by'. + + + + + Looks up a localized string similar to Expected contextual keyword 'equals'. + + + + + Looks up a localized string similar to Expected contextual keyword 'on'. + + + + + Looks up a localized string similar to Expected catch or finally. + + + + + Looks up a localized string similar to Quoted file name expected. + + + + + Looks up a localized string similar to A query body must end with a select clause or a group clause. + + + + + Looks up a localized string similar to Expected a script (.csx file) but none specified. + + + + + Looks up a localized string similar to Keyword, identifier, or string expected after verbatim specifier: @. + + + + + Looks up a localized string similar to Do not use 'System.Runtime.CompilerServices.DynamicAttribute'. Use the 'dynamic' keyword instead.. + + + + + Looks up a localized string similar to An explicit interface implementation of an event must use event accessor syntax. + + + + + Looks up a localized string similar to Do not use 'System.Runtime.CompilerServices.ExtensionAttribute'. Use the 'this' keyword instead.. + + + + + Looks up a localized string similar to Cannot inherit interface '{0}' with the specified type parameters because it causes method '{1}' to contain overloads which differ only on ref and out. + + + + + Looks up a localized string similar to '{0}' should not have a params parameter since '{1}' does not. + + + + + Looks up a localized string similar to '{0}': explicit interface declaration can only be declared in a class or struct. + + + + + Looks up a localized string similar to '{0}' in explicit interface declaration is not an interface. + + + + + Looks up a localized string similar to '{0}': Auto-implemented properties cannot be used inside a type marked with StructLayout(LayoutKind.Explicit). + + + + + Looks up a localized string similar to '{0}' explicit method implementation cannot implement '{1}' because it is an accessor. + + + + + Looks up a localized string similar to Do not use 'System.ParamArrayAttribute'. Use the 'params' keyword instead.. + + + + + Looks up a localized string similar to '{0}' adds an accessor not found in interface member '{1}'. + + + + + Looks up a localized string similar to Explicit interface implementation '{0}' is missing accessor '{1}'. + + + + + Looks up a localized string similar to Type '{0}' exported from module '{1}' conflicts with type declared in primary module of this assembly.. + + + + + Looks up a localized string similar to Type '{0}' exported from module '{1}' conflicts with type '{2}' exported from module '{3}'.. + + + + + Looks up a localized string similar to Expected expression. + + + + + Looks up a localized string similar to Expression does not have a name.. + + + + + Looks up a localized string similar to Expression or declaration statement expected.. + + + + + Looks up a localized string similar to An expression tree may not contain an anonymous method expression. + + + + + Looks up a localized string similar to An expression tree may not contain an assignment operator. + + + + + Looks up a localized string similar to An expression tree lambda may not contain a coalescing operator with a null literal left-hand side. + + + + + Looks up a localized string similar to An expression tree may not contain a base access. + + + + + Looks up a localized string similar to An expression tree may not contain a dynamic operation. + + + + + Looks up a localized string similar to An expression tree may not contain an indexed property. + + + + + Looks up a localized string similar to An expression tree may not contain a multidimensional array initializer. + + + + + Looks up a localized string similar to An expression tree may not contain a named argument specification. + + + + + Looks up a localized string similar to An expression tree may not contain a call or invocation that uses optional arguments. + + + + + Looks up a localized string similar to An expression tree may not contain an unsafe pointer operation. + + + + + Looks up a localized string similar to Cannot convert lambda to an expression tree whose type argument '{0}' is not a delegate type. + + + + + Looks up a localized string similar to Cannot define a new extension method because the compiler required type '{0}' cannot be found. Are you missing a reference to System.Core.dll?. + + + + + Looks up a localized string similar to An extension Add method is not supported for a collection initializer in an expression lambda.. + + + + + Looks up a localized string similar to Extension methods must be defined in a top level static class; {0} is a nested class. + + + + + Looks up a localized string similar to An extern alias declaration must precede all other elements defined in the namespace. + + + + + Looks up a localized string similar to 'extern alias' is not valid in this context. + + + + + Looks up a localized string similar to '{0}' cannot be extern and declare a body. + + + + + Looks up a localized string similar to '{0}' cannot be extern and have a constructor initializer. + + + + + Looks up a localized string similar to Feature '{0}' is only available in 'experimental' language version.. + + + + + Looks up a localized string similar to Feature '{0}' is not available in C# 1. Please use language version {1} or greater.. + + + + + Looks up a localized string similar to Feature '{0}' is not available in C# 2. Please use language version {1} or greater.. + + + + + Looks up a localized string similar to Feature '{0}' is not available in C# 3. Please use language version {1} or greater.. + + + + + Looks up a localized string similar to Feature '{0}' is not available in C# 4. Please use language version {1} or greater.. + + + + + Looks up a localized string similar to Feature '{0}' is not available in C# 5. Please use language version {1} or greater.. + + + + + Looks up a localized string similar to Feature '{0}' is not available in C# 6. Please use language version {1} or greater.. + + + + + Looks up a localized string similar to An expression tree may not contain '{0}'. + + + + + Looks up a localized string similar to Field or property cannot be of type '{0}'. + + + + + Looks up a localized string similar to Field cannot have void type. + + + + + Looks up a localized string similar to The field has multiple distinct constant values.. + + + + + Looks up a localized string similar to '{0}': cannot have instance property or field initializers in structs. + + + + + Looks up a localized string similar to A field initializer cannot reference the non-static field, method, or property '{0}'. + + + + + Looks up a localized string similar to Source file '{0}' could not be found.. + + + + + Looks up a localized string similar to You cannot use fixed size buffers contained in unfixed expressions. Try using the fixed statement.. + + + + + Looks up a localized string similar to A fixed buffer may only have one dimension.. + + + + + Looks up a localized string similar to A fixed size buffer field must have the array size specifier after the field name. + + + + + Looks up a localized string similar to Cannot use fixed local '{0}' inside an anonymous method, lambda expression, or query expression. + + + + + Looks up a localized string similar to You must provide an initializer in a fixed or using statement declaration. + + + + + Looks up a localized string similar to You can only take the address of an unfixed expression inside of a fixed statement initializer. + + + + + Looks up a localized string similar to Fixed size buffers can only be accessed through locals or fields. + + + + + Looks up a localized string similar to Fixed size buffer fields may only be members of structs. + + + + + Looks up a localized string similar to You cannot use the fixed statement to take the address of an already fixed expression. + + + + + Looks up a localized string similar to Fixed size buffer of length {0} and type '{1}' is too big. + + + + + Looks up a localized string similar to Floating-point constant is outside the range of type '{0}'. + + + + + Looks up a localized string similar to foreach statement cannot operate on variables of type '{0}' because '{0}' does not contain a public definition for '{1}'. + + + + + Looks up a localized string similar to Forwarded type '{0}' conflicts with type declared in primary module of this assembly.. + + + + + Looks up a localized string similar to Type '{0}' forwarded to assembly '{1}' conflicts with type '{2}' exported from module '{3}'.. + + + + + Looks up a localized string similar to Type '{0}' is defined in this assembly, but a type forwarder is specified for it. + + + + + Looks up a localized string similar to Cannot forward type '{0}' because it is a nested type of '{1}'. + + + + + Looks up a localized string similar to Type '{0}' forwarded to assembly '{1}' conflicts with type '{2}' forwarded to assembly '{3}'.. + + + + + Looks up a localized string similar to Friend assembly reference '{0}' is invalid. InternalsVisibleTo declarations cannot have a version, culture, public key token, or processor architecture specified.. + + + + + Looks up a localized string similar to Friend assembly reference '{0}' is invalid. Strong-name signed assemblies must specify a public key in their InternalsVisibleTo declarations.. + + + + + Looks up a localized string similar to Friend access was granted by '{0}', but the public key of the output assembly does not match that specified by the attribute in the granting assembly.. + + + + + Looks up a localized string similar to Friend access was granted by '{0}', but the strong name signing state of the output assembly does not match that of the granting assembly.. + + + + + Looks up a localized string similar to '{0}': static types cannot be used as type arguments. + + + + + Looks up a localized string similar to The type '{3}' cannot be used as type parameter '{2}' in the generic type or method '{0}'. The nullable type '{3}' does not satisfy the constraint of '{1}'.. + + + + + Looks up a localized string similar to The type '{3}' cannot be used as type parameter '{2}' in the generic type or method '{0}'. The nullable type '{3}' does not satisfy the constraint of '{1}'. Nullable types can not satisfy any interface constraints.. + + + + + Looks up a localized string similar to The type '{3}' cannot be used as type parameter '{2}' in the generic type or method '{0}'. There is no implicit reference conversion from '{3}' to '{1}'.. + + + + + Looks up a localized string similar to The type '{3}' cannot be used as type parameter '{2}' in the generic type or method '{0}'. There is no boxing conversion or type parameter conversion from '{3}' to '{1}'.. + + + + + Looks up a localized string similar to The type '{3}' cannot be used as type parameter '{2}' in the generic type or method '{0}'. There is no boxing conversion from '{3}' to '{1}'.. + + + + + Looks up a localized string similar to A generic type cannot derive from '{0}' because it is an attribute class. + + + + + Looks up a localized string similar to Type '{0}' from assembly '{1}' cannot be used across assembly boundaries because it has a generic type parameter that is an embedded interop type.. + + + + + Looks up a localized string similar to Type '{0}' cannot be embedded because it has a generic argument. Consider setting the 'Embed Interop Types' property to false.. + + + + + Looks up a localized string similar to A get or set accessor expected. + + + + + Looks up a localized string similar to Assembly and module attributes are not allowed in this context. + + + + + Looks up a localized string similar to Assembly and module attributes must precede all other elements defined in a file except using clauses and extern alias declarations. + + + + + Looks up a localized string similar to Member definition, statement, or end-of-file expected. + + + + + Looks up a localized string similar to You cannot redefine the global extern alias. + + + + + Looks up a localized string similar to The type or namespace name '{0}' could not be found in the global namespace (are you missing an assembly reference?). + + + + + Looks up a localized string similar to The type name '{0}' could not be found in the global namespace. This type has been forwarded to assembly '{1}' Consider adding a reference to that assembly.. + + + + + Looks up a localized string similar to Expressions and statements can only occur in a method body. + + + + + Looks up a localized string similar to The non-generic {1} '{0}' cannot be used with type arguments. + + + + + Looks up a localized string similar to '{0}' hides inherited abstract member '{1}'. + + + + + Looks up a localized string similar to Identifier expected. + + + + + Looks up a localized string similar to Identifier expected; '{1}' is a keyword. + + + + + Looks up a localized string similar to User-defined operator cannot take an object of the enclosing type and convert to an object of the enclosing type. + + + + + Looks up a localized string similar to An __arglist expression may only appear inside of a call or new expression. + + + + + Looks up a localized string similar to Unrecognized escape sequence. + + + + + Looks up a localized string similar to Fixed size buffer type must be one of the following: bool, byte, short, int, long, char, sbyte, ushort, uint, ulong, float or double. + + + + + Looks up a localized string similar to Unsafe code may not appear in iterators. + + + + + Looks up a localized string similar to params is not valid in this context. + + + + + Looks up a localized string similar to ref and out are not valid in this context. + + + + + Looks up a localized string similar to Only assignment, call, increment, decrement, and new object expressions can be used as a statement. + + + + + Looks up a localized string similar to Unsafe code may only appear if compiling with /unsafe. + + + + + Looks up a localized string similar to __arglist is not valid in this context. + + + + + Looks up a localized string similar to Invalid variance modifier. Only interface and delegate type parameters can be specified as variant.. + + + + + Looks up a localized string similar to The constraints for type parameter '{0}' of method '{1}' must match the constraints for type parameter '{2}' of interface method '{3}'. Consider using an explicit interface implementation instead.. + + + + + Looks up a localized string similar to No best type found for implicitly-typed array. + + + + + Looks up a localized string similar to Implicitly-typed local variables cannot be fixed. + + + + + Looks up a localized string similar to Cannot initialize an implicitly-typed variable with an array initializer. + + + + + Looks up a localized string similar to Cannot assign {0} to an implicitly-typed variable. + + + + + Looks up a localized string similar to Implicitly-typed variables cannot be constant. + + + + + Looks up a localized string similar to Implicitly-typed variables cannot have multiple declarators. + + + + + Looks up a localized string similar to Implicitly-typed variables must be initialized. + + + + + Looks up a localized string similar to Imported type '{0}' is invalid. It contains a circular base class dependency.. + + + + + Looks up a localized string similar to The referenced file '{0}' is not an assembly. + + + + + Looks up a localized string similar to The property or indexer '{0}' cannot be used in this context because the get accessor is inaccessible. + + + + + Looks up a localized string similar to The property or indexer '{0}' cannot be used in this context because the set accessor is inaccessible. + + + + + Looks up a localized string similar to An out parameter cannot have the In attribute. + + + + + Looks up a localized string similar to Two indexers have different names; the IndexerName attribute must be used with the same name on every indexer within a type. + + + + + Looks up a localized string similar to Inconsistent lambda parameter usage; parameter types must be all explicit or all implicit. + + + + + Looks up a localized string similar to The operand of an increment or decrement operator must be a variable, property or indexer. + + + + + Looks up a localized string similar to Indexed property '{0}' must have all arguments optional. + + + + + Looks up a localized string similar to Indexed property '{0}' has non-optional arguments which must be provided. + + + + + Looks up a localized string similar to Indexers cannot have void type. + + + + + Looks up a localized string similar to '{0}': cannot declare indexers in a static class. + + + + + Looks up a localized string similar to Indexers must have at least one parameter. + + + + + Looks up a localized string similar to Constructor '{0}' cannot call itself through another constructor. + + + + + Looks up a localized string similar to 'in' expected. + + + + + Looks up a localized string similar to The best overloaded method match '{0}' for the collection initializer element cannot be used. Collection initializer 'Add' methods cannot have ref or out parameters.. + + + + + Looks up a localized string similar to The best overloaded method match for '{0}' has wrong signature for the initializer element. The initializable Add must be an accessible instance method.. + + + + + Looks up a localized string similar to Structs without explicit constructors cannot contain members with initializers.. + + + + + Looks up a localized string similar to Only auto-implemented properties can have initializers.. + + + + + Looks up a localized string similar to '{0}': cannot declare instance members in a static class. + + + + + Looks up a localized string similar to Cannot create an instance of the static class '{0}'. + + + + + Looks up a localized string similar to An expression is too long or complex to compile. + + + + + Looks up a localized string similar to Division by constant zero. + + + + + Looks up a localized string similar to Type byte, sbyte, short, ushort, int, uint, long, or ulong expected. + + + + + Looks up a localized string similar to A value of an integral type expected. + + + + + Looks up a localized string similar to '{0}': event in interface cannot have initializer. + + + + + Looks up a localized string similar to Conditional member '{0}' cannot implement interface member '{1}' in type '{2}'. + + + + + Looks up a localized string similar to '{0}': interface members cannot have a definition. + + + + + Looks up a localized string similar to '{0}' in explicit interface declaration is not a member of interface. + + + + + Looks up a localized string similar to '{0}': interfaces cannot declare types. + + + + + Looks up a localized string similar to Interfaces cannot contain constructors. + + + + + Looks up a localized string similar to Interfaces cannot contain fields. + + + + + Looks up a localized string similar to Interfaces cannot contain operators. + + + + + Looks up a localized string similar to Embedded interop method '{0}' contains a body.. + + + + + Looks up a localized string similar to Embedded interop struct '{0}' can contain only public instance fields.. + + + + + Looks up a localized string similar to Interop type '{0}' cannot be embedded because it is missing the required '{1}' attribute.. + + + + + Looks up a localized string similar to Cannot embed interop type '{0}' found in both assembly '{1}' and '{2}'. Consider setting the 'Embed Interop Types' property to false.. + + + + + Looks up a localized string similar to Integral constant is too large. + + + + + Looks up a localized string similar to Cannot take the address of the given expression. + + + + + Looks up a localized string similar to Invalid anonymous type member declarator. Anonymous type members must be declared with a member assignment, simple name or member access.. + + + + + Looks up a localized string similar to Invalid rank specifier: expected ',' or ']'. + + + + + Looks up a localized string similar to Assembly culture strings may not contain embedded NUL characters.. + + + + + Looks up a localized string similar to Executables cannot be satellite assemblies; culture should always be empty. + + + + + Looks up a localized string similar to Assembly reference '{0}' is invalid and cannot be resolved. + + + + + Looks up a localized string similar to Invalid value for argument to '{0}' attribute. + + + + + Looks up a localized string similar to '{0}' is of type '{1}'. The type specified in a constant declaration must be sbyte, byte, short, ushort, int, uint, long, ulong, char, float, double, decimal, bool, string, an enum-type, or a reference-type.. + + + + + Looks up a localized string similar to Invalid debug information format: {0}. + + + + + Looks up a localized string similar to Delegate '{0}' has no invoke method or an invoke method with a return type or parameter types that are not supported.. + + + + + Looks up a localized string similar to Expression must be implicitly convertible to Boolean or its type '{0}' must define operator '{1}'.. + + + + + Looks up a localized string similar to Invalid expression term '{0}'. + + + + + Looks up a localized string similar to Invalid file section alignment '{0}'. + + + + + Looks up a localized string similar to Fixed size buffers must have a length greater than zero. + + + + + Looks up a localized string similar to Command-line syntax error: Invalid Guid format '{0}' for option '{1}'. + + + + + Looks up a localized string similar to Invalid type specified as an argument for TypeForwardedTo attribute. + + + + + Looks up a localized string similar to A goto case is only valid inside a switch statement. + + + + + Looks up a localized string similar to Invalid initializer member declarator. + + + + + Looks up a localized string similar to The line number specified for #line directive is missing or invalid. + + + + + Looks up a localized string similar to Invalid token '{0}' in class, struct, or interface member declaration. + + + + + Looks up a localized string similar to Invalid value for named attribute argument '{0}'. + + + + + Looks up a localized string similar to Invalid number. + + + + + Looks up a localized string similar to Invalid output name: {0}. + + + + + Looks up a localized string similar to The pathmap option was incorrectly formatted.. + + + + + Looks up a localized string similar to Invalid preprocessor expression. + + + + + Looks up a localized string similar to The accessibility modifier of the '{0}' accessor must be more restrictive than the property or indexer '{1}'. + + + + + Looks up a localized string similar to Type of conditional expression cannot be determined because there is no implicit conversion between '{0}' and '{1}'. + + + + + Looks up a localized string similar to Invalid real literal.. + + + + + Looks up a localized string similar to Invalid signature public key specified in AssemblySignatureKeyAttribute.. + + + + + Looks up a localized string similar to '{0}' is not a valid format specifier. + + + + + Looks up a localized string similar to Invalid version {0} for /subsystemversion. The version must be 6.02 or greater for ARM or AppContainerExe, and 4.00 or greater otherwise. + + + + + Looks up a localized string similar to The specified version string does not conform to the required format - major[.minor[.build[.revision]]]. + + + + + Looks up a localized string similar to The specified version string does not conform to the required format - major.minor.build.revision. + + + + + Looks up a localized string similar to Yield statements may not appear at the top level in interactive code.. + + + + + Looks up a localized string similar to No such label '{0}' within the scope of the goto statement. + + + + + Looks up a localized string similar to The label '{0}' shadows another label by the same name in a contained scope. + + + + + Looks up a localized string similar to The first operand of an 'is' or 'as' operator may not be a lambda expression, anonymous method, or method group.. + + + + + Looks up a localized string similar to { expected. + + + + + Looks up a localized string similar to 'id#' syntax is no longer supported. Use '$id' instead.. + + + + + Looks up a localized string similar to Linked netmodule metadata must provide a full PE image: '{0}'.. + + + + + Looks up a localized string similar to Literal of type double cannot be implicitly converted to type '{1}'; use an '{0}' suffix to create a literal of this type. + + + + + Looks up a localized string similar to #load is only allowed in scripts. + + + + + Looks up a localized string similar to Local '{0}' or its members cannot have their address taken and be used inside an anonymous method or lambda expression. + + + + + Looks up a localized string similar to A local variable named '{0}' is already defined in this scope. + + + + + Looks up a localized string similar to A local or parameter named '{0}' cannot be declared in this scope because that name is used in an enclosing local scope to define a local or parameter. + + + + + Looks up a localized string similar to '{0}': a parameter or local variable cannot have the same name as a method type parameter. + + + + + Looks up a localized string similar to Embedding the interop type '{0}' from assembly '{1}' causes a name clash in the current assembly. Consider setting the 'Embed Interop Types' property to false.. + + + + + Looks up a localized string similar to '{0}' is not a reference type as required by the lock statement. + + + + + Looks up a localized string similar to Cannot do member lookup in '{0}' because it is a type parameter. + + + + + Looks up a localized string similar to '{0}': an entry point cannot be marked with the 'async' modifier. + + + + + Looks up a localized string similar to Cannot use '{0}' for Main method because it is imported. + + + + + Looks up a localized string similar to '{0}' specified for Main method must be a valid non-generic class or struct. + + + + + Looks up a localized string similar to Could not find '{0}' specified for Main method. + + + + + Looks up a localized string similar to Cannot take the address of, get the size of, or declare a pointer to a managed type ('{0}'). + + + + + Looks up a localized string similar to Unmanaged type '{0}' not valid for fields.. + + + + + Looks up a localized string similar to Unmanaged type '{0}' is only valid for fields.. + + + + + Looks up a localized string similar to Type '{1}' already defines a member called '{0}' with the same parameter types. + + + + + Looks up a localized string similar to Duplicate initialization of member '{0}'. + + + + + Looks up a localized string similar to Member '{0}' cannot be initialized. It is not a field or property.. + + + + + Looks up a localized string similar to '{0}': member names cannot be the same as their enclosing type. + + + + + Looks up a localized string similar to Method must have a return type. + + + + + Looks up a localized string similar to Type '{1}' already reserves a member called '{0}' with the same parameter types. + + + + + Looks up a localized string similar to An expression tree lambda may not contain a method group. + + + + + Looks up a localized string similar to Name '{0}' exceeds the maximum length allowed in metadata.. + + + + + Looks up a localized string similar to Metadata references are not supported.. + + + + + Looks up a localized string similar to No overload for '{0}' matches delegate '{1}'. + + + + + Looks up a localized string similar to Cannot convert method group '{0}' to non-delegate type '{1}'. Did you intend to invoke the method?. + + + + + Looks up a localized string similar to Cannot make reference to variable of type '{0}'. + + + + + Looks up a localized string similar to Method '{0}' cannot implement interface accessor '{1}' for type '{2}'. Use an explicit interface implementation.. + + + + + Looks up a localized string similar to Method name expected. + + + + + Looks up a localized string similar to Method or delegate cannot return type '{0}'. + + + + + Looks up a localized string similar to Argument missing. + + + + + Looks up a localized string similar to Array creation must have array size or array initializer. + + + + + Looks up a localized string similar to The managed coclass wrapper class '{0}' for interface '{1}' cannot be found (are you missing an assembly reference?). + + + + + Looks up a localized string similar to The /pdb option requires that the /debug option also be used. + + + + + Looks up a localized string similar to Command-line syntax error: Missing Guid for option '{1}'. + + + + + Looks up a localized string similar to Source interface '{0}' is missing method '{1}' which is required to embed event '{2}'.. + + + + + Looks up a localized string similar to Reference to '{0}' netmodule missing.. + + + + + Looks up a localized string similar to Missing partial modifier on declaration of type '{0}'; another partial declaration of this type exists. + + + + + Looks up a localized string similar to Quoted file name, single-line comment or end-of-line expected. + + + + + Looks up a localized string similar to Missing compiler required member '{0}.{1}'. + + + + + Looks up a localized string similar to Interface '{0}' has an invalid source interface which is required to embed event '{1}'.. + + + + + Looks up a localized string similar to '{0}': instance field types marked with StructLayout(LayoutKind.Explicit) must have a FieldOffset attribute. + + + + + Looks up a localized string similar to Reference to type '{0}' claims it is defined in '{1}', but it could not be found. + + + + + Looks up a localized string similar to Reference to type '{0}' claims it is defined in this assembly, but it is not defined in source or any added modules. + + + + + Looks up a localized string similar to '{0}' cannot implement '{1}' because '{2}' is a Windows Runtime event and '{3}' is a regular .NET event.. + + + + + Looks up a localized string similar to Failed to emit module '{0}'.. + + + + + Looks up a localized string similar to A parameter cannot have all the specified modifiers; there are too many modifiers on the parameter. + + + + + Looks up a localized string similar to Program has more than one entry point defined. Compile with /main to specify the type that contains the entry point.. + + + + + Looks up a localized string similar to foreach statement cannot operate on variables of type '{0}' because it implements multiple instantiations of '{1}'; try casting to a specific interface instantiation. + + + + + Looks up a localized string similar to Cannot use more than one type in a for, using, fixed, or declaration statement. + + + + + Looks up a localized string similar to In order for '{0}' to be applicable as a short circuit operator, its declaring type '{1}' must define operator true and operator false. + + + + + Looks up a localized string similar to Compilation options '{0}' and '{1}' can't both be specified at the same time.. + + + + + Looks up a localized string similar to Named attribute argument expected. + + + + + Looks up a localized string similar to An array access may not have a named argument specifier. + + + + + Looks up a localized string similar to Named argument specifications must appear after all fixed arguments have been specified. + + + + + Looks up a localized string similar to Named argument '{0}' specifies a parameter for which a positional argument has already been given. + + + + + Looks up a localized string similar to The name '{0}' does not exist in the current context. + + + + + Looks up a localized string similar to The name '{0}' does not exist in the current context (are you missing a reference to assembly '{1}'?). + + + + + Looks up a localized string similar to Extension method groups are not allowed as an argument to 'nameof'.. + + + + + Looks up a localized string similar to Type parameters are not allowed on a method group as an argument to 'nameof'.. + + + + + Looks up a localized string similar to Cannot declare namespace in script code. + + + + + Looks up a localized string similar to A namespace cannot directly contain members such as fields or methods. + + + + + Looks up a localized string similar to Cannot create an array with a negative size. + + + + + Looks up a localized string similar to Cannot use a negative size with stackalloc. + + + + + Looks up a localized string similar to Module name '{0}' stored in '{1}' must match its filename.. + + + + + Looks up a localized string similar to Module '{0}' is already defined in this assembly. Each module must have a unique filename.. + + + + + Looks up a localized string similar to The new() constraint must be the last constraint specified. + + + + + Looks up a localized string similar to The 'new()' constraint cannot be used with the 'struct' constraint. + + + + + Looks up a localized string similar to Interop type '{0}' cannot be embedded. Use the applicable interface instead.. + + + + + Looks up a localized string similar to '{2}' must be a non-abstract type with a public parameterless constructor in order to use it as parameter '{1}' in the generic type or method '{0}'. + + + + + Looks up a localized string similar to Newline in constant. + + + + + Looks up a localized string similar to '{0}': cannot provide arguments when creating an instance of a variable type. + + + + + Looks up a localized string similar to '{0}' is a new virtual member in sealed class '{1}'. + + + + + Looks up a localized string similar to A 'using static' directive cannot be used to declare an alias. + + + + + Looks up a localized string similar to A base class is required for a 'base' reference. + + + + + Looks up a localized string similar to No enclosing loop out of which to break or continue. + + + + + Looks up a localized string similar to Cannot find the interop type that matches the embedded interop type '{0}'. Are you missing an assembly reference?. + + + + + Looks up a localized string similar to The type '{0}' has no constructors defined. + + + + + Looks up a localized string similar to CallerFilePathAttribute cannot be applied because there are no standard conversions from type '{0}' to type '{1}'. + + + + + Looks up a localized string similar to CallerLineNumberAttribute cannot be applied because there are no standard conversions from type '{0}' to type '{1}'. + + + + + Looks up a localized string similar to CallerMemberNameAttribute cannot be applied because there are no standard conversions from type '{0}' to type '{1}'. + + + + + Looks up a localized string similar to A value of type '{0}' cannot be used as a default parameter because there are no standard conversions to type '{1}'. + + + + + Looks up a localized string similar to A value of type '{0}' cannot be used as default parameter for nullable parameter '{1}' because '{0}' is not a simple type. + + + + + Looks up a localized string similar to '{0}': type used in a using statement must be implicitly convertible to 'System.IDisposable'. + + + + + Looks up a localized string similar to There is no argument given that corresponds to the required formal parameter '{0}' of '{1}'. + + + + + Looks up a localized string similar to The call to method '{0}' needs to be dynamically dispatched, but cannot be because it is part of a base access expression. Consider casting the dynamic arguments or eliminating the base access.. + + + + + Looks up a localized string similar to The constructor call needs to be dynamically dispatched, but cannot be because it is part of a constructor initializer. Consider casting the dynamic arguments.. + + + + + Looks up a localized string similar to The indexer access needs to be dynamically dispatched, but cannot be because it is part of a base access expression. Consider casting the dynamic arguments or eliminating the base access.. + + + + + Looks up a localized string similar to Program does not contain a static 'Main' method suitable for an entry point. + + + + + Looks up a localized string similar to Cannot convert type '{0}' to '{1}' via a reference conversion, boxing conversion, unboxing conversion, wrapping conversion, or null type conversion. + + + + + Looks up a localized string similar to Cannot convert type '{0}' to '{1}'. + + + + + Looks up a localized string similar to Missing file specification for '{0}' option. + + + + + Looks up a localized string similar to '{0}': cannot override because '{1}' does not have an overridable get accessor. + + + + + Looks up a localized string similar to Cannot implicitly convert type '{0}' to '{1}'. + + + + + Looks up a localized string similar to Cannot implicitly convert type '{0}' to '{1}'. An explicit conversion exists (are you missing a cast?). + + + + + Looks up a localized string similar to '{0}' does not have a suitable static Main method. + + + + + Looks up a localized string similar to Cannot specify /main if building a module or library. + + + + + Looks up a localized string similar to Metadata file '{0}' could not be found. + + + + + Looks up a localized string similar to Modifiers cannot be placed on event accessor declarations. + + + + + Looks up a localized string similar to Class '{0}' cannot have multiple base classes: '{1}' and '{2}'. + + + + + Looks up a localized string similar to Elements defined in a namespace cannot be explicitly declared as private, protected, or protected internal. + + + + + Looks up a localized string similar to Cannot create an instance of the abstract class or interface '{0}'. + + + + + Looks up a localized string similar to Cannot create an instance of the variable type '{0}' because it does not have the new() constraint. + + + + + Looks up a localized string similar to Type '{0}' in interface list is not an interface. + + + + + Looks up a localized string similar to Non-invocable member '{0}' cannot be used like a method.. + + + + + Looks up a localized string similar to Cannot embed interop types from assembly '{0}' because it is missing the '{1}' attribute.. + + + + + Looks up a localized string similar to Cannot embed interop types from assembly '{0}' because it is missing either the '{1}' attribute or the '{2}' attribute.. + + + + + Looks up a localized string similar to Type '{0}' cannot be embedded because it is a nested type. Consider setting the 'Embed Interop Types' property to false.. + + + + + Looks up a localized string similar to '{0}': cannot override because '{1}' does not have an overridable set accessor. + + + + + Looks up a localized string similar to Source file '{0}' could not be opened -- {1}. + + + + + Looks up a localized string similar to '{0}' does not contain a definition for '{1}'. + + + + + Looks up a localized string similar to '{0}' does not contain a definition for '{1}' and no extension method '{1}' accepting a first argument of type '{0}' could be found (are you missing a using directive or an assembly reference?). + + + + + Looks up a localized string similar to '{0}' does not contain a definition for '{1}' and no extension method '{1}' accepting a first argument of type '{0}' could be found (are you missing a using directive for '{2}'?). + + + + + Looks up a localized string similar to '{0}' is not an attribute class. + + + + + Looks up a localized string similar to The expression being assigned to '{0}' must be constant. + + + + + Looks up a localized string similar to '{0}' is of type '{1}'. A const field of a reference type other than string can only be initialized with null.. + + + + + Looks up a localized string similar to '{0}' is of type '{1}'. A default parameter value of a reference type other than string can only be initialized with null. + + + + + Looks up a localized string similar to This language feature ('{0}') is not yet implemented.. + + + + + Looks up a localized string similar to The type '{0}' is defined in an assembly that is not referenced. You must add a reference to assembly '{1}'.. + + + + + Looks up a localized string similar to The type '{0}' is defined in a module that has not been added. You must add the module '{1}'.. + + + + + Looks up a localized string similar to Keyword 'void' cannot be used in this context. + + + + + Looks up a localized string similar to Invalid parameter type 'void'. + + + + + Looks up a localized string similar to Use of null is not valid in this context. + + + + + Looks up a localized string similar to An expression tree lambda may not contain a null propagating operator.. + + + + + Looks up a localized string similar to '{0}' has no base class and cannot call a base constructor. + + + + + Looks up a localized string similar to The class System.Object cannot have a base class or implement an interface. + + + + + Looks up a localized string similar to Object and collection initializer expressions may not be applied to a delegate creation expression. + + + + + Looks up a localized string similar to Member '{0}' cannot be accessed with an instance reference; qualify it with a type name instead. + + + + + Looks up a localized string similar to An object reference is required for the non-static field, method, or property '{0}'. + + + + + Looks up a localized string similar to A /reference option that declares an extern alias can only have one filename. To specify multiple aliases or filenames, use multiple /reference options.. + + + + + Looks up a localized string similar to Only class types can contain destructors. + + + + + Looks up a localized string similar to End-of-file found, '*/' expected. + + + + + Looks up a localized string similar to Error opening response file '{0}'. + + + + + Looks up a localized string similar to User-defined operators cannot return void. + + + + + Looks up a localized string similar to '{0}': static classes cannot contain user-defined operators. + + + + + Looks up a localized string similar to The operator '{0}' requires a matching operator '{1}' to also be defined. + + + + + Looks up a localized string similar to User-defined operator '{0}' must be declared static and public. + + + + + Looks up a localized string similar to The return type of operator True or False must be bool. + + + + + Looks up a localized string similar to Option '{0}' must be an absolute path.. + + + + + Looks up a localized string similar to Cannot specify only Out attribute on a ref parameter. Use both In and Out attributes, or neither.. + + + + + Looks up a localized string similar to Outputs without source must have the /out option specified. + + + + + Looks up a localized string similar to Could not write to output file '{0}' -- '{1}'. + + + + + Looks up a localized string similar to '{0}' cannot define overloaded methods that differ only on ref and out. + + + + + Looks up a localized string similar to Cannot define overloaded constructor '{0}' because it differs from another constructor only on ref and out. + + + + + Looks up a localized string similar to Do not override object.Finalize. Instead, provide a destructor.. + + + + + Looks up a localized string similar to '{0}': no suitable method found to override. + + + + + Looks up a localized string similar to A member '{0}' marked as override cannot be marked as new or virtual. + + + + + Looks up a localized string similar to Constraints for override and explicit interface implementation methods are inherited from the base method, so they cannot be specified directly. + + + + + Looks up a localized string similar to Overloadable binary operator expected. + + + + + Looks up a localized string similar to Overloadable operator expected. + + + + + Looks up a localized string similar to Overloadable unary operator expected. + + + + + Looks up a localized string similar to The parameter has multiple distinct default values.. + + + + + Looks up a localized string similar to '{0}': static types cannot be used as parameters. + + + + + Looks up a localized string similar to Parameter not valid for the specified unmanaged type.. + + + + + Looks up a localized string similar to The params parameter cannot be declared as ref or out. + + + + + Looks up a localized string similar to A params parameter must be the last parameter in a formal parameter list. + + + + + Looks up a localized string similar to The params parameter must be a single dimensional array. + + + + + Looks up a localized string similar to The out parameter '{0}' must be assigned to before control leaves the current method. + + + + + Looks up a localized string similar to A partial method cannot have out parameters. + + + + + Looks up a localized string similar to Both partial method declarations must be extension methods or neither may be an extension method. + + + + + Looks up a localized string similar to Partial method declarations of '{0}' have inconsistent type parameter constraints. + + + + + Looks up a localized string similar to Partial methods with only a defining declaration or removed conditional methods cannot be used in expression trees. + + + + + Looks up a localized string similar to A partial method cannot have access modifiers or the virtual, abstract, override, new, sealed, or extern modifiers. + + + + + Looks up a localized string similar to No defining declaration found for implementing declaration of partial method '{0}'. + + + + + Looks up a localized string similar to Partial methods must have a void return type. + + + + + Looks up a localized string similar to A partial method may not explicitly implement an interface method. + + + + + Looks up a localized string similar to A partial method must be declared within a partial class or partial struct. + + + + + Looks up a localized string similar to Only methods, classes, structs, or interfaces may be partial. + + + + + Looks up a localized string similar to A partial method may not have multiple implementing declarations. + + + + + Looks up a localized string similar to A partial method may not have multiple defining declarations. + + + + + Looks up a localized string similar to Both partial method declarations must use a params parameter or neither may use a params parameter. + + + + + Looks up a localized string similar to Both partial method declarations must be static or neither may be static. + + + + + Looks up a localized string similar to Cannot create delegate from method '{0}' because it is a partial method without an implementing declaration. + + + + + Looks up a localized string similar to Both partial method declarations must be unsafe or neither may be unsafe. + + + + + Looks up a localized string similar to The 'partial' modifier can only appear immediately before 'class', 'struct', 'interface', or 'void'. + + + + + Looks up a localized string similar to Partial declarations of '{0}' have conflicting accessibility modifiers. + + + + + Looks up a localized string similar to Partial declarations of '{0}' must not specify different base classes. + + + + + Looks up a localized string similar to Partial declarations of '{0}' must be all classes, all structs, or all interfaces. + + + + + Looks up a localized string similar to Partial declarations of '{0}' have inconsistent constraints for type parameter '{1}'. + + + + + Looks up a localized string similar to Partial declarations of '{0}' must have the same type parameter names in the same order. + + + + + Looks up a localized string similar to Partial declarations of '{0}' must have the same type parameter names and variance modifiers in the same order. + + + + + Looks up a localized string similar to Error reading file '{0}' specified for the named argument '{1}' for PermissionSet attribute: '{2}'. + + + + + Looks up a localized string similar to Unable to resolve file path '{0}' specified for the named argument '{1}' for PermissionSet attribute. + + + + + Looks up a localized string similar to An error occurred while writing the output file: {0}. + + + + + Looks up a localized string similar to Neither 'is' nor 'as' is valid on pointer types. + + + + + Looks up a localized string similar to Cannot define/undefine preprocessor symbols after first token in file. + + + + + Looks up a localized string similar to Preprocessor directive expected. + + + + + Looks up a localized string similar to Cannot use #load after first token in file. + + + + + Looks up a localized string similar to Cannot use #r after first token in file. + + + + + Looks up a localized string similar to Predefined type '{0}' is not defined or imported. + + + + + Looks up a localized string similar to SecurityAction value '{0}' is invalid for PrincipalPermission attribute. + + + + + Looks up a localized string similar to '{0}': abstract properties cannot have private accessors. + + + + + Looks up a localized string similar to '{0}': accessibility modifiers may not be used on accessors in an interface. + + + + + Looks up a localized string similar to '{0}': property or indexer cannot have void type. + + + + + Looks up a localized string similar to The property or indexer '{0}' cannot be used in this context because it lacks the get accessor. + + + + + Looks up a localized string similar to '{0}': property or indexer must have at least one accessor. + + + + + Looks up a localized string similar to '{0}': static classes cannot contain protected members. + + + + + Looks up a localized string similar to '{0}': new protected member declared in struct. + + + + + Looks up a localized string similar to The * or -> operator must be applied to a pointer. + + + + + Looks up a localized string similar to A pointer must be indexed by only one value. + + + + + Looks up a localized string similar to Error signing output with public key from container '{0}' -- {1}. + + + + + Looks up a localized string similar to Error signing output with public key from file '{0}' -- {1}. + + + + + Looks up a localized string similar to Public signing was specified and requires a public key, but no public key was specified.. + + + + + Looks up a localized string similar to The range variable '{0}' has already been declared. + + + + + Looks up a localized string similar to The name '{0}' is not in scope on the right side of 'equals'. Consider swapping the expressions on either side of 'equals'.. + + + + + Looks up a localized string similar to Multiple implementations of the query pattern were found for source type '{0}'. Ambiguous call to '{1}'.. + + + + + Looks up a localized string similar to Could not find an implementation of the query pattern for source type '{0}'. '{1}' not found.. + + + + + Looks up a localized string similar to Could not find an implementation of the query pattern for source type '{0}'. '{1}' not found. Consider explicitly specifying the type of the range variable '{2}'.. + + + + + Looks up a localized string similar to Could not find an implementation of the query pattern for source type '{0}'. '{1}' not found. Are you missing a reference to 'System.Core.dll' or a using directive for 'System.Linq'?. + + + + + Looks up a localized string similar to The name '{0}' is not in scope on the left side of 'equals'. Consider swapping the expressions on either side of 'equals'.. + + + + + Looks up a localized string similar to Cannot pass the range variable '{0}' as an out or ref parameter. + + + + + Looks up a localized string similar to Cannot assign {0} to a range variable. + + + + + Looks up a localized string similar to The range variable '{0}' conflicts with a previous declaration of '{0}'. + + + + + Looks up a localized string similar to Range variable '{0}' cannot be assigned to -- it is read only. + + + + + Looks up a localized string similar to The range variable '{0}' cannot have the same name as a method type parameter. + + + + + Looks up a localized string similar to The type of the expression in the {0} clause is incorrect. Type inference failed in the call to '{1}'.. + + + + + Looks up a localized string similar to The type of one of the expressions in the {0} clause is incorrect. Type inference failed in the call to '{1}'.. + + + + + Looks up a localized string similar to An expression of type '{0}' is not allowed in a subsequent from clause in a query expression with source type '{1}'. Type inference failed in the call to '{2}'.. + + + + + Looks up a localized string similar to } expected. + + + + + Looks up a localized string similar to Members of readonly field '{0}' of type '{1}' cannot be assigned with an object initializer because it is of a value type. + + + + + Looks up a localized string similar to Constructor '{0}' cannot call itself. + + + + + Looks up a localized string similar to Type of '{0}' cannot be inferred since its initializer directly or indirectly refers to the definition.. + + + + + Looks up a localized string similar to The type '{2}' must be a reference type in order to use it as parameter '{1}' in the generic type or method '{0}'. + + + + + Looks up a localized string similar to #r is only allowed in scripts. + + + + + Looks up a localized string similar to A ref or out argument must be an assignable variable. + + + + + Looks up a localized string similar to A ref or out parameter cannot have a default value. + + + + + Looks up a localized string similar to A property or indexer may not be passed as an out or ref parameter. + + + + + Looks up a localized string similar to A readonly field cannot be passed ref or out (except in a constructor). + + + + + Looks up a localized string similar to Members of readonly field '{0}' cannot be passed ref or out (except in a constructor). + + + + + Looks up a localized string similar to Cannot pass '{0}' as a ref or out argument because it is read-only. + + + + + Looks up a localized string similar to Cannot pass fields of '{0}' as a ref or out argument because it is a '{1}'. + + + + + Looks up a localized string similar to Cannot pass '{0}' as a ref or out argument because it is a '{1}'. + + + + + Looks up a localized string similar to A static readonly field cannot be passed ref or out (except in a static constructor). + + + + + Looks up a localized string similar to Fields of static readonly field '{0}' cannot be passed ref or out (except in a static constructor). + + + + + Looks up a localized string similar to The 'class' or 'struct' constraint must come before any other constraints. + + + + + Looks up a localized string similar to '{0}': cannot specify both a constraint class and the 'class' or 'struct' constraint. + + + + + Looks up a localized string similar to The assembly name '{0}' is reserved and cannot be used as a reference in an interactive session. + + + + + Looks up a localized string similar to The enumerator name '{0}' is reserved and cannot be used. + + + + + Looks up a localized string similar to Each linked resource and module must have a unique filename. Filename '{0}' is specified more than once in this assembly. + + + + + Looks up a localized string similar to Resource identifier '{0}' has already been used in this assembly. + + + + + Looks up a localized string similar to Since '{0}' returns void, a return keyword must not be followed by an object expression. + + + + + Looks up a localized string similar to Anonymous function converted to a void returning delegate cannot return a value. + + + + + Looks up a localized string similar to An object of a type convertible to '{0}' is required. + + + + + Looks up a localized string similar to '{0}': not all code paths return a value. + + + + + Looks up a localized string similar to Cannot return a value from an iterator. Use the yield return statement to return a value, or yield break to end the iteration.. + + + + + Looks up a localized string similar to Cannot modify the return value of '{0}' because it is not a variable. + + + + + Looks up a localized string similar to '{0}': static types cannot be used as return types. + + + + + Looks up a localized string similar to The type '{1}' exists in both '{0}' and '{2}'. + + + + + Looks up a localized string similar to The namespace '{1}' in '{0}' conflicts with the type '{3}' in '{2}'. + + + + + Looks up a localized string similar to The type '{1}' in '{0}' conflicts with the namespace '{3}' in '{2}'. + + + + + Looks up a localized string similar to '{0}' cannot be sealed because it is not an override. + + + + + Looks up a localized string similar to '{0}': a class cannot be both static and sealed. + + + + + Looks up a localized string similar to Security attribute '{0}' has an invalid SecurityAction value '{1}'. + + + + + Looks up a localized string similar to SecurityAction value '{0}' is invalid for security attributes applied to an assembly. + + + + + Looks up a localized string similar to SecurityAction value '{0}' is invalid for security attributes applied to a type or a method. + + + + + Looks up a localized string similar to Security attribute '{0}' is not valid on this declaration type. Security attributes are only valid on assembly, type and method declarations.. + + + + + Looks up a localized string similar to First argument to a security attribute must be a valid SecurityAction. + + + + + Looks up a localized string similar to Security attribute '{0}' cannot be applied to an Async method.. + + + + + Looks up a localized string similar to Async methods are not allowed in an Interface, Class, or Structure which has the 'SecurityCritical' or 'SecuritySafeCritical' attribute.. + + + + + Looks up a localized string similar to ; expected. + + + + + Looks up a localized string similar to { or ; expected. + + + + + Looks up a localized string similar to Key file '{0}' is missing the private key needed for signing. + + + + + Looks up a localized string similar to A single-line comment may not be used in an interpolated string.. + + + + + Looks up a localized string similar to The type or namespace name '{0}' could not be found (are you missing a using directive or an assembly reference?). + + + + + Looks up a localized string similar to The type name '{0}' could not be found. This type has been forwarded to assembly '{1}'. Consider adding a reference to that assembly.. + + + + + Looks up a localized string similar to '{0}' does not have a predefined size, therefore sizeof can only be used in an unsafe context (consider using System.Runtime.InteropServices.Marshal.SizeOf). + + + + + Looks up a localized string similar to Source file references are not supported.. + + + + + Looks up a localized string similar to Instance of type '{0}' cannot be used inside an anonymous function, query expression, iterator block or async method. + + + + + Looks up a localized string similar to Constraint cannot be special class '{0}'. + + + + + Looks up a localized string similar to stackalloc may not be used in a catch or finally block. + + + + + Looks up a localized string similar to A lambda expression with a statement body cannot be converted to an expression tree. + + + + + Looks up a localized string similar to '{1}': cannot derive from static class '{0}'. + + + + + Looks up a localized string similar to '{0}': static classes cannot implement interfaces. + + + + + Looks up a localized string similar to The constant '{0}' cannot be marked static. + + + + + Looks up a localized string similar to '{0}': a static constructor must be parameterless. + + + + + Looks up a localized string similar to '{0}': access modifiers are not allowed on static constructors. + + + + + Looks up a localized string similar to '{0}': static constructor cannot have an explicit 'this' or 'base' constructor call. + + + + + Looks up a localized string similar to Static class '{0}' cannot derive from type '{1}'. Static classes must derive from object.. + + + + + Looks up a localized string similar to The second operand of an 'is' or 'as' operator may not be static type '{0}'. + + + + + Looks up a localized string similar to Static field or property '{0}' cannot be assigned in an object initializer. + + + + + Looks up a localized string similar to A static member '{0}' cannot be marked as override, virtual, or abstract. + + + + + Looks up a localized string similar to Struct member '{0}' of type '{1}' causes a cycle in the struct layout. + + + + + Looks up a localized string similar to The FieldOffset attribute is not allowed on static or const fields. + + + + + Looks up a localized string similar to The FieldOffset attribute can only be placed on members of types marked with the StructLayout(LayoutKind.Explicit). + + + + + Looks up a localized string similar to Structs cannot contain explicit parameterless constructors. + + + + + Looks up a localized string similar to '{0}': structs cannot call base class constructors. + + + + + Looks up a localized string similar to Sub-expression cannot be used in an argument to nameof.. + + + + + Looks up a localized string similar to Control cannot fall out of switch from final case label ('{0}'). + + + + + Looks up a localized string similar to Control cannot fall through from one case label ('{0}') to another. + + + + + Looks up a localized string similar to A switch expression or case label must be a bool, char, string, integral, enum, or corresponding nullable type. + + + + + Looks up a localized string similar to Command-line syntax error: Missing ':<number>' for '{0}' option. + + + + + Looks up a localized string similar to Command-line syntax error: Missing '{0}' for '{1}' option. + + + + + Looks up a localized string similar to 'MethodImplOptions.Synchronized' cannot be applied to an async method. + + + + + Looks up a localized string similar to Syntax error, '{0}' expected. + + + + + Looks up a localized string similar to System.Void cannot be used from C# -- use typeof(void) to get the void type object. + + + + + Looks up a localized string similar to Since '{0}' is an async method that returns 'Task', a return keyword must not be followed by an object expression. Did you intend to return 'Task<T>'?. + + + + + Looks up a localized string similar to Async lambda expression converted to a 'Task' returning delegate cannot return a value. Did you intend to return 'Task<T>'?. + + + + + Looks up a localized string similar to Keyword 'this' is not available in the current context. + + + + + Looks up a localized string similar to Keyword 'this' is not valid in a static property, static method, or static field initializer. + + + + + Looks up a localized string similar to Keyword 'this' or 'base' expected. + + + + + Looks up a localized string similar to Anonymous methods, lambda expressions, and query expressions inside structs cannot access instance members of 'this'. Consider copying 'this' to a local variable outside the anonymous method, lambda expression or query expression and using the local instead.. + + + + + Looks up a localized string similar to Catch clauses cannot follow the general catch clause of a try statement. + + + + + Looks up a localized string similar to Too many characters in character literal. + + + + + Looks up a localized string similar to Only 65534 locals, including those generated by the compiler, are allowed. + + + + + Looks up a localized string similar to Combined length of user strings used by the program exceeds allowed limit. Try to decrease use of string literals.. + + + + + Looks up a localized string similar to A format specifier may not contain trailing whitespace.. + + + + + Looks up a localized string similar to The {1} '{0}' cannot be used with type arguments. + + + + + Looks up a localized string similar to Type expected. + + + + + Looks up a localized string similar to Type parameter declaration must be an identifier not a type. + + + + + Looks up a localized string similar to Cannot convert null to type parameter '{0}' because it could be a non-nullable value type. Consider using 'default({0})' instead.. + + + + + Looks up a localized string similar to Type parameter '{0}' has the same name as the containing type, or method. + + + + + Looks up a localized string similar to The contextual keyword 'var' may only appear within a local variable declaration or in script code. + + + + + Looks up a localized string similar to The contextual keyword 'var' cannot be used in a range variable declaration. + + + + + Looks up a localized string similar to '{1}' does not define type parameter '{0}'. + + + + + Looks up a localized string similar to Field '{0}' must be fully assigned before control is returned to the caller. + + + + + Looks up a localized string similar to Auto-implemented property '{0}' must be fully assigned before control is returned to the caller.. + + + + + Looks up a localized string similar to Cannot modify the result of an unboxing conversion. + + + + + Looks up a localized string similar to Missing close delimiter '}' for interpolated expression started with '{'.. + + + + + Looks up a localized string similar to A '{0}' character must be escaped (by doubling) in an interpolated string.. + + + + + Looks up a localized string similar to Unexpected use of an aliased name. + + + + + Looks up a localized string similar to Type arguments are not allowed in the nameof operator.. + + + + + Looks up a localized string similar to Unexpected character '{0}'. + + + + + Looks up a localized string similar to Unexpected preprocessor directive. + + + + + Looks up a localized string similar to Unexpected use of a generic name. + + + + + Looks up a localized string similar to Semicolon after method or accessor block is not valid. + + + + + Looks up a localized string similar to Unexpected token '{0}'. + + + + + Looks up a localized string similar to Unexpected use of an unbound generic name. + + + + + Looks up a localized string similar to Invalid variance: The type parameter '{1}' must be {3} valid on '{0}'. '{1}' is {2}.. + + + + + Looks up a localized string similar to '{0}' cannot implement both '{1}' and '{2}' because they may unify for some type parameter substitutions. + + + + + Looks up a localized string similar to '{0}' does not implement inherited abstract member '{1}'. + + + + + Looks up a localized string similar to '{0}' does not implement interface member '{1}'. '{2}' is not public.. + + + + + Looks up a localized string similar to '{0}' does not implement interface member '{1}'. + + + + + Looks up a localized string similar to A previous catch clause already catches all exceptions of this or of a super type ('{0}'). + + + + + Looks up a localized string similar to Async methods cannot have unsafe parameters or return types. + + + + + Looks up a localized string similar to Iterators cannot have unsafe parameters or yield types. + + + + + Looks up a localized string similar to Pointers and fixed size buffers may only be used in an unsafe context. + + + + + Looks up a localized string similar to Unsafe type '{0}' cannot be used in object creation. + + + + + Looks up a localized string similar to Transparent identifier member access failed for field '{0}' of '{1}'. Does the data being queried implement the query pattern?. + + + + + Looks up a localized string similar to Unterminated string literal. + + + + + Looks up a localized string similar to Use of unassigned local variable '{0}'. + + + + + Looks up a localized string similar to Use of possibly unassigned field '{0}'. + + + + + Looks up a localized string similar to Use of unassigned out parameter '{0}'. + + + + + Looks up a localized string similar to Use of possibly unassigned auto-implemented property '{0}'. + + + + + Looks up a localized string similar to The 'this' object cannot be used before all of its fields are assigned to. + + + + + Looks up a localized string similar to A using clause must precede all other elements defined in the namespace except extern alias declarations. + + + + + Looks up a localized string similar to The type '{2}' must be a non-nullable value type in order to use it as parameter '{1}' in the generic type or method '{0}'. + + + + + Looks up a localized string similar to Cannot convert null to '{0}' because it is a non-nullable value type. + + + + + Looks up a localized string similar to Syntax error; value expected. + + + + + Looks up a localized string similar to Extension method '{0}' defined on value type '{1}' cannot be used to create delegates. + + + + + Looks up a localized string similar to Members of property '{0}' of type '{1}' cannot be assigned with an object initializer because it is of a value type. + + + + + Looks up a localized string similar to __arglist is not allowed in the parameter list of async methods. + + + + + Looks up a localized string similar to An expression tree lambda may not contain a method with variable arguments. + + + + + Looks up a localized string similar to __arglist is not allowed in the parameter list of iterators. + + + + + Looks up a localized string similar to An __arglist parameter must be the last parameter in a formal parameter list. + + + + + Looks up a localized string similar to Cannot declare a variable of static type '{0}'. + + + + + Looks up a localized string similar to Cannot use local variable '{0}' before it is declared. + + + + + Looks up a localized string similar to Cannot use local variable '{0}' before it is declared. The declaration of the local variable hides the field '{1}'.. + + + + + Looks up a localized string similar to '{0}': virtual or abstract members cannot be private. + + + + + Looks up a localized string similar to The operation in question is undefined on void pointers. + + + + + Looks up a localized string similar to '{0}': a field cannot be both volatile and readonly. + + + + + Looks up a localized string similar to '{0}': a volatile field cannot be of the type '{1}'. + + + + + Looks up a localized string similar to A Windows Runtime event may not be passed as an out or ref parameter.. + + + + + Looks up a localized string similar to The yield statement cannot be used inside an anonymous method or lambda expression. + + + + + Looks up a localized string similar to Cannot use 'yield' in top-level script code. + + + + + Looks up a localized string similar to Algorithm '{0}' is not supported. + + + + + Looks up a localized string similar to Code page '{0}' is invalid or not installed. + + + + + Looks up a localized string similar to Unexpected error writing debug information -- '{0}'. + + + + + Looks up a localized string similar to File name '{0}' is empty, contains invalid characters, has a drive specification without an absolute path, or is too long. + + + + + Looks up a localized string similar to Invalid target type for /target: must specify 'exe', 'winexe', 'library', or 'module'. + + + + + Looks up a localized string similar to Metadata file '{0}' could not be opened -- {1}. + + + + + Looks up a localized string similar to Cannot create short filename '{0}' when a long filename with the same short filename already exists. + + + + + Looks up a localized string similar to Generic parameter is definition when expected to be reference {0}. + + + + + Looks up a localized string similar to Unused extern alias.. + + + + + Looks up a localized string similar to Unused extern alias. + + + + + Looks up a localized string similar to Unnecessary using directive.. + + + + + Looks up a localized string similar to Unnecessary using directive. + + + + + Looks up a localized string similar to anonymous method. + + + + + Looks up a localized string similar to await in catch blocks and finally blocks. + + + + + Looks up a localized string similar to collection. + + + + + Looks up a localized string similar to contravariant. + + + + + Looks up a localized string similar to contravariantly. + + + + + Looks up a localized string similar to covariant. + + + + + Looks up a localized string similar to covariantly. + + + + + Looks up a localized string similar to + Visual C# Compiler Options + + - OUTPUT FILES - + /out:<file> Specify output file name (default: base name of + file with main class or first file) + /target:exe Build a console executable (default) (Short + form: /t:exe) + /target:winexe Build a Windows executable (Short form: + /t:winexe) + /target:library [rest of string was truncated]";. + + + + + Looks up a localized string similar to directory does not exist. + + + + + Looks up a localized string similar to path is too long or invalid. + + + + + Looks up a localized string similar to anonymous methods. + + + + + Looks up a localized string similar to anonymous types. + + + + + Looks up a localized string similar to async function. + + + + + Looks up a localized string similar to automatically implemented properties. + + + + + Looks up a localized string similar to auto property initializer. + + + + + Looks up a localized string similar to collection initializer. + + + + + Looks up a localized string similar to declaration expression. + + + + + Looks up a localized string similar to default operator. + + + + + Looks up a localized string similar to dictionary initializer. + + + + + Looks up a localized string similar to dynamic. + + + + + Looks up a localized string similar to exception filter. + + + + + Looks up a localized string similar to expression-bodied indexer. + + + + + Looks up a localized string similar to expression-bodied method. + + + + + Looks up a localized string similar to expression-bodied property. + + + + + Looks up a localized string similar to extension method. + + + + + Looks up a localized string similar to extern alias. + + + + + Looks up a localized string similar to fixed size buffers. + + + + + Looks up a localized string similar to generics. + + + + + Looks up a localized string similar to namespace alias qualifier. + + + + + Looks up a localized string similar to implicitly typed array. + + + + + Looks up a localized string similar to implicitly typed local variable. + + + + + Looks up a localized string similar to interpolated strings. + + + + + Looks up a localized string similar to iterators. + + + + + Looks up a localized string similar to lambda expression. + + + + + Looks up a localized string similar to module as an attribute target specifier. + + + + + Looks up a localized string similar to named argument. + + + + + Looks up a localized string similar to nameof operator. + + + + + Looks up a localized string similar to nullable types. + + + + + Looks up a localized string similar to null propagating operator. + + + + + Looks up a localized string similar to object initializer. + + + + + Looks up a localized string similar to optional parameter. + + + + + Looks up a localized string similar to partial method. + + + + + Looks up a localized string similar to partial types. + + + + + Looks up a localized string similar to #pragma. + + + + + Looks up a localized string similar to access modifiers on properties. + + + + + Looks up a localized string similar to query expression. + + + + + Looks up a localized string similar to readonly automatically implemented properties. + + + + + Looks up a localized string similar to static classes. + + + + + Looks up a localized string similar to switch on boolean type. + + + + + Looks up a localized string similar to type variance. + + + + + Looks up a localized string similar to using static. + + + + + Looks up a localized string similar to fixed variable. + + + + + Looks up a localized string similar to foreach iteration variable. + + + + + Looks up a localized string similar to <global namespace>. + + + + + Looks up a localized string similar to invariantly. + + + + + Looks up a localized string similar to lambda expression. + + + + + Looks up a localized string similar to LIB environment variable. + + + + + Looks up a localized string similar to /LIB option. + + + + + Looks up a localized string similar to {0} version {1}. + + + + + Looks up a localized string similar to Copyright (C) Microsoft Corporation. All rights reserved.. + + + + + Looks up a localized string similar to method group. + + + + + Looks up a localized string similar to <namespace>. + + + + + Looks up a localized string similar to <null>. + + + + + Looks up a localized string similar to Operation caused a stack overflow.. + + + + + Looks up a localized string similar to <path list>. + + + + + Looks up a localized string similar to /REFERENCEPATH option. + + + + + Looks up a localized string similar to (Location of symbol related to previous error). + + + + + Looks up a localized string similar to (Location of symbol related to previous warning). + + + + + Looks up a localized string similar to using alias. + + + + + Looks up a localized string similar to event. + + + + + Looks up a localized string similar to extern alias. + + + + + Looks up a localized string similar to field. + + + + + Looks up a localized string similar to label. + + + + + Looks up a localized string similar to method. + + + + + Looks up a localized string similar to namespace. + + + + + Looks up a localized string similar to property. + + + + + Looks up a localized string similar to type. + + + + + Looks up a localized string similar to type parameter. + + + + + Looks up a localized string similar to element. + + + + + Looks up a localized string similar to variable. + + + + + Looks up a localized string similar to <text>. + + + + + Looks up a localized string similar to Microsoft (R) Visual C# Compiler. + + + + + Looks up a localized string similar to using variable. + + + + + Looks up a localized string similar to 'experimental'. + + + + + Looks up a localized string similar to Include tag is invalid . + + + + + Looks up a localized string similar to Failed to insert some or all of included XML . + + + + + Looks up a localized string similar to <!-- Badly formed XML comment ignored for member "{0}" -->. + + + + + Looks up a localized string similar to Badly formed XML file "{0}" cannot be included . + + + + + Looks up a localized string similar to Missing file attribute. + + + + + Looks up a localized string similar to Missing path attribute. + + + + + Looks up a localized string similar to No matching elements were found for the following include tag . + + + + + Looks up a localized string similar to Skipping some types in analyzer assembly {0} due to a ReflectionTypeLoadException : {1}.. + + + + + Looks up a localized string similar to Skip loading types in analyzer assembly that fail due to a ReflectionTypeLoadException. + + + + + Looks up a localized string similar to Called GetDeclarationName for a declaration node that can possibly contain multiple variable declarators.. + + + + + Looks up a localized string similar to items: must be non-empty. + + + + + Looks up a localized string similar to Location must be provided in order to provide minimal type qualification.. + + + + + Looks up a localized string similar to LookupOptions has an invalid combination of options. + + + + + Looks up a localized string similar to Must call SetMethodTestData(ConcurrentDictionary) before calling SetMethodTestData(MethodSymbol, ILBuilder). + + + + + Looks up a localized string similar to Name conflict for name {0}. + + + + + Looks up a localized string similar to SearchCriteria is expected.. + + + + + Looks up a localized string similar to Not a C# symbol.. + + + + + Looks up a localized string similar to Position is not within syntax tree with full span {0}. + + + + + Looks up a localized string similar to Position must be within span of the syntax tree.. + + + + + Looks up a localized string similar to separator is expected. + + + + + Looks up a localized string similar to Syntax node to be speculated cannot belong to a syntax tree from the current compilation.. + + + + + Looks up a localized string similar to Submission can have at most one syntax tree.. + + + + + Looks up a localized string similar to Submission can only include script code.. + + + + + Looks up a localized string similar to Syntax node is not within syntax tree. + + + + + Looks up a localized string similar to Syntax tree already present. + + + + + Looks up a localized string similar to SyntaxTree '{0}' resulted from a #load directive and cannot be removed or replaced directly.. + + + + + Looks up a localized string similar to Syntax tree should be created from a submission.. + + + + + Looks up a localized string similar to SyntaxTree '{0}' not found to remove. + + + + + Looks up a localized string similar to SyntaxTreeSemanticModel must be provided in order to provide minimal type qualification.. + + + + + Looks up a localized string similar to The stream cannot be read from.. + + + + + Looks up a localized string similar to The stream cannot be written to.. + + + + + Looks up a localized string similar to This method can only be used to create tokens - {0} is not a token kind.. + + + + + Looks up a localized string similar to tree must have a root node with SyntaxKind.CompilationUnit. + + + + + Looks up a localized string similar to tree not part of compilation. + + + + + Looks up a localized string similar to Type argument cannot be null. + + + + + Looks up a localized string similar to Use Microsoft.CodeAnalysis.CSharp.SyntaxFactory.Literal to create numeric literal tokens.. + + + + + Looks up a localized string similar to Use Microsoft.CodeAnalysis.CSharp.SyntaxFactory.Literal to create character literal tokens.. + + + + + Looks up a localized string similar to Use Microsoft.CodeAnalysis.CSharp.SyntaxFactory.Identifier or Microsoft.CodeAnalysis.CSharp.SyntaxFactory.VerbatimIdentifier to create identifier tokens.. + + + + + Looks up a localized string similar to Alignment value {0} has a magnitude greater than {1} and may result in a large formatted string.. + + + + + Looks up a localized string similar to Alignment value has a magnitude that may result in a large formatted string. + + + + + Looks up a localized string similar to The result of the expression is always 'null' of type '{0}'. + + + + + Looks up a localized string similar to The result of the expression is always 'null'. + + + + + Looks up a localized string similar to Ambiguous reference in cref attribute: '{0}'. Assuming '{1}', but could have also matched other overloads including '{2}'.. + + + + + Looks up a localized string similar to Ambiguous reference in cref attribute. + + + + + Looks up a localized string similar to An instance of analyzer {0} cannot be created from {1} : {2}.. + + + + + Looks up a localized string similar to An analyzer instance cannot be created. + + + + + Looks up a localized string similar to Attribute '{0}' from module '{1}' will be ignored in favor of the instance appearing in source. + + + + + Looks up a localized string similar to Attribute will be ignored in favor of the instance appearing in source. + + + + + Looks up a localized string similar to Possibly incorrect assignment to local '{0}' which is the argument to a using or lock statement. The Dispose call or unlocking will happen on the original value of the local.. + + + + + Looks up a localized string similar to Possibly incorrect assignment to local which is the argument to a using or lock statement. + + + + + Looks up a localized string similar to Assignment made to same variable; did you mean to assign something else?. + + + + + Looks up a localized string similar to Assignment made to same variable. + + + + + Looks up a localized string similar to This async method lacks 'await' operators and will run synchronously. Consider using the 'await' operator to await non-blocking API calls, or 'await Task.Run(...)' to do CPU-bound work on a background thread.. + + + + + Looks up a localized string similar to Async method lacks 'await' operators and will run synchronously. + + + + + Looks up a localized string similar to Attribute '{0}' is ignored when public signing is specified.. + + + + + Looks up a localized string similar to Attribute is ignored when public signing is specified.. + + + + + Looks up a localized string similar to '{0}' is not a valid attribute location for this declaration. Valid attribute locations for this declaration are '{1}'. All attributes in this block will be ignored.. + + + + + Looks up a localized string similar to Not a valid attribute location for this declaration. + + + + + Looks up a localized string similar to Possible unintended reference comparison; to get a value comparison, cast the left hand side to type '{0}'. + + + + + Looks up a localized string similar to Possible unintended reference comparison; left hand side needs cast. + + + + + Looks up a localized string similar to Possible unintended reference comparison; to get a value comparison, cast the right hand side to type '{0}'. + + + + + Looks up a localized string similar to Possible unintended reference comparison; right hand side needs cast. + + + + + Looks up a localized string similar to Cannot restore warning 'CS{0}' because it was disabled globally. + + + + + Looks up a localized string similar to Cannot restore warning because it was disabled globally. + + + + + Looks up a localized string similar to The language name '{0}' is invalid.. + + + + + Looks up a localized string similar to The language name is invalid. + + + + + Looks up a localized string similar to '{0}' is not a valid warning number. + + + + + Looks up a localized string similar to A number that was passed to the #pragma warning preprocessor directive was not a valid warning number. Verify that the number represents a warning, not an error.. + + + + + Looks up a localized string similar to Not a valid warning number. + + + + + Looks up a localized string similar to XML comment has cref attribute '{0}' that could not be resolved. + + + + + Looks up a localized string similar to XML comment has cref attribute that could not be resolved. + + + + + Looks up a localized string similar to Invalid type for parameter {0} in XML comment cref attribute: '{1}'. + + + + + Looks up a localized string similar to Invalid type for parameter in XML comment cref attribute. + + + + + Looks up a localized string similar to Invalid return type in XML comment cref attribute. + + + + + Looks up a localized string similar to Invalid return type in XML comment cref attribute. + + + + + Looks up a localized string similar to XML comment has syntactically incorrect cref attribute '{0}'. + + + + + Looks up a localized string similar to XML comment has syntactically incorrect cref attribute. + + + + + Looks up a localized string similar to XML comment has cref attribute '{0}' that refers to a type parameter. + + + + + Looks up a localized string similar to XML comment has cref attribute that refers to a type parameter. + + + + + Looks up a localized string similar to Bitwise-or operator used on a sign-extended operand; consider casting to a smaller unsigned type first. + + + + + Looks up a localized string similar to The compiler implicitly widened and sign-extended a variable, and then used the resulting value in a bitwise OR operation. This can result in unexpected behavior.. + + + + + Looks up a localized string similar to Bitwise-or operator used on a sign-extended operand. + + + + + Looks up a localized string similar to Passing '{0}' as ref or out or taking its address may cause a runtime exception because it is a field of a marshal-by-reference class. + + + + + Looks up a localized string similar to Passing a field of a marshal-by-reference class as ref or out or taking its address may cause a runtime exception. + + + + + Looks up a localized string similar to Call System.IDisposable.Dispose() on allocated instance of {0} before all references to it are out of scope.. + + + + + Looks up a localized string similar to Call System.IDisposable.Dispose() on allocated instance before all references to it are out of scope. + + + + + Looks up a localized string similar to Allocated instance of {0} is not disposed along all exception paths. Call System.IDisposable.Dispose() before all references to it are out of scope.. + + + + + Looks up a localized string similar to Allocated instance is not disposed along all exception paths. + + + + + Looks up a localized string similar to Object '{0}' can be disposed more than once.. + + + + + Looks up a localized string similar to Object can be disposed more than once. + + + + + Looks up a localized string similar to The CallerFilePathAttribute applied to parameter '{0}' will have no effect because it applies to a member that is used in contexts that do not allow optional arguments. + + + + + Looks up a localized string similar to The CallerFilePathAttribute will have no effect because it applies to a member that is used in contexts that do not allow optional arguments. + + + + + Looks up a localized string similar to The CallerMemberNameAttribute applied to parameter '{0}' will have no effect. It is overridden by the CallerFilePathAttribute.. + + + + + Looks up a localized string similar to The CallerMemberNameAttribute will have no effect; it is overridden by the CallerFilePathAttribute. + + + + + Looks up a localized string similar to The CallerLineNumberAttribute applied to parameter '{0}' will have no effect because it applies to a member that is used in contexts that do not allow optional arguments. + + + + + Looks up a localized string similar to The CallerLineNumberAttribute will have no effect because it applies to a member that is used in contexts that do not allow optional arguments. + + + + + Looks up a localized string similar to The CallerFilePathAttribute applied to parameter '{0}' will have no effect. It is overridden by the CallerLineNumberAttribute.. + + + + + Looks up a localized string similar to The CallerFilePathAttribute will have no effect; it is overridden by the CallerLineNumberAttribute. + + + + + Looks up a localized string similar to The CallerMemberNameAttribute applied to parameter '{0}' will have no effect. It is overridden by the CallerLineNumberAttribute.. + + + + + Looks up a localized string similar to The CallerMemberNameAttribute will have no effect; it is overridden by the CallerLineNumberAttribute. + + + + + Looks up a localized string similar to The CallerMemberNameAttribute applied to parameter '{0}' will have no effect because it applies to a member that is used in contexts that do not allow optional arguments. + + + + + Looks up a localized string similar to The CallerMemberNameAttribute will have no effect because it applies to a member that is used in contexts that do not allow optional arguments. + + + + + Looks up a localized string similar to Accessing a member on '{0}' may cause a runtime exception because it is a field of a marshal-by-reference class. + + + + + Looks up a localized string similar to This warning occurs when you try to call a method, property, or indexer on a member of a class that derives from MarshalByRefObject, and the member is a value type. Objects that inherit from MarshalByRefObject are typically intended to be marshaled by reference across an application domain. If any code ever attempts to directly access the value-type member of such an object across an application domain, a runtime exception will occur. To resolve the warning, first copy the member into a local variable and c [rest of string was truncated]";. + + + + + Looks up a localized string similar to Accessing a member on a field of a marshal-by-reference class may cause a runtime exception. + + + + + Looks up a localized string similar to Ignoring /win32manifest for module because it only applies to assemblies. + + + + + Looks up a localized string similar to Ignoring /win32manifest for module because it only applies to assemblies. + + + + + Looks up a localized string similar to Arrays as attribute arguments is not CLS-compliant. + + + + + Looks up a localized string similar to Arrays as attribute arguments is not CLS-compliant. + + + + + Looks up a localized string similar to '{0}' cannot be marked as CLS-compliant because the assembly does not have a CLSCompliant attribute. + + + + + Looks up a localized string similar to Type or member cannot be marked as CLS-compliant because the assembly does not have a CLSCompliant attribute. + + + + + Looks up a localized string similar to '{0}' does not need a CLSCompliant attribute because the assembly does not have a CLSCompliant attribute. + + + + + Looks up a localized string similar to Type or member does not need a CLSCompliant attribute because the assembly does not have a CLSCompliant attribute. + + + + + Looks up a localized string similar to Argument type '{0}' is not CLS-compliant. + + + + + Looks up a localized string similar to Argument type is not CLS-compliant. + + + + + Looks up a localized string similar to '{0}' has no accessible constructors which use only CLS-compliant types. + + + + + Looks up a localized string similar to Type has no accessible constructors which use only CLS-compliant types. + + + + + Looks up a localized string similar to '{0}': base type '{1}' is not CLS-compliant. + + + + + Looks up a localized string similar to A base type was marked as not having to be compliant with the Common Language Specification (CLS) in an assembly that was marked as being CLS compliant. Either remove the attribute that specifies the assembly is CLS compliant or remove the attribute that indicates the type is not CLS compliant.. + + + + + Looks up a localized string similar to Base type is not CLS-compliant. + + + + + Looks up a localized string similar to Type of '{0}' is not CLS-compliant. + + + + + Looks up a localized string similar to A public, protected, or protected internal variable must be of a type that is compliant with the Common Language Specification (CLS).. + + + + + Looks up a localized string similar to Type is not CLS-compliant. + + + + + Looks up a localized string similar to Identifier '{0}' is not CLS-compliant. + + + + + Looks up a localized string similar to Identifier is not CLS-compliant. + + + + + Looks up a localized string similar to Identifier '{0}' differing only in case is not CLS-compliant. + + + + + Looks up a localized string similar to Identifier differing only in case is not CLS-compliant. + + + + + Looks up a localized string similar to '{0}' is not CLS-compliant because base interface '{1}' is not CLS-compliant. + + + + + Looks up a localized string similar to Type is not CLS-compliant because base interface is not CLS-compliant. + + + + + Looks up a localized string similar to '{0}': CLS-compliant interfaces must have only CLS-compliant members. + + + + + Looks up a localized string similar to CLS-compliant interfaces must have only CLS-compliant members. + + + + + Looks up a localized string similar to Return type of '{0}' is not CLS-compliant. + + + + + Looks up a localized string similar to Return type is not CLS-compliant. + + + + + Looks up a localized string similar to Constraint type '{0}' is not CLS-compliant. + + + + + Looks up a localized string similar to Constraint type is not CLS-compliant. + + + + + Looks up a localized string similar to '{0}' cannot be marked as CLS-compliant because it is a member of non-CLS-compliant type '{1}'. + + + + + Looks up a localized string similar to Type cannot be marked as CLS-compliant because it is a member of non-CLS-compliant type. + + + + + Looks up a localized string similar to CLSCompliant attribute has no meaning when applied to parameters. Try putting it on the method instead.. + + + + + Looks up a localized string similar to CLSCompliant attribute has no meaning when applied to parameters. + + + + + Looks up a localized string similar to CLS compliance checking will not be performed on '{0}' because it is not visible from outside this assembly. + + + + + Looks up a localized string similar to CLS compliance checking will not be performed because it is not visible from outside this assembly. + + + + + Looks up a localized string similar to CLSCompliant attribute has no meaning when applied to return types. Try putting it on the method instead.. + + + + + Looks up a localized string similar to CLSCompliant attribute has no meaning when applied to return types. + + + + + Looks up a localized string similar to Added modules must be marked with the CLSCompliant attribute to match the assembly. + + + + + Looks up a localized string similar to Added modules must be marked with the CLSCompliant attribute to match the assembly. + + + + + Looks up a localized string similar to '{0}': only CLS-compliant members can be abstract. + + + + + Looks up a localized string similar to Only CLS-compliant members can be abstract. + + + + + Looks up a localized string similar to You must specify the CLSCompliant attribute on the assembly, not the module, to enable CLS compliance checking. + + + + + Looks up a localized string similar to You must specify the CLSCompliant attribute on the assembly, not the module, to enable CLS compliance checking. + + + + + Looks up a localized string similar to You cannot specify the CLSCompliant attribute on a module that differs from the CLSCompliant attribute on the assembly. + + + + + Looks up a localized string similar to You cannot specify the CLSCompliant attribute on a module that differs from the CLSCompliant attribute on the assembly. + + + + + Looks up a localized string similar to Methods with variable arguments are not CLS-compliant. + + + + + Looks up a localized string similar to Methods with variable arguments are not CLS-compliant. + + + + + Looks up a localized string similar to Overloaded method '{0}' differing only in ref or out, or in array rank, is not CLS-compliant. + + + + + Looks up a localized string similar to Overloaded method differing only in ref or out, or in array rank, is not CLS-compliant. + + + + + Looks up a localized string similar to Overloaded method '{0}' differing only by unnamed array types is not CLS-compliant. + + + + + Looks up a localized string similar to This error occurs if you have an overloaded method that takes a jagged array and the only difference between the method signatures is the element type of the array. To avoid this error, consider using a rectangular array rather than a jagged array; use an additional parameter to disambiguate the function call; rename one or more of the overloaded methods; or, if CLS Compliance is not needed, remove the CLSCompliantAttribute attribute.. + + + + + Looks up a localized string similar to Overloaded method differing only by unnamed array types is not CLS-compliant. + + + + + Looks up a localized string similar to CLS-compliant field '{0}' cannot be volatile. + + + + + Looks up a localized string similar to CLS-compliant field cannot be volatile. + + + + + Looks up a localized string similar to Option '{0}' overrides attribute '{1}' given in a source file or added module. + + + + + Looks up a localized string similar to This warning occurs if the assembly attributes AssemblyKeyFileAttribute or AssemblyKeyNameAttribute found in source conflict with the /keyfile or /keycontainer command line option or key file name or key container specified in the Project Properties.. + + + + + Looks up a localized string similar to Option overrides attribute given in a source file or added module. + + + + + Looks up a localized string similar to Comparing with null of type '{0}' always produces 'false'. + + + + + Looks up a localized string similar to Comparing with null of struct type always produces 'false'. + + + + + Looks up a localized string similar to '{0}' interface marked with 'CoClassAttribute' not marked with 'ComImportAttribute'. + + + + + Looks up a localized string similar to Interface marked with 'CoClassAttribute' not marked with 'ComImportAttribute'. + + + + + Looks up a localized string similar to Comparison made to same variable; did you mean to compare something else?. + + + + + Looks up a localized string similar to Comparison made to same variable. + + + + + Looks up a localized string similar to Different checksum values given for '{0}'. + + + + + Looks up a localized string similar to Different #pragma checksum values given. + + + + + Looks up a localized string similar to Referenced assembly '{0}' targets a different processor.. + + + + + Looks up a localized string similar to Referenced assembly targets a different processor. + + + + + Looks up a localized string similar to The fully qualified name for '{0}' is too long for debug information. Compile without '/debug' option.. + + + + + Looks up a localized string similar to Fully qualified name is too long for debug information. + + + + + Looks up a localized string similar to The default value specified for parameter '{0}' will have no effect because it applies to a member that is used in contexts that do not allow optional arguments. + + + + + Looks up a localized string similar to The default value specified will have no effect because it applies to a member that is used in contexts that do not allow optional arguments. + + + + + Looks up a localized string similar to Invalid value for '/define'; '{0}' is not a valid identifier. + + + + + Looks up a localized string similar to Invalid value for '/define'; not a valid identifier. + + + + + Looks up a localized string similar to Delay signing was specified and requires a public key, but no public key was specified. + + + + + Looks up a localized string similar to Delay signing was specified and requires a public key, but no public key was specified. + + + + + Looks up a localized string similar to The best overloaded Add method '{0}' for the collection initializer element is obsolete.. + + + + + Looks up a localized string similar to The best overloaded Add method for the collection initializer element is obsolete. + + + + + Looks up a localized string similar to The best overloaded Add method '{0}' for the collection initializer element is obsolete. {1}. + + + + + Looks up a localized string similar to The best overloaded Add method for the collection initializer element is obsolete. + + + + + Looks up a localized string similar to '{0}' is obsolete. + + + + + Looks up a localized string similar to Type or member is obsolete. + + + + + Looks up a localized string similar to '{0}' is obsolete: '{1}'. + + + + + Looks up a localized string similar to Type or member is obsolete. + + + + + Looks up a localized string similar to Expression will always cause a System.NullReferenceException because the default value of '{0}' is null. + + + + + Looks up a localized string similar to Expression will always cause a System.NullReferenceException because the type's default value is null. + + + + + Looks up a localized string similar to XML comment has a duplicate param tag for '{0}'. + + + + + Looks up a localized string similar to XML comment has a duplicate param tag. + + + + + Looks up a localized string similar to XML comment has a duplicate typeparam tag for '{0}'. + + + + + Looks up a localized string similar to XML comment has a duplicate typeparam tag. + + + + + Looks up a localized string similar to The using directive for '{0}' appeared previously in this namespace. + + + + + Looks up a localized string similar to Using directive appeared previously in this namespace. + + + + + Looks up a localized string similar to The dynamically dispatched call to method '{0}' may fail at runtime because one or more applicable overloads are conditional methods.. + + + + + Looks up a localized string similar to Dynamically dispatched call may fail at runtime because one or more applicable overloads are conditional methods. + + + + + Looks up a localized string similar to Empty switch block. + + + + + Looks up a localized string similar to Empty switch block. + + + + + Looks up a localized string similar to Single-line comment or end-of-line expected. + + + + + Looks up a localized string similar to Single-line comment or end-of-line expected after #pragma directive. + + + + + Looks up a localized string similar to '{0}' defines operator == or operator != but does not override Object.Equals(object o). + + + + + Looks up a localized string similar to Type defines operator == or operator != but does not override Object.Equals(object o). + + + + + Looks up a localized string similar to '{0}' defines operator == or operator != but does not override Object.GetHashCode(). + + + + + Looks up a localized string similar to Type defines operator == or operator != but does not override Object.GetHashCode(). + + + + + Looks up a localized string similar to '{0}' overrides Object.Equals(object o) but does not override Object.GetHashCode(). + + + + + Looks up a localized string similar to Type overrides Object.Equals(object o) but does not override Object.GetHashCode(). + + + + + Looks up a localized string similar to {0}. See also error CS{1}.. + + + + + Looks up a localized string similar to The compiler emits this warning when it overrides an error with a warning. For information about the problem, search for the error code mentioned.. + + + + + Looks up a localized string similar to Warning is overriding an error. + + + + + Looks up a localized string similar to Explicit interface implementation '{0}' matches more than one interface member. Which interface member is actually chosen is implementation-dependent. Consider using a non-explicit implementation instead.. + + + + + Looks up a localized string similar to Explicit interface implementation matches more than one interface member. + + + + + Looks up a localized string similar to Constructor '{0}' is marked external. + + + + + Looks up a localized string similar to Constructor is marked external. + + + + + Looks up a localized string similar to Method, operator, or accessor '{0}' is marked external and has no attributes on it. Consider adding a DllImport attribute to specify the external implementation.. + + + + + Looks up a localized string similar to Method, operator, or accessor is marked external and has no attributes on it. + + + + + Looks up a localized string similar to Unable to include XML fragment '{1}' of file '{0}' -- {2}. + + + + + Looks up a localized string similar to Unable to include XML fragment. + + + + + Looks up a localized string similar to Source file '{0}' specified multiple times. + + + + + Looks up a localized string similar to Source file specified multiple times. + + + + + Looks up a localized string similar to Invalid filename specified for preprocessor directive. Filename is too long or not a valid filename.. + + + + + Looks up a localized string similar to Invalid filename specified for preprocessor directive. + + + + + Looks up a localized string similar to Filter expression is a constant, consider removing the filter. + + + + + Looks up a localized string similar to Filter expression is a constant. + + + + + Looks up a localized string similar to Introducing a 'Finalize' method can interfere with destructor invocation. Did you intend to declare a destructor?. + + + + + Looks up a localized string similar to This warning occurs when you create a class with a method whose signature is public virtual void Finalize. + + If such a class is used as a base class and if the deriving class defines a destructor, the destructor will override the base class Finalize method, not Finalize.. + + + + + Looks up a localized string similar to Introducing a 'Finalize' method can interfere with destructor invocation. + + + + + Looks up a localized string similar to Defining an alias named 'global' is ill-advised since 'global::' always references the global namespace and not an alias. + + + + + Looks up a localized string similar to Defining an alias named 'global' is ill-advised. + + + + + Looks up a localized string similar to The 'goto case' value is not implicitly convertible to type '{0}'. + + + + + Looks up a localized string similar to The 'goto case' value is not implicitly convertible to the switch type. + + + + + Looks up a localized string similar to Expected identifier or numeric literal.. + + + + + Looks up a localized string similar to Expected identifier or numeric literal. + + + + + Looks up a localized string similar to Invalid #pragma checksum syntax; should be #pragma checksum "filename" "{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}" "XXXX...". + + + + + Looks up a localized string similar to Invalid #pragma checksum syntax. + + + + + Looks up a localized string similar to Expected disable or restore. + + + + + Looks up a localized string similar to Expected disable or restore after #pragma warning. + + + + + Looks up a localized string similar to Unrecognized #pragma directive. + + + + + Looks up a localized string similar to Unrecognized #pragma directive. + + + + + Looks up a localized string similar to Assignment in conditional expression is always constant; did you mean to use == instead of = ?. + + + + + Looks up a localized string similar to Assignment in conditional expression is always constant. + + + + + Looks up a localized string similar to Assembly reference '{0}' is invalid and cannot be resolved. + + + + + Looks up a localized string similar to This warning indicates that an attribute, such as InternalsVisibleToAttribute, was not specified correctly.. + + + + + Looks up a localized string similar to Assembly reference is invalid and cannot be resolved. + + + + + Looks up a localized string similar to '{0}' is not a recognized attribute location. Valid attribute locations for this declaration are '{1}'. All attributes in this block will be ignored.. + + + + + Looks up a localized string similar to Not a recognized attribute location. + + + + + Looks up a localized string similar to Invalid XML include element -- {0}. + + + + + Looks up a localized string similar to Invalid XML include element. + + + + + Looks up a localized string similar to '{0}' has the wrong signature to be an entry point. + + + + + Looks up a localized string similar to Method has the wrong signature to be an entry point. + + + + + Looks up a localized string similar to Invalid number. + + + + + Looks up a localized string similar to Invalid number. + + + + + Looks up a localized string similar to Invalid search path '{0}' specified in '{1}' -- '{2}'. + + + + + Looks up a localized string similar to Invalid search path specified. + + + + + Looks up a localized string similar to The specified version string does not conform to the recommended format - major.minor.build.revision. + + + + + Looks up a localized string similar to The specified version string does not conform to the recommended format - major.minor.build.revision. + + + + + Looks up a localized string similar to The given expression is never of the provided ('{0}') type. + + + + + Looks up a localized string similar to 'is' expression's given expression is never of the provided type. + + + + + Looks up a localized string similar to The given expression is always of the provided ('{0}') type. + + + + + Looks up a localized string similar to 'is' expression's given expression is always of the provided type. + + + + + Looks up a localized string similar to Using '{0}' to test compatibility with '{1}' is essentially identical to testing compatibility with '{2}' and will succeed for all non-null values. + + + + + Looks up a localized string similar to Using 'is' to test compatibility with 'dynamic' is essentially identical to testing compatibility with 'Object'. + + + + + Looks up a localized string similar to The 'l' suffix is easily confused with the digit '1' -- use 'L' for clarity. + + + + + Looks up a localized string similar to The 'l' suffix is easily confused with the digit '1'. + + + + + Looks up a localized string similar to '{0}': an entry point cannot be generic or in a generic type. + + + + + Looks up a localized string similar to An entry point cannot be generic or in a generic type. + + + + + Looks up a localized string similar to The entry point of the program is global script code; ignoring '{0}' entry point.. + + + + + Looks up a localized string similar to The entry point of the program is global script code; ignoring entry point. + + + + + Looks up a localized string similar to Parameter '{0}' has no matching param tag in the XML comment for '{1}' (but other parameters do). + + + + + Looks up a localized string similar to Parameter has no matching param tag in the XML comment (but other parameters do). + + + + + Looks up a localized string similar to Type parameter '{0}' has no matching typeparam tag in the XML comment on '{1}' (but other type parameters do). + + + + + Looks up a localized string similar to Type parameter has no matching typeparam tag in the XML comment (but other type parameters do). + + + + + Looks up a localized string similar to Missing XML comment for publicly visible type or member '{0}'. + + + + + Looks up a localized string similar to The /doc compiler option was specified, but one or more constructs did not have comments.. + + + + + Looks up a localized string similar to Missing XML comment for publicly visible type or member. + + + + + Looks up a localized string similar to The predefined type '{0}' is defined in multiple assemblies in the global alias; using definition from '{1}'. + + + + + Looks up a localized string similar to This error occurs when a predefined system type such as System.Int32 is found in two assemblies. One way this can happen is if you are referencing mscorlib or System.Runtime.dll from two different places, such as trying to run two versions of the .NET Framework side-by-side.. + + + + + Looks up a localized string similar to Predefined type is defined in multiple assemblies in the global alias. + + + + + Looks up a localized string similar to Member '{0}' implements interface member '{1}' in type '{2}'. There are multiple matches for the interface member at run-time. It is implementation dependent which method will be called.. + + + + + Looks up a localized string similar to This warning can be generated when two interface methods are differentiated only by whether a particular parameter is marked with ref or with out. It is best to change your code to avoid this warning because it is not obvious or guaranteed which method is called at runtime. + + Although C# distinguishes between out and ref, the CLR sees them as the same. When deciding which method implements the interface, the CLR just picks one. + + Give the compiler some way to differentiate the methods. For example, you ca [rest of string was truncated]";. + + + + + Looks up a localized string similar to Member implements interface member with multiple matches at run-time. + + + + + Looks up a localized string similar to Member '{1}' overrides '{0}'. There are multiple override candidates at run-time. It is implementation dependent which method will be called.. + + + + + Looks up a localized string similar to Member overrides base member with multiple override candidates at run-time. + + + + + Looks up a localized string similar to Indexing an array with a negative index (array indices always start at zero). + + + + + Looks up a localized string similar to Indexing an array with a negative index. + + + + + Looks up a localized string similar to The member '{0}' does not hide an inherited member. The new keyword is not required.. + + + + + Looks up a localized string similar to Member does not hide an inherited member; new keyword is not required. + + + + + Looks up a localized string similar to '{0}' hides inherited member '{1}'. To make the current member override that implementation, add the override keyword. Otherwise add the new keyword.. + + + + + Looks up a localized string similar to Member hides inherited member; missing override keyword. + + + + + Looks up a localized string similar to '{0}' hides inherited member '{1}'. Use the new keyword if hiding was intended.. + + + + + Looks up a localized string similar to A variable was declared with the same name as a variable in a base class. However, the new keyword was not used. This warning informs you that you should use new; the variable is declared as if new had been used in the declaration.. + + + + + Looks up a localized string similar to Member hides inherited member; missing new keyword. + + + + + Looks up a localized string similar to The assembly {0} does not contain any analyzers.. + + + + + Looks up a localized string similar to Assembly does not contain any analyzers. + + + + + Looks up a localized string similar to Ignoring /noconfig option because it was specified in a response file. + + + + + Looks up a localized string similar to Ignoring /noconfig option because it was specified in a response file. + + + + + Looks up a localized string similar to Feature '{0}' is not part of the standardized ISO C# language specification, and may not be accepted by other compilers. + + + + + Looks up a localized string similar to Feature is not part of the standardized ISO C# language specification, and may not be accepted by other compilers. + + + + + Looks up a localized string similar to Member '{0}' overrides obsolete member '{1}'. Add the Obsolete attribute to '{0}'.. + + + + + Looks up a localized string similar to Member overrides obsolete member. + + + + + Looks up a localized string similar to No value for RuntimeMetadataVersion found. No assembly containing System.Object was found nor was a value for RuntimeMetadataVersion specified through options.. + + + + + Looks up a localized string similar to No value for RuntimeMetadataVersion found. + + + + + Looks up a localized string similar to No source files specified.. + + + + + Looks up a localized string similar to No source files specified. + + + + + Looks up a localized string similar to The result of the expression is always '{0}' since a value of type '{1}' is never equal to 'null' of type '{2}'. + + + + + Looks up a localized string similar to The result of the expression is always the same since a value of this type is never equal to 'null'. + + + + + Looks up a localized string similar to The result of the expression is always '{0}' since a value of type '{1}' is never equal to 'null' of type '{2}'. + + + + + Looks up a localized string similar to The result of the expression is always the same since a value of this type is never equal to 'null'. + + + + + Looks up a localized string similar to Obsolete member '{0}' overrides non-obsolete member '{1}'. + + + + + Looks up a localized string similar to Obsolete member overrides non-obsolete member. + + + + + Looks up a localized string similar to '{0}' does not implement the '{1}' pattern. '{2}' has the wrong signature.. + + + + + Looks up a localized string similar to Type does not implement the collection pattern; member has the wrong signature. + + + + + Looks up a localized string similar to '{0}' does not implement the '{1}' pattern. '{2}' is ambiguous with '{3}'.. + + + + + Looks up a localized string similar to Type does not implement the collection pattern; members are ambiguous. + + + + + Looks up a localized string similar to '{0}' does not implement the '{1}' pattern. '{2}' is either static or not public.. + + + + + Looks up a localized string similar to Type does not implement the collection pattern; member is either static or not public. + + + + + Looks up a localized string similar to Local name '{0}' is too long for PDB. Consider shortening or compiling without /debug.. + + + + + Looks up a localized string similar to Local name is too long for PDB. + + + + + Looks up a localized string similar to Possible mistaken empty statement. + + + + + Looks up a localized string similar to Possible mistaken empty statement. + + + + + Looks up a localized string similar to '{0}': new protected member declared in sealed class. + + + + + Looks up a localized string similar to New protected member declared in sealed class. + + + + + Looks up a localized string similar to Referenced assembly '{0}' has different culture setting of '{1}'.. + + + + + Looks up a localized string similar to Referenced assembly has different culture setting. + + + + + Looks up a localized string similar to Referenced assembly '{0}' does not have a strong name.. + + + + + Looks up a localized string similar to Referenced assembly does not have a strong name. + + + + + Looks up a localized string similar to A reference was created to embedded interop assembly '{0}' because of an indirect reference to that assembly created by assembly '{1}'. Consider changing the 'Embed Interop Types' property on either assembly.. + + + + + Looks up a localized string similar to You have added a reference to an assembly using /link (Embed Interop Types property set to True). This instructs the compiler to embed interop type information from that assembly. However, the compiler cannot embed interop type information from that assembly because another assembly that you have referenced also references that assembly using /reference (Embed Interop Types property set to False). + + To embed interop type information for both assemblies, use /link for references to each assembly (set the Em [rest of string was truncated]";. + + + + + Looks up a localized string similar to A reference was created to embedded interop assembly because of an indirect assembly reference. + + + + + Looks up a localized string similar to The type '{1}' in '{0}' conflicts with the imported type '{3}' in '{2}'. Using the type defined in '{0}'.. + + + + + Looks up a localized string similar to Type conflicts with imported type. + + + + + Looks up a localized string similar to The type '{1}' in '{0}' conflicts with the imported namespace '{3}' in '{2}'. Using the type defined in '{0}'.. + + + + + Looks up a localized string similar to Type conflicts with imported namespace. + + + + + Looks up a localized string similar to The namespace '{1}' in '{0}' conflicts with the imported type '{3}' in '{2}'. Using the namespace defined in '{0}'.. + + + + + Looks up a localized string similar to Namespace conflicts with imported type. + + + + + Looks up a localized string similar to There is no defined ordering between fields in multiple declarations of partial struct '{0}'. To specify an ordering, all instance fields must be in the same declaration.. + + + + + Looks up a localized string similar to There is no defined ordering between fields in multiple declarations of partial struct. + + + + + Looks up a localized string similar to Source file has exceeded the limit of 16,707,565 lines representable in the PDB; debug information will be incorrect. + + + + + Looks up a localized string similar to Source file has exceeded the limit of 16,707,565 lines representable in the PDB; debug information will be incorrect. + + + + + Looks up a localized string similar to Type parameter '{0}' has the same name as the type parameter from outer type '{1}'. + + + + + Looks up a localized string similar to Type parameter has the same name as the type parameter from outer type. + + + + + Looks up a localized string similar to Unable to load Analyzer assembly {0} : {1}. + + + + + Looks up a localized string similar to Unable to load Analyzer assembly. + + + + + Looks up a localized string similar to Field '{0}' is never assigned to, and will always have its default value {1}. + + + + + Looks up a localized string similar to Field is never assigned to, and will always have its default value. + + + + + Looks up a localized string similar to Assuming assembly reference '{0}' used by '{1}' matches identity '{2}' of '{3}', you may need to supply runtime policy. + + + + + Looks up a localized string similar to The two assemblies differ in release and/or version number. For unification to occur, you must specify directives in the application's .config file, and you must provide the correct strong name of an assembly.. + + + + + Looks up a localized string similar to Assuming assembly reference matches identity. + + + + + Looks up a localized string similar to Assuming assembly reference '{0}' used by '{1}' matches identity '{2}' of '{3}', you may need to supply runtime policy. + + + + + Looks up a localized string similar to The two assemblies differ in release and/or version number. For unification to occur, you must specify directives in the application's .config file, and you must provide the correct strong name of an assembly.. + + + + + Looks up a localized string similar to Assuming assembly reference matches identity. + + + + + Looks up a localized string similar to The command line switch '{0}' is not yet implemented and was ignored.. + + + + + Looks up a localized string similar to Command line switch is not yet implemented. + + + + + Looks up a localized string similar to XML comment on '{1}' has a paramref tag for '{0}', but there is no parameter by that name. + + + + + Looks up a localized string similar to XML comment has a paramref tag, but there is no parameter by that name. + + + + + Looks up a localized string similar to XML comment has a param tag for '{0}', but there is no parameter by that name. + + + + + Looks up a localized string similar to XML comment has a param tag, but there is no parameter by that name. + + + + + Looks up a localized string similar to XML comment on '{1}' has a typeparamref tag for '{0}', but there is no type parameter by that name. + + + + + Looks up a localized string similar to XML comment has a typeparamref tag, but there is no type parameter by that name. + + + + + Looks up a localized string similar to XML comment has a typeparam tag for '{0}', but there is no type parameter by that name. + + + + + Looks up a localized string similar to XML comment has a typeparam tag, but there is no type parameter by that name. + + + + + Looks up a localized string similar to Because this call is not awaited, execution of the current method continues before the call is completed. Consider applying the 'await' operator to the result of the call.. + + + + + Looks up a localized string similar to The current method calls an async method that returns a Task or a Task<TResult> and doesn't apply the await operator to the result. The call to the async method starts an asynchronous task. However, because no await operator is applied, the program continues without waiting for the task to complete. In most cases, that behavior isn't what you expect. Usually other aspects of the calling method depend on the results of the call or, minimally, the called method is expected to complete before you return from t [rest of string was truncated]";. + + + + + Looks up a localized string similar to Because this call is not awaited, execution of the current method continues before the call is completed. + + + + + Looks up a localized string similar to XML comment is not placed on a valid language element. + + + + + Looks up a localized string similar to XML comment is not placed on a valid language element. + + + + + Looks up a localized string similar to Within cref attributes, nested types of generic types should be qualified.. + + + + + Looks up a localized string similar to Within cref attributes, nested types of generic types should be qualified. + + + + + Looks up a localized string similar to Unreachable code detected. + + + + + Looks up a localized string similar to Unreachable code detected. + + + + + Looks up a localized string similar to A previous catch clause already catches all exceptions. All non-exceptions thrown will be wrapped in a System.Runtime.CompilerServices.RuntimeWrappedException.. + + + + + Looks up a localized string similar to This warning is caused when a catch() block has no specified exception type after a catch (System.Exception e) block. The warning advises that the catch() block will not catch any exceptions. + + A catch() block after a catch (System.Exception e) block can catch non-CLS exceptions if the RuntimeCompatibilityAttribute is set to false in the AssemblyInfo.cs file: [assembly: RuntimeCompatibilityAttribute(WrapNonExceptionThrows = false)]. If this attribute is not set explicitly to false, all thrown non-CLS excep [rest of string was truncated]";. + + + + + Looks up a localized string similar to A previous catch clause already catches all exceptions. + + + + + Looks up a localized string similar to The event '{0}' is never used. + + + + + Looks up a localized string similar to Event is never used. + + + + + Looks up a localized string similar to The field '{0}' is never used. + + + + + Looks up a localized string similar to Field is never used. + + + + + Looks up a localized string similar to The field '{0}' is assigned but its value is never used. + + + + + Looks up a localized string similar to Field is assigned but its value is never used. + + + + + Looks up a localized string similar to This label has not been referenced. + + + + + Looks up a localized string similar to This label has not been referenced. + + + + + Looks up a localized string similar to The variable '{0}' is declared but never used. + + + + + Looks up a localized string similar to Variable is declared but never used. + + + + + Looks up a localized string similar to The variable '{0}' is assigned but its value is never used. + + + + + Looks up a localized string similar to Variable is assigned but its value is never used. + + + + + Looks up a localized string similar to Comparison to integral constant is useless; the constant is outside the range of type '{0}'. + + + + + Looks up a localized string similar to Comparison to integral constant is useless; the constant is outside the range of the type. + + + + + Looks up a localized string similar to '{0}': a reference to a volatile field will not be treated as volatile. + + + + + Looks up a localized string similar to A volatile field should not normally be passed using a ref or out parameter, since it will not be treated as volatile within the scope of the function. There are exceptions to this, such as when calling an interlocked API.. + + + + + Looks up a localized string similar to A reference to a volatile field will not be treated as volatile. + + + + + Looks up a localized string similar to #warning: '{0}'. + + + + + Looks up a localized string similar to #warning directive. + + + + + Looks up a localized string similar to XML comment has badly formed XML -- '{0}'. + + + + + Looks up a localized string similar to XML comment has badly formed XML. + + + + + Looks up a localized string similar to Badly formed XML in included comments file -- '{0}'. + + + + + Looks up a localized string similar to Badly formed XML in included comments file. + + + + + Looks up a localized string similar to Wrong number of type arguments. + + + + + Looks up a localized string similar to Expected a {0} SemanticModel.. + + + + + Looks up a localized string similar to The literal string ']]>' is not allowed in element content.. + + + + + Looks up a localized string similar to Duplicate '{0}' attribute. + + + + + Looks up a localized string similar to End tag '{0}' does not match the start tag '{1}'.. + + + + + Looks up a localized string similar to Expected an end tag for element '{0}'.. + + + + + Looks up a localized string similar to End tag was not expected at this location.. + + + + + Looks up a localized string similar to Expected '>' or '/>' to close tag '{0}'.. + + + + + Looks up a localized string similar to Unexpected character at this location.. + + + + + Looks up a localized string similar to An identifier was expected.. + + + + + Looks up a localized string similar to Incorrect syntax was used in a comment.. + + + + + Looks up a localized string similar to An invalid character was found inside an entity reference.. + + + + + Looks up a localized string similar to The character(s) '{0}' cannot be used at this location.. + + + + + Looks up a localized string similar to Invalid unicode character.. + + + + + Looks up a localized string similar to Whitespace is not allowed at this location.. + + + + + Looks up a localized string similar to The character '<' cannot be used in an attribute value.. + + + + + Looks up a localized string similar to Missing equals sign between attribute and attribute value.. + + + + + Looks up a localized string similar to Reference to undefined entity '{0}'.. + + + + + Looks up a localized string similar to Missing closing quotation mark for string literal.. + + + + + Looks up a localized string similar to Non-ASCII quotations marks may not be used around string literals.. + + + + + Looks up a localized string similar to A string literal was expected, but no opening quotation mark was found.. + + + + + Looks up a localized string similar to Required white space was missing.. + + + + + A Declaration summarizes the declaration structure of a source file. Each entity declaration + in the program that is a container (specifically namespaces, classes, interfaces, structs, + and delegate declarations) is represented by a node in this tree. At the top level, the + compilation unit is treated as a declaration of the unnamed namespace. + + Special treatment is required for namespace declarations, because a single namespace + declaration can declare more than one namespace. For example, in the declaration + + namespace A.B.C {} + + we see that namespaces A and B and C are declared. This declaration is represented as three + declarations. All three of these ContainerDeclaration objects contain a reference to the + syntax tree for the declaration. + + A "single" declaration represents a specific namespace or type declaration at a point in + source code. A "root" declaration is a special single declaration which summarizes the + contents of an entire file's types and namespaces. Each source file is represented as a tree + of single declarations. + + A "merged" declaration merges together one or more declarations for the same symbol. For + example, the root namespace has multiple single declarations (one in each source file) but + there is a single merged declaration for them all. Similarly partial classes may have + multiple declarations, grouped together under the umbrella of a merged declaration. In the + common trivial case, a merged declaration for a single declaration contains only that single + declaration. The whole program, consisting of the set of all declarations in all of the + source files, is represented by a tree of merged declarations. + + + + + A declaration table is a device which keeps track of type and namespace declarations from + parse trees. It is optimized for the case where there is one set of declarations that stays + constant, and a specific root namespace declaration corresponding to the currently edited + file which is being added and removed repeatedly. It maintains a cache of information for + "merging" the root declarations into one big summary declaration; this cache is efficiently + re-used provided that the pattern of adds and removes is as we expect. + + + + + Creates a root declaration that contains a Script class declaration (possibly in a namespace) and namespace declarations. + Top-level declarations in script code are nested in Script class. + + + + + A visitor that generates the part of the documentation comment after the initial type + and colon. + + + + + Matches symbols from an assembly in one compilation to + the corresponding assembly in another. Assumes that only + one assembly has changed between the two compilations. + + + + + Match local declarations to names to generate a map from + declaration to local slot. The names are indexed by slot and the + assumption is that declarations are in the same order as slots. + + + + + Return a version of the baseline with all definitions mapped to this compilation. + Definitions from the initial generation, from metadata, are not mapped since + the initial generation is always included as metadata. That is, the symbols from + types, methods, ... in the TypesAdded, MethodsAdded, ... collections are replaced + by the corresponding symbols from the current compilation. + + + + + Represents a reference to a generic method instantiation, closed over type parameters, + e.g. MyNamespace.Class.Method{T}() + + + + + Represents a reference to a generic type instantiation that is not nested. + e.g. MyNamespace.A{int} + + + + + Represents a reference to a generic type instantiation that is nested in a non-generic type. + e.g. A.B{int} + + + + + Represents a reference to a generic type instantiation. + Subclasses represent nested and namespace types. + + + + + The behavior of the C# command-line compiler is as follows: + 1) If the /out switch is specified, then the explicit assembly name is used. + 2) Otherwise, + a) if the assembly is executable, then the assembly name is derived from + the name of the file containing the entrypoint; + b) otherwise, the assembly name is derived from the name of the first input + file. + + Since we don't know which method is the entrypoint until well after the + SourceAssemblySymbol is created, in case 2a, its name will not reflect the + name of the file containing the entrypoint. We leave it to our caller to + provide that name explicitly. + + + In cases 1 and 2b, we expect (metadataName == sourceAssembly.MetadataName). + + + + + The compiler-generated implementation type for each fixed-size buffer. + + + + + Ignore accessibility when resolving well-known type + members, in particular for generic type arguments + (e.g.: binding to internal types in the EE). + + + + + Override the dynamic operation context type for all dynamic calls in the module. + + + + + True if this module is an ENC update. + + + + + Set the underlying implementation type for a given fixed-size buffer field. + + + + + Represents a reference to a field of a generic type instantiation. + e.g. + A{int}.Field + A{int}.B{string}.C.Field + + + + + Represents a generic method of a generic type instantiation, closed over type parameters. + e.g. + A{T}.M{S}() + A.B{T}.C.M{S}() + + + + + Represents a reference to an instantiation of a generic type nested in an instantiation of another generic type. + e.g. + A{int}.B{string} + A.B{int}.C.D{string} + + + + + Represents a method of a generic type instantiation. + e.g. + A{int}.M() + A.B{int}.C.M() + + + + + Represents a reference to a type nested in an instantiation of a generic type. + e.g. + A{int}.B + A.B{int}.C.D + + + + + Used only for testing. + + + + + Returns true if the type can be embedded. If the type is defined in a linked (/l-ed) + assembly, but doesn't meet embeddable type requirements, this function returns false + and reports appropriate diagnostics. + + + + + A diagnostic, along with the location where it occurred. + + + + + Add a diagnostic to the bag. + + + + + + + + + Add a diagnostic to the bag. + + + + + + + + + + Adds diagnostics from useSiteDiagnostics into diagnostics and returns True if there were any errors. + + + + Don't call this during a parse--it loads resources + + + Don't call this during a parse--it loads resources + + + Don't call this during a parse--it loads resources + + + + When converting an anonymous function to a delegate type, there are some diagnostics + that will occur regardless of the delegate type - particularly those that do not + depend on the substituted types (e.g. name uniqueness). Even though we need to + produce a diagnostic in such cases, we do not need to abandon overload resolution - + we can choose the overload that is best without regard to such diagnostics. + + True if seeing the ErrorCode should prevent a delegate conversion + from completing successfully. + + + + WARNING: will resolve lazy diagnostics - do not call this before the member lists are completed + or you could trigger infinite recursion. + + + + + An abstract flow pass that takes some shortcuts in analyzing finally blocks, in order to enable + the analysis to take place without tracking exceptions or repeating the analysis of a finally block + for each exit from a try statement. The shortcut results in a slightly less precise + (but still conservative) analysis, but that less precise analysis is all that is required for + the language specification. The most significant shortcut is that we do not track the state + where exceptions can arise. That does not affect the soundness for most analyses, but for those + analyses whose soundness would be affected (e.g. "data flows out"), we track "unassignments" to keep + the analysis sound. + + + + + To scan the whole body, we start outside (before) the region. + + + + + A region analysis walker that computes the set of variables that are always assigned a value + in the region. A variable is "always assigned" in a region if an analysis of the region that + starts with the variable unassigned ends with the variable assigned. + + + + + This class implements the region control flow analysis operations. Region control flow + analysis provides information about statements which enter and leave a region. The analysis + is done lazily. When created, it performs no analysis, but simply caches the arguments. + Then, the first time one of the analysis results is used it computes that one result and + caches it. Each result is computed using a custom algorithm. + + + + + A collection of statements outside the region that jump into the region. + + + + + A collection of statements inside the region that jump to locations outside the region. + + + + + Returns true if and only if the endpoint of the last statement in the region is reachable or the region contains no + statements. + + + + + A collection of return (or yield break) statements found within the region that return from the enclosing method or lambda. + + + + + Returns true iff analysis was successful. Analysis can fail if the region does not properly span a single expression, + a single statement, or a contiguous series of statements within the enclosing block. + + + + + Produce a duplicate of this flow analysis state. + + + + + + Perform control flow analysis, reporting all necessary diagnostics. Returns true if the end of + the body might be reachable... + + + + + Analyze the body, reporting all necessary diagnostics. Returns true if the end of the + body might be reachable. + + + + + + This class implements the region data flow analysis operations. Region data flow analysis + provides information how data flows into and out of a region. The analysis is done lazily. + When created, it performs no analysis, but simply caches the arguments. Then, the first time + one of the analysis results is used it computes that one result and caches it. Each result + is computed using a custom algorithm. + + + + + A collection of the local variables that are declared within the region. Note that the region must be + bounded by a method's body or a field's initializer, so method parameter symbols are never included + in the result, but lambda parameters might appear in the result. + + + + + A collection of the local variables for which a value assigned outside the region may be used inside the region. + + + + + A collection of the local variables for which a value assigned inside the region may be used outside the region. + Note that every reachable assignment to a ref or out variable will be included in the results. + + + + + A collection of the local variables for which a value is always assigned inside the region. + + + + + A collection of the local variables that are read inside the region. + + + + + A collection of local variables that are written inside the region. + + + + + A collection of the local variables that are read outside the region. + + + + + A collection of local variables that are written outside the region. + + + + + A collection of the non-constant local variables and parameters that have been referenced in anonymous functions + and therefore must be moved to a field of a frame class. + + + + + A collection of the non-constant local variables and parameters that have had their address (or the address of one + of their fields) taken using the '&' operator. + + + If there are any of these in the region, then a method should not be extracted. + + + + + Returns true iff analysis was successful. Analysis can fail if the region does not properly span a single expression, + a single statement, or a contiguous series of statements within the enclosing block. + + + + + Some variables that should be considered initially assigned. Used for region analysis. + + + + + Variables that were used anywhere, in the sense required to suppress warnings about + unused variables. + + + + + Variables that were initialized or written anywhere. + + + + + Map from variables that had their addresses taken, to the location of the first corresponding + address-of expression. + + + Doesn't include fixed statement address-of operands. + + + + + Variables that were captured by anonymous functions. + + + + + The current source assembly. + + + + + A mapping from local variables to the index of their slot in a flow analysis local state. + + + + + A set of address-of expressions for which the operand is not definitely assigned. + + + + + A mapping from the local variable slot to the symbol for the local variable itself. This + is used in the implementation of region analysis (support for extract method) to compute + the set of variables "always assigned" in a region of code. + + + + + Variable slots are allocated to local variables sequentially and never reused. This is + the index of the next slot number to use. + + + + + Tracks variables for which we have already reported a definite assignment error. This + allows us to report at most one such error per variable. + + + + + Reflects the enclosing method or lambda at the current location (in the bound tree). + + + + + A cache for remember which structs are empty. + + + + + true if we should check to ensure that out parameters are assigned on every exit point. + + + + + The topmost method of this analysis. + + + + + Constructor to be used for region analysis, for which a struct type should never be considered empty. + + + + + Perform data flow analysis, reporting all necessary diagnostics. + + + + + Analyze the body, reporting all necessary diagnostics. + + + + + Check if the variable is captured and, if so, add it to this._capturedVariables. + + The variable to be checked + If variable.Kind is RangeVariable, its underlying lambda parameter. Else null. + + + + Add the variable to the captured set. For range variables we only add it if inside the region. + + + + + + This reflects the Dev10 compiler's rules for when a variable initialization is considered a "use" + for the purpose of suppressing the warning about unused variables. + + + + + Locals are given slots when their declarations are encountered. We only need give slots + to local variables, out parameters, and the "this" variable of a struct constructs. + Other variables are not given slots, and are therefore not tracked by the analysis. This + returns -1 for a variable that is not tracked, for fields of structs that have the same + assigned status as the container, and for structs that (recursively) contain no data members. + We do not need to track references to + variables that occur before the variable is declared, as those are reported in an + earlier phase as "use before declaration". That allows us to avoid giving slots to local + variables before processing their declarations. + + + + + Force a variable to have a slot. Returns -1 if the variable has an empty struct type. + + + + + Return the slot for a variable, or -1 if it is not tracked (because, for example, it is an empty struct). + + + + + + + Check that the given variable is definitely assigned. If not, produce an error. + + + + + + + Report a given variable as not definitely assigned. Once a variable has been so + reported, we suppress further reports of that variable. + + + + + + + Mark a variable as assigned (or unassigned). + + Node being assigned to. + The value being assigned. + True if target location is considered written to. + Target kind (by-ref or not). + True if target location is considered read from. + + + + Does the struct variable at the given slot have all of its instance fields assigned? + + + + + Variables declared in a using statement are always considered used, so this is just an assert. + + + + + Produce a duplicate of this flow analysis state. + + + + + + A region analysis walker that computes the set of variables whose values flow into (are used + in) the region. A variable assigned outside is used inside if an analysis that leaves the + variable unassigned on entry to the region would cause the generation of "unassigned" errors + within the region. + + + + + A region analysis walker that computes the set of variables for + which their assigned values flow out of the region. + A variable assigned inside is used outside if an analysis that + treats assignments in the region as unassigning the variable would + cause "unassigned" errors outside the region. + + + + + A small cache for remembering empty struct types for flow analysis. + + + + + When set, we ignore private reference fields of structs loaded from metadata. + + + + + Create a cache for computing whether or not a struct type is "empty". + + Enable compatibility with the native compiler, which + ignores inaccessible fields of reference type for structs loaded from metadata. + if is true, set to the compilation from + which to check accessibility. + + + + Determine if the given type is an empty struct type. + + + + + Determine if the given type is an empty struct type,. "typesWithMembersOfThisType" contains + a list of types that have members (directly or indirectly) of this type. + to remove circularity. + + + + + Get all instance fields of a struct. They are not necessarily returned in order. + + + + + Get all instance fields of a struct. They are not necessarily returned in order. + + + + + + When deciding what struct fields to drop on the floor, the native compiler looks + through arrays, and does not ignore value types or type parameters. + + + + + Is it possible that the given symbol can be accessed somewhere in the given assembly? + For the purposes of this test, we assume that code in the given assembly might derive from + any type. So protected members are considered potentially accessible. + + + + + Specialized EmptyStructTypeCache that reports all structs as not empty + + + + + A region analysis walker that records jumps into the region. Works by overriding NoteBranch, which is + invoked by a superclass when the two endpoints of a jump have been identified. + + + + + A region analysis walker that records jumps out of the region. + + + + + The flow analysis pass. This pass reports required diagnostics for unreachable + statements and uninitialized variables (through the call to FlowAnalysisWalker.Analyze), + and inserts a final return statement if the end of a void-returning method is reachable. + + the method to be analyzed + the method's body + the receiver of the reported diagnostics + indicates whether this Script had a trailing expression + the original method body is the last statement in the block + the rewritten block for the method (with a return statement possibly inserted) + + + + Produce a duplicate of this flow analysis state. + + + + + + Is the code reachable? + + + + + The compilation in which the analysis is taking place. This is needed to determine which + conditional methods will be compiled and which will be omitted. + + + + + The method whose body is being analyzed, or the field whose initializer is being analyzed. + It is used for + references to method parameters. Thus, 'member' should not be used directly, but + 'MethodParameters', 'MethodThisParameter' and 'AnalyzeOutParameters(...)' should be used + instead. + + + + + The bound node of the method or initializer being analyzed. + + + + + The flow analysis state at each label, computed by merging the state from branches to + that label with the state when we fall into the label. Entries are created when the + label is encountered. One case deserves special attention: when the destination of the + branch is a label earlier in the code, it is possible (though rarely occurs in practice) + that we are changing the state at a label that we've already analyzed. In that case we + run another pass of the analysis to allow those changes to propagate. This repeats until + no further changes to the state of these labels occurs. This can result in quadratic + performance in unlikely but possible code such as this: "int x; if (cond) goto l1; x = + 3; l5: print x; l4: goto l5; l3: goto l4; l2: goto l3; l1: goto l2;" + + + + + Set to true after an analysis scan if the analysis was incomplete due to a backward + "goto" branch changing some analysis result. In this case the caller scans again (until + this is false). Since the analysis proceeds by monotonically changing the state computed + at each label, this must terminate. + + + + + See property PendingBranches + + + + + All of the labels seen so far in this forward scan of the body + + + + + If we are tracking exceptions, then by convention the first entry in the pending branches + buffer contains a summary of the states that can arise from exceptions. + + + + + Pending escapes generated in the current scope (or more deeply nested scopes). When jump + statements (goto, break, continue, return) are processed, they are placed in the + pendingBranches buffer to be processed later by the code handling the destination + statement. As a special case, the processing of try-finally statements might modify the + contents of the pendingBranches buffer to take into account the behavior of + "intervening" finally clauses. + + + + + The definite assignment and/or reachability state at the point currently being analyzed. + + + + + Where all diagnostics are deposited. + + + + + A cache of the state at the backward branch point of each loop. This is not needed + during normal flow analysis, but is needed for DataFlowsOut region analysis. + + + + + Subclasses may override EnterRegion to perform any actions at the entry to the region. + + + + + Subclasses may override LeaveRegion to perform any action at the end of the region. + + + + + A pending branch. There are created for a return, break, continue, goto statement, + yield return, yield break, await expression, and if PreciseAbstractFlowPass.trackExceptions + is true for other + constructs that can cause an exception to be raised such as a throw statement or method + invocation. + The idea is that we don't know if the branch will eventually reach its destination + because of an intervening finally block that cannot complete normally. So we store them + up and handle them as we complete processing each construct. At the end of a block, if + there are any pending branches to a label in that block we process the branch. Otherwise + we relay it up to the enclosing construct as a pending branch of the enclosing + construct. + + + + + Perform a single pass of flow analysis. Note that after this pass, + this.backwardBranchChanged indicates if a further pass is required. + + + + + If a method is currently being analyzed returns its parameters, returns an empty array + otherwise. + + + + + If a method is currently being analyzed returns its 'this' parameter, returns null + otherwise. + + + + + Specifies whether or not method's out parameters should be analyzed. If there's more + than one location in the method being analyzed, then the method is partial and we prefer + to report an out parameter in partial method error. + + location to be used + true if the out parameters of the method should be analyzed + + + + Return the flow analysis state associated with a label. + + + + + + + Return to the caller the set of pending return statements. + + + + + + Set the current state to one that indicates that it is unreachable. + + + + + Visit a boolean condition expression. + + + + + + Visit a general expression, where we will only need to determine if variables are + assigned (or not). That is, we will not be needing AssignedWhenTrue and + AssignedWhenFalse. + + + + + + Visit a statement. + + + + + Called at the point in a loop where the backwards branch would go to. + + + + + Called at the point in a loop where the backward branch is placed. + + + + + Used to resolve break statements in each statement form that has a break statement + (loops, switch). + + + + + Used to resolve continue statements in each statement form that supports it. + + + + + Subclasses override this if they want to take special actions on processing a goto + statement, when both the jump and the label have been located. + + + + + To handle a label, we resolve all branches to that label. Returns true if the state of + the label changes as a result. + + Target label + Statement containing the target label + + + + Since branches cannot branch into constructs, only out, we save the pending branches + when visiting more nested constructs. When tracking exceptions, we store the current + state as the exception state for the following code. + + + + + We use this to restore the old set of pending branches after visiting a construct that contains nested statements. + + The old pending branches, which are to be merged with the current ones + + + + Since each language construct must be handled according to the rules of the language specification, + the default visitor reports that the construct for the node is not implemented in the compiler. + + + + + Certain (struct) types are known by the compiler to be immutable. In these cases calling a method on + the type is known (by flow analysis) not to write the receiver. + + + + + + + If the operand is definitely assigned, we may want to perform a read (in addition to + a write) so that the operand can show up as ReadInside/DataFlowsIn. + + + + + A region analysis walker that records reads and writes of all variables, both inside and outside the region. + + + + + Note that a variable is read. + + The variable + If variable.Kind is RangeVariable, its underlying lambda parameter. Else null. + + + + When we read a field from a struct, the receiver isn't seen as being read until we get to the + end of the field access expression, because we only read the relevant piece of the struct. + But we want the receiver to be considered to be read in the region in that case. + For example, if an rvalue expression is x.y.z and the region is x.y, we want x to be included + in the ReadInside set. That is implemented here. + + + + + Compute the underlying lambda parameter symbol for a range variable, if any. + + The bound node for the expansion of the range variable + + + + Represents region analysis context attributes such as compilation, region, etc... + + + + Compilation to use + + + Containing symbol if available, null otherwise + + + Bound node, not null + + + Region to be used + + + Region to be used + + + True if the input was bad, such as no first and last nodes + + + + Construct context + + + + + A region analysis walker that computes whether or not the region completes normally. It does this by determining + if the point at which the region ends is reachable. + + + + + An analysis that computes the set of variables that may be used + before being assigned anywhere within a method. + + + + + An analysis that computes the set of variables that may be used + before being assigned anywhere within a method. + + + + + A region analysis walker that records declared variables. + + + + + Specifies the language version. + + + + + C# language version 1.0. + + + + + C# language version 2.0. + + + + + C# language version 3.0. + + + Features: LINQ. + + + + + C# language version 4.0. + + + Features: dynamic. + + + + + C# language version 5.0. + + + Features: async. + + + + + C# language version 6.0. + + + Features: + + Using of a static class + Auto-property initializers + Expression-bodied methods and properties + Null-propagating operator ?. + Exception filters + + + + + + The purpose of this rewriter is to replace await-containing catch and finally handlers + with surrogate replacements that keep actual handler code in regular code blocks. + That allows these constructs to be further lowered at the async lowering pass. + + + + + Lower a block of code by performing local rewritings. + The goal is to not have exception handlers that contain awaits in them. + + 1) Await containing finally blocks: + The general strategy is to rewrite await containing handlers into synthetic handlers. + Synthetic handlers are not handlers in IL sense so it is ok to have awaits in them. + Since synthetic handlers are just blocks, we have to deal with pending exception/branch/return manually + (this is the hard part of the rewrite). + + try{ + code; + }finally{ + handler; + } + + Into ===> + + Exception ex = null; + int pendingBranch = 0; + + try{ + code; // any gotos/returns are rewritten to code that pends the necessary info and goes to finallyLabel + goto finallyLabel; + }catch (ex){ // essentially pend the currently active exception + }; + + finallyLabel: + { + handler; + if (ex != null) throw ex; // unpend the exception + unpend branches/return + } + + 2) Await containing catches: + try{ + code; + }catch (Exception ex){ + handler; + throw; + } + + + Into ===> + + Object pendingException; + int pendingCatch = 0; + + try{ + code; + }catch (Exception temp){ // essentially pend the currently active exception + pendingException = temp; + pendingCatch = 1; + }; + + switch(pendingCatch): + { + case 1: + { + Exception ex = (Exception)pendingException; + handler; + throw pendingException + } + } + + + + + Rewrites Try/Catch part of the Try/Catch/Finally + + + + + Analyzes method body for try blocks with awaits in finally blocks + Also collects labels that such blocks contain. + + + + + Returns true if a finally of the given try contains awaits + + + + + Returns true if a catch contains awaits + + + + + Returns true if body contains await in a finally block. + + + + + Labels reachable from within this frame without invoking its finally. + null if there are no such labels. + + + + + Async methods have both a return type (void, Task, or Task<T>) and a 'result' type, which is the + operand type of any return expressions in the async method. The result type is void in the case of + Task-returning and void-returning async methods, and T in the case of Task<T>-returning async + methods. + + System.Runtime.CompilerServices provides a collection of async method builders that are used in the + generated code of async methods to create and manipulate the async method's task. There are three + distinct async method builder types, one of each async return type: AsyncVoidMethodBuilder, + AsyncTaskMethodBuilder, and AsyncTaskMethodBuilder<T>. + + AsyncMethodBuilderMemberCollection provides a common mechanism for accessing the well-known members of + each async method builder type. This avoids having to inspect the return style of the current async method + to pick the right async method builder member during async rewriting. + + + + + The builder's constructed type. + + + + + The result type of the constructed task: T for Task<T>, void otherwise. + + + + + Binds an exception to the method builder. + + + + + Marks the method builder as successfully completed, and sets the result if method is Task<T>-returning. + + + + + Schedules the state machine to proceed to the next action when the specified awaiter completes. + + + + + Schedules the state machine to proceed to the next action when the specified awaiter completes. This method can be called from partially trusted code. + + + + + Begins running the builder with the associated state machine. + + + + + Associates the builder with the specified state machine. + + + + + Get the constructed task for a Task-returning or Task<T>-returning async method. + + + + + The method being rewritten. + + + + + The field of the generated async class used to store the async method builder: an instance of + , , or depending on the + return type of the async method. + + + + + A collection of well-known members for the current async method builder. + + + + + The exprReturnLabel is used to label the return handling code at the end of the async state-machine + method. Return expressions are rewritten as unconditional branches to exprReturnLabel. + + + + + The label containing a return from the method when the async method has not completed. + + + + + The field of the generated async class used in generic task returning async methods to store the value + of rewritten return expressions. The return-handling code then uses SetResult on the async method builder + to make the result available to the caller. + + + + + Generate the body for MoveNext(). + + + + + Rewrite an async method into a state machine type. + + + + + Returns true if all types and members we need are present and good + + + + + The class that represents a translated async method. + + + + + If an expression node that declares synthesized short-lived locals (currently only sequence) contains an await, these locals become long-lived since their + values may be read by code that follows the await. We promote these variables to long-lived of kind . + + + + + This pass detects and reports diagnostics that do not affect lambda convertibility. + This part of the partial class focuses on features that cannot be used in expression trees. + CAVEAT: Errors may be produced for ObsoleteAttribute, but such errors don't affect lambda convertibility. + + + This pass detects and reports diagnostics that do not affect lambda convertibility. + This part of the partial class focuses on expression and operator warnings. + + + + + This is for when we are taking the address of a field. + Distinguish from . + + + + + This is for when we are dotting into a field. + Distinguish from . + + NOTE: dev11 also calls this on string initializers in fixed statements, + but never accomplishes anything since string is a reference type. This + is probably a bug, but fixing it would be a breaking change. + + + + + Based on OutputContext::IsNonAgileField. + + + + + Returns the expression if the statement is actually an expression (ExpressionStatementSyntax with no trailing semicolon). + + + + + The constructor of the class that is the translation of an iterator method. + + + + + A synthesized Finally method containing finalization code for a resumable try statement. + Finalization code for such try may run when: + 1) control flow goes out of try scope by dropping through + 2) control flow goes out of try scope by conditionally or unconditionally branching outside of one ore more try/finally frames. + 3) enumerator is disposed by the owner. + 4) enumerator is being disposed after an exception. + + It is easier to manage partial or complete finalization when every finally is factored out as a separate method. + + NOTE: Finally is a private void nonvirtual instance method with no parameters. + It is a valid JIT inlining target as long as JIT may consider inlining profitable. + + + + + The field of the generated iterator class that underlies the Current property. + + + + + Tells us if a particular try contains yield returns + + + + + When this is more that 0, returns are emitted as "methodValue = value; goto exitLabel;" + + + + + The current iterator finally frame in the tree of finally frames. + By default there is a root finally frame. + Root frame does not have a handler, but may contain nested frames. + + + + + Finally state of the next Finally frame if such created. + Finally state is a negative decreasing number starting with -3. (-2 is used for something else). + Root frame has finally state -1. + + The Finally state is the state that we are in when "between states". + Regular states are positive and are the only states that can be resumed to. + The purpose of distinct finally states is to have enough information about + which finally handlers must run when we need to finalize iterator after a fault. + + + + + Produces a Try/Finally if frame has a handler (otherwise a regular block). + Handler goes into the Finally. + If there are nested frames, they are emitted into the try block. + This way the handler for the current frame is guaranteed to run even if + nested handlers throw exceptions. + + { + switch(state) + { + case state1: + case state2: + case state3: + case state4: + try + { + switch(state) + { + case state3: + case state4: + try + { + ... more nested state dispatches if any .... + } + finally + { + // handler for a try where state3 and state4 can be observed + handler_3_4() + } + break; + } + } + finally + { + // handler for a try where state1 and state2 can be observed + handler_1_2() + } + break; + + case state5: + ... another dispatch of nested states to their finally blocks ... + break; + } + } + + + + + + Analyzes method body for yields in try blocks and labels that they contain. + + + + + Returns true if given try or any of its nested try blocks contain yields + + + + + Returns true if body contains yield returns within try blocks. + + + + + Labels reachable from within this frame without invoking its finally. + null if there are none such labels. + + + + + Rewrite an iterator method into a state machine class. + + + + + Returns true if all types and members we need are present and good + + + + + Check that the property and its getter exist and collect any use-site errors. + + + + + The class that represents a translated iterator method. + + + + + Analyzes method body for labels. + + + + + The closure doesn't declare any variables. + Display class is a singleton and may be shared with other top-level methods. + + + + + The closure only contains a reference to the containing class instance ("this"). + We don't emit a display class, lambdas are emitted directly to the containing class as its instance methods. + + + + + General closure. + Display class may only contain lambdas defined in the same top-level method. + + + + + Visit the expression, but do so in a way that ensures that its type is precise. That means that any + sometimes-unnecessary conversions (such as an implicit reference conversion) are retained. + + + + + A field of a frame class that represents a variable that has been captured in a lambda. + + + + + The rewriter for removing lambda expressions from method bodies and introducing closure classes + as containers for captured variables along the lines of the example in section 6.5.3 of the + C# language specification. + + The entry point is the public method . It operates as follows: + + First, an analysis of the whole method body is performed that determines which variables are + captured, what their scopes are, and what the nesting relationship is between scopes that + have captured variables. The result of this analysis is left in . + + Then we make a frame, or compiler-generated class, represented by an instance of + for each scope with captured variables. The generated frames are kept + in . Each frame is given a single field for each captured + variable in the corresponding scope. These are maintained in . + + Finally, we walk and rewrite the input bound tree, keeping track of the following: + (1) The current set of active frame pointers, in + (2) The current method being processed (this changes within a lambda's body), in + (3) The "this" symbol for the current method in , and + (4) The symbol that is used to access the innermost frame pointer (it could be a local variable or "this" parameter) + + There are a few key transformations done in the rewriting. + (1) Lambda expressions are turned into delegate creation expressions, and the body of the lambda is + moved into a new, compiler-generated method of a selected frame class. + (2) On entry to a scope with captured variables, we create a frame object and store it in a local variable. + (3) References to captured variables are transformed into references to fields of a frame class. + + In addition, the rewriting deposits into a (, ) + pair for each generated method. + + produces its output in two forms. First, it returns a new bound statement + for the caller to use for the body of the original method. Second, it returns a collection of + (, ) pairs for additional methods that the lambda rewriter produced. + These additional methods contain the bodies of the lambdas moved into ordinary methods of their + respective frame classes, and the caller is responsible for processing them just as it does with + the returned bound node. For example, the caller will typically perform iterator method and + asynchronous method transformations, and emit IL instructions into an assembly. + + + + + Perform a first analysis pass in preparation for removing all lambdas from a method body. The entry point is Analyze. + The results of analysis are placed in the fields seenLambda, blockParent, variableBlock, captured, and captures. + + + + + Set to true while we are analyzing the interior of an expression lambda. + + + + + Set to true of any lambda expressions were seen in the analyzed method body. + + + + + For each scope that defines variables, identifies the nearest enclosing scope that defines variables. + + + + + For each captured variable, identifies the scope in which it will be moved to a frame class. This is + normally the node where the variable is introduced, but method parameters are moved + to a frame class within the body of the method. + + + + + The syntax nodes associated with each captured variable. + + + + + For each lambda in the code, the set of variables that it captures. + + + + + Blocks that are positioned between a block declaring some lifted variables + and a block that contains the lambda that lifts said variables. + If such block itself requires a closure, then it must lift parent frame pointer into the closure + in addition to whatever else needs to be lifted. + + NOTE: This information is computed in addition to the regular analysis of the tree and only needed for rewriting. + If someone only needs diagnostics or information about captures, this information is not necessary. + needs to be called to compute this. + + + + + Optimized locations of lambdas. + + Lambda does not need to be placed in a frame that corresponds to its lexical scope if lambda does not reference any local state in that scope. + It is advantageous to place lambdas higher in the scope tree, ideally in the innermost scope of all scopes that contain variables captured by a given lambda. + Doing so reduces indirections needed when captured locals are accessed. For example locals from the innermost scope can be accessed with no indirection at all. + + NOTE: This information is computed in addition to the regular analysis of the tree and only needed for rewriting. + If someone only needs diagnostics or information about captures, this information is not necessary. + needs to be called to compute this. + + + + + Create the optimized plan for the location of lambda methods and whether scopes need access to parent scopes + + + + + Compute the nesting depth of a given block. + Top-most block (where method locals and parameters are defined) are at the depth 0. + + + + + Rewrite the given node to eliminate lambda expressions. Also returned are the method symbols and their + bound bodies for the extracted lambda bodies. These would typically be emitted by the caller such as + MethodBodyCompiler. See this class' documentation + for a more thorough explanation of the algorithm and its use by clients. + + The bound node to be rewritten + The type of the top-most frame + The "this" parameter in the top-most frame, or null if static method + The containing method of the node to be rewritten + Index of the method symbol in its containing type member list. + Information on lambdas defined in needed for debugging. + Information on closures defined in needed for debugging. + Slot allocator. + The caller's buffer into which we produce additional methods to be emitted by the caller + Diagnostic bag for diagnostics + The rewritten tree should include assignments of the original locals to the lifted proxies + + + + Create the frame types. + + + + + Produce a bound expression representing a pointer to a frame of a particular frame type. + + The syntax to attach to the bound nodes produced + The type of frame to be returned + A bound node that computes the pointer to the required frame + + + + Produce a bound expression representing a pointer to a frame of a particular frame class. + Note that for generic frames, the frameClass parameter is the generic definition, but + the resulting expression will be constructed with the current type parameters. + + The syntax to attach to the bound nodes produced + The class type of frame to be returned + A bound node that computes the pointer to the required frame + + + + Introduce a frame around the translation of the given node. + + The node whose translation should be translated to contain a frame + The frame for the translated node + A function that computes the translation of the node. It receives lists of added statements and added symbols + The translated statement, as returned from F + + + + A class that represents the set of variables in a scope that have been + captured by lambdas within that scope. + + + + + A method that results from the translation of a single lambda expression. + + + + + Lower a block of code by performing local rewritings. + + + + + Returns true if the initializer is a field initializer which should be optimized out + + + + + Generates a lowered form of the assignment operator for the given left and right sub-expressions. + Left and right sub-expressions must be in lowered form. + + + + + Generates a lowered form of the assignment operator for the given left and right sub-expressions. + Left and right sub-expressions must be in lowered form. + + + + + Spec section 7.9: if the left operand is int or uint, mask the right operand with 0x1F; + if the left operand is long or ulong, mask the right operand with 0x3F. + + + + + This rather confusing method tries to reproduce the functionality of ExpressionBinder::bindPtrAddMul and + ExpressionBinder::bindPtrMul. The basic idea is that we have a numeric expression, x, and a pointer type, + T*, and we want to multiply x by sizeof(T). Unfortunately, we need to stick in some conversions to make + everything work. + + 1) If x is an int, then convert it to an IntPtr (i.e. a native int). Dev10 offers no explanation (ExpressionBinder::bindPtrMul). + 2) Do overload resolution based on the (possibly converted) type of X and int (the type of sizeof(T)). + 3) If the result type of the chosen multiplication operator is signed, convert the product to IntPtr; + otherwise, convert the product to UIntPtr. + + + + + Rewrites arguments of an invocation according to the receiving method or indexer. + It is assumed that each argument has already been lowered, but we may need + additional rewriting for the arguments, such as generating a params array, re-ordering + arguments based on map, inserting arguments for optional parameters, etc. + is the method used for values of any optional parameters. + For indexers, this method must be an accessor, and for methods it must be the method + itself. is needed for indexers since getter and setter + may have distinct optional parameter values. + + + + + Process tempStores and add them as side-effects to arguments where needed. The return + value tells how many temps are actually needed. For unnecessary temps the corresponding + temp store will be cleared. + + + + + Gets the default value for the . + + + A syntax node corresponding to the invocation. + + + A parameter to get the default value for. + + + Indicates if caller info is to be enabled when processing this optional parameter. + The value means the decision is to be made based on the shape of the node. + + + DELIBERATE SPEC VIOLATION: When processing an implicit invocation of an Add method generated + for an element-initializer in a collection-initializer, the parameter + is set to . It means that if the optional parameter is annotated with , + or , and there is no explicit argument corresponding to it, + we will provide caller information as a value of this parameter. + This is done to match the native compiler behavior and user requests (see http://roslyn.codeplex.com/workitem/171). This behavior + does not match the C# spec that currently requires to provide caller information only in explicit invocations and query expressions. + + + + + In the expanded form of a compound assignment (or increment/decrement), the LHS appears multiple times. + If we aren't careful, this can result in repeated side-effects. This creates (ordered) temps for all of the + subexpressions that could result in side-effects and returns a side-effect-free expression that can be used + in place of the LHS in the expanded form. + + The LHS sub-expression of the compound assignment (or increment/decrement). + Populated with a list of assignment expressions that initialize the temporary locals. + Populated with a list of temporary local symbols. + True if the compound assignment is a dynamic operation. + + A side-effect-free expression representing the LHS. + The returned node needs to be lowered but its children are already lowered. + + + + + Variables local to current frame do not need temps when re-read multiple times + as long as there is no code that may write to locals in between accesses and they + are not captured. + + Example: + l += foo(ref l); + + even though l is a local, we must access it via a temp since "foo(ref l)" may change it + on between accesses. + + + + + If the condition has a constant value, then just use the selected branch. + e.g. "true ? x : y" becomes "x". + + + + + Helper method to generate a lowered conversion. + + + + + Helper method to generate a lowered conversion from the given to the given . + + + If we're converting a default parameter value to the parameter type, then the conversion can actually fail + (e.g. if the default value was specified by an attribute and was, therefore, not checked by the compiler). + Set acceptFailingConversion if you want to see default(rewrittenType) in such cases. + The error will be suppressed only for conversions from or . + + + + + Helper method to generate a lowered conversion from the given to the given . + + + If we're converting a default parameter value to the parameter type, then the conversion can actually fail + (e.g. if the default value was specified by an attribute and was, therefore, not checked by the compiler). + Set acceptFailingConversion if you want to see default(rewrittenType) in such cases. + The error will be suppressed only for conversions from or . + + + + + Helper method to generate a lowered conversion from the given rewrittenOperand to the given rewrittenType with the given conversion kind. + + + Conversion kind must not be a user defined conversion, use the other overload which takes a 'Conversion' parameter for generating synthesized user defined conversions. + + + + + If we have a WinRT type event, we need to encapsulate the adder call + (which returns an EventRegistrationToken) with a call to + WindowsRuntimeMarshal.AddEventHandler or RemoveEventHandler, but these + require us to create a new Func representing the adder and another + Action representing the Remover. + + The rewritten call looks something like: + + WindowsRuntimeMarshal.AddEventHandler<EventHandler> + (new Func<EventHandler, EventRegistrationToken>(@object.add), + new Action<EventRegistrationToken>(@object.remove), handler); + + Where @object is a compiler-generated local temp if needed. + + + TODO: use or delete isDynamic. + + + + + Basically, what we need to know is, if an exception occurred within the fixed statement, would + additional code in the current method be executed before its stack frame was popped? + + + + + If two (or more) fixed statements are nested, then we want to avoid having the outer + fixed statement re-traverse the lowered bound tree of the inner one. We accomplish + this by having each fixed statement cache a set of unmatched gotos that can be + reused by any containing fixed statements. + + + + + Look for gotos without corresponding labels in the lowered body of a fixed statement. + + + Assumes continue, break, etc have already been rewritten to gotos. + + + + + This is the entry point for foreach-loop lowering. It delegates to + RewriteEnumeratorForEachStatement + RewriteSingleDimensionalArrayForEachStatement + RewriteMultiDimensionalArrayForEachStatement + RewriteStringForEachStatement + + + We are diverging from the C# 4 spec (and Dev10) to follow the C# 5 spec. + The iteration variable will be declared *inside* each loop iteration, + rather than outside the loop. + + + + + Lower a foreach loop that will enumerate a collection using an enumerator. + + E e = ((C)(x)).GetEnumerator() + try { + while (e.MoveNext()) { + V v = (V)(T)e.Current; + // body + } + } + finally { + // clean up e + } + + + + + Synthesize a no-argument call to a given method, possibly applying a conversion to the receiver. + + If the receiver is of struct type and the method is an interface method, then skip the conversion + and just call the interface method directly - the code generator will detect this and generate a + constrained virtual call. + + A syntax node to attach to the synthesized bound node. + Receiver of method call. + Method to invoke. + Conversion to be applied to the receiver if not calling an interface method on a struct. + Type of the receiver after applying the conversion. + A BoundExpression representing the call. + + + + Lower a foreach loop that will enumerate the characters of a string. + + string s = x; + for (int p = 0; p < s.Length; p = p + 1) { + V v = (V)s.Chars[p]; + // body + } + + + We will follow Dev10 in diverging from the C# 4 spec by ignoring string's + implementation of IEnumerable and just indexing into its characters. + + NOTE: We're assuming that sequence points have already been generated. + Otherwise, lowering to for-loops would generated spurious ones. + + + + + Lower a foreach loop that will enumerate a single-dimensional array. + + A[] a = x; + for (int p = 0; p < a.Length; p = p + 1) { + V v = (V)a[p]; + // body + } + + + We will follow Dev10 in diverging from the C# 4 spec by ignoring Array's + implementation of IEnumerable and just indexing into its elements. + + NOTE: We're assuming that sequence points have already been generated. + Otherwise, lowering to for-loops would generated spurious ones. + + + + + Lower a foreach loop that will enumerate a multi-dimensional array. + + A[...] a = x; + int q_0 = a.GetUpperBound(0), q_1 = a.GetUpperBound(1), ...; + for (int p_0 = a.GetLowerBound(0); p_0 <= q_0; p_0 = p_0 + 1) + for (int p_1 = a.GetLowerBound(1); p_1 <= q_1; p_1 = p_1 + 1) + ... + { V v = (V)a[p_0, p_1, ...]; /* body */ } + + + We will follow Dev10 in diverging from the C# 4 spec by ignoring Array's + implementation of IEnumerable and just indexing into its elements. + + NOTE: We're assuming that sequence points have already been generated. + Otherwise, lowering to nested for-loops would generated spurious ones. + + + + + So that the binding info can return an appropriate SemanticInfo.Converted type for the collection + expression of a foreach node, it is wrapped in a BoundConversion to the collection type in the + initial bound tree. However, we may be able to optimize away (or entirely disregard) the conversion + so we pull out the bound node for the underlying expression. + + + + + Add sequence point |here|: + + foreach (Type var in |expr|) { } + + + Hit once, before looping begins. + + + + + Add sequence point |here|: + + foreach (|Type var| in expr) { } + + + Hit every iteration. + + + + + Add sequence point |here|: + + |foreach| (Type var in expr) { } + + + Hit once, before looping begins. + + + + + Lowers a lock statement to a try-finally block that calls Monitor.Enter and Monitor.Exit + before and after the body, respectively. + + + + + The strategy of this rewrite is to do rewrite "locally". + We analyze arguments of the concat in a shallow fashion assuming that + lowering and optimizations (including this one) is already done for the arguments. + Based on the arguments we select the most appropriate pattern for the current node. + + NOTE: it is not guaranteed that the node that we chose will be the most optimal since we have only + local information - i.e. we look at the arguments, but we do not know about siblings. + When we move to the parent, the node may be rewritten by this or some another optimization. + + Example: + result = ( "abc" + "def" + null ?? expr1 + "moo" + "baz" ) + expr2 + + Will rewrite into: + result = Concat("abcdef", expr2) + + However there will be transient nodes like Concat(expr1 + "moo") that will not be present in the + resulting tree. + + + + + + digs into known concat operators and unwraps their arguments + otherwise returns the expression as-is + + Generally we only need to recognize same node patterns that we create as a result of concatenation rewrite. + + + + + folds two concat operands into one expression if possible + otherwise returns null + + + + + folds two concat constants into one if possible + otherwise returns null. + It is generally always possible to concat constants, unless resulting string would be too large. + + + + + Strangely enough there is such a thing as unary concatenation and it must be rewritten. + + + + + Most of the above optimizations are not applicable in expression trees as the operator + must stay a binary operator. We cannot do much beyond constant folding which is done in binder. + + + + + Checks whether the expression represents a boxing conversion of a special value type. + If it does, it tries to return a string-based representation instead in order + to avoid allocations. If it can't, the original expression is returned. + + + + + Gets whether the type of an argument used in string concatenation can + be optimized by first calling ToString on it before passing the argument + to the String.Concat function. + + The type symbol of the argument. + + true if ToString may be used; false if using ToString could lead to observable differences in behavior. + + + + + Is there any code to execute in the given statement that could have side-effects, + such as throwing an exception? This implementation is conservative, in the sense + that it may return true when the statement actually may have no side effects. + + + + + This rewriter lowers pre-/post- increment/decrement operations (initially represented as + unary operators). We use BoundSequenceExpressions because we need to capture the RHS of the + assignment in a temp variable. + + + This rewriter assumes that it will be run before decimal rewriting (so that it does not have + to lower decimal constants and operations) and call rewriting (so that it does not have to + lower property accesses). + + + + + The rewrites are as follows: suppose the operand x is a variable of type X. The + chosen increment/decrement operator is modelled as a static method on a type T, + which takes a value of type T and returns the result of incrementing or decrementing + that value. + + x++ + X temp = x + x = (X)(T.Increment((T)temp)) + return temp + x-- + X temp = x + x = (X)(T.Decrement((T)temp)) + return temp + ++x + X temp = (X)(T.Increment((T)x)) + x = temp + return temp + --x + X temp = (X)(T.Decrement((T)x)) + x = temp + return temp + + Note: + Dev11 implements dynamic prefix operators incorrectly. + + result = ++x.P is emitted as result = SetMember{"P"}(t, UnaryOperation{Inc}(GetMember{"P"}(x))) + + The difference is that Dev11 relies on SetMember returning the same value as it was given as an argument. + Failing to do so changes the semantics of ++/-- operator which is undesirable. We emit the same pattern for + both dynamic and static operators. + + For example, we might have a class X with user-defined implicit conversions + to and from short, but no user-defined increment or decrement operators. We + would bind x++ as "X temp = x; x = (X)(short)((int)(short)temp + 1); return temp;" + + The unary operator expression representing the increment/decrement. + A bound sequence that uses a temp to achieve the correct side effects and return value. + + + + Transform an expression from a form suitable as an lvalue to a form suitable as an rvalue. + + The children of this node must already be lowered. + Fully lowered node. + + + + Rewrite a using statement into a try finally statement. Two forms are possible: + 1) using (expr) stmt + 2) using (C c = expr) stmt + + The former is handled by RewriteExpressionUsingStatement and the latter is handled by + RewriteDeclarationUsingStatement (called in a loop, once for each local declared). + + + It would be more in line with our usual pattern to rewrite using to try-finally + in the ControlFlowRewriter, but if we don't do it here the BoundMultipleLocalDeclarations + will be rewritten into a form that makes them harder to separate. + + + + + Lower "using (expression) statement" to a try-finally block. + + + + + Lower "using (ResourceType resource = expression) statement" to a try-finally block. + + + Assumes that the local symbol will be declared (i.e. in the LocalsOpt array) of an enclosing block. + Assumes that using statements with multiple locals have already been split up into multiple using statements. + + + + + The dynamic operation factories below return this struct so that the caller + have the option of separating the call-site initialization from its invocation. + + Most callers just call to get the combo but some (object and array initializers) + hoist all call-site initialization code and emit multiple invocations of the same site. + + + + + Corresponds to . + + + + + Corresponds to . + + + + + Rewrite the replacement expression for the hoisted local so all synthesized field are accessed as members + of the appropriate frame. + + + + + A walker that computes the set of local variables of an iterator/async + method that must be hoisted to the state machine. + + + Data flow analysis is used to calculate the locals. At yield/await we mark all variables as "unassigned". + When a read from an unassigned variables is reported we add the variable to the captured set. + "this" parameter is captured if a reference to "this", "base" or an instance field is encountered. + Variables used in finally also need to be captured if there is a yield in the corresponding try block. + + + + + True if we need to generate the code to do the bookkeeping so we can "finalize" the state machine + by executing code from its current state through the enclosing finally blocks. This is true for + iterators and false for async. + + + + + Generate return statements from the state machine method body. + + + + + The "state" of the state machine that is the translation of the iterator method. + + + + + Cached "state" of the state machine within the MoveNext method. We work with a copy of + the state to avoid shared mutable state between threads. (Two threads can be executing + in a Task's MoveNext method because an awaited task may complete after the awaiter has + tested whether the subtask is complete but before the awaiter has returned) + + + + + For each distinct label, the set of states that need to be dispatched to that label. + Note that there is a dispatch occurring at every try-finally statement, so this + variable takes on a new set of values inside each try block. + + + + + A mapping from each state of the state machine to the new state that will be used to execute + finally blocks in case the state machine is disposed. The Dispose method computes the new state + and then runs MoveNext. Not used if !this.useFinalizerBookkeeping. + + + + + A try block might have no state (transitions) within it, in which case it does not need + to have a state to represent finalization. This flag tells us whether the current try + block that we are within has a finalizer state. Initially true as we have the (trivial) + finalizer state of -1 at the top level. Not used if !this.useFinalizerBookkeeping. + + + + + If hasFinalizerState is true, this is the state for finalization from anywhere in this + try block. Initially set to -1, representing the no-op finalization required at the top + level. Not used if !this.useFinalizerBookkeeping. + + + + + A pool of fields used to hoist locals. They appear in this set when not in scope, + so that members of this set may be allocated to locals when the locals come into scope. + + + + + Fields allocated for temporary variables are given unique names distinguished by a number at the end. + This counter ensures they are unique within a given translated method. + + + + + Used to enumerate the instance fields of a struct. + + + + + The set of local variables and parameters that were hoisted and need a proxy. + + + + + Translate a statement that declares a given set of locals. Also allocates and frees hoisted temps as + required for the translation. + + The set of locals declared in the original version of this statement + A delegate to return the translation of the body of this statement + + + + Must remain in sync with . + + + + + Must remain in sync with . + + + + + Might the given type be, or contain, managed references? This is used to determine which + fields allocated to temporaries should be cleared when the underlying variable goes out of scope, so + that they do not cause unnecessary object retention. + + + + + The try statement is the most complex part of the state machine transformation. + Since the CLR will not allow a 'goto' into the scope of a try statement, we must + generate the dispatch to the state's label stepwise. That is done by translating + the try statements from the inside to the outside. Within a try statement, we + start with an empty dispatch table (representing the mapping from state numbers + to labels). During translation of the try statement's body, the dispatch table + will be filled in with the data necessary to dispatch once we're inside the try + block. We generate that at the head of the translated try statement. Then, we + copy all of the states from that table into the table for the enclosing construct, + but associate them with a label just before the translated try block. That way + the enclosing construct will generate the code necessary to get control into the + try block for all of those states. + + + + + Represents a synthesized state machine field. + + + + + True if the initial values of locals in the rewritten method need to be preserved. (e.g. enumerable iterator methods) + + + + + Add fields to the state machine class that control the state machine. + + + + + Initialize the state machine class. + + + + + Generate implementation-specific state machine initialization for the kickoff method body. + + + + + Generate implementation-specific state machine member method implementations. + + + + + State machine interface method implementation. + + + + + Represents a state machine MoveNext method. + Handles special behavior around inheriting some attributes from the original async/iterator method. + + + + + Represents a state machine method other than a MoveNext method. + All such methods are considered debugger hidden. + + + + + Tracks synthesized fields that are needed in a submission being compiled. + + + For every other submission referenced by this submission we add a field, so that we can access members of the target submission. + A field is also needed for the host object, if provided. + + + + + A helper class for synthesizing quantities of code. + + + + + Thrown by the bound node factory when there is a failure to synthesize code. + An appropriate diagnostic is included that should be reported. Currently + the only diagnostic handled through this mechanism is a missing special/well-known + member. + + + + + A binder suitable for performing overload resolution to synthesize a call to a helper method. + + + + + A binder used only for performing overload resolution of runtime helper methods. + + + + + Create a bound node factory. Note that the use of the factory to get special or well-known members + that do not exist will result in an exception of type being thrown. + + The top-level method that will contain the code + The syntax node to which generated code should be attributed + The state of compilation of the enclosing type + A bag where any diagnostics should be output + + + The top-level method that will contain the code + The enclosing class + The syntax node to which generated code should be attributed + The state of compilation of the enclosing type + A bag where any diagnostics should be output + + + + Get the symbol for a well-known member. The use of this method to get a well-known member + that does not exist will result in an exception of type MissingPredefinedMember being thrown + containing an appropriate diagnostic for the caller to report. + + The desired well-known member + If true, the method may return null for a missing member without an exception + A symbol for the well-known member, or null if it is missing and isOptions == true + + + + Get the symbol for a special member. The use of this method to get a special member + that does not exist will result in an exception of type MissingPredefinedMember being thrown + containing an appropriate diagnostic for the caller to report. + + The desired special member + A symbol for the special member. + + + + Check for (and assert that there are no) duplicate case labels in the switch. + + + + + + Helper that will use Array.Empty if available and elements have 0 length + NOTE: it is valid only if we know that the API that is being called will not + retain or use the array argument for any purpose (like locking or key in a hash table) + Typical example of valid use is Linq.Expressions factories - they do not make any + assumptions about array arguments and do not keep them or rely on their identity. + + + + + Takes an expression and returns the bound local expression "temp" + and the bound assignment expression "temp = expr". + + + + + Compiles a list of all labels that are targeted by gotos within a + node, but are not declared within the node. + + + + + newPosition represents the position we are in the final SourceText. As we consume and reuse + nodes from the old tree we will update our position in the new text accordingly. + Likewise, when we must lex tokens out of the new tree we will update as well. + + NOTE(cyrusn): We do not need an oldPosition because it is redundant given the + oldTreeCursor. The oldPosition is implicitly defined by the position of the cursor. + + + + + Affected range of a change is the range within which nodes can be affected by a change + and cannot be reused. Because of lookahead effective range of a change is larger than + the change itself. + + + + + THe cursor represents a location in the tree that we can move around to indicate where + we are in the original tree as we're incrementally parsing. When it is at a node or + token, it can either move forward to that entity's next sibling. It can also move down + to a node's first child or first token. + + Once the cursor hits the end of file, it's done. Note: the cursor will skip any other + zero length nodes in the tree. + + + + + An error/warning directive tells the compiler to indicate a syntactic error/warning + at the current location. + + Format: #error Error message string + Resulting message: from the first non-whitespace character after the directive + keyword until the end of the directive (aka EOD) at the line break or EOF. + Resulting span: [first non-whitespace char, EOD) + + Examples (pipes indicate span): + #error |foo| + #error |foo| + #error |foo | + #error |foo baz| + #error |//foo| + #error |/*foo*/| + #error |/*foo| + + The '#' token. + The 'error' or 'warning' token. + True if the error/warning should be recorded. + An ErrorDirective or WarningDirective node. + + + + These aren't acceptable in place of ASCII quotation marks in XML, + but we want to consume them (and produce an appropriate error) if + they occur in a place where a quotation mark is legal. + + + + + ACASEY: This grammar is derived from the behavior and sources of the native compiler. + Tokens start with underscores (I've cheated for _PredefinedTypeToken, which is not actually a + SyntaxKind), "*" indicates "0 or more", "?" indicates "0 or 1", and parentheses are for grouping. + + Cref = CrefType _DotToken CrefMember + | CrefType + | CrefMember + | CrefFirstType _OpenParenToken CrefParameterList? _CloseParenToken + CrefName = _IdentifierToken (_LessThanToken _IdentifierToken (_CommaToken _IdentifierToken)* _GreaterThanToken)? + CrefFirstType = ((_IdentifierToken _ColonColonToken)? CrefName) + | _PredefinedTypeToken + CrefType = CrefFirstType (_DotToken CrefName)* + CrefMember = CrefName (_OpenParenToken CrefParameterList? _CloseParenToken)? + | _ThisKeyword (_OpenBracketToken CrefParameterList _CloseBracketToken)? + | _OperatorKeyword _OperatorToken (_OpenParenToken CrefParameterList? _CloseParenToken)? + | (_ImplicitKeyword | _ExplicitKeyword) _OperatorKeyword CrefParameterType (_OpenParenToken CrefParameterList? _CloseParenToken)? + CrefParameterList = CrefParameter (_CommaToken CrefParameter)* + CrefParameter = (_RefKeyword | _OutKeyword)? CrefParameterType + CrefParameterType = CrefParameterType2 _QuestionToken? _AsteriskToken* (_OpenBracketToken _CommaToken* _CloseBracketToken)* + CrefParameterType2 = (((_IdentifierToken _ColonColonToken)? CrefParameterType3) | _PredefinedTypeToken) (_DotToken CrefParameterType3)* + CrefParameterType3 = _IdentifierToken (_LessThanToken CrefParameterType (_CommaToken CrefParameterType)* _GreaterThanToken)? + + NOTE: type parameters, not type arguments + NOTE: the first production of Cref is preferred to the other two + NOTE: pointer, array, and nullable types only work in parameters + NOTE: CrefParameterType2 and CrefParameterType3 correspond to CrefType and CrefName, respectively. + Since the only difference is that they accept non-identifier type arguments, this is accomplished + using parameters on the parsing methods (rather than whole new methods). + + + + + Parse the custom cref syntax for a named member (method, property, etc), + an indexer, an overloadable operator, or a user-defined conversion. + + + + + Parse a named member (method, property, etc), with optional type + parameters and regular parameters. + + + + + Parse an indexer member, with optional parameters. + + + + + Parse an overloadable operator, with optional parameters. + + + + + Parse a user-defined conversion, with optional parameters. + + + + + Parse a parenthesized parameter list. + + + + + Parse a bracketed parameter list. + + + + + Parse the parameter list (if any) of a cref member (name, indexer, operator, or conversion). + + + + + True if the current token could be the beginning of a cref parameter. + + + + + Parse an element of a cref parameter list. + + + "ref" and "out" work, but "params", "this", and "__arglist" don't. + + + + + Parse an identifier, optionally followed by an angle-bracketed list of type parameters. + + True to give an error when a non-identifier + type argument is seen, false to accept. No change in the shape of the tree. + + + + Parse a type. May include an alias, a predefined type, and/or a qualified name. + + + Pointer, nullable, or array types are only allowed if is false. + Leaves a dot and a name unconsumed if the name is not followed by another dot + and checkForMember is true. + + True to give an error when a non-identifier + type argument is seen, false to accept. No change in the shape of the tree. + True means that the last name should not be consumed + if it is followed by a parameter list. + + + + Parse a type. May include an alias, a predefined type, and/or a qualified name. + + + No pointer, nullable, or array types. + Leaves a dot and a name unconsumed if the name is not followed by another dot + and checkForMember is true. + + True to give an error when a non-identifier + type argument is seen, false to accept. No change in the shape of the tree. + True means that the last name should not be consumed + if it is followed by a parameter list. + + + + Once the name part of a type (including type parameter/argument lists) is parsed, + we need to consume ?, *, and rank specifiers. + + + + + Ends at appropriate quotation mark, EOF, or EndOfDocumentationComment. + + + + + Convenience method for checking the mode. + + + + + Ends at appropriate quotation mark, EOF, or EndOfDocumentationComment. + + + + + Set of well-known SyntaxTokens commonly found within XML doc comments. + + + + + Look up a well known SyntaxToken for a given XML element tag or attribute. + This is a performance optimization to avoid creating duplicate tokens for the same content. + + The text of the tag or attribute. + The leading trivia of the token. + The SyntaxToken representing the well-known tag or attribute or null if it's not well-known. + + + + Returns true if the lookahead tokens compose extern alias directive. + + + + + Parses any block or expression bodies that are present. Also parses + the trailing semicolon if one is present. + + + + + WARNING: it is possible that "list" is really the underlying builder of a SeparateSyntaxListBuilder, + so it is important that we not add anything to the list. + + + + + True if current identifier token is not really some contextual keyword + + + + + + Definitely not a type name. + + + + + Definitely a type name: either a predefined type (int, string, etc.) or an array type name (ending with a bracket). + + + + + Might be a generic (qualified) type name or a method name. + + + + + Might be a generic (qualified) type name or an expression or a method name. + + + + + Might be a non-generic (qualified) type name or an expression. + + + + + A type name with alias prefix (Alias::Name) + + + + + Nullable type (ending with ?). + + + + + Might be a pointer type or a multiplication. + + + + + Parses any statement but a declaration statement. Returns null if the lookahead looks like a declaration. + + + Variable declarations in global code are parsed as field declarations so we need to fallback if we encounter a declaration statement. + + + + + true if the current token can be the first token of a typed identifier (a type name followed by an identifier), + false if it definitely can't be, + null if we need to scan further to find out. + + + + + "Safe" substring using start and end positions rather than start and length. + If things are out of bounds just returns the empty string. That should only + be used by clients to assist in error recovery. + original string + index of first character to be included + index of last character to be included + + + + + Take the given text and treat it as the contents of a string literal, returning a token for that. + + The text for the full string literal, including the quotes and contents + The text for the string literal's contents, excluding surrounding quotes + True if the string contents should be scanned using the rules for verbatim strings + The token kind to be assigned to the resulting token + + + + This method is essentially the same as ScanIdentifier_SlowPath, + except that it can handle XML entities. Since ScanIdentifier + is hot code and since this method does extra work, it seem + worthwhile to separate it from the common case. + + + + + + + Scans a new-line sequence (either a single new-line character or a CR-LF combo). + + A trivia node with the new-line text + + + + Scans all of the whitespace (not new-lines) into a trivia node until it runs out. + + A trivia node with the whitespace text + + + + Lexer entry point for LexMode.XmlDocComment + + + + + Lexer entry point for LexMode.XmlElementTag + + + + + Determines whether this Unicode character can start a XMLName. + + The Unicode character. + + + + Determines if this Unicode character can be part of an XML Name. + + The Unicode character. + + + + Lexer entry point for LexMode.XmlAttributeText + + + + + Lexer entry point for LexerMode.XmlCharacter. + + + + + Scan a single XML character (or entity). Assumes that leading trivia has already + been consumed. + + + + + Lexer entry point for LexerMode.XmlCrefQuote, LexerMode.XmlCrefDoubleQuote, + LexerMode.XmlNameQuote, and LexerMode.XmlNameDoubleQuote. + + + + + Scan a single cref attribute token. Assumes that leading trivia has already + been consumed. + + + Within this method, characters that are not XML meta-characters can be seamlessly + replaced with the corresponding XML entities. + + + + + Given a character, advance the input if either the character or the + corresponding XML entity appears next in the text window. + + + + + + + Convenience property for determining whether we are currently lexing the + value of a cref or name attribute. + + + + + Convenience property for determining whether we are currently lexing the + value of a name attribute. + + + + + Diagnostics that occur within cref attributes need to be + wrapped with ErrorCode.WRN_ErrorOverride. + + + + + Diagnostics that occur within cref attributes need to be + wrapped with ErrorCode.WRN_ErrorOverride. + + + + + Lexer entry point for LexMode.XmlCDataSectionText + + + + + Lexer entry point for LexMode.XmlCommentText + + + + + Lexer entry point for LexMode.XmlProcessingInstructionText + + + + + Collects XML doc comment exterior trivia, and therefore is a no op unless we are in the Start or Exterior of an XML doc comment. + + List in which to collect the trivia + + + + Collects whitespace and new line trivia for XML doc comments. Does not see XML doc comment exterior trivia, and is a no op unless we are in the interior. + + List in which to collect the trivia + + + + Turn a (parsed) interpolated string nonterminal into an interpolated string token. + + + + + + Scan past the hole inside an interpolated string literal, leaving the current character on the '}' (if any) + + + + + Keeps a sliding buffer over the SourceText of a file for the lexer. Also + provides the lexer with the ability to keep track of a current "lexeme" + by leaving a marker and advancing ahead the offset. The lexer can then + decide to "keep" the lexeme by erasing the marker, or abandon the current + lexeme by moving the offset back to the marker. + + + + + In many cases, e.g. PeekChar, we need the ability to indicate that there are + no characters left and we have reached the end of the stream, or some other + invalid or not present character was asked for. Due to perf concerns, things + like nullable or out variables are not viable. Instead we need to choose a + char value which can never be legal. + + In .NET, all characters are represented in 16 bits using the UTF-16 encoding. + Fortunately for us, there are a variety of different bit patterns which + are *not* legal UTF-16 characters. 0xffff (char.MaxValue) is one of these + characters -- a legal Unicode code point, but not a legal UTF-16 bit pattern. + + + + + The current absolute position in the text file. + + + + + The current offset inside the window (relative to the window start). + + + + + The buffer backing the current window. + + + + + Returns the start of the current lexeme relative to the window start. + + + + + Number of characters in the character window. + + + + + The absolute position of the start of the current lexeme in the given + SourceText. + + + + + The number of characters in the current lexeme. + + + + + Start parsing a new lexeme. + + + + + After reading , a consumer can determine + if the InvalidCharacter was in the user's source or a sentinel. + + Comments and string literals are allowed to contain any Unicode character. + + + + + + Advance the current position by one. No guarantee that this + position is valid. + + + + + Advance the current position by n. No guarantee that this position + is valid. + + + + + Grab the next character and advance the position. + + + The next character, if there were no characters + remaining. + + + + + Gets the next character if there are any characters in the + SourceText. May advance the window if we are at the end. + + + The next character if any are available. InvalidCharacter otherwise. + + + + + Gets the character at the given offset to the current position if + the position is valid within the SourceText. + + + The next character if any are available. InvalidCharacter otherwise. + + + + + Given that the next character is an ampersand ('&'), attempt to interpret the + following characters as an XML entity. On success, populate the out parameters + with the low and high UTF-16 surrogates for the character represented by the + entity. + + e.g. '<' for &lt;. + e.g. '\uDC00' for &#x10000; (ch == '\uD800'). + True if a valid XML entity was consumed. + + NOTE: Always advances, even on failure. + + + + + If the next characters in the window match the given string, + then advance past those characters. Otherwise, do nothing. + + + + + Because syntax nodes need to be constructed with context information - to allow us to + determine whether or not they can be reused during incremental parsing - the syntax + factory needs a view of some internal parser state. + + + Read-only outside SyntaxParser (not enforced for perf reasons). + Reference type so that the factory stays up-to-date. + + + + + If a method goes from async to non-async, or vice versa, then every occurrence of "await" + within the method (but not within a lambda) needs to be reinterpreted, to determine whether + it is a keyword or an identifier. + + + + + If the end of a query expression statement is commented out, then the following statement may + appear to be part of the query. When this occurs, identifiers within the following statement + may need to be reinterpreted as query keywords. + + + + + Converts skippedSyntax node into tokens and adds these as trivia on the target token. + Also adds the first error (in depth-first preorder) found in the skipped syntax tree to the target token. + + + + + This function searches for the given location node within the subtree rooted at root node. + If it finds it, the function computes the offset span of that child node within the root and returns true, + otherwise it returns false. + + Root node + Node to search in the subtree rooted at root node + Offset of the location node within the subtree rooted at child + + + + + NOTE: we are specifically diverging from dev11 to improve the user experience. + Since treating the "async" keyword as an identifier in older language + versions can never result in a correct program, we instead accept it as a + keyword regardless of the language version and produce an error if the version + is insufficient. + + + + Class which represents an expression that has a binary operator. + + + ExpressionSyntax node representing the expression on the left of the binary operator. + + + SyntaxToken representing the operator of the binary expression. + + + ExpressionSyntax node representing the expression on the right of the binary operator. + + + Class which represents the syntax node for identifier name. + + + SyntaxToken representing the keyword for the kind of the identifier name. + + + + Gets the separator at the given index in this list. + + The index. + + + + + WARN WARN WARN: This should be used with extreme caution - the underlying builder does + not give any indication that it is from a separated syntax list but the constraints + (node, token, node, token, ...) should still be maintained. + + + In order to avoid creating a separate pool of SeparatedSyntaxListBuilders, we expose + our underlying SyntaxListBuilder to SyntaxListPool. + + + + + Find the slot that contains the given offset. + + The target offset. Must be between 0 and . + The slot index of the slot containing the given offset. + + This implementation uses a binary search to find the first slot that contains + the given offset. + + + + + Enumerates all nodes of the tree rooted by this node (including this node). + + + + + Should only be called during construction. + + + This should probably be an extra constructor parameter, but we don't need more constructor overloads. + + + + + Gets the syntax node represented the structure of this trivia, if any. The HasStructure property can be used to + determine if this trivia has structure. + + + A CSharpSyntaxNode derived from StructuredTriviaSyntax, with the structured view of this trivia node. + If this trivia node does not have structure, returns null. + + + Some types of trivia have structure that can be accessed as additional syntax nodes. + These forms of trivia include: + directives, where the structure describes the structure of the directive. + documentation comments, where the structure describes the XML structure of the comment. + skipped tokens, where the structure describes the tokens that were skipped by the parser. + + + + + Provides caching functionality for green nonterminals with up to 3 children. + Example: + When constructing a node with given kind, flags, child1 and child2, we can look up + in the cache whether we already have a node that contains same kind, flags, + child1 and child2 and use that. + + For the purpose of children comparison, reference equality is used as a much cheaper + alternative to the structural/recursive equality. This implies that in order to de-duplicate + a node to a cache node, the children of two nodes must be already de-duplicated. + When adding a node to the cache we verify that cache does contain node's children, + since otherwise there is no reason for the node to be used. + Tokens/nulls are for this purpose considered deduplicated. Indeed most of the tokens + are deduplicated via quick-scanner caching, so we just assume they all are. + + As a result of above, "fat" nodes with 4 or more children or their recursive parents + will never be in the cache. This naturally limits the typical single cache item to be + a relatively simple expression. We do not want the cache to be completely unbounded + on the item size. + While it still may be possible to store a gigantic nested binary expression, + it should be a rare occurrence. + + We only consider "normal" nodes to be cacheable. + Nodes with diagnostics/annotations/directives/skipped, etc... have more complicated identity + and are not likely to be repetitive. + + + + + + Returns the string representation of this token, not including its leading and trailing trivia. + + The string representation of this token, not including its leading and trailing trivia. + The length of the returned string is always the same as Span.Length + + + Provides the base class from which the classes that represent name syntax nodes are derived. This is an abstract class. + + + Provides the base class from which the classes that represent simple name syntax nodes are derived. This is an abstract class. + + + SyntaxToken representing the identifier of the simple name. + + + Class which represents the syntax node for qualified name. + + + NameSyntax node representing the name on the left side of the dot token of the qualified name. + + + SyntaxToken representing the dot. + + + SimpleNameSyntax node representing the name on the right side of the dot token of the qualified name. + + + Class which represents the syntax node for generic name. + + + SyntaxToken representing the name of the identifier of the generic name. + + + TypeArgumentListSyntax node representing the list of type arguments of the generic name. + + + Class which represents the syntax node for type argument list. + + + SyntaxToken representing less than. + + + SeparatedSyntaxList of TypeSyntax node representing the type arguments. + + + SyntaxToken representing greater than. + + + Class which represents the syntax node for alias qualified name. + + + IdentifierNameSyntax node representing the name of the alias + + + SyntaxToken representing colon colon. + + + SimpleNameSyntax node representing the name that is being alias qualified. + + + Provides the base class from which the classes that represent type syntax nodes are derived. This is an abstract class. + + + Class which represents the syntax node for predefined types. + + + SyntaxToken which represents the keyword corresponding to the predefined type. + + + Class which represents the syntax node for the array type. + + + TypeSyntax node representing the type of the element of the array. + + + SyntaxList of ArrayRankSpecifierSyntax nodes representing the list of rank specifiers for the array. + + + Class which represents the syntax node for pointer type. + + + TypeSyntax node that represents the element type of the pointer. + + + SyntaxToken representing the asterisk. + + + Class which represents the syntax node for a nullable type. + + + TypeSyntax node representing the type of the element. + + + SyntaxToken representing the question mark. + + + Class which represents a placeholder in the type argument list of an unbound generic type. + + + SyntaxToken representing the omitted type argument. + + + Provides the base class from which the classes that represent expression syntax nodes are derived. This is an abstract class. + + + Class which represents the syntax node for parenthesized expression. + + + SyntaxToken representing the open parenthesis. + + + ExpressionSyntax node representing the expression enclosed within the parenthesis. + + + SyntaxToken representing the close parenthesis. + + + Class which represents the syntax node for prefix unary expression. + + + SyntaxToken representing the kind of the operator of the prefix unary expression. + + + ExpressionSyntax representing the operand of the prefix unary expression. + + + Class which represents the syntax node for an "await" expression. + + + SyntaxToken representing the kind "await" keyword. + + + ExpressionSyntax representing the operand of the "await" operator. + + + Class which represents the syntax node for postfix unary expression. + + + ExpressionSyntax representing the operand of the postfix unary expression. + + + SyntaxToken representing the kind of the operator of the postfix unary expression. + + + Class which represents the syntax node for member access expression. + + + ExpressionSyntax node representing the object that the member belongs to. + + + SyntaxToken representing the kind of the operator in the member access expression. + + + SimpleNameSyntax node representing the member being accessed. + + + Class which represents the syntax node for conditional access expression. + + + ExpressionSyntax node representing the object conditionally accessed. + + + SyntaxToken representing the question mark. + + + ExpressionSyntax node representing the access expression to be executed when the object is not null. + + + Class which represents the syntax node for member binding expression. + + + SyntaxToken representing dot. + + + SimpleNameSyntax node representing the member being bound to. + + + Class which represents the syntax node for element binding expression. + + + BracketedArgumentListSyntax node representing the list of arguments of the element binding expression. + + + Class which represents the syntax node for implicit element access expression. + + + BracketedArgumentListSyntax node representing the list of arguments of the implicit element access expression. + + + Class which represents an expression that has an assignment operator. + + + ExpressionSyntax node representing the expression on the left of the assignment operator. + + + SyntaxToken representing the operator of the assignment expression. + + + ExpressionSyntax node representing the expression on the right of the assignment operator. + + + Class which represents the syntax node for conditional expression. + + + ExpressionSyntax node representing the condition of the conditional expression. + + + SyntaxToken representing the question mark. + + + ExpressionSyntax node representing the expression to be executed when the condition is true. + + + SyntaxToken representing the colon. + + + ExpressionSyntax node representing the expression to be executed when the condition is false. + + + Provides the base class from which the classes that represent instance expression syntax nodes are derived. This is an abstract class. + + + Class which represents the syntax node for a this expression. + + + SyntaxToken representing the this keyword. + + + Class which represents the syntax node for a base expression. + + + SyntaxToken representing the base keyword. + + + Class which represents the syntax node for a literal expression. + + + SyntaxToken representing the keyword corresponding to the kind of the literal expression. + + + Class which represents the syntax node for MakeRef expression. + + + SyntaxToken representing the MakeRefKeyword. + + + SyntaxToken representing open parenthesis. + + + Argument of the primary function. + + + SyntaxToken representing close parenthesis. + + + Class which represents the syntax node for RefType expression. + + + SyntaxToken representing the RefTypeKeyword. + + + SyntaxToken representing open parenthesis. + + + Argument of the primary function. + + + SyntaxToken representing close parenthesis. + + + Class which represents the syntax node for RefValue expression. + + + SyntaxToken representing the RefValueKeyword. + + + SyntaxToken representing open parenthesis. + + + Typed reference expression. + + + Comma separating the arguments. + + + The type of the value. + + + SyntaxToken representing close parenthesis. + + + Class which represents the syntax node for Checked or Unchecked expression. + + + SyntaxToken representing the checked or unchecked keyword. + + + SyntaxToken representing open parenthesis. + + + Argument of the primary function. + + + SyntaxToken representing close parenthesis. + + + Class which represents the syntax node for Default expression. + + + SyntaxToken representing the DefaultKeyword. + + + SyntaxToken representing open parenthesis. + + + Argument of the primary function. + + + SyntaxToken representing close parenthesis. + + + Class which represents the syntax node for TypeOf expression. + + + SyntaxToken representing the TypeOfKeyword. + + + SyntaxToken representing open parenthesis. + + + The expression to return type of. + + + SyntaxToken representing close parenthesis. + + + Class which represents the syntax node for SizeOf expression. + + + SyntaxToken representing the SizeOfKeyword. + + + SyntaxToken representing open parenthesis. + + + Argument of the primary function. + + + SyntaxToken representing close parenthesis. + + + Class which represents the syntax node for invocation expression. + + + ExpressionSyntax node representing the expression part of the invocation. + + + ArgumentListSyntax node representing the list of arguments of the invocation expression. + + + Class which represents the syntax node for element access expression. + + + ExpressionSyntax node representing the expression which is accessing the element. + + + BracketedArgumentListSyntax node representing the list of arguments of the element access expression. + + + Provides the base class from which the classes that represent argument list syntax nodes are derived. This is an abstract class. + + + SeparatedSyntaxList of ArgumentSyntax nodes representing the list of arguments. + + + Class which represents the syntax node for the list of arguments. + + + SyntaxToken representing open parenthesis. + + + SeparatedSyntaxList of ArgumentSyntax representing the list of arguments. + + + SyntaxToken representing close parenthesis. + + + Class which represents the syntax node for bracketed argument list. + + + SyntaxToken representing open bracket. + + + SeparatedSyntaxList of ArgumentSyntax representing the list of arguments. + + + SyntaxToken representing close bracket. + + + Class which represents the syntax node for argument. + + + NameColonSyntax node representing the optional name arguments. + + + SyntaxToken representing the optional ref or out keyword. + + + ExpressionSyntax node representing the argument. + + + Class which represents the syntax node for name colon syntax. + + + IdentifierNameSyntax representing the identifier name. + + + SyntaxToken representing colon. + + + Class which represents the syntax node for cast expression. + + + SyntaxToken representing the open parenthesis. + + + TypeSyntax node representing the type the expression is being casted to. + + + SyntaxToken representing the close parenthesis. + + + ExpressionSyntax node representing the expression that is being casted. + + + Provides the base class from which the classes that represent anonymous function expressions are derived. + + + Gets the "async" token. + + + ExpressionSyntax or BlockSyntax representing the body of the lambda expression. + + + Class which represents the syntax node for anonymous method expression. + + + Gets the "async" token. + + + SyntaxToken representing the delegate keyword. + + + List of parameters of the anonymous method expression, or null if there no parameters are specified. + + + BlockSyntax node representing the body of the anonymous method. + + + Provides the base class from which the classes that represent lambda expressions are derived. + + + SyntaxToken representing equals greater than. + + + Class which represents the syntax node for a simple lambda expression. + + + Gets the "async" token. + + + ParameterSyntax node representing the parameter of the lambda expression. + + + SyntaxToken representing equals greater than. + + + SyntaxNode representing the body of the lambda expression. + + + Class which represents the syntax node for parenthesized lambda expression. + + + Gets the "async" token. + + + ParameterListSyntax node representing the list of parameters for the lambda expression. + + + SyntaxToken representing equals greater than. + + + SyntaxNode representing the body of the lambda expression. + + + Class which represents the syntax node for initializer expression. + + + SyntaxToken representing the open brace. + + + SeparatedSyntaxList of ExpressionSyntax representing the list of expressions in the initializer expression. + + + SyntaxToken representing the close brace. + + + Class which represents the syntax node for object creation expression. + + + SyntaxToken representing the new keyword. + + + TypeSyntax representing the type of the object being created. + + + ArgumentListSyntax representing the list of arguments passed as part of the object creation expression. + + + InitializerExpressionSyntax representing the initializer expression for the object being created. + + + NameEqualsSyntax representing the optional name of the member being initialized. + + + ExpressionSyntax representing the value the member is initialized with. + + + Class which represents the syntax node for anonymous object creation expression. + + + SyntaxToken representing the new keyword. + + + SyntaxToken representing the open brace. + + + SeparatedSyntaxList of AnonymousObjectMemberDeclaratorSyntax representing the list of object member initializers. + + + SyntaxToken representing the close brace. + + + Class which represents the syntax node for array creation expression. + + + SyntaxToken representing the new keyword. + + + ArrayTypeSyntax node representing the type of the array. + + + InitializerExpressionSyntax node representing the initializer of the array creation expression. + + + Class which represents the syntax node for implicit array creation expression. + + + SyntaxToken representing the new keyword. + + + SyntaxToken representing the open bracket. + + + SyntaxList of SyntaxToken representing the commas in the implicit array creation expression. + + + SyntaxToken representing the close bracket. + + + InitializerExpressionSyntax representing the initializer expression of the implicit array creation expression. + + + Class which represents the syntax node for stackalloc array creation expression. + + + SyntaxToken representing the stackalloc keyword. + + + TypeSyntax node representing the type of the stackalloc array. + + + Gets the identifier. + + + Gets the identifier. + + + Gets the identifier. + + + Gets the identifier. + + + Gets the identifier. + + + Class which represents a placeholder in an array size list. + + + SyntaxToken representing the omitted array size expression. + + + The first part of an interpolated string, $" or $@" + + + List of parts of the interpolated string, each one is either a literal part or an interpolation. + + + The closing quote of the interpolated string. + + + The text contents of a part of the interpolated string. + + + The text contents of the format specifier for an interpolation. + + + Represents the base class for all statements syntax classes. + + + Gets the modifier list. + + + Gets the identifier. + + + Represents a labeled statement syntax. + + + Gets the identifier. + + + Gets a SyntaxToken that represents the colon succeeding the statement's label. + + + + Represents a goto statement syntax + + + + + Gets a SyntaxToken that represents the goto keyword. + + + + + Gets a SyntaxToken that represents the case or default keywords if any exists. + + + + + Gets a constant expression for a goto case statement. + + + + + Gets a SyntaxToken that represents the semi-colon at the end of the statement. + + + + Gets the identifier. + + + + Represents an if statement syntax. + + + + + Gets a SyntaxToken that represents the if keyword. + + + + + Gets a SyntaxToken that represents the open parenthesis before the if statement's condition expression. + + + + + Gets an ExpressionSyntax that represents the condition of the if statement. + + + + + Gets a SyntaxToken that represents the close parenthesis after the if statement's condition expression. + + + + + Gets a StatementSyntax the represents the statement to be executed when the condition is true. + + + + + Gets an ElseClauseSyntax that represents the statement to be executed when the condition is false if such statement exists. + + + + Represents an else statement syntax. + + + + Gets a syntax token + + + + Represents a switch statement syntax. + + + + Gets a SyntaxToken that represents the switch keyword. + + + + + Gets a SyntaxToken that represents the open parenthesis preceding the switch expression. + + + + + Gets an ExpressionSyntax representing the expression of the switch statement. + + + + + Gets a SyntaxToken that represents the close parenthesis succeeding the switch expression. + + + + + Gets a SyntaxToken that represents the open braces preceding the switch sections. + + + + + Gets a SyntaxList of SwitchSectionSyntax's that represents the switch sections of the switch statement. + + + + + Gets a SyntaxToken that represents the open braces succeeding the switch sections. + + + + Represents a switch section syntax of a switch statement. + + + + Gets a SyntaxList of SwitchLabelSyntax's the represents the possible labels that control can transfer to within the section. + + + + + Gets a SyntaxList of StatementSyntax's the represents the statements to be executed when control transfer to a label the belongs to the section. + + + + Represents a switch label within a switch statement. + + + + Gets a SyntaxToken that represents a case or default keywords that belongs to a switch label. + + + + + Gets a SyntaxToken that represents the colon that terminates the switch label. + + + + Represents a case label within a switch statement. + + + Gets the case keyword token. + + + + Gets an ExpressionSyntax that represents the constant expression that gets matched for the case label. + + + + Represents a default label within a switch statement. + + + Gets the default keyword token. + + + Gets the attribute declaration list. + + + + Represents an ExternAlias directive syntax, e.g. "extern alias MyAlias;" with specifying "/r:MyAlias=SomeAssembly.dll " on the compiler command line. + + + + SyntaxToken representing the extern keyword. + + + SyntaxToken representing the alias keyword. + + + Gets the identifier. + + + SyntaxToken representing the semicolon token. + + + Member declaration syntax. + + + Gets the optional semicolon token. + + + Class representing one or more attributes applied to a language construct. + + + Gets the open bracket token. + + + Gets the optional construct targeted by the attribute. + + + Gets the attribute declaration list. + + + Gets the close bracket token. + + + Class representing what language construct an attribute targets. + + + Gets the identifier. + + + Gets the colon token. + + + Attribute syntax. + + + Gets the name. + + + Attribute argument list syntax. + + + Gets the open paren token. + + + Gets the arguments syntax list. + + + Gets the close paren token. + + + Attribute argument syntax. + + + Gets the expression. + + + Class representing an identifier name followed by an equals token. + + + Gets the identifier name. + + + Type parameter list syntax. + + + Gets the < token. + + + Gets the parameter list. + + + Gets the > token. + + + Type parameter syntax. + + + Gets the attribute declaration list. + + + Gets the identifier. + + + Base class for type declaration syntax. + + + Gets the attribute declaration list. + + + Gets the modifier list. + + + Gets the identifier. + + + Gets the base type list. + + + Gets the open brace token. + + + Gets the close brace token. + + + Gets the optional semicolon token. + + + Base class for type declaration syntax (class, struct, interface). + + + Gets the type keyword token ("class", "struct", "interface"). + + + Gets the type constraint list. + + + Gets the member declarations. + + + Class type declaration syntax. + + + Gets the class keyword token. + + + Struct type declaration syntax. + + + Gets the struct keyword token. + + + Interface type declaration syntax. + + + Gets the interface keyword token. + + + Enum type declaration syntax. + + + Gets the enum keyword token. + + + Gets the members declaration list. + + + Gets the optional semicolon token. + + + Delegate declaration syntax. + + + Gets the attribute declaration list. + + + Gets the modifier list. + + + Gets the "delegate" keyword. + + + Gets the return type. + + + Gets the identifier. + + + Gets the parameter list. + + + Gets the constraint clause list. + + + Gets the semicolon token. + + + Gets the attribute declaration list. + + + Gets the identifier. + + + Base list syntax. + + + Gets the colon token. + + + Gets the base type references. + + + Provides the base class from which the classes that represent base type syntax nodes are derived. This is an abstract class. + + + Type parameter constraint clause. + + + Gets the identifier. + + + Gets the colon token. + + + Gets the constraints list. + + + Base type for type parameter constraint syntax. + + + Constructor constraint syntax. + + + Gets the "new" keyword. + + + Gets the open paren keyword. + + + Gets the close paren keyword. + + + Base type for class or struct constraint syntax. + + + Gets the constraint keyword ("class" or "struct"). + + + Type constraint syntax. + + + Gets the type syntax. + + + Gets the attribute declaration list. + + + Gets the modifier list. + + + Gets the attribute declaration list. + + + Gets the modifier list. + + + Gets the attribute declaration list. + + + Gets the modifier list. + + + Base type for method declaration syntax. + + + Gets the attribute declaration list. + + + Gets the modifier list. + + + Gets the parameter list. + + + Gets the optional semicolon token. + + + Method declaration syntax. + + + Gets the return type syntax. + + + Gets the identifier. + + + Gets the constraint clause list. + + + Gets the optional semicolon token. + + + Operator declaration syntax. + + + Gets the return type. + + + Gets the "operator" keyword. + + + Gets the operator token. + + + Conversion operator declaration syntax. + + + Gets the "implicit" or "explicit" token. + + + Gets the "operator" token. + + + Gets the type. + + + Gets the optional semicolon token. + + + Constructor declaration syntax. + + + Gets the identifier. + + + Gets the optional semicolon token. + + + Constructor initializer syntax. + + + Gets the colon token. + + + Gets the "this" or "base" keyword. + + + Destructor declaration syntax. + + + Gets the tilde token. + + + Gets the identifier. + + + Gets the optional semicolon token. + + + Base type for property declaration syntax. + + + Gets the attribute declaration list. + + + Gets the modifier list. + + + Gets the type syntax. + + + Gets the optional explicit interface specifier. + + + Gets the identifier. + + + The syntax for the expression body of an expression-bodied member. + + + Gets the identifier. + + + Gets the parameter list. + + + Gets the attribute declaration list. + + + Gets the modifier list. + + + Gets the keyword token, or identifier if an erroneous accessor declaration. + + + Gets the optional body block which may be empty, but it is null if there are no braces. + + + Gets the optional semicolon token. + + + Base type for parameter list syntax. + + + Gets the parameter list. + + + Parameter list syntax. + + + Gets the open paren token. + + + Gets the close paren token. + + + Parameter list syntax with surrounding brackets. + + + Gets the open bracket token. + + + Gets the close bracket token. + + + Parameter syntax. + + + Gets the attribute declaration list. + + + Gets the modifier list. + + + Gets the identifier. + + + Gets the attribute declaration list. + + + Gets the modifier list. + + + + A symbol referenced by a cref attribute (e.g. in a <see> or <seealso> documentation comment tag). + For example, the M in <see cref="M" />. + + + + + A symbol reference that definitely refers to a type. + For example, "int", "A::B", "A.B", "A<T>", but not "M()" (has parameter list) or "this" (indexer). + NOTE: TypeCrefSyntax, QualifiedCrefSyntax, and MemberCrefSyntax overlap. The syntax in a TypeCrefSyntax + will always be bound as type, so it's safer to use QualifiedCrefSyntax or MemberCrefSyntax if the symbol + might be a non-type member. + + + + + A symbol reference to a type or non-type member that is qualified by an enclosing type or namespace. + For example, cref="System.String.ToString()". + NOTE: TypeCrefSyntax, QualifiedCrefSyntax, and MemberCrefSyntax overlap. The syntax in a TypeCrefSyntax + will always be bound as type, so it's safer to use QualifiedCrefSyntax or MemberCrefSyntax if the symbol + might be a non-type member. + + + + + The unqualified part of a CrefSyntax. + For example, "ToString()" in "object.ToString()". + NOTE: TypeCrefSyntax, QualifiedCrefSyntax, and MemberCrefSyntax overlap. The syntax in a TypeCrefSyntax + will always be bound as type, so it's safer to use QualifiedCrefSyntax or MemberCrefSyntax if the symbol + might be a non-type member. + + + + + A MemberCrefSyntax specified by a name (an identifier, predefined type keyword, or an alias-qualified name, + with an optional type parameter list) and an optional parameter list. + For example, "M", "M<T>" or "M(int)". + Also, "A::B()" or "string()". + + + + + A MemberCrefSyntax specified by a this keyword and an optional parameter list. + For example, "this" or "this[int]". + + + + + A MemberCrefSyntax specified by an operator keyword, an operator symbol and an optional parameter list. + For example, "operator +" or "operator -[int]". + NOTE: the operator must be overloadable. + + + + Gets the operator token. + + + + A MemberCrefSyntax specified by an implicit or explicit keyword, an operator keyword, a destination type, and an optional parameter list. + For example, "implicit operator int" or "explicit operator MyType(int)". + + + + + A list of cref parameters with surrounding punctuation. + Unlike regular parameters, cref parameters do not have names. + + + + Gets the parameter list. + + + + A parenthesized list of cref parameters. + + + + Gets the open paren token. + + + Gets the close paren token. + + + + A bracketed list of cref parameters. + + + + Gets the open bracket token. + + + Gets the close bracket token. + + + + An element of a BaseCrefParameterListSyntax. + Unlike a regular parameter, a cref parameter has only an optional ref or out keyword and a type - + there is no name and there are no attributes or other modifiers. + + + + Class which represents the syntax node for alias qualified name. + + + IdentifierNameSyntax node representing the name of the alias + + + SyntaxToken representing colon colon. + + + SimpleNameSyntax node representing the name that is being alias qualified. + + + Attribute syntax. + + + + Return the name used in syntax for the attribute. This is typically the class + name without the "Attribute" suffix. (For certain diagnostics, the native + compiler uses the attribute name from syntax rather than the class name.) + + + + Gets the name. + + + Class representing what language construct an attribute targets. + + + Gets the identifier. + + + Gets the colon token. + + + + Returns #r directives specified in the compilation. + + + + + Returns #load directives specified in the compilation. + + + + Gets the attribute declaration list. + + + + Adds C# specific parts to the line directive map. + + + + Gets the modifier list. + + + Delegate declaration syntax. + + + Gets the attribute declaration list. + + + Gets the modifier list. + + + Gets the "delegate" keyword. + + + Gets the return type. + + + Gets the identifier. + + + Gets the parameter list. + + + Gets the constraint clause list. + + + Gets the semicolon token. + + + + Returns true if the property is allowed by the rules of the + language to be an arbitrary expression, not just a statement expression. + + + True if, for example, this expression statement represents the last expression statement + of the interactive top-level code. + + + + Class which represents the syntax node for generic name. + + + SyntaxToken representing the name of the identifier of the generic name. + + + TypeArgumentListSyntax node representing the list of type arguments of the generic name. + + + Class which represents the syntax node for identifier name. + + + SyntaxToken representing the keyword for the kind of the identifier name. + + + Gets the identifier. + + + Class which represents the syntax node for anonymous method expression. + + + Gets the "async" token. + + + SyntaxToken representing the delegate keyword. + + + List of parameters of the anonymous method expression, or null if there no parameters are specified. + + + BlockSyntax node representing the body of the anonymous method. + + + + This class contains a variety of helper methods for determining whether a + position is within the scope (and not just the span) of a node. In general, + general, the scope extends from the first token up to, but not including, + the last token. For example, the open brace of a block is within the scope + of the block, but the close brace is not. + + + + + A position is considered to be inside a block if it is on or after + the open brace and strictly before the close brace. + + + + + A position is inside a property body only if it is inside an expression body. + All block bodies for properties are part of the accessor declaration (a type + of BaseMethodDeclaration), not the property declaration. + + + + + A position is inside a property body only if it is inside an expression body. + All block bodies for properties are part of the accessor declaration (a type + of BaseMethodDeclaration), not the property declaration. + + + + + A position is inside a body if it is inside the block or expression + body. + + A position is considered to be inside a block if it is on or after + the open brace and strictly before the close brace. A position is + considered to be inside an expression body if it is on or after + the '=>' and strictly before the semicolon. + + + + + Returns true if position is within the given node and before the first excluded token. + + + + + Used to determine whether it would be appropriate to use the binder for the statement (if any). + Not used to determine whether the position is syntactically within the statement. + + + + + Used to determine whether it would be appropriate to use the binder for the statement (if any). + Not used to determine whether the position is syntactically within the statement. + + + + + Used to determine whether it would be appropriate to use the binder for the statement (if any). + Not used to determine whether the position is syntactically within the statement. + + + + Gets the parameter list. + + + Method declaration syntax. + + + Gets the return type syntax. + + + Gets the identifier. + + + Gets the constraint clause list. + + + Gets the optional semicolon token. + + + Gets the optional semicolon token. + + + Provides the base class from which the classes that represent name syntax nodes are derived. This is an abstract class. + + + + Returns the unqualified (right-most) part of a qualified or alias-qualified name, or the name itself if already unqualified. + + The unqualified (right-most) part of a qualified or alias-qualified name, or the name itself if already unqualified. + If called on an instance of returns the value of the property. + If called on an instance of returns the value of the property. + If called on an instance of returns the instance itself. + + + + + Return the name in string form, without trivia or generic arguments, for use in diagnostics. + + + + + This inspection is entirely syntactic. We are not trying to find the alias corresponding to the assembly symbol + containing the explicitly implemented interface symbol - there may be more than one. We just want to know + how the name was qualified in source so that we can make a similar qualification (for uniqueness purposes). + + + + Parameter list syntax. + + + Gets the open paren token. + + + Gets the close paren token. + + + Parameter syntax. + + + Gets the attribute declaration list. + + + Gets the modifier list. + + + Gets the identifier. + + + Class which represents the syntax node for qualified name. + + + NameSyntax node representing the name on the left side of the dot token of the qualified name. + + + SyntaxToken representing the dot. + + + SimpleNameSyntax node representing the name on the right side of the dot token of the qualified name. + + + Provides the base class from which the classes that represent simple name syntax nodes are derived. This is an abstract class. + + + SyntaxToken representing the identifier of the simple name. + + + + It's a non terminal Trivia CSharpSyntaxNode that has a tree underneath it. + + + + + Get parent trivia. + + + + + Returns whether the specified token is also the end of the line. This will + be true for , , + and all preprocessor directives. + + + + Base class for type declaration syntax (class, struct, interface). + + + Gets the type keyword token ("class", "struct", "interface"). + + + Gets the type constraint list. + + + Gets the member declarations. + + + Provides the base class from which the classes that represent type syntax nodes are derived. This is an abstract class. + + + Class which represents the syntax node for type argument list. + + + SyntaxToken representing less than. + + + SeparatedSyntaxList of TypeSyntax node representing the type arguments. + + + SyntaxToken representing greater than. + + + Class which represents the syntax node for predefined types. + + + SyntaxToken which represents the keyword corresponding to the predefined type. + + + Class which represents the syntax node for the array type. + + + TypeSyntax node representing the type of the element of the array. + + + SyntaxList of ArrayRankSpecifierSyntax nodes representing the list of rank specifiers for the array. + + + Class which represents the syntax node for pointer type. + + + TypeSyntax node that represents the element type of the pointer. + + + SyntaxToken representing the asterisk. + + + Class which represents the syntax node for a nullable type. + + + TypeSyntax node representing the type of the element. + + + SyntaxToken representing the question mark. + + + Class which represents a placeholder in the type argument list of an unbound generic type. + + + SyntaxToken representing the omitted type argument. + + + Provides the base class from which the classes that represent expression syntax nodes are derived. This is an abstract class. + + + Class which represents the syntax node for parenthesized expression. + + + SyntaxToken representing the open parenthesis. + + + ExpressionSyntax node representing the expression enclosed within the parenthesis. + + + SyntaxToken representing the close parenthesis. + + + Class which represents the syntax node for prefix unary expression. + + + SyntaxToken representing the kind of the operator of the prefix unary expression. + + + ExpressionSyntax representing the operand of the prefix unary expression. + + + Class which represents the syntax node for an "await" expression. + + + SyntaxToken representing the kind "await" keyword. + + + ExpressionSyntax representing the operand of the "await" operator. + + + Class which represents the syntax node for postfix unary expression. + + + ExpressionSyntax representing the operand of the postfix unary expression. + + + SyntaxToken representing the kind of the operator of the postfix unary expression. + + + Class which represents the syntax node for member access expression. + + + ExpressionSyntax node representing the object that the member belongs to. + + + SyntaxToken representing the kind of the operator in the member access expression. + + + SimpleNameSyntax node representing the member being accessed. + + + Class which represents the syntax node for conditional access expression. + + + ExpressionSyntax node representing the object conditionally accessed. + + + SyntaxToken representing the question mark. + + + ExpressionSyntax node representing the access expression to be executed when the object is not null. + + + Class which represents the syntax node for member binding expression. + + + SyntaxToken representing dot. + + + SimpleNameSyntax node representing the member being bound to. + + + Class which represents the syntax node for element binding expression. + + + BracketedArgumentListSyntax node representing the list of arguments of the element binding expression. + + + Class which represents the syntax node for implicit element access expression. + + + BracketedArgumentListSyntax node representing the list of arguments of the implicit element access expression. + + + Class which represents an expression that has a binary operator. + + + ExpressionSyntax node representing the expression on the left of the binary operator. + + + SyntaxToken representing the operator of the binary expression. + + + ExpressionSyntax node representing the expression on the right of the binary operator. + + + Class which represents an expression that has an assignment operator. + + + ExpressionSyntax node representing the expression on the left of the assignment operator. + + + SyntaxToken representing the operator of the assignment expression. + + + ExpressionSyntax node representing the expression on the right of the assignment operator. + + + Class which represents the syntax node for conditional expression. + + + ExpressionSyntax node representing the condition of the conditional expression. + + + SyntaxToken representing the question mark. + + + ExpressionSyntax node representing the expression to be executed when the condition is true. + + + SyntaxToken representing the colon. + + + ExpressionSyntax node representing the expression to be executed when the condition is false. + + + Provides the base class from which the classes that represent instance expression syntax nodes are derived. This is an abstract class. + + + Class which represents the syntax node for a this expression. + + + SyntaxToken representing the this keyword. + + + Class which represents the syntax node for a base expression. + + + SyntaxToken representing the base keyword. + + + Class which represents the syntax node for a literal expression. + + + SyntaxToken representing the keyword corresponding to the kind of the literal expression. + + + Class which represents the syntax node for MakeRef expression. + + + SyntaxToken representing the MakeRefKeyword. + + + SyntaxToken representing open parenthesis. + + + Argument of the primary function. + + + SyntaxToken representing close parenthesis. + + + Class which represents the syntax node for RefType expression. + + + SyntaxToken representing the RefTypeKeyword. + + + SyntaxToken representing open parenthesis. + + + Argument of the primary function. + + + SyntaxToken representing close parenthesis. + + + Class which represents the syntax node for RefValue expression. + + + SyntaxToken representing the RefValueKeyword. + + + SyntaxToken representing open parenthesis. + + + Typed reference expression. + + + Comma separating the arguments. + + + The type of the value. + + + SyntaxToken representing close parenthesis. + + + Class which represents the syntax node for Checked or Unchecked expression. + + + SyntaxToken representing the checked or unchecked keyword. + + + SyntaxToken representing open parenthesis. + + + Argument of the primary function. + + + SyntaxToken representing close parenthesis. + + + Class which represents the syntax node for Default expression. + + + SyntaxToken representing the DefaultKeyword. + + + SyntaxToken representing open parenthesis. + + + Argument of the primary function. + + + SyntaxToken representing close parenthesis. + + + Class which represents the syntax node for TypeOf expression. + + + SyntaxToken representing the TypeOfKeyword. + + + SyntaxToken representing open parenthesis. + + + The expression to return type of. + + + SyntaxToken representing close parenthesis. + + + Class which represents the syntax node for SizeOf expression. + + + SyntaxToken representing the SizeOfKeyword. + + + SyntaxToken representing open parenthesis. + + + Argument of the primary function. + + + SyntaxToken representing close parenthesis. + + + Class which represents the syntax node for invocation expression. + + + ExpressionSyntax node representing the expression part of the invocation. + + + ArgumentListSyntax node representing the list of arguments of the invocation expression. + + + Class which represents the syntax node for element access expression. + + + ExpressionSyntax node representing the expression which is accessing the element. + + + BracketedArgumentListSyntax node representing the list of arguments of the element access expression. + + + Provides the base class from which the classes that represent argument list syntax nodes are derived. This is an abstract class. + + + SeparatedSyntaxList of ArgumentSyntax nodes representing the list of arguments. + + + Class which represents the syntax node for the list of arguments. + + + SyntaxToken representing open parenthesis. + + + SeparatedSyntaxList of ArgumentSyntax representing the list of arguments. + + + SyntaxToken representing close parenthesis. + + + Class which represents the syntax node for bracketed argument list. + + + SyntaxToken representing open bracket. + + + SeparatedSyntaxList of ArgumentSyntax representing the list of arguments. + + + SyntaxToken representing close bracket. + + + Class which represents the syntax node for argument. + + + NameColonSyntax node representing the optional name arguments. + + + SyntaxToken representing the optional ref or out keyword. + + + ExpressionSyntax node representing the argument. + + + Class which represents the syntax node for name colon syntax. + + + IdentifierNameSyntax representing the identifier name. + + + SyntaxToken representing colon. + + + Class which represents the syntax node for cast expression. + + + SyntaxToken representing the open parenthesis. + + + TypeSyntax node representing the type the expression is being casted to. + + + SyntaxToken representing the close parenthesis. + + + ExpressionSyntax node representing the expression that is being casted. + + + Provides the base class from which the classes that represent anonymous function expressions are derived. + + + Gets the "async" token. + + + ExpressionSyntax or BlockSyntax representing the body of the lambda expression. + + + Provides the base class from which the classes that represent lambda expressions are derived. + + + SyntaxToken representing equals greater than. + + + Class which represents the syntax node for a simple lambda expression. + + + Gets the "async" token. + + + ParameterSyntax node representing the parameter of the lambda expression. + + + SyntaxToken representing equals greater than. + + + SyntaxNode representing the body of the lambda expression. + + + Class which represents the syntax node for parenthesized lambda expression. + + + Gets the "async" token. + + + ParameterListSyntax node representing the list of parameters for the lambda expression. + + + SyntaxToken representing equals greater than. + + + SyntaxNode representing the body of the lambda expression. + + + Class which represents the syntax node for initializer expression. + + + SyntaxToken representing the open brace. + + + SeparatedSyntaxList of ExpressionSyntax representing the list of expressions in the initializer expression. + + + SyntaxToken representing the close brace. + + + Class which represents the syntax node for object creation expression. + + + SyntaxToken representing the new keyword. + + + TypeSyntax representing the type of the object being created. + + + ArgumentListSyntax representing the list of arguments passed as part of the object creation expression. + + + InitializerExpressionSyntax representing the initializer expression for the object being created. + + + NameEqualsSyntax representing the optional name of the member being initialized. + + + ExpressionSyntax representing the value the member is initialized with. + + + Class which represents the syntax node for anonymous object creation expression. + + + SyntaxToken representing the new keyword. + + + SyntaxToken representing the open brace. + + + SeparatedSyntaxList of AnonymousObjectMemberDeclaratorSyntax representing the list of object member initializers. + + + SyntaxToken representing the close brace. + + + Class which represents the syntax node for array creation expression. + + + SyntaxToken representing the new keyword. + + + ArrayTypeSyntax node representing the type of the array. + + + InitializerExpressionSyntax node representing the initializer of the array creation expression. + + + Class which represents the syntax node for implicit array creation expression. + + + SyntaxToken representing the new keyword. + + + SyntaxToken representing the open bracket. + + + SyntaxList of SyntaxToken representing the commas in the implicit array creation expression. + + + SyntaxToken representing the close bracket. + + + InitializerExpressionSyntax representing the initializer expression of the implicit array creation expression. + + + Class which represents the syntax node for stackalloc array creation expression. + + + SyntaxToken representing the stackalloc keyword. + + + TypeSyntax node representing the type of the stackalloc array. + + + Gets the identifier. + + + Gets the identifier. + + + Gets the identifier. + + + Gets the identifier. + + + Gets the identifier. + + + Class which represents a placeholder in an array size list. + + + SyntaxToken representing the omitted array size expression. + + + The first part of an interpolated string, $" or $@" + + + List of parts of the interpolated string, each one is either a literal part or an interpolation. + + + The closing quote of the interpolated string. + + + The text contents of a part of the interpolated string. + + + The text contents of the format specifier for an interpolation. + + + Represents the base class for all statements syntax classes. + + + Gets the identifier. + + + Represents a labeled statement syntax. + + + Gets the identifier. + + + Gets a SyntaxToken that represents the colon succeeding the statement's label. + + + + Represents a goto statement syntax + + + + + Gets a SyntaxToken that represents the goto keyword. + + + + + Gets a SyntaxToken that represents the case or default keywords if any exists. + + + + + Gets a constant expression for a goto case statement. + + + + + Gets a SyntaxToken that represents the semi-colon at the end of the statement. + + + + Gets the identifier. + + + + Represents an if statement syntax. + + + + + Gets a SyntaxToken that represents the if keyword. + + + + + Gets a SyntaxToken that represents the open parenthesis before the if statement's condition expression. + + + + + Gets an ExpressionSyntax that represents the condition of the if statement. + + + + + Gets a SyntaxToken that represents the close parenthesis after the if statement's condition expression. + + + + + Gets a StatementSyntax the represents the statement to be executed when the condition is true. + + + + + Gets an ElseClauseSyntax that represents the statement to be executed when the condition is false if such statement exists. + + + + Represents an else statement syntax. + + + + Gets a syntax token + + + + Represents a switch statement syntax. + + + + Gets a SyntaxToken that represents the switch keyword. + + + + + Gets a SyntaxToken that represents the open parenthesis preceding the switch expression. + + + + + Gets an ExpressionSyntax representing the expression of the switch statement. + + + + + Gets a SyntaxToken that represents the close parenthesis succeeding the switch expression. + + + + + Gets a SyntaxToken that represents the open braces preceding the switch sections. + + + + + Gets a SyntaxList of SwitchSectionSyntax's that represents the switch sections of the switch statement. + + + + + Gets a SyntaxToken that represents the open braces succeeding the switch sections. + + + + Represents a switch section syntax of a switch statement. + + + + Gets a SyntaxList of SwitchLabelSyntax's the represents the possible labels that control can transfer to within the section. + + + + + Gets a SyntaxList of StatementSyntax's the represents the statements to be executed when control transfer to a label the belongs to the section. + + + + Represents a switch label within a switch statement. + + + + Gets a SyntaxToken that represents a case or default keywords that belongs to a switch label. + + + + + Gets a SyntaxToken that represents the colon that terminates the switch label. + + + + Represents a case label within a switch statement. + + + Gets the case keyword token. + + + + Gets an ExpressionSyntax that represents the constant expression that gets matched for the case label. + + + + Represents a default label within a switch statement. + + + Gets the default keyword token. + + + + Represents an ExternAlias directive syntax, e.g. "extern alias MyAlias;" with specifying "/r:MyAlias=SomeAssembly.dll " on the compiler command line. + + + + SyntaxToken representing the extern keyword. + + + SyntaxToken representing the alias keyword. + + + Gets the identifier. + + + SyntaxToken representing the semicolon token. + + + Member declaration syntax. + + + Class representing one or more attributes applied to a language construct. + + + Gets the open bracket token. + + + Gets the optional construct targeted by the attribute. + + + Gets the attribute declaration list. + + + Gets the close bracket token. + + + Attribute argument list syntax. + + + Gets the open paren token. + + + Gets the arguments syntax list. + + + Gets the close paren token. + + + Attribute argument syntax. + + + Gets the expression. + + + Class representing an identifier name followed by an equals token. + + + Gets the identifier name. + + + Type parameter list syntax. + + + Gets the < token. + + + Gets the parameter list. + + + Gets the > token. + + + Type parameter syntax. + + + Gets the attribute declaration list. + + + Gets the identifier. + + + Base class for type declaration syntax. + + + Gets the attribute declaration list. + + + Gets the modifier list. + + + Gets the identifier. + + + Gets the base type list. + + + Gets the open brace token. + + + Gets the close brace token. + + + Gets the optional semicolon token. + + + Class type declaration syntax. + + + Gets the class keyword token. + + + Struct type declaration syntax. + + + Gets the struct keyword token. + + + Interface type declaration syntax. + + + Gets the interface keyword token. + + + Enum type declaration syntax. + + + Gets the enum keyword token. + + + Gets the members declaration list. + + + Gets the optional semicolon token. + + + Gets the attribute declaration list. + + + Gets the identifier. + + + Base list syntax. + + + Gets the colon token. + + + Gets the base type references. + + + Provides the base class from which the classes that represent base type syntax nodes are derived. This is an abstract class. + + + Type parameter constraint clause. + + + Gets the identifier. + + + Gets the colon token. + + + Gets the constraints list. + + + Base type for type parameter constraint syntax. + + + Constructor constraint syntax. + + + Gets the "new" keyword. + + + Gets the open paren keyword. + + + Gets the close paren keyword. + + + Base type for class or struct constraint syntax. + + + Gets the constraint keyword ("class" or "struct"). + + + Type constraint syntax. + + + Gets the type syntax. + + + Gets the attribute declaration list. + + + Gets the modifier list. + + + Gets the attribute declaration list. + + + Gets the modifier list. + + + Gets the attribute declaration list. + + + Gets the modifier list. + + + Base type for method declaration syntax. + + + Gets the attribute declaration list. + + + Gets the modifier list. + + + Gets the parameter list. + + + Gets the optional semicolon token. + + + Operator declaration syntax. + + + Gets the return type. + + + Gets the "operator" keyword. + + + Gets the operator token. + + + Conversion operator declaration syntax. + + + Gets the "implicit" or "explicit" token. + + + Gets the "operator" token. + + + Gets the type. + + + Gets the optional semicolon token. + + + Constructor declaration syntax. + + + Gets the identifier. + + + Gets the optional semicolon token. + + + Constructor initializer syntax. + + + Gets the colon token. + + + Gets the "this" or "base" keyword. + + + Destructor declaration syntax. + + + Gets the tilde token. + + + Gets the identifier. + + + Gets the optional semicolon token. + + + Base type for property declaration syntax. + + + Gets the attribute declaration list. + + + Gets the modifier list. + + + Gets the type syntax. + + + Gets the optional explicit interface specifier. + + + The syntax for the expression body of an expression-bodied member. + + + Gets the identifier. + + + Gets the attribute declaration list. + + + Gets the modifier list. + + + Gets the keyword token, or identifier if an erroneous accessor declaration. + + + Gets the optional body block which may be empty, but it is null if there are no braces. + + + Gets the optional semicolon token. + + + Base type for parameter list syntax. + + + Gets the parameter list. + + + Parameter list syntax with surrounding brackets. + + + Gets the open bracket token. + + + Gets the close bracket token. + + + Gets the attribute declaration list. + + + Gets the modifier list. + + + + A symbol referenced by a cref attribute (e.g. in a <see> or <seealso> documentation comment tag). + For example, the M in <see cref="M" />. + + + + + A symbol reference that definitely refers to a type. + For example, "int", "A::B", "A.B", "A<T>", but not "M()" (has parameter list) or "this" (indexer). + NOTE: TypeCrefSyntax, QualifiedCrefSyntax, and MemberCrefSyntax overlap. The syntax in a TypeCrefSyntax + will always be bound as type, so it's safer to use QualifiedCrefSyntax or MemberCrefSyntax if the symbol + might be a non-type member. + + + + + A symbol reference to a type or non-type member that is qualified by an enclosing type or namespace. + For example, cref="System.String.ToString()". + NOTE: TypeCrefSyntax, QualifiedCrefSyntax, and MemberCrefSyntax overlap. The syntax in a TypeCrefSyntax + will always be bound as type, so it's safer to use QualifiedCrefSyntax or MemberCrefSyntax if the symbol + might be a non-type member. + + + + + The unqualified part of a CrefSyntax. + For example, "ToString()" in "object.ToString()". + NOTE: TypeCrefSyntax, QualifiedCrefSyntax, and MemberCrefSyntax overlap. The syntax in a TypeCrefSyntax + will always be bound as type, so it's safer to use QualifiedCrefSyntax or MemberCrefSyntax if the symbol + might be a non-type member. + + + + + A MemberCrefSyntax specified by a name (an identifier, predefined type keyword, or an alias-qualified name, + with an optional type parameter list) and an optional parameter list. + For example, "M", "M<T>" or "M(int)". + Also, "A::B()" or "string()". + + + + + A MemberCrefSyntax specified by a this keyword and an optional parameter list. + For example, "this" or "this[int]". + + + + + A MemberCrefSyntax specified by an operator keyword, an operator symbol and an optional parameter list. + For example, "operator +" or "operator -[int]". + NOTE: the operator must be overloadable. + + + + Gets the operator token. + + + + A MemberCrefSyntax specified by an implicit or explicit keyword, an operator keyword, a destination type, and an optional parameter list. + For example, "implicit operator int" or "explicit operator MyType(int)". + + + + + A list of cref parameters with surrounding punctuation. + Unlike regular parameters, cref parameters do not have names. + + + + Gets the parameter list. + + + + A parenthesized list of cref parameters. + + + + Gets the open paren token. + + + Gets the close paren token. + + + + A bracketed list of cref parameters. + + + + Gets the open bracket token. + + + Gets the close bracket token. + + + + An element of a BaseCrefParameterListSyntax. + Unlike a regular parameter, a cref parameter has only an optional ref or out keyword and a type - + there is no name and there are no attributes or other modifiers. + + + + + Defines a set of methods to determine how Unicode characters are treated by the C# compiler. + + + + + Returns true if the Unicode character is a hexadecimal digit. + + The Unicode character. + true if the character is a hexadecimal digit 0-9, A-F, a-f. + + + + Returns true if the Unicode character is a decimal digit. + + The Unicode character. + true if the Unicode character is a decimal digit. + + + + Returns the value of a hexadecimal Unicode character. + + The Unicode character. + + + + Returns the value of a decimal Unicode character. + + The Unicode character. + + + + Returns true if the Unicode character represents a whitespace. + + The Unicode character. + + + + Returns true if the Unicode character is a newline character. + + The Unicode character. + + + + Returns true if the Unicode character can be the starting character of a C# identifier. + + The Unicode character. + + + + Returns true if the Unicode character can be a part of a C# identifier. + + The Unicode character. + + + + Check that the name is a valid identifier. + + + + + Spec section 2.4.2 says that identifiers are compared without regard + to leading "@" characters or unicode formatting characters. As in dev10, + this is actually accomplished by dropping such characters during parsing. + Unfortunately, metadata names can still contain these characters and will + not be referenceable from source if they do (lookup will fail since the + characters will have been dropped from the search string). + See DevDiv #14432 for more. + + + + + A custom equality comparer for + + + PERF: The framework specializes EqualityComparer for enums, but only if the underlying type is System.Int32 + Since SyntaxKind's underlying type is System.UInt16, ObjectEqualityComparer will be chosen instead. + + + + + Some preprocessor keywords are only keywords when they appear after a + hash sign (#). For these keywords, the lexer will produce tokens with + Kind = SyntaxKind.IdentifierToken and ContextualKind set to the keyword + SyntaxKind. + + + This wrinkle is specifically not publicly exposed. + + + + + Member declarations that can appear in global code (other than type declarations). + + + + + Returns true if the node is the alias of an AliasQualifiedNameSyntax + + + + + Returns true if the node is the object of an invocation expression. + + + + + Returns true if the node is the object of an element access expression. + + + + + Returns true if the node is in a tree location that is expected to be a type + + + + + + + Returns true if a node is in a tree location that is expected to be either a namespace or type + + + + + + + Is the node the name of a named argument of an invocation, object creation expression, + constructor initializer, or element access, but not an attribute. + + + + + Is the expression the initializer in a fixed statement? + + + + + Displays a value in the C# style. + + + Separate from because we want to link this functionality into + the Formatter project and we don't want it to be public there. + + + + + + Returns a string representation of an object of primitive type. + + A value to display as a string. + Options used to customize formatting of an object value. + A string representation of an object of primitive type (or null if the type is not supported). + + Handles , , , + , , , , , + , , , , , + and null. + + + + + Returns true if the character should be replaced and sets + to the replacement text if the + character is replaced with text other than the Unicode escape sequence. + + + + + Returns a C# string literal with the given value. + + The value that the resulting string literal should have. + Options used to customize formatting of an object value. + A string literal with the given value. + + Optionally escapes non-printable characters. + + + + + Returns a C# character literal with the given value. + + The value that the resulting character literal should have. + Options used to customize formatting of an object value. + A character literal with the given value. + + + + Displays a symbol in the C# style. + + + + + + Displays a symbol in the C# style, based on a . + + The symbol to be displayed. + The formatting options to apply. If null is passed, will be used. + A formatted string that can be displayed to the user. + + The return value is not expected to be syntactically valid C#. + + + + + Displays a symbol in the C# style, based on a . + Based on the context, qualify type and member names as little as possible without + introducing ambiguities. + + The symbol to be displayed. + Semantic information about the context in which the symbol is being displayed. + A position within the or . + The formatting options to apply. If null is passed, will be used. + A formatted string that can be displayed to the user. + + The return value is not expected to be syntactically valid C#. + + + + + Convert a symbol to an array of string parts, each of which has a kind. Useful for + colorizing the display string. + + The symbol to be displayed. + The formatting options to apply. If null is passed, will be used. + A list of display parts. + + Parts are not localized until they are converted to strings. + + + + + Convert a symbol to an array of string parts, each of which has a kind. Useful for + colorizing the display string. + + The symbol to be displayed. + Semantic information about the context in which the symbol is being displayed. + A position within the or . + The formatting options to apply. If null is passed, will be used. + A list of display parts. + + Parts are not localized until they are converted to strings. + + + + + Returns a string representation of an object of primitive type. + + A value to display as a string. + Whether or not to quote string literals. + Whether or not to display integral literals in hexadecimal. + A string representation of an object of primitive type (or null if the type is not supported). + + Handles , , , + , , , , , + , , , , , + and null. + + + + + Returns a C# string literal with the given value. + + The value that the resulting string literal should have. + True to put (double) quotes around the string literal. + A string literal with the given value. + + Escapes non-printable characters. + + + + + Returns a C# character literal with the given value. + + The value that the resulting character literal should have. + True to put (single) quotes around the character literal. + A character literal with the given value. + + Escapes non-printable characters. + + + + + Some error messages are particularly confusing if multiple placeholders are substituted + with the same string. For example, "cannot convert from 'Foo' to 'Foo'". Usually, this + occurs because there are two types in different contexts with the same qualified name. + The solution is to provide additional qualification on each symbol - either a source + location, an assembly path, or an assembly identity. + + + Performs the same function as ErrArgFlags::Unique in the native compiler. + + + + + Virtual dispatch based on a symbol's particular class. + + Additional argument type + Result type + + + + Call the correct VisitXXX method in this class based on the particular type of symbol that is passed in. + Return default(TResult) if symbol is null + + + + + The default Visit method called when visiting any and + if visiting specific symbol method VisitXXX is not overridden + + The visited symbol + Additional argument + + + + + Called when visiting an ; Override this method with + specific implementation; Calling default if it's not + overridden + + The visited symbol + Additional argument + + + + + Called when visiting a ; Override this method with specific + implementation; Calling default if it's not overridden + + The visited symbol + Additional argument + + + + + Called when visiting a ; Should override this method if + want to visit members of the namespace; Calling + and loop over each member; calling on it Or override this with + specific implementation; Calling if it's not + overridden + + The visited symbol + Additional argument + + + + + Called when visiting a ; Override this with specific + implementation; Calling if it's not overridden + + The visited symbol + Additional argument + + + + + Called when visiting an ; Override this with specific + implementation; Calling if it's not overridden + + The visited symbol + Additional argument + + + + + Called when visiting a ; Override this with specific + implementation; Calling if it's not overridden + + The visited symbol + Additional argument + + + + + Called when visiting an + Error symbol is created when there is compiler error; Override this with specific + implementation; Calling if it's not overridden + + The visited symbol + Additional argument + + + + + Called when visiting a ; Override this with specific + implementation; Calling if it's not overridden + + The visited symbol + Additional argument + + + + + Called when visiting a ; Override this with specific + implementation; Calling if it's not overridden + + The visited symbol + Additional argument + + + + + Called when visiting a ; Override this with specific + implementation; Calling default if it's not overridden + + The visited symbol + Additional argument + + + + + Called when visiting a ; Override this with specific + implementation; Calling default if it's not overridden + + The visited symbol + Additional argument + + + + + Called when visiting a ; Override this with specific + implementation; Calling default if it's not overridden + + The visited symbol + Additional argument + + + + + Called when visiting an ; Override this with specific + implementation; Calling default if it's not overridden + + The visited symbol + Additional argument + + + + + Called when visiting a ; Override this with specific + implementation; Calling default if it's not overridden + + The visited symbol + Additional argument + + + + + Called when visiting a ; Override this with specific + implementation; Calling default if it's not overridden + + The visited symbol + Additional argument + + + + + Called when visiting a ; Override this with specific + implementation; Calling default if it's not overridden + + The visited symbol + Additional argument + + + + + Called when visiting an ; Override this with specific + implementation; Calling default if it's not overridden + + The visited symbol + Additional argument + + + + + Called when visiting a ; Override this with specific + implementation; Calling default if it's not overridden + + The visited symbol + Additional argument + + + + + Returns the System.String that represents the current TypedConstant. + + A System.String that represents the current TypedConstant. + + + + Determine whether there is any substitution of type parameters that will + make two types identical. + + + + + Determine whether there is any substitution of type parameters that will + make two types identical. + + LHS + RHS + + Substitutions performed so far (or null for none). + Keys are type parameters, values are types (possibly type parameters). + Will be updated with new substitutions by the callee. + Should be ignored when false is returned. + + True if there exists a type map such that Map(LHS) == Map(RHS). + + Derived from Dev10's BSYMMGR::UnifyTypes. + Two types will not unify if they have different custom modifiers. + + + + + Return true if the given type contains the specified type parameter. + + + + + Represents a non-terminal node in the syntax tree. + + + + + Used by structured trivia which has "parent == null", and therefore must know its + SyntaxTree explicitly when created. + + + + + Creates a clone of a red node that can be used as a root of given syntaxTree. + New node has no parents, position == 0, and syntaxTree as specified. + + + + + Returns a non-null that owns this node. + If this node was created with an explicit non-null , returns that tree. + Otherwise, if this node has a non-null parent, then returns the parent's . + Otherwise, returns a newly created rooted at this node, preserving this node's reference identity. + + + + + The node that contains this node in its Children collection. + + + + + Returns the of the node. + + + + + The language name that this node is syntax of. + + + + + The list of trivia that appears before this node in the source code. + + + + + The list of trivia that appears after this node in the source code. + + + + + Returns the string representation of this node, not including its leading and trailing trivia. + + The string representation of this node, not including its leading and trailing trivia. + The length of the returned string is always the same as Span.Length + + + + Returns full string representation of this node including its leading and trailing trivia. + + The full string representation of this node including its leading and trailing trivia. + The length of the returned string is always the same as FullSpan.Length + + + + Writes the full text of this node to the specified TextWriter. + + + + + Serialize the syntax node into a byte stream. + + + + + Deserialize a syntax node from the byte stream. + + + + + Determines whether this node is structurally equivalent to another. + + + + + Gets a for this node. + + + + + Gets a SyntaxReference for this syntax node. SyntaxReferences can be used to + regain access to a syntax node without keeping the entire tree and source text in + memory. + + + + + Gets a list of all the diagnostics in the sub tree that has this node as its root. + This method does not filter diagnostics based on #pragmas and compiler options + like nowarn, warnaserror etc. + + + + + Gets the first directive of the tree rooted by this node. + + + + + Gets the last directive of the tree rooted by this node. + + + + + Returns child node or token that contains given position. + + + + + Gets the first token of the tree rooted by this node. + + True if zero width tokens should be included, false by + default. + True if skipped tokens should be included, false by default. + True if directives should be included, false by default. + True if documentation comments should be + included, false by default. + + + + + Gets the first token of the tree rooted by this node. + + Only tokens for which this predicate returns true are included. Pass null to include + all tokens. + Steps into trivia if this is not null. Only trivia for which this delegate returns + true are included. + + + + + Gets the last non-zero-width token of the tree rooted by this node. + + True if zero width tokens should be included, false by + default. + True if skipped tokens should be included, false by default. + True if directives should be included, false by default. + True if documentation comments should be + included, false by default. + + + + + Finds a token according to the following rules: + 1) If position matches the End of the node/s FullSpan and the node is CompilationUnit, + then EoF is returned. + + 2) If node.FullSpan.Contains(position) then the token that contains given position is + returned. + + 3) Otherwise an ArgumentOutOfRangeException is thrown + + + + + Finds a token according to the following rules: + 1) If position matches the End of the node/s FullSpan and the node is CompilationUnit, + then EoF is returned. + + 2) If node.FullSpan.Contains(position) then the token that contains given position is + returned. + + 3) Otherwise an ArgumentOutOfRangeException is thrown + + + + + Finds a descendant trivia of this node at the specified position, where the position is + within the span of the node. + + The character position of the trivia relative to the beginning of + the file. + Specifies a function that determines per trivia node, whether to + descend into structured trivia of that node. + + + + + Finds a descendant trivia of this node whose span includes the supplied position. + + The character position of the trivia relative to the beginning of + the file. + Whether to search inside structured trivia. + + + + Determine if this node is structurally equivalent to another. + + + + + + + Represents a which descends an entire graph and + may replace or remove visited SyntaxNodes in depth-first order. + + + + + The parsed representation of a C# source document. + + + + + The options used by the parser to produce the syntax tree. + + + + + Produces a clone of a which will have current syntax tree as its parent. + + Caller must guarantee that if the same instance of makes multiple calls + to this function, only one result is observable. + + Type of the syntax node. + The original syntax node. + A clone of the original syntax node that has current as its parent. + + + + Gets the root node of the syntax tree. + + + + + Gets the root node of the syntax tree if it is already available. + + + + + Gets the root node of the syntax tree asynchronously. + + + By default, the work associated with this method will be executed immediately on the current thread. + Implementations that wish to schedule this work differently should override . + + + + + Gets the root of the syntax tree statically typed as . + + + Ensure that is true for this tree prior to invoking this method. + + Throws this exception if is false. + + + + Determines if two trees are the same, disregarding trivia differences. + + The tree to compare against. + + If true then the trees are equivalent if the contained nodes and tokens declaring metadata visible symbolic information are equivalent, + ignoring any differences of nodes inside method bodies or initializer expressions, otherwise all nodes and tokens must be equivalent. + + + + + Stores positions where preprocessor state changes. Sorted by position. + The updated state can be found in array at the same index. + + + + + Preprocessor states corresponding to positions in . + + + + + Creates a new syntax tree from a syntax node. + + + + + Creates a new syntax tree from a syntax node with text that should correspond to the syntax node. + + This is used by the ExpressionEvaluator. + + + + + Internal helper for class to create a new syntax tree rooted at the given root node. + This method does not create a clone of the given root, but instead preserves it's reference identity. + + NOTE: This method is only intended to be used from property. + NOTE: Do not use this method elsewhere, instead use method for creating a syntax tree. + + + + + Produces a syntax tree by parsing the source text. + + + + + Produces a syntax tree by parsing the source text. + + + + + Creates a new syntax based off this tree using a new source text. + + + If the new source text is a minor change from the current source text an incremental parse will occur + reusing most of the current syntax tree internal data. Otherwise, a full parse will occur using the new + source text. + + + + + Produces a pessimistic list of spans that denote the regions of text in this tree that + are changed from the text of the old tree. + + The old tree. Cannot be null. + The list is pessimistic because it may claim more or larger regions than actually changed. + + + + Gets a list of text changes that when applied to the old tree produce this tree. + + The old tree. Cannot be null. + The list of changes may be different than the original changes that produced this tree. + + + + Gets the location in terms of path, line and column for a given span. + + Span within the tree. + Cancellation token. + + that contains path, line and column information. + + The values are not affected by line mapping directives (#line). + + + + Gets the location in terms of path, line and column after applying source line mapping directives (#line). + + Span within the tree. + Cancellation token. + + A valid that contains path, line and column information. + + If the location path is mapped the resulting path is the path specified in the corresponding #line, + otherwise it's . + + + A location path is considered mapped if the first #line directive that precedes it and that + either specifies an explicit file path or is #line default exists and specifies an explicit path. + + + + + + Gets a for a . FileLinePositionSpans are used + primarily for diagnostics and source locations. + + The source to convert. + When the method returns, contains a boolean value indicating whether this span is considered hidden or not. + A resulting . + + + + Gets a boolean value indicating whether there are any hidden regions in the tree. + + True if there is at least one hidden region. + + + + Given the error code and the source location, get the warning state based on #pragma warning directives. + + Error code. + Source location. + + + + Gets a for the specified text . + + + + + Gets a list of all the diagnostics in the sub tree that has the specified node as its root. + + + This method does not filter diagnostics based on #pragmas and compiler options + like /nowarn, /warnaserror etc. + + + + + Gets a list of all the diagnostics associated with the token and any related trivia. + + + This method does not filter diagnostics based on #pragmas and compiler options + like /nowarn, /warnaserror etc. + + + + + Gets a list of all the diagnostics associated with the trivia. + + + This method does not filter diagnostics based on #pragmas and compiler options + like /nowarn, /warnaserror etc. + + + + + Gets a list of all the diagnostics in either the sub tree that has the specified node as its root or + associated with the token and its related trivia. + + + This method does not filter diagnostics based on #pragmas and compiler options + like /nowarn, /warnaserror etc. + + + + + Gets a list of all the diagnostics in the syntax tree. + + + This method does not filter diagnostics based on #pragmas and compiler options + like /nowarn, /warnaserror etc. + + + + + Represents a visitor that visits only the single CSharpSyntaxNode + passed into its Visit method and produces + a value of the type specified by the parameter. + + + The type of the return value this visitor's Visit method. + + + + Called when the visitor visits a IdentifierNameSyntax node. + + + Called when the visitor visits a QualifiedNameSyntax node. + + + Called when the visitor visits a GenericNameSyntax node. + + + Called when the visitor visits a TypeArgumentListSyntax node. + + + Called when the visitor visits a AliasQualifiedNameSyntax node. + + + Called when the visitor visits a PredefinedTypeSyntax node. + + + Called when the visitor visits a ArrayTypeSyntax node. + + + Called when the visitor visits a ArrayRankSpecifierSyntax node. + + + Called when the visitor visits a PointerTypeSyntax node. + + + Called when the visitor visits a NullableTypeSyntax node. + + + Called when the visitor visits a OmittedTypeArgumentSyntax node. + + + Called when the visitor visits a ParenthesizedExpressionSyntax node. + + + Called when the visitor visits a PrefixUnaryExpressionSyntax node. + + + Called when the visitor visits a AwaitExpressionSyntax node. + + + Called when the visitor visits a PostfixUnaryExpressionSyntax node. + + + Called when the visitor visits a MemberAccessExpressionSyntax node. + + + Called when the visitor visits a ConditionalAccessExpressionSyntax node. + + + Called when the visitor visits a MemberBindingExpressionSyntax node. + + + Called when the visitor visits a ElementBindingExpressionSyntax node. + + + Called when the visitor visits a ImplicitElementAccessSyntax node. + + + Called when the visitor visits a BinaryExpressionSyntax node. + + + Called when the visitor visits a AssignmentExpressionSyntax node. + + + Called when the visitor visits a ConditionalExpressionSyntax node. + + + Called when the visitor visits a ThisExpressionSyntax node. + + + Called when the visitor visits a BaseExpressionSyntax node. + + + Called when the visitor visits a LiteralExpressionSyntax node. + + + Called when the visitor visits a MakeRefExpressionSyntax node. + + + Called when the visitor visits a RefTypeExpressionSyntax node. + + + Called when the visitor visits a RefValueExpressionSyntax node. + + + Called when the visitor visits a CheckedExpressionSyntax node. + + + Called when the visitor visits a DefaultExpressionSyntax node. + + + Called when the visitor visits a TypeOfExpressionSyntax node. + + + Called when the visitor visits a SizeOfExpressionSyntax node. + + + Called when the visitor visits a InvocationExpressionSyntax node. + + + Called when the visitor visits a ElementAccessExpressionSyntax node. + + + Called when the visitor visits a ArgumentListSyntax node. + + + Called when the visitor visits a BracketedArgumentListSyntax node. + + + Called when the visitor visits a ArgumentSyntax node. + + + Called when the visitor visits a NameColonSyntax node. + + + Called when the visitor visits a CastExpressionSyntax node. + + + Called when the visitor visits a AnonymousMethodExpressionSyntax node. + + + Called when the visitor visits a SimpleLambdaExpressionSyntax node. + + + Called when the visitor visits a ParenthesizedLambdaExpressionSyntax node. + + + Called when the visitor visits a InitializerExpressionSyntax node. + + + Called when the visitor visits a ObjectCreationExpressionSyntax node. + + + Called when the visitor visits a AnonymousObjectMemberDeclaratorSyntax node. + + + Called when the visitor visits a AnonymousObjectCreationExpressionSyntax node. + + + Called when the visitor visits a ArrayCreationExpressionSyntax node. + + + Called when the visitor visits a ImplicitArrayCreationExpressionSyntax node. + + + Called when the visitor visits a StackAllocArrayCreationExpressionSyntax node. + + + Called when the visitor visits a QueryExpressionSyntax node. + + + Called when the visitor visits a QueryBodySyntax node. + + + Called when the visitor visits a FromClauseSyntax node. + + + Called when the visitor visits a LetClauseSyntax node. + + + Called when the visitor visits a JoinClauseSyntax node. + + + Called when the visitor visits a JoinIntoClauseSyntax node. + + + Called when the visitor visits a WhereClauseSyntax node. + + + Called when the visitor visits a OrderByClauseSyntax node. + + + Called when the visitor visits a OrderingSyntax node. + + + Called when the visitor visits a SelectClauseSyntax node. + + + Called when the visitor visits a GroupClauseSyntax node. + + + Called when the visitor visits a QueryContinuationSyntax node. + + + Called when the visitor visits a OmittedArraySizeExpressionSyntax node. + + + Called when the visitor visits a InterpolatedStringExpressionSyntax node. + + + Called when the visitor visits a InterpolatedStringTextSyntax node. + + + Called when the visitor visits a InterpolationSyntax node. + + + Called when the visitor visits a InterpolationAlignmentClauseSyntax node. + + + Called when the visitor visits a InterpolationFormatClauseSyntax node. + + + Called when the visitor visits a GlobalStatementSyntax node. + + + Called when the visitor visits a BlockSyntax node. + + + Called when the visitor visits a LocalDeclarationStatementSyntax node. + + + Called when the visitor visits a VariableDeclarationSyntax node. + + + Called when the visitor visits a VariableDeclaratorSyntax node. + + + Called when the visitor visits a EqualsValueClauseSyntax node. + + + Called when the visitor visits a ExpressionStatementSyntax node. + + + Called when the visitor visits a EmptyStatementSyntax node. + + + Called when the visitor visits a LabeledStatementSyntax node. + + + Called when the visitor visits a GotoStatementSyntax node. + + + Called when the visitor visits a BreakStatementSyntax node. + + + Called when the visitor visits a ContinueStatementSyntax node. + + + Called when the visitor visits a ReturnStatementSyntax node. + + + Called when the visitor visits a ThrowStatementSyntax node. + + + Called when the visitor visits a YieldStatementSyntax node. + + + Called when the visitor visits a WhileStatementSyntax node. + + + Called when the visitor visits a DoStatementSyntax node. + + + Called when the visitor visits a ForStatementSyntax node. + + + Called when the visitor visits a ForEachStatementSyntax node. + + + Called when the visitor visits a UsingStatementSyntax node. + + + Called when the visitor visits a FixedStatementSyntax node. + + + Called when the visitor visits a CheckedStatementSyntax node. + + + Called when the visitor visits a UnsafeStatementSyntax node. + + + Called when the visitor visits a LockStatementSyntax node. + + + Called when the visitor visits a IfStatementSyntax node. + + + Called when the visitor visits a ElseClauseSyntax node. + + + Called when the visitor visits a SwitchStatementSyntax node. + + + Called when the visitor visits a SwitchSectionSyntax node. + + + Called when the visitor visits a CaseSwitchLabelSyntax node. + + + Called when the visitor visits a DefaultSwitchLabelSyntax node. + + + Called when the visitor visits a TryStatementSyntax node. + + + Called when the visitor visits a CatchClauseSyntax node. + + + Called when the visitor visits a CatchDeclarationSyntax node. + + + Called when the visitor visits a CatchFilterClauseSyntax node. + + + Called when the visitor visits a FinallyClauseSyntax node. + + + Called when the visitor visits a CompilationUnitSyntax node. + + + Called when the visitor visits a ExternAliasDirectiveSyntax node. + + + Called when the visitor visits a UsingDirectiveSyntax node. + + + Called when the visitor visits a NamespaceDeclarationSyntax node. + + + Called when the visitor visits a AttributeListSyntax node. + + + Called when the visitor visits a AttributeTargetSpecifierSyntax node. + + + Called when the visitor visits a AttributeSyntax node. + + + Called when the visitor visits a AttributeArgumentListSyntax node. + + + Called when the visitor visits a AttributeArgumentSyntax node. + + + Called when the visitor visits a NameEqualsSyntax node. + + + Called when the visitor visits a TypeParameterListSyntax node. + + + Called when the visitor visits a TypeParameterSyntax node. + + + Called when the visitor visits a ClassDeclarationSyntax node. + + + Called when the visitor visits a StructDeclarationSyntax node. + + + Called when the visitor visits a InterfaceDeclarationSyntax node. + + + Called when the visitor visits a EnumDeclarationSyntax node. + + + Called when the visitor visits a DelegateDeclarationSyntax node. + + + Called when the visitor visits a EnumMemberDeclarationSyntax node. + + + Called when the visitor visits a BaseListSyntax node. + + + Called when the visitor visits a SimpleBaseTypeSyntax node. + + + Called when the visitor visits a TypeParameterConstraintClauseSyntax node. + + + Called when the visitor visits a ConstructorConstraintSyntax node. + + + Called when the visitor visits a ClassOrStructConstraintSyntax node. + + + Called when the visitor visits a TypeConstraintSyntax node. + + + Called when the visitor visits a FieldDeclarationSyntax node. + + + Called when the visitor visits a EventFieldDeclarationSyntax node. + + + Called when the visitor visits a ExplicitInterfaceSpecifierSyntax node. + + + Called when the visitor visits a MethodDeclarationSyntax node. + + + Called when the visitor visits a OperatorDeclarationSyntax node. + + + Called when the visitor visits a ConversionOperatorDeclarationSyntax node. + + + Called when the visitor visits a ConstructorDeclarationSyntax node. + + + Called when the visitor visits a ConstructorInitializerSyntax node. + + + Called when the visitor visits a DestructorDeclarationSyntax node. + + + Called when the visitor visits a PropertyDeclarationSyntax node. + + + Called when the visitor visits a ArrowExpressionClauseSyntax node. + + + Called when the visitor visits a EventDeclarationSyntax node. + + + Called when the visitor visits a IndexerDeclarationSyntax node. + + + Called when the visitor visits a AccessorListSyntax node. + + + Called when the visitor visits a AccessorDeclarationSyntax node. + + + Called when the visitor visits a ParameterListSyntax node. + + + Called when the visitor visits a BracketedParameterListSyntax node. + + + Called when the visitor visits a ParameterSyntax node. + + + Called when the visitor visits a IncompleteMemberSyntax node. + + + Called when the visitor visits a SkippedTokensTriviaSyntax node. + + + Called when the visitor visits a DocumentationCommentTriviaSyntax node. + + + Called when the visitor visits a TypeCrefSyntax node. + + + Called when the visitor visits a QualifiedCrefSyntax node. + + + Called when the visitor visits a NameMemberCrefSyntax node. + + + Called when the visitor visits a IndexerMemberCrefSyntax node. + + + Called when the visitor visits a OperatorMemberCrefSyntax node. + + + Called when the visitor visits a ConversionOperatorMemberCrefSyntax node. + + + Called when the visitor visits a CrefParameterListSyntax node. + + + Called when the visitor visits a CrefBracketedParameterListSyntax node. + + + Called when the visitor visits a CrefParameterSyntax node. + + + Called when the visitor visits a XmlElementSyntax node. + + + Called when the visitor visits a XmlElementStartTagSyntax node. + + + Called when the visitor visits a XmlElementEndTagSyntax node. + + + Called when the visitor visits a XmlEmptyElementSyntax node. + + + Called when the visitor visits a XmlNameSyntax node. + + + Called when the visitor visits a XmlPrefixSyntax node. + + + Called when the visitor visits a XmlTextAttributeSyntax node. + + + Called when the visitor visits a XmlCrefAttributeSyntax node. + + + Called when the visitor visits a XmlNameAttributeSyntax node. + + + Called when the visitor visits a XmlTextSyntax node. + + + Called when the visitor visits a XmlCDataSectionSyntax node. + + + Called when the visitor visits a XmlProcessingInstructionSyntax node. + + + Called when the visitor visits a XmlCommentSyntax node. + + + Called when the visitor visits a IfDirectiveTriviaSyntax node. + + + Called when the visitor visits a ElifDirectiveTriviaSyntax node. + + + Called when the visitor visits a ElseDirectiveTriviaSyntax node. + + + Called when the visitor visits a EndIfDirectiveTriviaSyntax node. + + + Called when the visitor visits a RegionDirectiveTriviaSyntax node. + + + Called when the visitor visits a EndRegionDirectiveTriviaSyntax node. + + + Called when the visitor visits a ErrorDirectiveTriviaSyntax node. + + + Called when the visitor visits a WarningDirectiveTriviaSyntax node. + + + Called when the visitor visits a BadDirectiveTriviaSyntax node. + + + Called when the visitor visits a DefineDirectiveTriviaSyntax node. + + + Called when the visitor visits a UndefDirectiveTriviaSyntax node. + + + Called when the visitor visits a LineDirectiveTriviaSyntax node. + + + Called when the visitor visits a PragmaWarningDirectiveTriviaSyntax node. + + + Called when the visitor visits a PragmaChecksumDirectiveTriviaSyntax node. + + + Called when the visitor visits a ReferenceDirectiveTriviaSyntax node. + + + Called when the visitor visits a LoadDirectiveTriviaSyntax node. + + + Called when the visitor visits a ShebangDirectiveTriviaSyntax node. + + + + Represents a visitor that visits only the single CSharpSyntaxNode + passed into its Visit method. + + + + Called when the visitor visits a IdentifierNameSyntax node. + + + Called when the visitor visits a QualifiedNameSyntax node. + + + Called when the visitor visits a GenericNameSyntax node. + + + Called when the visitor visits a TypeArgumentListSyntax node. + + + Called when the visitor visits a AliasQualifiedNameSyntax node. + + + Called when the visitor visits a PredefinedTypeSyntax node. + + + Called when the visitor visits a ArrayTypeSyntax node. + + + Called when the visitor visits a ArrayRankSpecifierSyntax node. + + + Called when the visitor visits a PointerTypeSyntax node. + + + Called when the visitor visits a NullableTypeSyntax node. + + + Called when the visitor visits a OmittedTypeArgumentSyntax node. + + + Called when the visitor visits a ParenthesizedExpressionSyntax node. + + + Called when the visitor visits a PrefixUnaryExpressionSyntax node. + + + Called when the visitor visits a AwaitExpressionSyntax node. + + + Called when the visitor visits a PostfixUnaryExpressionSyntax node. + + + Called when the visitor visits a MemberAccessExpressionSyntax node. + + + Called when the visitor visits a ConditionalAccessExpressionSyntax node. + + + Called when the visitor visits a MemberBindingExpressionSyntax node. + + + Called when the visitor visits a ElementBindingExpressionSyntax node. + + + Called when the visitor visits a ImplicitElementAccessSyntax node. + + + Called when the visitor visits a BinaryExpressionSyntax node. + + + Called when the visitor visits a AssignmentExpressionSyntax node. + + + Called when the visitor visits a ConditionalExpressionSyntax node. + + + Called when the visitor visits a ThisExpressionSyntax node. + + + Called when the visitor visits a BaseExpressionSyntax node. + + + Called when the visitor visits a LiteralExpressionSyntax node. + + + Called when the visitor visits a MakeRefExpressionSyntax node. + + + Called when the visitor visits a RefTypeExpressionSyntax node. + + + Called when the visitor visits a RefValueExpressionSyntax node. + + + Called when the visitor visits a CheckedExpressionSyntax node. + + + Called when the visitor visits a DefaultExpressionSyntax node. + + + Called when the visitor visits a TypeOfExpressionSyntax node. + + + Called when the visitor visits a SizeOfExpressionSyntax node. + + + Called when the visitor visits a InvocationExpressionSyntax node. + + + Called when the visitor visits a ElementAccessExpressionSyntax node. + + + Called when the visitor visits a ArgumentListSyntax node. + + + Called when the visitor visits a BracketedArgumentListSyntax node. + + + Called when the visitor visits a ArgumentSyntax node. + + + Called when the visitor visits a NameColonSyntax node. + + + Called when the visitor visits a CastExpressionSyntax node. + + + Called when the visitor visits a AnonymousMethodExpressionSyntax node. + + + Called when the visitor visits a SimpleLambdaExpressionSyntax node. + + + Called when the visitor visits a ParenthesizedLambdaExpressionSyntax node. + + + Called when the visitor visits a InitializerExpressionSyntax node. + + + Called when the visitor visits a ObjectCreationExpressionSyntax node. + + + Called when the visitor visits a AnonymousObjectMemberDeclaratorSyntax node. + + + Called when the visitor visits a AnonymousObjectCreationExpressionSyntax node. + + + Called when the visitor visits a ArrayCreationExpressionSyntax node. + + + Called when the visitor visits a ImplicitArrayCreationExpressionSyntax node. + + + Called when the visitor visits a StackAllocArrayCreationExpressionSyntax node. + + + Called when the visitor visits a QueryExpressionSyntax node. + + + Called when the visitor visits a QueryBodySyntax node. + + + Called when the visitor visits a FromClauseSyntax node. + + + Called when the visitor visits a LetClauseSyntax node. + + + Called when the visitor visits a JoinClauseSyntax node. + + + Called when the visitor visits a JoinIntoClauseSyntax node. + + + Called when the visitor visits a WhereClauseSyntax node. + + + Called when the visitor visits a OrderByClauseSyntax node. + + + Called when the visitor visits a OrderingSyntax node. + + + Called when the visitor visits a SelectClauseSyntax node. + + + Called when the visitor visits a GroupClauseSyntax node. + + + Called when the visitor visits a QueryContinuationSyntax node. + + + Called when the visitor visits a OmittedArraySizeExpressionSyntax node. + + + Called when the visitor visits a InterpolatedStringExpressionSyntax node. + + + Called when the visitor visits a InterpolatedStringTextSyntax node. + + + Called when the visitor visits a InterpolationSyntax node. + + + Called when the visitor visits a InterpolationAlignmentClauseSyntax node. + + + Called when the visitor visits a InterpolationFormatClauseSyntax node. + + + Called when the visitor visits a GlobalStatementSyntax node. + + + Called when the visitor visits a BlockSyntax node. + + + Called when the visitor visits a LocalDeclarationStatementSyntax node. + + + Called when the visitor visits a VariableDeclarationSyntax node. + + + Called when the visitor visits a VariableDeclaratorSyntax node. + + + Called when the visitor visits a EqualsValueClauseSyntax node. + + + Called when the visitor visits a ExpressionStatementSyntax node. + + + Called when the visitor visits a EmptyStatementSyntax node. + + + Called when the visitor visits a LabeledStatementSyntax node. + + + Called when the visitor visits a GotoStatementSyntax node. + + + Called when the visitor visits a BreakStatementSyntax node. + + + Called when the visitor visits a ContinueStatementSyntax node. + + + Called when the visitor visits a ReturnStatementSyntax node. + + + Called when the visitor visits a ThrowStatementSyntax node. + + + Called when the visitor visits a YieldStatementSyntax node. + + + Called when the visitor visits a WhileStatementSyntax node. + + + Called when the visitor visits a DoStatementSyntax node. + + + Called when the visitor visits a ForStatementSyntax node. + + + Called when the visitor visits a ForEachStatementSyntax node. + + + Called when the visitor visits a UsingStatementSyntax node. + + + Called when the visitor visits a FixedStatementSyntax node. + + + Called when the visitor visits a CheckedStatementSyntax node. + + + Called when the visitor visits a UnsafeStatementSyntax node. + + + Called when the visitor visits a LockStatementSyntax node. + + + Called when the visitor visits a IfStatementSyntax node. + + + Called when the visitor visits a ElseClauseSyntax node. + + + Called when the visitor visits a SwitchStatementSyntax node. + + + Called when the visitor visits a SwitchSectionSyntax node. + + + Called when the visitor visits a CaseSwitchLabelSyntax node. + + + Called when the visitor visits a DefaultSwitchLabelSyntax node. + + + Called when the visitor visits a TryStatementSyntax node. + + + Called when the visitor visits a CatchClauseSyntax node. + + + Called when the visitor visits a CatchDeclarationSyntax node. + + + Called when the visitor visits a CatchFilterClauseSyntax node. + + + Called when the visitor visits a FinallyClauseSyntax node. + + + Called when the visitor visits a CompilationUnitSyntax node. + + + Called when the visitor visits a ExternAliasDirectiveSyntax node. + + + Called when the visitor visits a UsingDirectiveSyntax node. + + + Called when the visitor visits a NamespaceDeclarationSyntax node. + + + Called when the visitor visits a AttributeListSyntax node. + + + Called when the visitor visits a AttributeTargetSpecifierSyntax node. + + + Called when the visitor visits a AttributeSyntax node. + + + Called when the visitor visits a AttributeArgumentListSyntax node. + + + Called when the visitor visits a AttributeArgumentSyntax node. + + + Called when the visitor visits a NameEqualsSyntax node. + + + Called when the visitor visits a TypeParameterListSyntax node. + + + Called when the visitor visits a TypeParameterSyntax node. + + + Called when the visitor visits a ClassDeclarationSyntax node. + + + Called when the visitor visits a StructDeclarationSyntax node. + + + Called when the visitor visits a InterfaceDeclarationSyntax node. + + + Called when the visitor visits a EnumDeclarationSyntax node. + + + Called when the visitor visits a DelegateDeclarationSyntax node. + + + Called when the visitor visits a EnumMemberDeclarationSyntax node. + + + Called when the visitor visits a BaseListSyntax node. + + + Called when the visitor visits a SimpleBaseTypeSyntax node. + + + Called when the visitor visits a TypeParameterConstraintClauseSyntax node. + + + Called when the visitor visits a ConstructorConstraintSyntax node. + + + Called when the visitor visits a ClassOrStructConstraintSyntax node. + + + Called when the visitor visits a TypeConstraintSyntax node. + + + Called when the visitor visits a FieldDeclarationSyntax node. + + + Called when the visitor visits a EventFieldDeclarationSyntax node. + + + Called when the visitor visits a ExplicitInterfaceSpecifierSyntax node. + + + Called when the visitor visits a MethodDeclarationSyntax node. + + + Called when the visitor visits a OperatorDeclarationSyntax node. + + + Called when the visitor visits a ConversionOperatorDeclarationSyntax node. + + + Called when the visitor visits a ConstructorDeclarationSyntax node. + + + Called when the visitor visits a ConstructorInitializerSyntax node. + + + Called when the visitor visits a DestructorDeclarationSyntax node. + + + Called when the visitor visits a PropertyDeclarationSyntax node. + + + Called when the visitor visits a ArrowExpressionClauseSyntax node. + + + Called when the visitor visits a EventDeclarationSyntax node. + + + Called when the visitor visits a IndexerDeclarationSyntax node. + + + Called when the visitor visits a AccessorListSyntax node. + + + Called when the visitor visits a AccessorDeclarationSyntax node. + + + Called when the visitor visits a ParameterListSyntax node. + + + Called when the visitor visits a BracketedParameterListSyntax node. + + + Called when the visitor visits a ParameterSyntax node. + + + Called when the visitor visits a IncompleteMemberSyntax node. + + + Called when the visitor visits a SkippedTokensTriviaSyntax node. + + + Called when the visitor visits a DocumentationCommentTriviaSyntax node. + + + Called when the visitor visits a TypeCrefSyntax node. + + + Called when the visitor visits a QualifiedCrefSyntax node. + + + Called when the visitor visits a NameMemberCrefSyntax node. + + + Called when the visitor visits a IndexerMemberCrefSyntax node. + + + Called when the visitor visits a OperatorMemberCrefSyntax node. + + + Called when the visitor visits a ConversionOperatorMemberCrefSyntax node. + + + Called when the visitor visits a CrefParameterListSyntax node. + + + Called when the visitor visits a CrefBracketedParameterListSyntax node. + + + Called when the visitor visits a CrefParameterSyntax node. + + + Called when the visitor visits a XmlElementSyntax node. + + + Called when the visitor visits a XmlElementStartTagSyntax node. + + + Called when the visitor visits a XmlElementEndTagSyntax node. + + + Called when the visitor visits a XmlEmptyElementSyntax node. + + + Called when the visitor visits a XmlNameSyntax node. + + + Called when the visitor visits a XmlPrefixSyntax node. + + + Called when the visitor visits a XmlTextAttributeSyntax node. + + + Called when the visitor visits a XmlCrefAttributeSyntax node. + + + Called when the visitor visits a XmlNameAttributeSyntax node. + + + Called when the visitor visits a XmlTextSyntax node. + + + Called when the visitor visits a XmlCDataSectionSyntax node. + + + Called when the visitor visits a XmlProcessingInstructionSyntax node. + + + Called when the visitor visits a XmlCommentSyntax node. + + + Called when the visitor visits a IfDirectiveTriviaSyntax node. + + + Called when the visitor visits a ElifDirectiveTriviaSyntax node. + + + Called when the visitor visits a ElseDirectiveTriviaSyntax node. + + + Called when the visitor visits a EndIfDirectiveTriviaSyntax node. + + + Called when the visitor visits a RegionDirectiveTriviaSyntax node. + + + Called when the visitor visits a EndRegionDirectiveTriviaSyntax node. + + + Called when the visitor visits a ErrorDirectiveTriviaSyntax node. + + + Called when the visitor visits a WarningDirectiveTriviaSyntax node. + + + Called when the visitor visits a BadDirectiveTriviaSyntax node. + + + Called when the visitor visits a DefineDirectiveTriviaSyntax node. + + + Called when the visitor visits a UndefDirectiveTriviaSyntax node. + + + Called when the visitor visits a LineDirectiveTriviaSyntax node. + + + Called when the visitor visits a PragmaWarningDirectiveTriviaSyntax node. + + + Called when the visitor visits a PragmaChecksumDirectiveTriviaSyntax node. + + + Called when the visitor visits a ReferenceDirectiveTriviaSyntax node. + + + Called when the visitor visits a LoadDirectiveTriviaSyntax node. + + + Called when the visitor visits a ShebangDirectiveTriviaSyntax node. + + + + Represents a that descends an entire graph + visiting each CSharpSyntaxNode and its child SyntaxNodes and s in depth-first order. + + + + + A class containing factory methods for constructing syntax nodes, tokens and trivia. + + + + Creates a new AnonymousMethodExpressionSyntax instance. + + + + A trivia with kind EndOfLineTrivia containing both the carriage return and line feed characters. + + + + + A trivia with kind EndOfLineTrivia containing a single line feed character. + + + + + A trivia with kind EndOfLineTrivia containing a single carriage return character. + + + + + A trivia with kind WhitespaceTrivia containing a single space character. + + + + + A trivia with kind WhitespaceTrivia containing a single tab character. + + + + + An elastic trivia with kind EndOfLineTrivia containing both the carriage return and line feed characters. + Elastic trivia are used to denote trivia that was not produced by parsing source text, and are usually not + preserved during formatting. + + + + + An elastic trivia with kind EndOfLineTrivia containing a single line feed character. Elastic trivia are used + to denote trivia that was not produced by parsing source text, and are usually not preserved during + formatting. + + + + + An elastic trivia with kind EndOfLineTrivia containing a single carriage return character. Elastic trivia + are used to denote trivia that was not produced by parsing source text, and are usually not preserved during + formatting. + + + + + An elastic trivia with kind WhitespaceTrivia containing a single space character. Elastic trivia are used to + denote trivia that was not produced by parsing source text, and are usually not preserved during formatting. + + + + + An elastic trivia with kind WhitespaceTrivia containing a single tab character. Elastic trivia are used to + denote trivia that was not produced by parsing source text, and are usually not preserved during formatting. + + + + + An elastic trivia with kind WhitespaceTrivia containing no characters. Elastic marker trivia are included + automatically by factory methods when trivia is not specified. Syntax formatting will replace elastic + markers with appropriate trivia. + + + + + Creates a trivia with kind EndOfLineTrivia containing the specified text. + + The text of the end of line. Any text can be specified here, however only carriage return and + line feed characters are recognized by the parser as end of line. + + + + Creates a trivia with kind EndOfLineTrivia containing the specified text. Elastic trivia are used to + denote trivia that was not produced by parsing source text, and are usually not preserved during formatting. + + The text of the end of line. Any text can be specified here, however only carriage return and + line feed characters are recognized by the parser as end of line. + + + + Creates a trivia with kind WhitespaceTrivia containing the specified text. + + The text of the whitespace. Any text can be specified here, however only specific + whitespace characters are recognized by the parser. + + + + Creates a trivia with kind WhitespaceTrivia containing the specified text. Elastic trivia are used to + denote trivia that was not produced by parsing source text, and are usually not preserved during formatting. + + The text of the whitespace. Any text can be specified here, however only specific + whitespace characters are recognized by the parser. + + + + Creates a trivia with kind either SingleLineCommentTrivia or MultiLineCommentTrivia containing the specified + text. + + The entire text of the comment including the leading '//' token for single line comments + or stop or start tokens for multiline comments. + + + + Creates a trivia with kind DisabledTextTrivia. Disabled text corresponds to any text between directives that + is not considered active. + + + + + Creates a trivia with kind PreprocessingMessageTrivia. + + + + + Trivia nodes represent parts of the program text that are not parts of the + syntactic grammar, such as spaces, newlines, comments, preprocessor + directives, and disabled code. + + + A representing the specific kind of . One of + , , + , , + , + + + The actual text of this token. + + + + + Creates a token corresponding to a syntax kind. This method can be used for token syntax kinds whose text + can be inferred by the kind alone. + + A syntax kind value for a token. These have the suffix Token or Keyword. + + + + + Creates a token corresponding to syntax kind. This method can be used for token syntax kinds whose text can + be inferred by the kind alone. + + A list of trivia immediately preceding the token. + A syntax kind value for a token. These have the suffix Token or Keyword. + A list of trivia immediately following the token. + + + + Creates a token corresponding to syntax kind. This method gives control over token Text and ValueText. + + For example, consider the text '<see cref="operator &#43;"/>'. To create a token for the value of + the operator symbol (&#43;), one would call + Token(default(SyntaxTriviaList), SyntaxKind.PlusToken, "&#43;", "+", default(SyntaxTriviaList)). + + A list of trivia immediately preceding the token. + A syntax kind value for a token. These have the suffix Token or Keyword. + The text from which this token was created (e.g. lexed). + How C# should interpret the text of this token. + A list of trivia immediately following the token. + + + + Creates a missing token corresponding to syntax kind. A missing token is produced by the parser when an + expected token is not found. A missing token has no text and normally has associated diagnostics. + + A syntax kind value for a token. These have the suffix Token or Keyword. + + + + Creates a missing token corresponding to syntax kind. A missing token is produced by the parser when an + expected token is not found. A missing token has no text and normally has associated diagnostics. + + A list of trivia immediately preceding the token. + A syntax kind value for a token. These have the suffix Token or Keyword. + A list of trivia immediately following the token. + + + + Creates a token with kind IdentifierToken containing the specified text. + The raw text of the identifier name, including any escapes or leading '@' + character. + + + + + Creates a token with kind IdentifierToken containing the specified text. + + A list of trivia immediately preceding the token. + The raw text of the identifier name, including any escapes or leading '@' + character. + A list of trivia immediately following the token. + + + + Creates a verbatim token with kind IdentifierToken containing the specified text. + + A list of trivia immediately preceding the token. + The raw text of the identifier name, including any escapes or leading '@' + character as it is in source. + The canonical value of the token's text. + A list of trivia immediately following the token. + + + + Creates a token with kind IdentifierToken containing the specified text. + + A list of trivia immediately preceding the token. + An alternative SyntaxKind that can be inferred for this token in special + contexts. These are usually keywords. + The raw text of the identifier name, including any escapes or leading '@' + character. + The text of the identifier name without escapes or leading '@' character. + A list of trivia immediately following the token. + + + + + Creates a token with kind NumericLiteralToken from a 4-byte signed integer value. + + The 4-byte signed integer value to be represented by the returned token. + + + + Creates a token with kind NumericLiteralToken from the text and corresponding 4-byte signed integer value. + + The raw text of the literal. + The 4-byte signed integer value to be represented by the returned token. + + + + Creates a token with kind NumericLiteralToken from the text and corresponding 4-byte signed integer value. + + A list of trivia immediately preceding the token. + The raw text of the literal. + The 4-byte signed integer value to be represented by the returned token. + A list of trivia immediately following the token. + + + + Creates a token with kind NumericLiteralToken from a 4-byte unsigned integer value. + + The 4-byte unsigned integer value to be represented by the returned token. + + + + Creates a token with kind NumericLiteralToken from the text and corresponding 4-byte unsigned integer value. + + The raw text of the literal. + The 4-byte unsigned integer value to be represented by the returned token. + + + + Creates a token with kind NumericLiteralToken from the text and corresponding 4-byte unsigned integer value. + + A list of trivia immediately preceding the token. + The raw text of the literal. + The 4-byte unsigned integer value to be represented by the returned token. + A list of trivia immediately following the token. + + + + Creates a token with kind NumericLiteralToken from an 8-byte signed integer value. + + The 8-byte signed integer value to be represented by the returned token. + + + + Creates a token with kind NumericLiteralToken from the text and corresponding 8-byte signed integer value. + + The raw text of the literal. + The 8-byte signed integer value to be represented by the returned token. + + + + Creates a token with kind NumericLiteralToken from the text and corresponding 8-byte signed integer value. + + A list of trivia immediately preceding the token. + The raw text of the literal. + The 8-byte signed integer value to be represented by the returned token. + A list of trivia immediately following the token. + + + + Creates a token with kind NumericLiteralToken from an 8-byte unsigned integer value. + + The 8-byte unsigned integer value to be represented by the returned token. + + + + Creates a token with kind NumericLiteralToken from the text and corresponding 8-byte unsigned integer value. + + The raw text of the literal. + The 8-byte unsigned integer value to be represented by the returned token. + + + + Creates a token with kind NumericLiteralToken from the text and corresponding 8-byte unsigned integer value. + + A list of trivia immediately preceding the token. + The raw text of the literal. + The 8-byte unsigned integer value to be represented by the returned token. + A list of trivia immediately following the token. + + + + Creates a token with kind NumericLiteralToken from a 4-byte floating point value. + + The 4-byte floating point value to be represented by the returned token. + + + + Creates a token with kind NumericLiteralToken from the text and corresponding 4-byte floating point value. + + The raw text of the literal. + The 4-byte floating point value to be represented by the returned token. + + + + Creates a token with kind NumericLiteralToken from the text and corresponding 4-byte floating point value. + + A list of trivia immediately preceding the token. + The raw text of the literal. + The 4-byte floating point value to be represented by the returned token. + A list of trivia immediately following the token. + + + + Creates a token with kind NumericLiteralToken from an 8-byte floating point value. + + The 8-byte floating point value to be represented by the returned token. + + + + Creates a token with kind NumericLiteralToken from the text and corresponding 8-byte floating point value. + + The raw text of the literal. + The 8-byte floating point value to be represented by the returned token. + + + + Creates a token with kind NumericLiteralToken from the text and corresponding 8-byte floating point value. + + A list of trivia immediately preceding the token. + The raw text of the literal. + The 8-byte floating point value to be represented by the returned token. + A list of trivia immediately following the token. + + + + Creates a token with kind NumericLiteralToken from a decimal value. + + The decimal value to be represented by the returned token. + + + + Creates a token with kind NumericLiteralToken from the text and corresponding decimal value. + + The raw text of the literal. + The decimal value to be represented by the returned token. + + + + Creates a token with kind NumericLiteralToken from the text and corresponding decimal value. + + A list of trivia immediately preceding the token. + The raw text of the literal. + The decimal value to be represented by the returned token. + A list of trivia immediately following the token. + + + + Creates a token with kind StringLiteralToken from a string value. + + The string value to be represented by the returned token. + + + + Creates a token with kind StringLiteralToken from the text and corresponding string value. + + The raw text of the literal, including quotes and escape sequences. + The string value to be represented by the returned token. + + + + Creates a token with kind StringLiteralToken from the text and corresponding string value. + + A list of trivia immediately preceding the token. + The raw text of the literal, including quotes and escape sequences. + The string value to be represented by the returned token. + A list of trivia immediately following the token. + + + + Creates a token with kind CharacterLiteralToken from a character value. + + The character value to be represented by the returned token. + + + + Creates a token with kind CharacterLiteralToken from the text and corresponding character value. + + The raw text of the literal, including quotes and escape sequences. + The character value to be represented by the returned token. + + + + Creates a token with kind CharacterLiteralToken from the text and corresponding character value. + + A list of trivia immediately preceding the token. + The raw text of the literal, including quotes and escape sequences. + The character value to be represented by the returned token. + A list of trivia immediately following the token. + + + + Creates a token with kind BadToken. + + A list of trivia immediately preceding the token. + The raw text of the bad token. + A list of trivia immediately following the token. + + + + Creates a token with kind XmlTextLiteralToken. + + A list of trivia immediately preceding the token. + The raw text of the literal. + The xml text value. + A list of trivia immediately following the token. + + + + Creates a token with kind XmlEntityLiteralToken. + + A list of trivia immediately preceding the token. + The raw text of the literal. + The xml entity value. + A list of trivia immediately following the token. + + + + Creates an xml documentation comment that abstracts xml syntax creation. + + + A list of xml node syntax that will be the content within the xml documentation comment + (e.g. a summary element, a returns element, exception element and so on). + + + + + Creates a summary element within an xml documentation comment. + + A list of xml node syntax that will be the content within the summary element. + + + + Creates a summary element within an xml documentation comment. + + A list of xml node syntax that will be the content within the summary element. + + + + Creates a see element within an xml documentation comment. + + A cref syntax node that points to the referenced item (e.g. a class, struct). + + + + Creates a seealso element within an xml documentation comment. + + A cref syntax node that points to the referenced item (e.g. a class, struct). + + + + Creates a seealso element within an xml documentation comment. + + The uri of the referenced item. + A list of xml node syntax that will be used as the link text for the referenced item. + + + + Creates a threadsafty element within an xml documentation comment. + + + + + Creates a threadsafety element within an xml documentation comment. + + Indicates whether static member of this type are safe for multi-threaded operations. + Indicates whether instance members of this type are safe for multi-threaded operations. + + + + Creates a syntax node for a name attribute in a xml element within a xml documentation comment. + + The value of the name attribute. + + + + Creates a syntax node for a priliminary element within a xml documentation comment. + + + + + Creates a syntax node for a cref attribute within a xml documentation comment. + + The used for the xml cref attribute syntax. + + + + Creates a syntax node for a cref attribute within a xml documentation comment. + + The used for the xml cref attribute syntax. + The kind of the quote for the referenced item in the cref attribute. + + + + Creates a remarks element within an xml documentation comment. + + A list of xml node syntax that will be the content within the remarks element. + + + + Creates a remarks element within an xml documentation comment. + + A list of xml node syntax that will be the content within the remarks element. + + + + Creates a returns element within an xml documentation comment. + + A list of xml node syntax that will be the content within the returns element. + + + + Creates a returns element within an xml documentation comment. + + A list of xml node syntax that will be the content within the returns element. + + + + Creates the the syntax representation of an xml value element (e.g. for xml documentation comments). + + A list of xml syntax nodes that represents the content of the value element. + + + + Creates the the syntax representation of an xml value element (e.g. for xml documentation comments). + + A list of xml syntax nodes that represents the content of the value element. + + + + Creates the syntax representation of an exception element within xml documentation comments. + + Syntax representation of the reference to the exception type. + A list of syntax nodes that represents the content of the exception element. + + + + Creates the syntax representation of an exception element within xml documentation comments. + + Syntax representation of the reference to the exception type. + A list of syntax nodes that represents the content of the exception element. + + + + Creates the syntax representation of a permission element within xml documentation comments. + + Syntax representation of the reference to the permission type. + A list of syntax nodes that represents the content of the permission element. + + + + Creates the syntax representation of a permission element within xml documentation comments. + + Syntax representation of the reference to the permission type. + A list of syntax nodes that represents the content of the permission element. + + + + Creates the syntax representation of an example element within xml documentation comments. + + A list of syntax nodes that represents the content of the example element. + + + + Creates the syntax representation of an example element within xml documentation comments. + + A list of syntax nodes that represents the content of the example element. + + + + Creates the syntax representation of a para element within xml documentation comments. + + A list of syntax nodes that represents the content of the para element. + + + + Creates the syntax representation of a para element within xml documentation comments. + + A list of syntax nodes that represents the content of the para element. + + + + Creates the syntax representation of a param element within xml documentation comments (e.g. for + documentation of method parameters). + + The name of the parameter. + A list of syntax nodes that represents the content of the param element (e.g. + the description and meaning of the parameter). + + + + Creates the syntax representation of a param element within xml documentation comments (e.g. for + documentation of method parameters). + + The name of the parameter. + A list of syntax nodes that represents the content of the param element (e.g. + the description and meaning of the parameter). + + + + Creates the syntax representation of a paramref element within xml documentation comments (e.g. for + referencing particular parameters of a method). + + The name of the referenced parameter. + + + + Creates the syntax representation of a see element within xml documentation comments, + that points to the 'null' language keyword. + + + + + Creates the syntax representation of a see element within xml documentation comments, + that points to a language keyword. + + The language keyword to which the see element points to. + + + + Creates the syntax representation of a placeholder element within xml documentation comments. + + A list of syntax nodes that represents the content of the placeholder element. + + + + Creates the syntax representation of a placeholder element within xml documentation comments. + + A list of syntax nodes that represents the content of the placeholder element. + + + + Creates the syntax representation of a named empty xml element within xml documentation comments. + + The name of the empty xml element. + + + + Creates the syntax representation of a named xml element within xml documentation comments. + + The name of the empty xml element. + A list of syntax nodes that represents the content of the xml element. + + + + Creates the syntax representation of a named xml element within xml documentation comments. + + The name of the empty xml element. + A list of syntax nodes that represents the content of the xml element. + + + + Creates the syntax representation of an xml text attribute. + + The name of the xml text attribute. + The value of the xml text attribute. + + + + Creates the syntax representation of an xml text attribute. + + The name of the xml text attribute. + A list of tokens used for the value of the xml text attribute. + + + + Creates the syntax representation of an xml text attribute. + + The name of the xml text attribute. + The kind of the quote token to be used to quote the value (e.g. " or '). + A list of tokens used for the value of the xml text attribute. + + + + Creates the syntax representation of an xml text attribute. + + The name of the xml text attribute. + The kind of the quote token to be used to quote the value (e.g. " or '). + A list of tokens used for the value of the xml text attribute. + + + + Creates the syntax representation of an xml element that spans multiple text lines. + + The name of the xml element. + A list of syntax nodes that represents the content of the xml multi line element. + + + + Creates the syntax representation of an xml element that spans multiple text lines. + + The name of the xml element. + A list of syntax nodes that represents the content of the xml multi line element. + + + + Creates the syntax representation of an xml text that contains a newline token with a documentation comment + exterior trivia at the end (continued documentation comment). + + The raw text within the new line. + + + + Creates the syntax representation of an xml newline token with a documentation comment exterior trivia at + the end (continued documentation comment). + + The raw text within the new line. + + + + Creates a token with kind XmlTextLiteralNewLineToken. + + A list of trivia immediately preceding the token. + The raw text of the literal. + The xml text new line value. + A list of trivia immediately following the token. + + + + Creates the syntax representation of an xml newline token for xml documentation comments. + + The raw text within the new line. + + If set to true, a documentation comment exterior token will be added to the trailing trivia + of the new token. + + + + Generates the syntax representation of a xml text node (e.g. for xml documentation comments). + + The string literal used as the text of the xml text node. + + + + Generates the syntax representation of a xml text node (e.g. for xml documentation comments). + + A list of text tokens used as the text of the xml text node. + + + + Generates the syntax representation of an xml text literal. + + The text used within the xml text literal. + + + + Generates the syntax representation of an xml text literal. + + The raw text of the literal. + The text used within the xml text literal. + + + + Helper method that replaces less-than and greater-than characters with brackets. + + The original token that is to be replaced. + The new rewritten token. + Returns the new rewritten token with replaced characters. + + + + Creates a trivia with kind DocumentationCommentExteriorTrivia. + + The raw text of the literal. + + + + Creates an empty list of syntax nodes. + + The specific type of the element nodes. + + + + Creates a singleton list of syntax nodes. + + The specific type of the element nodes. + The single element node. + + + + + Creates a list of syntax nodes. + + The specific type of the element nodes. + A sequence of element nodes. + + + + Creates an empty list of tokens. + + + + + Creates a singleton list of tokens. + + The single token. + + + + Creates a list of tokens. + + An array of tokens. + + + + Creates a list of tokens. + + + + + + + Creates a trivia from a StructuredTriviaSyntax node. + + + + + Creates an empty list of trivia. + + + + + Creates a singleton list of trivia. + + A single trivia. + + + + Creates a list of trivia. + + An array of trivia. + + + + Creates a list of trivia. + + A sequence of trivia. + + + + Creates an empty separated list. + + The specific type of the element nodes. + + + + Creates a singleton separated list. + + The specific type of the element nodes. + A single node. + + + + Creates a separated list of nodes from a sequence of nodes, synthesizing comma separators in between. + + The specific type of the element nodes. + A sequence of syntax nodes. + + + + Creates a separated list of nodes from a sequence of nodes and a sequence of separator tokens. + + The specific type of the element nodes. + A sequence of syntax nodes. + A sequence of token to be interleaved between the nodes. The number of tokens must + be one less than the number of nodes. + + + + Creates a separated list from a sequence of nodes and tokens, starting with a node and alternating between additional nodes and separator tokens. + + The specific type of the element nodes. + A sequence of nodes or tokens, alternating between nodes and separator tokens. + + + + Creates a separated list from a , where the list elements start with a node and then alternate between + additional nodes and separator tokens. + + The specific type of the element nodes. + The list of nodes and tokens. + + + + Creates an empty . + + + + + Create a from a sequence of . + + The sequence of nodes and tokens + + + + Create a from one or more . + + The nodes and tokens + + + + Creates an IdentifierNameSyntax node. + + The identifier name. + + + + Create a new syntax tree from a syntax node. + + + + + Produces a syntax tree by parsing the source text. + + + + + Produces a syntax tree by parsing the source text. + + + + + Parse a list of trivia rules for leading trivia. + + + + + Parse a list of trivia rules for leading trivia. + + + + + Parse a list of trivia using the parsing rules for trailing trivia. + + + + + Parse a C# language token. + + The text of the token including leading and trailing trivia. + Optional offset into text. + + + + Parse a sequence of C# language tokens. + + The text of all the tokens. + An integer to use as the starting position of the first token. + Optional offset into text. + Parse options. + + + + Parse a NameSyntax node using the grammar rule for names. + + + + + Parse a TypeNameSyntax node using the grammar rule for type names. + + + + + Parse an ExpressionSyntax node using the lowest precedence grammar rule for expressions. + + The text of the expression. + Optional offset into text. + The optional parse options to use. If no options are specified default options are + used. + True if extra tokens in the input should be treated as an error + + + + Parse a StatementSyntaxNode using grammar rule for statements. + + The text of the statement. + Optional offset into text. + The optional parse options to use. If no options are specified default options are + used. + True if extra tokens in the input should be treated as an error + + + + Parse a CompilationUnitSyntax using the grammar rule for an entire compilation unit (file). To produce a + SyntaxTree instance, use CSharpSyntaxTree.ParseText instead. + + The text of the compilation unit. + Optional offset into text. + The optional parse options to use. If no options are specified default options are + used. + + + + Parse a ParameterListSyntax node. + + The text of the parenthesized parameter list. + Optional offset into text. + The optional parse options to use. If no options are specified default options are + used. + True if extra tokens in the input should be treated as an error + + + + Parse a BracketedParameterListSyntax node. + + The text of the bracketed parameter list. + Optional offset into text. + The optional parse options to use. If no options are specified default options are + used. + True if extra tokens in the input should be treated as an error + + + + Parse an ArgumentListSyntax node. + + The text of the parenthesized argument list. + Optional offset into text. + The optional parse options to use. If no options are specified default options are + used. + True if extra tokens in the input should be treated as an error + + + + Parse a BracketedArgumentListSyntax node. + + The text of the bracketed argument list. + Optional offset into text. + The optional parse options to use. If no options are specified default options are + used. + True if extra tokens in the input should be treated as an error + + + + Parse an AttributeArgumentListSyntax node. + + The text of the attribute argument list. + Optional offset into text. + The optional parse options to use. If no options are specified default options are + used. + True if extra tokens in the input should be treated as an error + + + + Helper method for wrapping a string in an SourceText. + + + + + Determines if two trees are the same, disregarding trivia differences. + + The original tree. + The new tree. + + If true then the trees are equivalent if the contained nodes and tokens declaring + metadata visible symbolic information are equivalent, ignoring any differences of nodes inside method bodies + or initializer expressions, otherwise all nodes and tokens must be equivalent. + + + + + Determines if two syntax nodes are the same, disregarding trivia differences. + + The old node. + The new node. + + If true then the nodes are equivalent if the contained nodes and tokens declaring + metadata visible symbolic information are equivalent, ignoring any differences of nodes inside method bodies + or initializer expressions, otherwise all nodes and tokens must be equivalent. + + + + + Determines if two syntax nodes are the same, disregarding trivia differences. + + The old node. + The new node. + + If specified called for every child syntax node (not token) that is visited during the comparison. + If it returns true the child is recursively visited, otherwise the child and its subtree is disregarded. + + + + + Determines if two syntax tokens are the same, disregarding trivia differences. + + The old token. + The new token. + + + + Determines if two lists of tokens are the same, disregarding trivia differences. + + The old token list. + The new token list. + + + + Determines if two lists of syntax nodes are the same, disregarding trivia differences. + + The old list. + The new list. + + If true then the nodes are equivalent if the contained nodes and tokens declaring + metadata visible symbolic information are equivalent, ignoring any differences of nodes inside method bodies + or initializer expressions, otherwise all nodes and tokens must be equivalent. + + + + + Determines if two lists of syntax nodes are the same, disregarding trivia differences. + + The old list. + The new list. + + If specified called for every child syntax node (not token) that is visited during the comparison. + If it returns true the child is recursively visited, otherwise the child and its subtree is disregarded. + + + + + Determines if two lists of syntax nodes are the same, disregarding trivia differences. + + The old list. + The new list. + + If true then the nodes are equivalent if the contained nodes and tokens declaring + metadata visible symbolic information are equivalent, ignoring any differences of nodes inside method bodies + or initializer expressions, otherwise all nodes and tokens must be equivalent. + + + + + Determines if two lists of syntax nodes are the same, disregarding trivia differences. + + The old list. + The new list. + + If specified called for every child syntax node (not token) that is visited during the comparison. + If it returns true the child is recursively visited, otherwise the child and its subtree is disregarded. + + + + + Gets the containing expression that is actually a language expression and not just typed + as an ExpressionSyntax for convenience. For example, NameSyntax nodes on the right side + of qualified names and member access expressions are not language expressions, yet the + containing qualified names or member access expressions are indeed expressions. + + + + + Gets the containing expression that is actually a language expression and not just typed + as an ExpressionSyntax for convenience. For example, NameSyntax nodes on the right side + of qualified names and member access expressions are not language expressions, yet the + containing qualified names or member access expressions are indeed expressions. + Similarly, if the input node is a cref part that is not independently meaningful, then + the result will be the full cref. + + + + + Given a conditional binding expression, find corresponding conditional access node. + + + + + Converts a generic name expression into one without the generic arguments. + + + + + + + Determines whether the given text is considered a syntactically complete submission. + Throws if the tree was not compiled as an interactive submission. + + + + Creates a new CaseSwitchLabelSyntax instance. + + + Creates a new DefaultSwitchLabelSyntax instance. + + + Creates a new BlockSyntax instance. + + + Creates a new BlockSyntax instance. + + + Creates a new UsingDirectiveSyntax instance. + + + Creates a new IdentifierNameSyntax instance. + + + Creates a new QualifiedNameSyntax instance. + + + Creates a new QualifiedNameSyntax instance. + + + Creates a new GenericNameSyntax instance. + + + Creates a new GenericNameSyntax instance. + + + Creates a new GenericNameSyntax instance. + + + Creates a new TypeArgumentListSyntax instance. + + + Creates a new TypeArgumentListSyntax instance. + + + Creates a new AliasQualifiedNameSyntax instance. + + + Creates a new AliasQualifiedNameSyntax instance. + + + Creates a new AliasQualifiedNameSyntax instance. + + + Creates a new PredefinedTypeSyntax instance. + + + Creates a new ArrayTypeSyntax instance. + + + Creates a new ArrayTypeSyntax instance. + + + Creates a new ArrayRankSpecifierSyntax instance. + + + Creates a new ArrayRankSpecifierSyntax instance. + + + Creates a new PointerTypeSyntax instance. + + + Creates a new PointerTypeSyntax instance. + + + Creates a new NullableTypeSyntax instance. + + + Creates a new NullableTypeSyntax instance. + + + Creates a new OmittedTypeArgumentSyntax instance. + + + Creates a new OmittedTypeArgumentSyntax instance. + + + Creates a new ParenthesizedExpressionSyntax instance. + + + Creates a new ParenthesizedExpressionSyntax instance. + + + Creates a new PrefixUnaryExpressionSyntax instance. + + + Creates a new PrefixUnaryExpressionSyntax instance. + + + Creates a new AwaitExpressionSyntax instance. + + + Creates a new AwaitExpressionSyntax instance. + + + Creates a new PostfixUnaryExpressionSyntax instance. + + + Creates a new PostfixUnaryExpressionSyntax instance. + + + Creates a new MemberAccessExpressionSyntax instance. + + + Creates a new MemberAccessExpressionSyntax instance. + + + Creates a new ConditionalAccessExpressionSyntax instance. + + + Creates a new ConditionalAccessExpressionSyntax instance. + + + Creates a new MemberBindingExpressionSyntax instance. + + + Creates a new MemberBindingExpressionSyntax instance. + + + Creates a new ElementBindingExpressionSyntax instance. + + + Creates a new ElementBindingExpressionSyntax instance. + + + Creates a new ImplicitElementAccessSyntax instance. + + + Creates a new ImplicitElementAccessSyntax instance. + + + Creates a new BinaryExpressionSyntax instance. + + + Creates a new BinaryExpressionSyntax instance. + + + Creates a new AssignmentExpressionSyntax instance. + + + Creates a new AssignmentExpressionSyntax instance. + + + Creates a new ConditionalExpressionSyntax instance. + + + Creates a new ConditionalExpressionSyntax instance. + + + Creates a new ThisExpressionSyntax instance. + + + Creates a new ThisExpressionSyntax instance. + + + Creates a new BaseExpressionSyntax instance. + + + Creates a new BaseExpressionSyntax instance. + + + Creates a new LiteralExpressionSyntax instance. + + + Creates a new LiteralExpressionSyntax instance. + + + Creates a new MakeRefExpressionSyntax instance. + + + Creates a new MakeRefExpressionSyntax instance. + + + Creates a new RefTypeExpressionSyntax instance. + + + Creates a new RefTypeExpressionSyntax instance. + + + Creates a new RefValueExpressionSyntax instance. + + + Creates a new RefValueExpressionSyntax instance. + + + Creates a new CheckedExpressionSyntax instance. + + + Creates a new CheckedExpressionSyntax instance. + + + Creates a new DefaultExpressionSyntax instance. + + + Creates a new DefaultExpressionSyntax instance. + + + Creates a new TypeOfExpressionSyntax instance. + + + Creates a new TypeOfExpressionSyntax instance. + + + Creates a new SizeOfExpressionSyntax instance. + + + Creates a new SizeOfExpressionSyntax instance. + + + Creates a new InvocationExpressionSyntax instance. + + + Creates a new InvocationExpressionSyntax instance. + + + Creates a new ElementAccessExpressionSyntax instance. + + + Creates a new ElementAccessExpressionSyntax instance. + + + Creates a new ArgumentListSyntax instance. + + + Creates a new ArgumentListSyntax instance. + + + Creates a new BracketedArgumentListSyntax instance. + + + Creates a new BracketedArgumentListSyntax instance. + + + Creates a new ArgumentSyntax instance. + + + Creates a new ArgumentSyntax instance. + + + Creates a new NameColonSyntax instance. + + + Creates a new NameColonSyntax instance. + + + Creates a new NameColonSyntax instance. + + + Creates a new CastExpressionSyntax instance. + + + Creates a new CastExpressionSyntax instance. + + + Creates a new AnonymousMethodExpressionSyntax instance. + + + Creates a new AnonymousMethodExpressionSyntax instance. + + + Creates a new AnonymousMethodExpressionSyntax instance. + + + Creates a new SimpleLambdaExpressionSyntax instance. + + + Creates a new SimpleLambdaExpressionSyntax instance. + + + Creates a new ParenthesizedLambdaExpressionSyntax instance. + + + Creates a new ParenthesizedLambdaExpressionSyntax instance. + + + Creates a new ParenthesizedLambdaExpressionSyntax instance. + + + Creates a new InitializerExpressionSyntax instance. + + + Creates a new InitializerExpressionSyntax instance. + + + Creates a new ObjectCreationExpressionSyntax instance. + + + Creates a new ObjectCreationExpressionSyntax instance. + + + Creates a new ObjectCreationExpressionSyntax instance. + + + Creates a new AnonymousObjectMemberDeclaratorSyntax instance. + + + Creates a new AnonymousObjectMemberDeclaratorSyntax instance. + + + Creates a new AnonymousObjectCreationExpressionSyntax instance. + + + Creates a new AnonymousObjectCreationExpressionSyntax instance. + + + Creates a new ArrayCreationExpressionSyntax instance. + + + Creates a new ArrayCreationExpressionSyntax instance. + + + Creates a new ArrayCreationExpressionSyntax instance. + + + Creates a new ImplicitArrayCreationExpressionSyntax instance. + + + Creates a new ImplicitArrayCreationExpressionSyntax instance. + + + Creates a new ImplicitArrayCreationExpressionSyntax instance. + + + Creates a new StackAllocArrayCreationExpressionSyntax instance. + + + Creates a new StackAllocArrayCreationExpressionSyntax instance. + + + Creates a new QueryExpressionSyntax instance. + + + Creates a new QueryBodySyntax instance. + + + Creates a new QueryBodySyntax instance. + + + Creates a new FromClauseSyntax instance. + + + Creates a new FromClauseSyntax instance. + + + Creates a new FromClauseSyntax instance. + + + Creates a new FromClauseSyntax instance. + + + Creates a new LetClauseSyntax instance. + + + Creates a new LetClauseSyntax instance. + + + Creates a new LetClauseSyntax instance. + + + Creates a new JoinClauseSyntax instance. + + + Creates a new JoinClauseSyntax instance. + + + Creates a new JoinClauseSyntax instance. + + + Creates a new JoinClauseSyntax instance. + + + Creates a new JoinIntoClauseSyntax instance. + + + Creates a new JoinIntoClauseSyntax instance. + + + Creates a new JoinIntoClauseSyntax instance. + + + Creates a new WhereClauseSyntax instance. + + + Creates a new WhereClauseSyntax instance. + + + Creates a new OrderByClauseSyntax instance. + + + Creates a new OrderByClauseSyntax instance. + + + Creates a new OrderingSyntax instance. + + + Creates a new OrderingSyntax instance. + + + Creates a new SelectClauseSyntax instance. + + + Creates a new SelectClauseSyntax instance. + + + Creates a new GroupClauseSyntax instance. + + + Creates a new GroupClauseSyntax instance. + + + Creates a new QueryContinuationSyntax instance. + + + Creates a new QueryContinuationSyntax instance. + + + Creates a new QueryContinuationSyntax instance. + + + Creates a new OmittedArraySizeExpressionSyntax instance. + + + Creates a new OmittedArraySizeExpressionSyntax instance. + + + Creates a new InterpolatedStringExpressionSyntax instance. + + + Creates a new InterpolatedStringExpressionSyntax instance. + + + Creates a new InterpolatedStringExpressionSyntax instance. + + + Creates a new InterpolatedStringTextSyntax instance. + + + Creates a new InterpolatedStringTextSyntax instance. + + + Creates a new InterpolationSyntax instance. + + + Creates a new InterpolationSyntax instance. + + + Creates a new InterpolationSyntax instance. + + + Creates a new InterpolationAlignmentClauseSyntax instance. + + + Creates a new InterpolationFormatClauseSyntax instance. + + + Creates a new InterpolationFormatClauseSyntax instance. + + + Creates a new GlobalStatementSyntax instance. + + + Creates a new BlockSyntax instance. + + + Creates a new BlockSyntax instance. + + + Creates a new LocalDeclarationStatementSyntax instance. + + + Creates a new LocalDeclarationStatementSyntax instance. + + + Creates a new LocalDeclarationStatementSyntax instance. + + + Creates a new VariableDeclarationSyntax instance. + + + Creates a new VariableDeclarationSyntax instance. + + + Creates a new VariableDeclaratorSyntax instance. + + + Creates a new VariableDeclaratorSyntax instance. + + + Creates a new VariableDeclaratorSyntax instance. + + + Creates a new EqualsValueClauseSyntax instance. + + + Creates a new EqualsValueClauseSyntax instance. + + + Creates a new ExpressionStatementSyntax instance. + + + Creates a new ExpressionStatementSyntax instance. + + + Creates a new EmptyStatementSyntax instance. + + + Creates a new EmptyStatementSyntax instance. + + + Creates a new LabeledStatementSyntax instance. + + + Creates a new LabeledStatementSyntax instance. + + + Creates a new LabeledStatementSyntax instance. + + + Creates a new GotoStatementSyntax instance. + + + Creates a new GotoStatementSyntax instance. + + + Creates a new GotoStatementSyntax instance. + + + Creates a new BreakStatementSyntax instance. + + + Creates a new BreakStatementSyntax instance. + + + Creates a new ContinueStatementSyntax instance. + + + Creates a new ContinueStatementSyntax instance. + + + Creates a new ReturnStatementSyntax instance. + + + Creates a new ReturnStatementSyntax instance. + + + Creates a new ThrowStatementSyntax instance. + + + Creates a new ThrowStatementSyntax instance. + + + Creates a new YieldStatementSyntax instance. + + + Creates a new YieldStatementSyntax instance. + + + Creates a new WhileStatementSyntax instance. + + + Creates a new WhileStatementSyntax instance. + + + Creates a new DoStatementSyntax instance. + + + Creates a new DoStatementSyntax instance. + + + Creates a new ForStatementSyntax instance. + + + Creates a new ForStatementSyntax instance. + + + Creates a new ForStatementSyntax instance. + + + Creates a new ForEachStatementSyntax instance. + + + Creates a new ForEachStatementSyntax instance. + + + Creates a new ForEachStatementSyntax instance. + + + Creates a new UsingStatementSyntax instance. + + + Creates a new UsingStatementSyntax instance. + + + Creates a new UsingStatementSyntax instance. + + + Creates a new FixedStatementSyntax instance. + + + Creates a new FixedStatementSyntax instance. + + + Creates a new CheckedStatementSyntax instance. + + + Creates a new CheckedStatementSyntax instance. + + + Creates a new UnsafeStatementSyntax instance. + + + Creates a new UnsafeStatementSyntax instance. + + + Creates a new LockStatementSyntax instance. + + + Creates a new LockStatementSyntax instance. + + + Creates a new IfStatementSyntax instance. + + + Creates a new IfStatementSyntax instance. + + + Creates a new IfStatementSyntax instance. + + + Creates a new ElseClauseSyntax instance. + + + Creates a new ElseClauseSyntax instance. + + + Creates a new SwitchStatementSyntax instance. + + + Creates a new SwitchStatementSyntax instance. + + + Creates a new SwitchStatementSyntax instance. + + + Creates a new SwitchSectionSyntax instance. + + + Creates a new SwitchSectionSyntax instance. + + + Creates a new CaseSwitchLabelSyntax instance. + + + Creates a new CaseSwitchLabelSyntax instance. + + + Creates a new DefaultSwitchLabelSyntax instance. + + + Creates a new DefaultSwitchLabelSyntax instance. + + + Creates a new TryStatementSyntax instance. + + + Creates a new TryStatementSyntax instance. + + + Creates a new TryStatementSyntax instance. + + + Creates a new CatchClauseSyntax instance. + + + Creates a new CatchClauseSyntax instance. + + + Creates a new CatchClauseSyntax instance. + + + Creates a new CatchDeclarationSyntax instance. + + + Creates a new CatchDeclarationSyntax instance. + + + Creates a new CatchDeclarationSyntax instance. + + + Creates a new CatchFilterClauseSyntax instance. + + + Creates a new CatchFilterClauseSyntax instance. + + + Creates a new FinallyClauseSyntax instance. + + + Creates a new FinallyClauseSyntax instance. + + + Creates a new CompilationUnitSyntax instance. + + + Creates a new CompilationUnitSyntax instance. + + + Creates a new CompilationUnitSyntax instance. + + + Creates a new ExternAliasDirectiveSyntax instance. + + + Creates a new ExternAliasDirectiveSyntax instance. + + + Creates a new ExternAliasDirectiveSyntax instance. + + + Creates a new UsingDirectiveSyntax instance. + + + Creates a new UsingDirectiveSyntax instance. + + + Creates a new UsingDirectiveSyntax instance. + + + Creates a new NamespaceDeclarationSyntax instance. + + + Creates a new NamespaceDeclarationSyntax instance. + + + Creates a new NamespaceDeclarationSyntax instance. + + + Creates a new AttributeListSyntax instance. + + + Creates a new AttributeListSyntax instance. + + + Creates a new AttributeListSyntax instance. + + + Creates a new AttributeTargetSpecifierSyntax instance. + + + Creates a new AttributeTargetSpecifierSyntax instance. + + + Creates a new AttributeSyntax instance. + + + Creates a new AttributeSyntax instance. + + + Creates a new AttributeArgumentListSyntax instance. + + + Creates a new AttributeArgumentListSyntax instance. + + + Creates a new AttributeArgumentSyntax instance. + + + Creates a new AttributeArgumentSyntax instance. + + + Creates a new NameEqualsSyntax instance. + + + Creates a new NameEqualsSyntax instance. + + + Creates a new NameEqualsSyntax instance. + + + Creates a new TypeParameterListSyntax instance. + + + Creates a new TypeParameterListSyntax instance. + + + Creates a new TypeParameterSyntax instance. + + + Creates a new TypeParameterSyntax instance. + + + Creates a new TypeParameterSyntax instance. + + + Creates a new ClassDeclarationSyntax instance. + + + Creates a new ClassDeclarationSyntax instance. + + + Creates a new ClassDeclarationSyntax instance. + + + Creates a new ClassDeclarationSyntax instance. + + + Creates a new StructDeclarationSyntax instance. + + + Creates a new StructDeclarationSyntax instance. + + + Creates a new StructDeclarationSyntax instance. + + + Creates a new StructDeclarationSyntax instance. + + + Creates a new InterfaceDeclarationSyntax instance. + + + Creates a new InterfaceDeclarationSyntax instance. + + + Creates a new InterfaceDeclarationSyntax instance. + + + Creates a new InterfaceDeclarationSyntax instance. + + + Creates a new EnumDeclarationSyntax instance. + + + Creates a new EnumDeclarationSyntax instance. + + + Creates a new EnumDeclarationSyntax instance. + + + Creates a new EnumDeclarationSyntax instance. + + + Creates a new DelegateDeclarationSyntax instance. + + + Creates a new DelegateDeclarationSyntax instance. + + + Creates a new DelegateDeclarationSyntax instance. + + + Creates a new DelegateDeclarationSyntax instance. + + + Creates a new EnumMemberDeclarationSyntax instance. + + + Creates a new EnumMemberDeclarationSyntax instance. + + + Creates a new EnumMemberDeclarationSyntax instance. + + + Creates a new BaseListSyntax instance. + + + Creates a new BaseListSyntax instance. + + + Creates a new SimpleBaseTypeSyntax instance. + + + Creates a new TypeParameterConstraintClauseSyntax instance. + + + Creates a new TypeParameterConstraintClauseSyntax instance. + + + Creates a new TypeParameterConstraintClauseSyntax instance. + + + Creates a new TypeParameterConstraintClauseSyntax instance. + + + Creates a new ConstructorConstraintSyntax instance. + + + Creates a new ConstructorConstraintSyntax instance. + + + Creates a new ClassOrStructConstraintSyntax instance. + + + Creates a new ClassOrStructConstraintSyntax instance. + + + Creates a new TypeConstraintSyntax instance. + + + Creates a new FieldDeclarationSyntax instance. + + + Creates a new FieldDeclarationSyntax instance. + + + Creates a new FieldDeclarationSyntax instance. + + + Creates a new EventFieldDeclarationSyntax instance. + + + Creates a new EventFieldDeclarationSyntax instance. + + + Creates a new EventFieldDeclarationSyntax instance. + + + Creates a new ExplicitInterfaceSpecifierSyntax instance. + + + Creates a new ExplicitInterfaceSpecifierSyntax instance. + + + Creates a new MethodDeclarationSyntax instance. + + + Creates a new MethodDeclarationSyntax instance. + + + Creates a new MethodDeclarationSyntax instance. + + + Creates a new MethodDeclarationSyntax instance. + + + Creates a new OperatorDeclarationSyntax instance. + + + Creates a new OperatorDeclarationSyntax instance. + + + Creates a new OperatorDeclarationSyntax instance. + + + Creates a new ConversionOperatorDeclarationSyntax instance. + + + Creates a new ConversionOperatorDeclarationSyntax instance. + + + Creates a new ConversionOperatorDeclarationSyntax instance. + + + Creates a new ConstructorDeclarationSyntax instance. + + + Creates a new ConstructorDeclarationSyntax instance. + + + Creates a new ConstructorDeclarationSyntax instance. + + + Creates a new ConstructorDeclarationSyntax instance. + + + Creates a new ConstructorInitializerSyntax instance. + + + Creates a new ConstructorInitializerSyntax instance. + + + Creates a new DestructorDeclarationSyntax instance. + + + Creates a new DestructorDeclarationSyntax instance. + + + Creates a new DestructorDeclarationSyntax instance. + + + Creates a new DestructorDeclarationSyntax instance. + + + Creates a new PropertyDeclarationSyntax instance. + + + Creates a new PropertyDeclarationSyntax instance. + + + Creates a new PropertyDeclarationSyntax instance. + + + Creates a new PropertyDeclarationSyntax instance. + + + Creates a new ArrowExpressionClauseSyntax instance. + + + Creates a new ArrowExpressionClauseSyntax instance. + + + Creates a new EventDeclarationSyntax instance. + + + Creates a new EventDeclarationSyntax instance. + + + Creates a new EventDeclarationSyntax instance. + + + Creates a new EventDeclarationSyntax instance. + + + Creates a new IndexerDeclarationSyntax instance. + + + Creates a new IndexerDeclarationSyntax instance. + + + Creates a new IndexerDeclarationSyntax instance. + + + Creates a new AccessorListSyntax instance. + + + Creates a new AccessorListSyntax instance. + + + Creates a new AccessorDeclarationSyntax instance. + + + Creates a new AccessorDeclarationSyntax instance. + + + Creates a new AccessorDeclarationSyntax instance. + + + Creates a new ParameterListSyntax instance. + + + Creates a new ParameterListSyntax instance. + + + Creates a new BracketedParameterListSyntax instance. + + + Creates a new BracketedParameterListSyntax instance. + + + Creates a new ParameterSyntax instance. + + + Creates a new ParameterSyntax instance. + + + Creates a new IncompleteMemberSyntax instance. + + + Creates a new IncompleteMemberSyntax instance. + + + Creates a new SkippedTokensTriviaSyntax instance. + + + Creates a new SkippedTokensTriviaSyntax instance. + + + Creates a new DocumentationCommentTriviaSyntax instance. + + + Creates a new DocumentationCommentTriviaSyntax instance. + + + Creates a new TypeCrefSyntax instance. + + + Creates a new QualifiedCrefSyntax instance. + + + Creates a new QualifiedCrefSyntax instance. + + + Creates a new NameMemberCrefSyntax instance. + + + Creates a new NameMemberCrefSyntax instance. + + + Creates a new IndexerMemberCrefSyntax instance. + + + Creates a new IndexerMemberCrefSyntax instance. + + + Creates a new OperatorMemberCrefSyntax instance. + + + Creates a new OperatorMemberCrefSyntax instance. + + + Creates a new OperatorMemberCrefSyntax instance. + + + Creates a new ConversionOperatorMemberCrefSyntax instance. + + + Creates a new ConversionOperatorMemberCrefSyntax instance. + + + Creates a new ConversionOperatorMemberCrefSyntax instance. + + + Creates a new CrefParameterListSyntax instance. + + + Creates a new CrefParameterListSyntax instance. + + + Creates a new CrefBracketedParameterListSyntax instance. + + + Creates a new CrefBracketedParameterListSyntax instance. + + + Creates a new CrefParameterSyntax instance. + + + Creates a new CrefParameterSyntax instance. + + + Creates a new XmlElementSyntax instance. + + + Creates a new XmlElementSyntax instance. + + + Creates a new XmlElementStartTagSyntax instance. + + + Creates a new XmlElementStartTagSyntax instance. + + + Creates a new XmlElementStartTagSyntax instance. + + + Creates a new XmlElementEndTagSyntax instance. + + + Creates a new XmlElementEndTagSyntax instance. + + + Creates a new XmlEmptyElementSyntax instance. + + + Creates a new XmlEmptyElementSyntax instance. + + + Creates a new XmlEmptyElementSyntax instance. + + + Creates a new XmlNameSyntax instance. + + + Creates a new XmlNameSyntax instance. + + + Creates a new XmlNameSyntax instance. + + + Creates a new XmlPrefixSyntax instance. + + + Creates a new XmlPrefixSyntax instance. + + + Creates a new XmlPrefixSyntax instance. + + + Creates a new XmlTextAttributeSyntax instance. + + + Creates a new XmlTextAttributeSyntax instance. + + + Creates a new XmlTextAttributeSyntax instance. + + + Creates a new XmlCrefAttributeSyntax instance. + + + Creates a new XmlCrefAttributeSyntax instance. + + + Creates a new XmlNameAttributeSyntax instance. + + + Creates a new XmlNameAttributeSyntax instance. + + + Creates a new XmlNameAttributeSyntax instance. + + + Creates a new XmlTextSyntax instance. + + + Creates a new XmlTextSyntax instance. + + + Creates a new XmlCDataSectionSyntax instance. + + + Creates a new XmlCDataSectionSyntax instance. + + + Creates a new XmlProcessingInstructionSyntax instance. + + + Creates a new XmlProcessingInstructionSyntax instance. + + + Creates a new XmlProcessingInstructionSyntax instance. + + + Creates a new XmlCommentSyntax instance. + + + Creates a new XmlCommentSyntax instance. + + + Creates a new IfDirectiveTriviaSyntax instance. + + + Creates a new IfDirectiveTriviaSyntax instance. + + + Creates a new ElifDirectiveTriviaSyntax instance. + + + Creates a new ElifDirectiveTriviaSyntax instance. + + + Creates a new ElseDirectiveTriviaSyntax instance. + + + Creates a new ElseDirectiveTriviaSyntax instance. + + + Creates a new EndIfDirectiveTriviaSyntax instance. + + + Creates a new EndIfDirectiveTriviaSyntax instance. + + + Creates a new RegionDirectiveTriviaSyntax instance. + + + Creates a new RegionDirectiveTriviaSyntax instance. + + + Creates a new EndRegionDirectiveTriviaSyntax instance. + + + Creates a new EndRegionDirectiveTriviaSyntax instance. + + + Creates a new ErrorDirectiveTriviaSyntax instance. + + + Creates a new ErrorDirectiveTriviaSyntax instance. + + + Creates a new WarningDirectiveTriviaSyntax instance. + + + Creates a new WarningDirectiveTriviaSyntax instance. + + + Creates a new BadDirectiveTriviaSyntax instance. + + + Creates a new BadDirectiveTriviaSyntax instance. + + + Creates a new DefineDirectiveTriviaSyntax instance. + + + Creates a new DefineDirectiveTriviaSyntax instance. + + + Creates a new DefineDirectiveTriviaSyntax instance. + + + Creates a new UndefDirectiveTriviaSyntax instance. + + + Creates a new UndefDirectiveTriviaSyntax instance. + + + Creates a new UndefDirectiveTriviaSyntax instance. + + + Creates a new LineDirectiveTriviaSyntax instance. + + + Creates a new LineDirectiveTriviaSyntax instance. + + + Creates a new LineDirectiveTriviaSyntax instance. + + + Creates a new PragmaWarningDirectiveTriviaSyntax instance. + + + Creates a new PragmaWarningDirectiveTriviaSyntax instance. + + + Creates a new PragmaWarningDirectiveTriviaSyntax instance. + + + Creates a new PragmaChecksumDirectiveTriviaSyntax instance. + + + Creates a new PragmaChecksumDirectiveTriviaSyntax instance. + + + Creates a new ReferenceDirectiveTriviaSyntax instance. + + + Creates a new ReferenceDirectiveTriviaSyntax instance. + + + Creates a new LoadDirectiveTriviaSyntax instance. + + + Creates a new LoadDirectiveTriviaSyntax instance. + + + Creates a new ShebangDirectiveTriviaSyntax instance. + + + Creates a new ShebangDirectiveTriviaSyntax instance. + + + + A SyntaxReference implementation that lazily translates the result (CSharpSyntaxNode) of the + original syntax reference to a syntax reference for its NamespaceDeclarationSyntax. + + + + + this is a basic do-nothing implementation of a syntax reference + + + + + Gets the expression-body syntax from an expression-bodied member. The + given syntax must be for a member which could contain an expression-body. + + + + + Creates a new syntax token with all whitespace and end of line trivia replaced with + regularly formatted trivia. + + The token to normalize. + A sequence of whitespace characters that defines a single level of indentation. + If true the replaced trivia is elastic trivia. + + + + Creates a new syntax token with all whitespace and end of line trivia replaced with + regularly formatted trivia. + + The token to normalize. + An optional sequence of whitespace characters that defines a + single level of indentation. + An optional sequence of whitespace characters used for end of line. + If true the replaced trivia is elastic trivia. + + + + Creates a new syntax trivia list with all whitespace and end of line trivia replaced with + regularly formatted trivia. + + The trivia list to normalize. + A sequence of whitespace characters that defines a single level of indentation. + If true the replaced trivia is elastic trivia. + + + + Creates a new syntax trivia list with all whitespace and end of line trivia replaced with + regularly formatted trivia. + + The trivia list to normalize. + An optional sequence of whitespace characters that defines a + single level of indentation. + An optional sequence of whitespace characters used for end of line. + If true the replaced trivia is elastic trivia. + + + + Updates the given SimpleNameSyntax node with the given identifier token. + This function is a wrapper that calls WithIdentifier on derived syntax nodes. + + + + The given simple name updated with the given identifier. + + + + Returns true if the specified node represents a lambda. + + + + + Given a node that represents a lambda body returns a node that represents the lambda. + + + + + See SyntaxNode.GetCorrespondingLambdaBody. + + + + + Returns true if the specified represents a body of a lambda. + + + + + When queries are translated into expressions select and group-by expressions such that + 1) select/group-by expression is the same identifier as the "source" identifier and + 2) at least one Where or OrderBy clause but no other clause is present in the contained query body or + the expression in question is a group-by expression and the body has no clause + + do not translate into lambdas. + By "source" identifier we mean the identifier specified in the from clause that initiates the query or the query continuation that includes the body. + + The above condition can be derived from the language specification (chapter 7.16.2) as follows: + - In order for 7.16.2.5 "Select clauses" to be applicable the following conditions must hold: + - There has to be at least one clause in the body, otherwise the query is reduced into a final form by 7.16.2.3 "Degenerate query expressions". + - Only where and order-by clauses may be present in the query body, otherwise a transformation in 7.16.2.4 "From, let, where, join and orderby clauses" + produces pattern that doesn't match the requirements of 7.16.2.5. + + - In order for 7.16.2.6 "Groupby clauses" to be applicable the following conditions must hold: + - Only where and order-by clauses may be present in the query body, otherwise a transformation in 7.16.2.4 "From, let, where, join and orderby clauses" + produces pattern that doesn't match the requirements of 7.16.2.5. + + + + + In C# lambda bodies are expressions or block statements. In both cases it's a single node. + In VB a lambda body might be a sequence of nodes (statements). + We define this function to minimize differences between C# and VB implementation. + + + + + If the specified node represents a lambda returns a node (or nodes) that represent its body (bodies). + + + + + Compares content of two nodes ignoring lambda bodies and trivia. + + + + + "Pair lambda" is a synthesized lambda that creates an instance of an anonymous type representing a pair of values. + + + + + Returns true if the specified node can represent a closure scope -- that is a scope of a captured variable. + Doesn't validate whether or not the node actually declares any captured variable. + + + + + This method is used to keep the code that generates binders in sync + with the code that searches for binders. We don't want the searcher + to skip over any nodes that could have associated binders, especially + if changes are made later. + + "Local binder" is a vague term that refers to binders that represent + scopes for names (e.g. BlockBinders) rather than binders that tweak + default behaviors (e.g. FieldInitializerBinders). Local binders are + created by LocalBinderFactory. + + + + + Given an initializer expression infer the name of anonymous property. + Returns default(SyntaxToken) if unsuccessful + + + + + An enumerator for diagnostic lists. + + + + + Moves the enumerator to the next diagnostic instance in the diagnostic list. + + Returns true if enumerator moved to the next diagnostic, false if the + enumerator was at the end of the diagnostic list. + + + + The current diagnostic that the enumerator is pointing at. + + + + + Gets the expression-body syntax from an expression-bodied member. The + given syntax must be for a member which could contain an expression-body. + + + + + DiagnosticAnalyzer for C# compiler's syntax/semantic/compilation diagnostics. + + + + + Returns the index of the first node of a specified kind in the node list. + + Node list. + The to find. + Returns non-negative index if the list contains a node which matches , -1 otherwise. + + + + True if the list has at least one node of the specified kind. + + + + + Returns the index of the first node of a specified kind in the node list. + + Node list. + The to find. + Returns non-negative index if the list contains a node which matches , -1 otherwise. + + + + True if the list has at least one node of the specified kind. + + + + + Returns the index of the first trivia of a specified kind in the trivia list. + + Trivia list. + The to find. + Returns non-negative index if the list contains a trivia which matches , -1 otherwise. + + + + True if the list has at least one trivia of the specified kind. + + + + + Returns the index of the first token of a specified kind in the token list. + + Token list. + The to find. + Returns non-negative index if the list contains a token which matches , -1 otherwise. + + + + Tests whether a list contains a token of a particular kind. + + + The to test for. + Returns true if the list contains a token which matches + +
+
diff --git a/packages/Microsoft.CodeAnalysis.CSharp.1.3.2/lib/portable-net45+win8/Microsoft.CodeAnalysis.CSharp.dll b/packages/Microsoft.CodeAnalysis.CSharp.1.3.2/lib/portable-net45+win8/Microsoft.CodeAnalysis.CSharp.dll new file mode 100644 index 0000000..20ab202 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.CSharp.1.3.2/lib/portable-net45+win8/Microsoft.CodeAnalysis.CSharp.dll differ diff --git a/packages/Microsoft.CodeAnalysis.CSharp.1.3.2/lib/portable-net45+win8/Microsoft.CodeAnalysis.CSharp.xml b/packages/Microsoft.CodeAnalysis.CSharp.1.3.2/lib/portable-net45+win8/Microsoft.CodeAnalysis.CSharp.xml new file mode 100644 index 0000000..031167d --- /dev/null +++ b/packages/Microsoft.CodeAnalysis.CSharp.1.3.2/lib/portable-net45+win8/Microsoft.CodeAnalysis.CSharp.xml @@ -0,0 +1,33254 @@ + + + + Microsoft.CodeAnalysis.CSharp + + + + + A Binder converts names in to symbols and syntax nodes into bound trees. It is context + dependent, relative to a location in source code. + + + This portion of the binder converts a AnonymousObjectCreationExpressionSyntax into + a bound anonymous object creation node + + + This portion of the binder converts an AwaitExpressionSyntax into a BoundExpression + + + This portion of the binder converts an into a . + + + This portion of the binder converts an into a . + + + This portion of the binder converts a QueryExpressionSyntax into a BoundExpression + + + This portion of the binder reports errors arising from resolving queries. + + + This portion of the binder converts StatementSyntax nodes into BoundStatements + + + + + Used to create a root binder. + + + + + Get the next binder in which to look up a name, if not found by this binder. + + + + + if we are in an explicitly checked context (within checked block or expression). + if we are in an explicitly unchecked context (within unchecked block or expression). + otherwise. + + + + + True if instructions that check overflow should be generated. + + + Spec 7.5.12: + For non-constant expressions (expressions that are evaluated at run-time) that are not + enclosed by any checked or unchecked operators or statements, the default overflow checking + context is unchecked unless external factors (such as compiler switches and execution + environment configuration) call for checked evaluation. + + + + + True if the compiler should check for overflow while evaluating constant expressions. + + + Spec 7.5.12: + For constant expressions (expressions that can be fully evaluated at compile-time), + the default overflow checking context is always checked. Unless a constant expression + is explicitly placed in an unchecked context, overflows that occur during the compile-time + evaluation of the expression always cause compile-time errors. + + + + + Some nodes have special binder's for their contents (like Block's) + + + + + Get locals declared immediately in scope represented by the node. + + + + + The member containing the binding context. Note that for the purposes of the compiler, + a lambda expression is considered a "member" of its enclosing method, field, or lambda. + + + + + Is the contained code within a member method body? + + + May be false in lambdas that are outside of member method bodies, e.g. lambdas in + field initializers. + + + + + Is the contained code within an iterator block? + + + Will be false in a lambda in an iterator. + + + + + Is the contained code within the syntactic span of an + iterator method? + + + Will be true in a lambda in an iterator. + + + + + If we are inside a context where a break statement is legal, + returns the that a break statement would branch to. + Returns null otherwise. + + + + + If we are inside a context where a continue statement is legal, + returns the that a continue statement would branch to. + Returns null otherwise. + + + + + Get the element type of this iterator. + + Node to report diagnostics, if any, such as "yield statement cannot be used + inside a lambda expression" + Where to place any diagnostics + Element type of the current iterator, or an error type. + + + + The imports for all containing namespace declarations (innermost-to-outermost, including global), + or null if there are none. + + + + + The type containing the binding context + + + + + Returns true if the binder is binding top-level script code. + + + + + Issue an error or warning for a symbol if it is Obsolete. If there is not enough + information to report diagnostics, then store the symbols so that diagnostics + can be reported at a later stage. + + + + + True if the symbol is definitely obsolete. + False if the symbol is definitely not obsolete. + Unknown if the symbol may be obsolete. + + NOTE: The return value reflects obsolete-ness, not whether or not the diagnostic was reported. + + + + + Expression lvalue and rvalue requirements. + + + + + Expression is the RHS of an assignment operation. + + + The following are rvalues: values, variables, null literals, properties + and indexers with getters, events. The following are not rvalues: + namespaces, types, method groups, anonymous functions. + + + + + Expression is the RHS of an assignment operation + and may be a method group. + + + + + Expression is the LHS of a simple assignment operation. + + + + + Expression is the operand of an increment + or decrement operation. + + + + + Expression is the LHS of a compound assignment + operation (such as +=). + + + + + Expression is an out parameter. + + + + + Expression is the operand of an address-of operation (&). + + + + + Expression is the receiver of a fixed buffer field access + + + + + Report diagnostics that should be reported when using a synthesized attribute. + + + + + Outside of checked, unchecked expression/block. + + + + + Within unchecked expression/block. + + + + + Within checked expression/block. + + + + + We represent the set of query variables in scope at a particular point by a RangeVariableMap. + Each query variable in scope has a key in this map. If the corresponding value is empty, then + that query variable is represented directly by a lambda parameter. If it is non-empty, then + to get the value of that query variable one starts with the first parameter of the current + lambda (the first parameter is always the transparent one), and dot through its members using + the names in the value list, in reverse order. So, for example, if the query variable "x" has + a value in this map of ["Item2", "Item1", "Item1"], then the way to compute the value of that + query variable is starting with the current lambda's first parameter P, compute "P.Item1.Item1.Item2". + See also WithQueryLambdaParametersBinder. + + + + + Actually, defines if an error ERR_AnonymousTypeNotAvailable is to be generated; + + Dev10 rules (which are based on BindingContext::InMethod()) are difficult to + reproduce, so this implementation checks both current symbol as well as syntax nodes. + + + + + Returns the type to be used as a field type; generates errors in case the type is not + supported for anonymous type fields. + + + + + Gets the rewritten attribute constructor arguments, i.e. the arguments + are in the order of parameters, which may differ from the source + if named constructor arguments are used. + + For example: + void Foo(int x, int y, int z, int w = 3); + + Foo(0, z: 2, y: 1); + + Arguments returned: 0, 1, 2, 3 + + Rewritten attribute constructor arguments + + CONSIDER: Can we share some code will call rewriting in the local rewriter? + + + + + Walk a custom attribute argument bound node and return a TypedConstant. Verify that the expression is a constant expression. + + + + + Return true iff an await with this subexpression would be legal where the expression appears. + + + + + Assuming we are in an async method, return true if we're in a context where await would be illegal. + Specifically, return true if we're in a lock, catch, or finally. + + + + + Reports an error if the await expression did not occur in an async context. + + True if the expression contains errors. + + + + Report diagnostics if the await expression occurs in a context where it is not allowed. + + True if errors were found. + + + + Finds and validates the required members of an awaitable expression, as described in spec 7.7.7.1. + + True if the expression is awaitable; false otherwise. + + + + Validates the awaited expression, returning true if no errors are found. + + + + + Finds the GetAwaiter method of an awaitable expression. + + + Spec 7.7.7.1: + An awaitable expression t has an accessible instance or extension method called GetAwaiter with no + parameters and no type parameters, and a return type A that meets the additional requirements for an + Awaiter. + NOTE: this is an error in the spec. An extension method of the form + Awaiter<T> GetAwaiter<T>(this Task<T>) may be used. + + + + + Finds the IsCompleted property of an Awaiter type. + + + Spec 7.7.7.1: + An Awaiter A has an accessible, readable instance property IsCompleted of type bool. + + + + + Checks that the Awaiter implements System.Runtime.CompilerServices.INotifyCompletion. + + + Spec 7.7.7.1: + An Awaiter A implements the interface System.Runtime.CompilerServices.INotifyCompletion. + + + + + Finds the GetResult method of an Awaiter type. + + + Spec 7.7.7.1: + An Awaiter A has an accessible instance method GetResult with no parameters and no type parameters. + + + + + Return a collection of bound constraint clauses indexed by type parameter + ordinal. All constraint clauses are bound, even if there are multiple constraints + for the same type parameter, or constraints for unrecognized type parameters. + Extra constraints are not included in the returned collection however. + + + + + Bind and return a single type parameter constraint clause. + + + + + Returns true if the type is a valid constraint type. + Otherwise returns false and generates a diagnostic. + + + + + This method implements the algorithm in spec section 7.6.5.1. + + For method group conversions, there are situations in which the conversion is + considered to exist ("Otherwise the algorithm produces a single best method M having + the same number of parameters as D and the conversion is considered to exist"), but + application of the conversion fails. These are the "final validation" steps of + overload resolution. + + + True if there is any error. + + + + + Performs the following checks: + + Spec 7.6.5: Invocation expressions (definition of Final Validation) + The method is validated in the context of the method group: If the best method is a static method, + the method group must have resulted from a simple-name or a member-access through a type. If the best + method is an instance method, the method group must have resulted from a simple-name, a member-access + through a variable or value, or a base-access. If neither of these requirements is true, a binding-time + error occurs. + (Note that the spec omits to mention, in the case of an instance method invoked through a simple name, that + the invocation must appear within the body of an instance method) + + Spec 7.5.4: Compile-time checking of dynamic overload resolution + If F is a static method, the method group must have resulted from a simple-name, a member-access through a type, + or a member-access whose receiver can't be classified as a type or value until after overload resolution (see §7.6.4.1). + If F is an instance method, the method group must have resulted from a simple-name, a member-access through a variable or value, + or a member-access whose receiver can't be classified as a type or value until after overload resolution (see §7.6.4.1). + + + True if there is any error. + + + + + Was the receiver expression compiler-generated? + + + + + This method implements the checks in spec section 15.2. + + + + + This method combines final validation (section 7.6.5.1) and delegate compatibility (section 15.2). + + CSharpSyntaxNode of the expression requiring method group conversion. + Conversion to be performed. + Optional receiver. + Method invoked as extension method. + Target delegate type. + Where diagnostics should be added. + True if a diagnostic has been added. + + + + This method is a wrapper around MethodGroupConversionHasErrors. As a preliminary step, + it checks whether a conversion exists. + + + + + We can't use BindNamespaceOrTypeSymbol, since it doesn't return inaccessible symbols (directly). + + + Guaranteed not to return null. + + CONSIDER: As in dev11, we don't handle ambiguity at this level. Hypothetically, + we could just pick one, though an "ideal" solution would probably involve a search + down all ambiguous branches. + + + + + Perform lookup (optionally, in a specified container). If nothing is found and the member name matches the containing type + name, then use the instance constructors of the type instead. The resulting symbols are sorted since tie-breaking is based + on order and we want cref binding to be repeatable. + + + Never returns null. + + + + + Given a list of viable lookup results (based on the name, arity, and containing symbol), + attempt to select one. + + + + + At this point, we have a list of viable symbols and no parameter list with which to perform + overload resolution. We'll just return the first symbol, giving a diagnostic if there are + others. + Caveat: If there are multiple candidates and only one is from source, then the source symbol + wins and no diagnostic is reported. + + + + + Replace any named type in the symbol list with its instance constructors. + Construct all candidates with the implicitly-declared CrefTypeParameterSymbols. + + + + + Given a list of method and/or property candidates, choose the first one (if any) with a signature + that matches the parameter list in the cref. Return null if there isn't one. + + + Produces a diagnostic for ambiguous matches, but not for unresolved members - WRN_BadXMLRef is + handled in BindMemberCref. + + + + + If the member is generic, construct it with the CrefTypeParameterSymbols that should be in scope. + + + + + Keep in sync with CSharpSemanticModel.GetSpeculativelyBoundExpression. + + + + + Determines whether "this" reference is available within the current context. + + The reference was explicitly specified in syntax. + True if "this" is not available due to the current method/property/field initializer being static. + True if a reference to "this" is available. + + + + Returns true if the node is in a position where an unbound type + such as (C<,>) is allowed. + + + + + Generates a new with no known type + + + + + Generates a new with no known type, and the given bound child. + + + + + Generates a new with no known type, and the given bound children. + + + + + Generates a new with no known type, given lookup resultKind. + + + + + Generates a new with no known type, given lookup resultKind and the given bound child. + + + + + Generates a new with no known type, given lookup resultKind and the given bound children. + + + + + Generates a new with no known type, given lookupResultKind and given symbols for GetSemanticInfo API. + + + + + Generates a new with no known type, given lookupResultKind and given symbols for GetSemanticInfo API, + and the given bound child. + + + + + Generates a new with no known type, given lookupResultKind and given symbols for GetSemanticInfo API, + and the given bound children. + + + + + Generates a new with no known type, given lookupResultKind and given symbols for GetSemanticInfo API, + and the given bound children. + + + + + Helper method to generate a bound expression with HasErrors set to true. + Returned bound expression is guaranteed to have a non-null type, except when is an unbound lambda. + If already has errors and meets the above type requirements, then it is returned unchanged. + Otherwise, if is a BoundBadExpression, then it is updated with the and non-null type. + Otherwise, a new wrapping is returned. + + + Returned expression need not be a , but is guaranteed to have HasErrors set to true. + + + + + Bind the expression and verify the expression matches the combination of lvalue and + rvalue requirements given by valueKind. If the expression was bound successfully, but + did not meet the requirements, the return value will be a that + (typically) wraps the subexpression. + + + + + This function is only needed for SemanticModel to perform binding for erroneous cases. + + + + + Binds a simple identifier. + + + + + This implements the casting behavior described in section 6.2.3 of the spec: + + - If the nullable conversion is from S to T?, the conversion is evaluated as the underlying conversion + from S to T followed by a wrapping from T to T?. + + This particular check is done in the binder because it involves conversion processing rules (like overflow + checking and constant folding) which are not handled by Conversions. + + + + + Gets the NameSyntax associated with the syntax node + If no syntax is attached it sets the nameString to plain text + name and returns a null NameSyntax + + Syntax node + Plain text name + + + + Gets the plain text name associated with the expression syntax node + + Expression syntax node + Plain text name + + + + This method walks through the array's InitializerExpressionSyntax and binds all the initializer expressions recursively. + NOTE: It doesn't convert the bound initializer expressions to array's element type. + NOTE: This is done separately in ConvertAndBindArrayInitialization method below. + + Initializer Syntax. + Bound expression builder. + Diagnostics. + Current array dimension being processed. + Rank of the array type. + + + + Given an array of bound initializer expressions, this method converts these bound expressions + to array's element type and generates a BoundArrayInitialization with the converted initializers. + + Diagnostics. + Initializer Syntax. + Array type. + Known array bounds. + Current array dimension being processed. + Array of bound initializer expressions. + + Index into the array of bound initializer expressions to fetch the next bound expression. + + + + + + Bind the (implicit or explicit) constructor initializer of a constructor symbol (in source). + + + Null for implicit, + BaseConstructorInitializerSyntax.ArgumentList, or + ThisConstructorInitializerSyntax.ArgumentList, or + BaseClassWithArgumentsSyntax.ArgumentList for explicit. + Constructor containing the initializer. + Accumulates errors (e.g. unable to find constructor to invoke). + A bound expression for the constructor initializer call. + + This method should be kept consistent with Compiler.BindConstructorInitializer (e.g. same error codes). + + + + + Given the type containing constructors, gets the list of candidate instance constructors and uses overload resolution to determine which one should be called. + + The containing type of the constructors. + The already bound arguments to the constructor. + The name to use in diagnostics if overload resolution fails. + The location at which to report overload resolution result diagnostics. + True to suppress overload resolution result diagnostics (but not argument diagnostics). + Where diagnostics will be reported. + If this method returns true, then it will contain a valid MethodResolutionResult. + Otherwise, it may contain a MethodResolutionResult for an inaccessible constructor (in which case, it will incorrectly indicate success) or nothing at all. + Candidate instance constructors of type used for overload resolution. + It is always legal to access a protected base class constructor + via a constructor initializer, but not from an object creation expression. + True if overload resolution successfully chose an accessible constructor. + + The two-pass algorithm (accessible constructors, then all constructors) is the reason for the unusual signature + of this method (i.e. not populating a pre-existing ). + Presently, rationalizing this behavior is not worthwhile. + + + + + Binds a member access expression + + + + + Attempt to bind the LHS of a member access expression. If this is a Color Color case (spec 7.6.4.1), + then return a BoundExpression if we can easily disambiguate or a BoundTypeOrValueExpression if we + cannot. If this is not a Color Color case, then return null. + + + + + Bind the RHS of a member access expression, given the bound LHS. + It is assumed that CheckValue has not been called on the LHS. + + + + + Create a value from the expression that can be used as a left-hand-side + of a member access. This method special-cases method and property + groups only. All other expressions are returned as is. + + + + + Report the error from member access lookup. Or, if there + was no explicit error from lookup, report "no such member". + + + + + Return true if the given type is or implements a WinRTAsyncInterface. + + + + + Return a BoundExpression representing the invalid member. + + + + + Combine the receiver and arguments of an extension method + invocation into a single argument list to allow overload resolution + to treat the invocation as a static method invocation with no receiver. + + + + + Binds a static or instance member access. + + + + + Given a viable LookupResult, report any ambiguity errors and return either a single + non-method symbol or a method or property group. If the result set represents a + collection of methods or a collection of properties where at least one of the properties + is an indexed property, then 'methodOrPropertyGroup' is populated with the method or + property group and the method returns null. Otherwise, the method returns a single + symbol and 'methodOrPropertyGroup' is empty. (Since the result set is viable, there + must be at least one symbol.) If the result set is ambiguous - either containing multiple + members of different member types, or multiple properties but no indexed properties - + then a diagnostic is reported for the ambiguity and a single symbol is returned. + + + + + Perform lookup and overload resolution on methods defined directly on the class and any + extension methods in scope. Lookup will occur for extension methods in all nested scopes + as necessary until an appropriate method is found. If analyzedArguments is null, the first + method group is returned, without overload resolution being performed. That method group + will either be the methods defined on the receiver class directly (no extension methods) + or the first set of extension methods. + + + + + Represents a small change from the enclosing/next binder. + Can specify a BindingLocation and a ContainingMemberOrLambda. + + + + + Represents a small change from the enclosing/next binder. + Can specify a receiver Expression for containing conditional member access. + + + + + It seems to be common to do both of these things at once, so provide a way to do so + without adding two links to the binder chain. + + + + + In regular C#, all field initializers are assignments to fields and the assigned expressions + may not reference instance members. + + + + + In script C#, some field initializers are assignments to fields and others are global + statements. There are no restrictions on accessing instance members. + + + + + Helper method to create a synthesized method invocation expression. + + Syntax Node. + Receiver for the method call. + Method to be invoked on the receiver. + Arguments to the method call. + Diagnostics. + Optional type arguments syntax. + Optional type arguments. + The syntax for the query clause generating this invocation expression, if any. + True to allow invocation of fields and properties of delegate type. Only methods are allowed otherwise. + False to prevent selecting a params method in unexpanded form. + Synthesized method invocation expression. + + + + Bind an expression as a method invocation. + + + + + Bind an expression as a method invocation. + + + + + Perform overload resolution on the method group or expression (BoundMethodGroup) + and arguments and return a BoundExpression representing the invocation. + + Invocation syntax node. + The syntax for the invoked method, including receiver. + Name of the invoked method. + Overload resolution result for method group executed by caller. + Arguments bound by the caller. + Method group if the invocation represents a potentially overloaded member. + Delegate type if method group represents a delegate. + Diagnostics. + + Indicates that there are additional extension method candidates of the same lookup viability in cases when + none of the instance methods are applicable to the argument list. + + The syntax for the query clause generating this invocation expression, if any. + BoundCall or error expression representing the invocation. + + + Invocation syntax node. + The syntax for the invoked method, including receiver. + + + + Replace a BoundTypeOrValueExpression with a BoundExpression for either a type (if useType is true) + or a value (if useType is false). Any other node is unmodified. + + + Call this once overload resolution has succeeded on the method group of which the BoundTypeOrValueExpression + is the receiver. Generally, useType will be true if the chosen method is static and false otherwise. + + + + + Return the delegate type if this expression represents a delegate. + + + + + Returns true if syntax form is OK (so no errors were reported) + + + + + Helper method that checks whether there is an invocable 'nameof' in scope. + + + + + Performs name lookup for simple generic or non-generic name + within an optional qualifier namespace or type symbol. + If LookupOption.AttributeTypeOnly is set, then it performs + attribute type lookup which involves attribute name lookup + with and without "Attribute" suffix. + + + + + Look for any symbols in scope with the given name and arity. + + + Makes a second attempt if the results are not viable, in order to produce more detailed failure information (symbols and diagnostics). + + + + + If qualifierOpt is null, look for any symbols in + scope with the given name and arity. + Otherwise look for symbols that are members of the specified qualifierOpt. + + + + + Look for symbols that are members of the specified namespace or type. + + + + + Lookup a member name in a submission chain. + + + We start with the current submission class and walk the submission chain back to the first submission. + The search has two phases + 1) We are looking for any symbol matching the given name, arity, and options. If we don't find any the search is over. + If we find and overloadable symbol(s) (a method or an indexer) we start looking for overloads of this kind + (lookingForOverloadsOfKind) of symbol in phase 2. + 2) If a visited submission contains a matching member of a kind different from lookingForOverloadsOfKind we stop + looking further. Otherwise, if we find viable overload(s) we add them into the result. + + Note that indexers are not supported in script but we deal with them here to handle errors. + + + + + Lookup extension methods by name and arity in the given binder and + check viability in this binder. The lookup is performed on a single + binder because extension method search stops at the first applicable + method group from the nearest enclosing namespace. + + + + + Lookup attribute name in the given binder. By default two name lookups are performed: + (1) With the provided name + (2) With an Attribute suffix added to the provided name + Lookup with Attribute suffix is performed only if LookupOptions.VerbatimAttributeName is not set. + + If either lookup is ambiguous, we return the corresponding result with ambiguous symbols. + Else if exactly one result is single viable attribute type, we return that result. + Otherwise, we return a non-viable result with LookupResult.NotAnAttributeType or an empty result. + + + + + Return the extension methods from this specific binding scope that match the name and optional + arity. Since the lookup of extension methods is iterative, proceeding one binding scope at a time, + GetCandidateExtensionMethods should not defer to the next binding scope. Instead, the caller is + responsible for walking the nested binding scopes from innermost to outermost. This method is overridden + to search the available members list in binding types that represent types, namespaces, and usings. + + + + + If the type implements one of a select few WinRT interfaces, the interface type is + projected to the CLR collection type (e.g., IVector to IList). + When importing a winmd type it may implement one or more winmd collection + interfaces. When the collection interfaces are projected, we may need + to add the projected members to the imported type so that calls to those + members succeed as normal. This method adds the interface methods to + the lookup, if necessary. The CLR understands that a call to the .NET interface + should be projected onto the WinRT interface method. + + + + + This helper is used to determine whether this symbol hides / is hidden + based on its signature, as opposed to its name. + + + CONSIDER: It might be nice to generalize this - maybe an extension method + on Symbol (e.g. IsOverloadable or HidesByName). + + + + + Distinguish from , which performs an analogous task for Add*LookupSymbolsInfo*. + + + + + Used by Add*LookupSymbolsInfo* to determine whether the symbol is of interest. + Distinguish from , which performs an analogous task for LookupSymbols*. + + + Does not consider - that is left to the caller. + + + + + A symbol is accessible for referencing in a cref if it is in the same assembly as the reference + or the symbols's effective visibility is not private. + + + + + Check whether "symbol" is accessible from this binder. + Also checks protected access via "accessThroughType". + + + + + Check whether "symbol" is accessible from this binder. + Also checks protected access via "accessThroughType", and sets "failedThroughTypeCheck" if fails + the protected access check. + + + + + Should only be called by , + which will already have checked for . + + + + + Look for names in scope + + + + + Look for names of members + + + + + Don't call this one directly - call one of the helpers. + + + + + For "receiver.event += expr", produce "receiver.add_event(expr)". + For "receiver.event -= expr", produce "receiver.remove_event(expr)". + + + Performs some validation of the accessor that couldn't be done in CheckEventValueKind, because + the specific accessor wasn't known. + + + + + If one of the (unconverted) operands has constant value null and the other has + a null constant value other than null, then they are definitely not equal + and we can give a constant value for either == or !=. This is a spec violation + that we retain from Dev10. + + The operator kind. Nothing will happen if it is not a lifted equality operator. + The left-hand operand of the operation (possibly wrapped in a conversion). + The right-hand operand of the operation (possibly wrapped in a conversion). + + If the operator represents lifted equality, then constant value true if both arguments have constant + value null, constant value false if exactly one argument has constant value null, and null otherwise. + If the operator represents lifted inequality, then constant value false if both arguments have constant + value null, constant value true if exactly one argument has constant value null, and null otherwise. + + + SPEC VIOLATION: according to the spec (section 7.19) constant expressions cannot + include implicit nullable conversions or nullable subexpressions. However, Dev10 + specifically folds over lifted == and != (see ExpressionBinder::TryFoldingNullableEquality). + Dev 10 does do compile-time evaluation of simple lifted operators, but it does so + in a rewriting pass (see NullableRewriter) - they are not treated as constant values. + + + + + Returns ConstantValue.Bad if, and only if, compound string length is out of supported limit. + The parameter contains value corresponding to the + left node, or zero, which will trigger inference. Upon return, it will + be adjusted to correspond future result node. + + + + + From ExpressionBinder::EnsureQMarkTypesCompatible: + + The v2.0 specification states that the types of the second and third operands T and S of a ternary operator + must be TT and TS such that either (a) TT==TS, or (b), TT->TS or TS->TT but not both. + + Unfortunately that is not what we implemented in v2.0. Instead, we implemented + that either (a) TT=TS or (b) T->TS or S->TT but not both. That is, we looked at the + convertibility of the expressions, not the types. + + + Changing that to the algorithm in the standard would be a breaking change. + + b ? (Func<int>)(delegate(){return 1;}) : (delegate(){return 2;}) + + and + + b ? 0 : myenum + + would suddenly stop working. (The first because o2 has no type, the second because 0 goes to + any enum but enum doesn't go to int.) + + It gets worse. We would like the 3.0 language features which require type inference to use + a consistent algorithm, and that furthermore, the algorithm be smart about choosing the best + of a set of types. However, the language committee has decided that this algorithm will NOT + consume information about the convertibility of expressions. Rather, it will gather up all + the possible types and then pick the "largest" of them. + + To maintain backwards compatibility while still participating in the spirit of consistency, + we implement an algorithm here which picks the type based on expression convertibility, but + if there is a conflict, then it chooses the larger type rather than producing a type error. + This means that b?0:myshort will have type int rather than producing an error (because 0->short, + myshort->int). + + + + + Constant folding for conditional (aka ternary) operators. + + + + + This is a clone of the Dev10 logic for reporting query errors. + + + + + This is the set of parameters and local variables that were used as arguments to + lock or using statements in enclosing scopes. + + + using (x) { } // x counts + using (IDisposable y = null) { } // y does not count + + + + + Noteworthy override is in MemberSemanticModel.IncrementalBinder (used for caching). + + + + + Report an error if this is an awaitable async method invocation that is not being awaited. + + + The checks here are equivalent to StatementBinder::CheckForUnobservedAwaitable() in the native compiler. + + + + + Wrap the initializer in a BoundFixedLocalCollectionInitializer so that the rewriter will have the + information it needs (e.g. conversions, helper methods). + + + + + The purpose of this method is to determine if the expression is classified by the + specification as a *variable*. If it is not then this code gives an appropriate error message. + + To determine the appropriate error message we need to know two things: + + (1) why do we want to know if this is a variable? Because we are trying to assign it, + increment it, or pass it by reference? + + (2) Are we trying to determine if the left hand side of a dot is a variable in order + to determine if the field or property on the right hand side of a dot is assignable? + + + + + Check the expression is of the required lvalue and rvalue specified by valueKind. + The method returns the original expression if the expression is of the required + type. Otherwise, an appropriate error is added to the diagnostics bag and the + method returns a BoundBadExpression node. The method returns the original + expression without generating any error if the expression has errors. + + + + + There are two BadEventUsage error codes and this method decides which one should + be used for a given event. + + + + + SPEC: When a property or indexer declared in a struct-type is the target of an + SPEC: assignment, the instance expression associated with the property or indexer + SPEC: access must be classified as a variable. If the instance expression is + SPEC: classified as a value, a compile-time error occurs. Because of 7.6.4, + SPEC: the same rule also applies to fields. + + + NOTE: The spec fails to impose the restriction that the receiver must be classified + as a variable (unlike for properties - 7.17.1). This seems like a bug, but we have + production code that won't build with the restriction in place (see DevDiv #15674). + + + + + Wrap a given expression e into a block as either { e; } or { return e; } + Shared between lambda and expression-bodied method binding. + + + + + Binds an expression-bodied member with expression e as either { return e;} or { e; }. + + + + + Binds a lambda with expression e as either { return e;} or { e; }. + + + + + Binds the type for the syntax taking into account possibility of "var" type. + + Type syntax to bind. + Diagnostics. + + Set to false if syntax binds to a type in the current context and true if + syntax is "var" and it binds to "var" keyword in the current context. + + + Bound type if syntax binds to a type in the current context and + null if syntax binds to "var" keyword in the current context. + + + + + Binds the type for the syntax taking into account possibility of "var" type. + + Type syntax to bind. + Diagnostics. + + Set to false if syntax binds to a type in the current context and true if + syntax is "var" and it binds to "var" keyword in the current context. + + Alias symbol if syntax binds to an alias. + + Bound type if syntax binds to a type in the current context and + null if syntax binds to "var" keyword in the current context. + + + + + Binds the type for the syntax taking into account possibility of "var" type. + If the syntax binds to an alias symbol to a type, it returns the alias symbol. + + Type syntax to bind. + Diagnostics. + + Set to false if syntax binds to a type or alias to a type in the current context and true if + syntax is "var" and it binds to "var" keyword in the current context. + + + Bound type or alias if syntax binds to a type or alias to a type in the current context and + null if syntax binds to "var" keyword in the current context. + + + + + The immediately containing namespace or named type, or the global + namespace if containing symbol is neither a namespace or named type. + + + + + Binds a simple name or the simple name portion of a qualified name. + + + + + Keep check and error in sync with ConstructBoundMethodGroupAndReportOmittedTypeArguments. + + + + + Keep check and error in sync with ConstructNamedTypeUnlessTypeArgumentOmitted. + + + + + Check generic type constraints unless the type is used as part of a type or method + declaration. In those cases, constraints checking is handled by the caller. + + + + + This is a layer on top of the Compilation version that generates a diagnostic if the special + member isn't found. + + + + + Reports use-site diagnostics for the specified symbol. + + + True if there was an error among the reported diagnostics + + + + + Reports use-site diagnostics for the specified symbol. + + + True if there was an error among the reported diagnostics + + + + + This is a layer on top of the Compilation version that generates a diagnostic if the well-known + type isn't found. + + + + + Retrieves a well-known type member and reports diagnostics. + + Null if the symbol is missing. + + + + Returns -1 if None. + + + + + Prefers symbols from source module, then from added modules, then from referenced assemblies. + Returns true if values were swapped. + + + + + Returns true if the second is a better location than the first. + + + + + Prefer symbols from source module, then from added modules, then from referenced assemblies. + + + + + This is only intended to be called when the type isn't found (i.e. not when it is found but is inaccessible, has the wrong arity, etc). + + + + + Look for a type forwarder for the given type in the containing assembly and any referenced assemblies. + If one is found, search again in the target assembly. Return the last assembly in the chain. + + The metadata name of the (potentially) forwarded type, including the arity (if non-zero). + The arity of the forwarded type. + Set to true if a cycle was found in the type forwarders. + + + Since this method is intended to be used for error reporting, it stops as soon as it finds + any type forwarder - it does not check other assemblies for consistency or better results. + + + + + True if we are currently in an unsafe region (type, member, or block). + + + Does not imply that this compilation allows unsafe regions (could be in an error recovery scenario). + To determine that, check this.Compilation.Options.AllowUnsafe. + + + + True if a diagnostic was reported, or would have been reported if not for + the suppress flag. + + + True if a diagnostic was reported, or would have been reported if not for + the suppress flag. + + + True if a diagnostic was reported, or would have been reported if not for + the suppress flag. + + + True if a diagnostic was reported, or would have been reported if not for + the suppress flag. + + + + Get the name of the method so that it can be looked up in the containing type. + + Non-null declaration syntax. + Binder for the scope around the method (may be null for operators, constructors, and destructors). + + + + Get the name of the property, indexer, or event so that it can be looked up in the containing type. + + Non-null declaration syntax. + Non-null binder for the scope around the member. + + + + Returns true if the location is within the syntax tree and span. + + + + + Returns true if containingNode has a child that contains the specified position + and has kind UsingDirective. + + + Usings can't see other usings, so this is extra info when looking at a namespace + or compilation unit scope. + + + + + Used to detect whether we are in a cref parameter type. + + + + + Used to detect whether we are in a cref return type. + + + + + We're in a <param> or <paramref> element, so we want a binder that can see + the parameters of the associated member and nothing else. + + + + + We're in a <typeparam> or <typeparamref> element, so we want a binder that can see + the type parameters of the associated member and nothing else. + + + + + Given a CrefSyntax and an associated member declaration syntax node, + construct an appropriate binder for binding the cref. + + Cref that will be bound. + The member to which the documentation comment (logically) containing + the cref syntax applies. + Corresponding binder factory. + True to get a special binder for cref parameter and return types. + + The CrefSyntax does not actually have to be within the documentation comment on the member - it + could be included from another file. + + + + + Internal version of MakeCrefBinder that allows the caller to explicitly set the underlying binder. + + + + + Walk up from an XML syntax node (attribute or tag) to the enclosing documentation comment trivia. + + + + + Return binder for binding at node. + and + are optional syntax and symbol for the member containing . + If provided, the will use the member symbol rather + than looking up the member in the containing type, allowing this method to be called + while calculating the member list. + + + Note, there is no guarantee that the factory always gives back the same binder instance for the same node. + + + + + Returns binder that binds usings and aliases + + + Specify imports in the corresponding namespace, or + for top-level imports. + + True if the binder will be used to bind a using directive. + + + + A specific location for binding. + + + + + Indicates that the current context allows unsafe constructs. + + + NOTE: Dev10 doesn't seem to treat attributes as being within the unsafe region. + Fortunately, not following this behavior should not be a breaking change since + attribute arguments have to be constants and there are no constants of unsafe + types. + + + + + Indicates that the unsafe diagnostics are not reported in the current context, regardless + of whether or not it is (part of) an unsafe region. + + + + + Indicates that this binder is being used to answer SemanticModel questions (i.e. not + for batch compilation). + + + Imports touched by a binder with this flag set are not consider "used". + + + + Remarks, mutually exclusive with . + + + Remarks, mutually exclusive with . + + + + In the debugger, one can take the address of a managed object. + + + + + In the debugger, the context is always unsafe, but one can still await. + + + + + Ignore duplicate types from the cor library. + + + + + When binding imports in scripts/submissions, using aliases (other than from the current submission) + are considered but other imports are not. + + + + + In a file that has been included in the compilation via #load. + + + + + Extension methods for the type. + + + + + A binder that knows no symbols and will not delegate further. + + + + + This is used while computing the values of constant fields. Since they can depend on each + other, we need to keep track of which ones we are currently computing in order to avoid (and + report) cycles. + + + + + This binder keeps track of the set of constant fields that are currently being evaluated + so that the set can be passed into the next call to SourceFieldSymbol.ConstantValue (and + its callers). + + + + + Each application of an attribute is effectively a constructor call. Since the attribute constructor + might have a CallerMemberName parameter, we need to keep track of which method/property/event + the attribute is on/in (e.g. on a parameter) so that we can use the name of that member as the + CallerMemberName argument. + + + + Next binder in the chain (enclosing). + Symbol to which the attribute was applied (e.g. a parameter). + + + + We're binding an attribute and this is the member to/in which the attribute was applied. + + + Method, property, event, or null. + A virtual property on Binder (i.e. our usual pattern) would be more robust, but the applicability + of this property is so narrow that it doesn't seem worthwhile. + + + + + Walk up to the nearest method/property/event. + + + + + This is a special binder used for decoding some special well-known attributes very early in the attribute binding phase. + It only binds those attribute argument syntax which can produce valid attribute arguments, but doesn't report any diagnostics. + Subsequent binding phase will rebind such erroneous attributes and generate appropriate diagnostics. + + + + + Since this method is expected to be called on every nested expression of the argument, it doesn't + need to recurse (directly). + + + + + This binder owns and lazily creates the map of SyntaxNodes to Binders associated with + the syntax with which it is created. This binder is not created in reaction to any + specific syntax node type. It is inserted into the binder chain + between the binder which it is constructed with and those that it constructs via + the LocalBinderFactory. + + + + + A distinct scope that may expose extension methods. For a particular Binder, there + are two possible scopes: one for the namespace, and another for any using statements + in the namespace. The namespace scope is searched before the using scope. + + + + + An enumerable collection of extension method scopes in search + order, from the given Binder, out through containing Binders. + + + + + An enumerator over ExtensionMethodScopes. + + + + + Information to be deduced while binding a foreach loop so that the loop can be lowered + to a while over an enumerator. Not applicable to the array or string forms. + + + + + A loop binder that (1) knows how to bind foreach loops and (2) has the foreach iteration variable in scope. + + + This binder produces BoundForEachStatements. The lowering described in the spec is performed in ControlFlowRewriter. + + + + + Bind the ForEachStatementSyntax at the root of this binder. + + + + + The spec describes an algorithm for finding the following types: + 1) Collection type + 2) Enumerator type + 3) Element type + + The implementation details are a bit difference. If we're iterating over a string or an array, then we don't need to record anything + but the inferredType (in case the iteration variable is implicitly typed). If we're iterating over anything else, then we want the + inferred type plus a ForEachEnumeratorInfo.Builder with: + 1) Collection type + 2) Element type + 3) GetEnumerator method of the collection type (return type will be the enumerator type from the spec) + 4) Current property of the enumerator type + 5) MoveNext method of the enumerator type + + The caller will have to do some extra conversion checks before creating a ForEachEnumeratorInfo for the BoundForEachStatement. + + Builder to fill in (partially, all but conversions). + The expression over which to iterate. + Populated with binding diagnostics. + Partially populated (all but conversions) or null if there was an error. + + + + Check for a GetEnumerator method on collectionExprType. Failing to satisfy the pattern is not an error - + it just means that we have to check for an interface instead. + + Type of the expression over which to iterate. + Populated with *warnings* if there are near misses. + Builder to fill in. set if the pattern in satisfied. + True if the method was found (still have to verify that the return (i.e. enumerator) type is acceptable). + + Only adds warnings, so does not affect control flow (i.e. no need to check for failure). + + + + + Perform a lookup for the specified method on the specified type. Perform overload resolution + on the lookup results. + + Type to search. + Method to search for. + Passed in for reusability. + True if failures should result in warnings; false if they should result in errors. + Populated with binding diagnostics. + The desired method or null. + + + + The overload resolution portion of FindForEachPatternMethod. + + + + + Called after it is determined that the expression being enumerated is of a type that + has a GetEnumerator method. Checks to see if the return type of the GetEnumerator + method is suitable (i.e. has Current and MoveNext). + + Must be non-null and contain a non-null GetEnumeratorMethod. + Will be populated with pattern diagnostics. + True if the return type has suitable members. + + It seems that every failure path reports the same diagnostics, so that is left to the caller. + + + + + Checks if the given type implements (or extends, in the case of an interface), + System.Collections.IEnumerable or System.Collections.Generic.IEnumerable<T>, + for at least one T. + + builder to fill in CollectionType. + Type to check. + + True if multiple T's are found. + True if some IEnumerable is found (may still be ambiguous). + + + + Report appropriate diagnostics when lookup of a pattern member (i.e. GetEnumerator, Current, or MoveNext) fails. + + Failed lookup result. + Type in which member was looked up. + Name of looked up member. + True if failures should result in warnings; false if they should result in errors. + Populated appropriately. + + + + Tracks fields that are being bound while binding their initializers. + + + Used to detect circular references like: + var x = y; + var y = x; + + + + + This binder is for binding the initializer of an implicitly typed + local variable. While binding an implicitly typed local variable + it is illegal to refer to the variable. + + + + + Represents symbols imported to the binding scope via using namespace, using alias, and extern alias. + + + + + Does not preserve diagnostics. + + + + + A binder that places the members of a symbol in scope. If there is a container declaration + with using directives, those are merged when looking up names. + + + + + Creates a binder for a container with imports (usings and extern aliases) that can be + retrieved from . + + + + + Creates a binder with given imports. + + + + + Creates a binder with given import computation function. + + + + + A binder for a method body, which places the method's parameters in scope + and notes if the method is an iterator method. + + + + + The LocalBinderFactory is used to build up the map of all Binders within a method body, and the associated + CSharpSyntaxNode. To do so it traverses all the statements, handling blocks and other + statements that create scopes. For efficiency reasons, it does not traverse into + expressions. This means that blocks within lambdas and queries are not created. + Blocks within lambdas are bound by their own LocalBinderFactory when they are + analyzed. + + For reasons of lifetime management, this type is distinct from the BinderFactory + which also creates a map from CSharpSyntaxNode to Binder. That type owns it's binders + and that type's lifetime is that of the compilation. Therefore we do not store + binders local to method bodies in that type's cache. + + + + + This binder keeps track of the local variable (if any) that is currently being evaluated + so that it can be passed into the next call to LocalSymbol.GetConstantValue (and + its callers). + + + + + Call this when you are sure there is a local declaration on this token. Returns the local. + + + + + This type exists to share code between UsingStatementBinder and LockBinder. + + + + + This class exists so these two fields can be set atomically. + CONSIDER: If this causes too many allocations, we could use start and end flags plus spinlocking + as for completion parts. + + + + + Options that can be used to modify the symbol lookup mechanism. + + + Multiple options can be combined together. LookupOptions.AreValid checks for valid combinations. + + + + + Consider all symbols, using normal accessibility rules. + + + + + Consider only namespace aliases and extern aliases. + + + + + Consider only namespaces and types. + + + + + Consider non-members, plus invocable members. + + + + + Consider only symbols that are instance members. Valid with IncludeExtensionMethods + since extension methods are invoked on an instance. + + + + + Do not consider symbols that are instance members. + + + + + Do not consider symbols that are namespaces. + + + + + Consider methods of any arity when arity zero is specified. Because type parameters can be inferred, it is + often desired to consider generic methods when no type arguments were present. + + + + + Look only for label symbols. This must be exclusive of all other options. + + + + + Usually, when determining if a member is accessible, both the type of the receiver + and the type containing the access are used. If this flag is specified, then only + the containing type will be used (i.e. as if you've written base.XX). + + + + + Include extension methods. + + + + + Consider only attribute types. + + + + + Consider lookup name to be a verbatim identifier. + If this flag is specified, then only one lookup is performed for attribute name: lookup with the given name, + and attribute name lookup with "Attribute" suffix is skipped. + + + + + Consider named types of any arity when arity zero is specified. It is specifically desired for nameof in such situations: nameof(System.Collections.Generic.List) + + + + + Do not consider symbols that are method type parameters. + + + + + Are these options valid in their current combination? + + + Some checks made here: + + - Default is valid. + - If LabelsOnly is set, it must be the only option. + - If one of MustBeInstance or MustNotBeInstance are set, the other one must not be set. + - If any of MustNotBeInstance, MustBeInstance, or MustNotBeNonInvocableMember are set, + the options are considered valid. + - If MustNotBeNamespace is set, neither NamespaceAliasesOnly nor NamespacesOrTypesOnly must be set. + - Otherwise, only one of NamespaceAliasesOnly, NamespacesOrTypesOnly, or AllMethodsOnArityZero must be set. + + + + + represents one-to-one symbol -> SingleLookupResult filter. + + + + + A LookupResult summarizes the result of a name lookup within a scope It also allows + combining name lookups from different scopes in an easy way. + + A LookupResult can be ONE OF: + empty - nothing found. + a viable result - this kind of result prevents lookup into further scopes of lower priority. + Viable results should be without error; ambiguity is handled in the caller. + (Note that handling multiple "viable" results is not the same as in the VB compiler) + a non-accessible result - this kind of result means that search continues into further scopes of lower priority for + a viable result. An error is attached with the inaccessibility errors. Non-accessible results take priority over + non-viable results. + a non-viable result - a result that means that the search continues into further scopes of lower priority for + a viable or non-accessible result. An error is attached with the error that indicates + why the result is non-viable. A typical reason would be that it is the wrong kind of symbol. + + Note that the class is poolable so its instances can be obtained from a pool via GetInstance. + Also it is a good idea to call Free on instances after they no longer needed. + + The typical pattern is "caller allocates / caller frees" - + + var result = LookupResult.GetInstance(); + + scope.Lookup(result, "foo"); + ... use result ... + + result.Clear(); + anotherScope.Lookup(result, "moo"); + ... use result ... + + result.Free(); //result and its content is invalid after this + + + + + + Currently LookupResult is intended only for name lookup, not for overload resolution. It is + not clear if overload resolution will work with the structure as is, require enhancements, + or be best served by an alternate mechanism. + + We might want to extend this to a more general priority scheme. + + + + + + Return the single symbol if there is exactly one, otherwise null. + + + + + Is the result viable with one or more symbols? + + + + + NOTE: Even there is a single viable symbol, it may be an error type symbol. + + + + + Set current result according to another. + + + + + Set current result according to another. + + + + + Merge another result with this one, with the symbols combined if both + this and other are viable. Otherwise the highest priority result wins (this if equal + priority and non-viable.) + + + + + Classifies the different ways in which a found symbol might be incorrect. + Higher values are considered "better" than lower values. These values are used + in a few different places: + 1) Inside a LookupResult to indicate the quality of a symbol from lookup. + 2) Inside a bound node (for example, BoundBadExpression), to indicate + the "binding quality" of the symbols referenced by that bound node. + 3) Inside an error type symbol, to indicate the reason that the candidate symbols + in the error type symbols were not good. + + While most of the values can occur in all places, some of the problems are not + detected at lookup time (e.g., NotAVariable), so only occur in bound nodes. + + + This enumeration is parallel to and almost the same as the CandidateReason enumeration. + Changes to one should usually result in changes to the other. + + There are two enumerations because: + 1) CandidateReason in language-independent, while this enum is language specific. + 2) The name "CandidateReason" didn't make much sense in the way LookupResultKind is used internally. + 3) Viable isn't used in CandidateReason, but we need it in LookupResultKind, and there isn't a + a way to have internal enumeration values. + + + + + Maps a LookupResultKind to a CandidateReason. Should not be called on LookupResultKind.Viable! + + + + + Packages up the various parts returned when resolving a method group. + + + + + Contains the code for determining C# accessibility rules. + + + + + Checks if 'symbol' is accessible from within assembly 'within'. + + + + + Checks if 'symbol' is accessible from within type 'within', with + an optional qualifier of type "throughTypeOpt". + + + + + Checks if 'symbol' is accessible from within type 'within', with + an qualifier of type "throughTypeOpt". Sets "failedThroughTypeCheck" to true + if it failed the "through type" check. + + + + + Checks if 'symbol' is accessible from within 'within', which must be a NamedTypeSymbol + or an AssemblySymbol. + + Note that NamedTypeSymbol, if available, is the type that is associated with the binder + that found the 'symbol', not the inner-most type that contains the access to the + 'symbol'. + + If 'symbol' is accessed off of an expression then 'throughTypeOpt' is the type of that + expression. This is needed to properly do protected access checks. Sets + "failedThroughTypeCheck" to true if this protected check failed. + + NOTE(cyrusn): I expect this function to be called a lot. As such, i do not do any memory + allocations in the function itself (including not making any iterators). This does mean + that certain helper functions that we'd like to call are inlined in this method to + prevent the overhead of returning collections or enumerators. + + + + + This method finds the best common type of a set of expressions as per section 7.5.2.14 of the specification. + NOTE: If some or all of the expressions have error types, we return error type as the inference result. + + + + + This method implements best type inference for the conditional operator ?:. + NOTE: If either expression is an error type, we return error type as the inference result. + + + + + Summarizes whether a conversion is allowed, and if so, which kind of conversion (and in some cases, the + associated symbol). + + + + + Returns true if the conversion exists, either as an implicit or explicit conversion. + + + The existence of a conversion does not necessarily imply that the conversion is valid. + For example, an ambiguous user-defined conversion may exist but may not be valid. + + + + + Returns true if the conversion is implicit. + + + Implicit conversions are described in section 6.1 of the C# language specification. + + + + + Returns true if the conversion is explicit. + + + Explicit conversions are described in section 6.2 of the C# language specification. + + + + + Returns true if the conversion is an identity conversion. + + + Identity conversions are described in section 6.1.1 of the C# language specification. + + + + + Returns true if the conversion is an implicit numeric conversion or explicit numeric conversion. + + + Implicit and explicit numeric conversions are described in sections 6.1.2 and 6.2.1 of the C# language specification. + + + + + Returns true if the conversion is an implicit enumeration conversion or explicit enumeration conversion. + + + Implicit and explicit enumeration conversions are described in sections 6.1.3 and 6.2.2 of the C# language specification. + + + + + Returns true if the conversion is an interpolated string conversion. + + + The interpolated string conversion described in section 6.1.N of the C# language specification. + + + + + Returns true if the conversion is an implicit nullable conversion or explicit nullable conversion. + + + Implicit and explicit nullable conversions are described in sections 6.1.4 and 6.2.3 of the C# language specification. + + + + + Returns true if the conversion is an implicit reference conversion or explicit reference conversion. + + + Implicit and explicit reference conversions are described in sections 6.1.6 and 6.2.4 of the C# language specification. + + + + + Returns true if the conversion is an implicit user-defined conversion or explicit user-defined conversion. + + + Implicit and explicit user-defined conversions are described in section 6.4 of the C# language specification. + + + + + Returns true if the conversion is an implicit boxing conversion. + + + Implicit boxing conversions are described in section 6.1.7 of the C# language specification. + + + + + Returns true if the conversion is an explicit unboxing conversion. + + + Explicit unboxing conversions as described in section 6.2.5 of the C# language specification. + + + + + Returns true if the conversion is an implicit null literal conversion. + + + Null literal conversions are described in section 6.1.5 of the C# language specification. + + + + + Returns true if the conversion is an implicit dynamic conversion. + + + Implicit dynamic conversions are described in section 6.1.8 of the C# language specification. + + + + + Returns true if the conversion is an implicit constant expression conversion. + + + Implicit constant expression conversions are described in section 6.1.9 of the C# language specification. + + + + + Returns true if the conversion is an implicit anonymous function conversion. + + + Implicit anonymous function conversions are described in section 6.5 of the C# language specification. + + + + + Returns true if the conversion is an implicit method group conversion. + + + Implicit method group conversions are described in section 6.6 of the C# language specification. + + + + + Returns true if the conversion is a pointer conversion + + + Pointer conversions are described in section 18.4 of the C# language specification. + + Returns true if the conversion is a conversion + a) from a pointer type to void*, + b) from a pointer type to another pointer type (other than void*), + c) from the null literal to a pointer type, + d) from an integral numeric type to a pointer type, or + e) from a pointer type to an integral numeric type. + + Does not return true for user-defined conversions to/from pointer types. + Does not return true for conversions between pointer types and IntPtr/UIntPtr. + + + + + Returns true if the conversion is a conversion to or from IntPtr or UIntPtr. + + + Returns true if the conversion is a conversion to or from IntPtr or UIntPtr. + This includes: + IntPtr to/from int + IntPtr to/from long + IntPtr to/from void* + UIntPtr to/from int + UIntPtr to/from long + UIntPtr to/from void* + + + + + Returns the method used to create the delegate for a method group conversion if is true + or the method used to perform the conversion for a user-defined conversion if is true. + Otherwise, returns null. + + + Method group conversions are described in section 6.6 of the C# language specification. + User-defined conversions are described in section 6.4 of the C# language specification. + + + + + Gives an indication of how successful the conversion was. + Viable - found a best built-in or user-defined conversion. + Empty - found no applicable built-in or user-defined conversions. + OverloadResolutionFailure - found applicable conversions, but no unique best. + + + + + Conversion applied to operand of the user-defined conversion. + + + + + Conversion applied to the result of the user-defined conversion. + + + + + The user-defined operators that were considered when attempting this conversion + (i.e. the arguments to overload resolution). + + + + + Returns a string that represents the of the conversion. + + A string that represents the of the conversion. + + + + Determines whether the specified object is equal to the current object. + + The object to compare with the current object. + true if the specified object is equal to the current object; otherwise, false. + + + + Determines whether the specified object is equal to the current object. + + The object to compare with the current object. + true if the specified object is equal to the current object; otherwise, false. + + + + Returns a hash code for the current object. + + A hash code for the current object. + + + + Returns true if the specified objects are equal and false otherwise. + + The first object. + The second object. + + + + + Returns false if the specified objects are equal and true otherwise. + + The first object. + The second object. + + + + + Determines if the source expression is convertible to the destination type via + any conversion: implicit, explicit, user-defined or built-in. + + + It is rare but possible for a source expression to be convertible to a destination type + by both an implicit user-defined conversion and a built-in explicit conversion. + In that circumstance, this method classifies the conversion as the implicit conversion. + + + + + Determines if the source expression is convertible to the destination type via + any conversion: implicit, explicit, user-defined or built-in. + + + It is rare but possible for a source expression to be convertible to a destination type + by both an implicit user-defined conversion and a built-in explicit conversion. + In that circumstance, this method classifies the conversion as the built-in conversion. + + An implicit conversion exists from an expression of a dynamic type to any type. + An explicit conversion exists from a dynamic type to any type. + When casting we prefer the explicit conversion. + + + + + Determines if the source expression is convertible to the destination type via + any built-in or user-defined implicit conversion. + + + + + Attempt a quick classification of builtin conversions. As result of "no conversion" + means that there is no built-in conversion, though there still may be a user-defined + conversion if compiling against a custom mscorlib. + + + + + IsBaseInterface returns true if baseType is on the base interface list of derivedType or + any base class of derivedType. It may be on the base interface list either directly or + indirectly. + * baseType must be an interface. + * type parameters do not have base interfaces. (They have an "effective interface list".) + * an interface is not a base of itself. + * this does not check for variance conversions; if a type inherits from + IEnumerable<string> then IEnumerable<object> is not a base interface. + + + + + Determines if the source type is convertible to the destination type via + any conversion: implicit, explicit, user-defined or built-in. + + + It is rare but possible for a source type to be convertible to a destination type + by both an implicit user-defined conversion and a built-in explicit conversion. + In that circumstance, this method classifies the conversion as the implicit conversion. + + + + + Determines if the source type is convertible to the destination type via + any conversion: implicit, explicit, user-defined or built-in. + + + It is rare but possible for a source type to be convertible to a destination type + by both an implicit user-defined conversion and a built-in explicit conversion. + In that circumstance, this method classifies the conversion as the built-in conversion. + + + + + Determines if the source type is convertible to the destination type via + any standard implicit or standard explicit conversion. + + + Not all built-in explicit conversions are standard explicit conversions. + + + + + Determines if the source type is convertible to the destination type via + any user-defined or built-in implicit conversion. + + + Not all built-in explicit conversions are standard explicit conversions. + + + + + NOTE: Keep this method in sync with AnalyzeImplicitUserDefinedConversionForSwitchGoverningType. + + + + + This method find the set of applicable user-defined and lifted conversion operators, u. + The set consists of the user-defined and lifted implicit conversion operators declared by + the classes and structs in d that convert from a type encompassing source to a type encompassed by target. + However if allowAnyTarget is true, then it considers all operators that convert from a type encompassing source + to any target. This flag must be set only if we are computing user defined conversions from a given source + type to any target type. + + + Currently allowAnyTarget flag is only set to true by AnalyzeImplicitUserDefinedConversionForSwitchGoverningType, + where we must consider user defined implicit conversions from the type of the switch expression to + any of the possible switch governing types. + + + + + Find the most specific among a set of conversion operators, with the given constraint on the conversion. + + + + + NOTE: Keep this method in sync with AnalyzeImplicitUserDefinedConversion. + + + + + Resolve method group based on the optional delegate invoke method. + If the invoke method is null, ignore arguments in resolution. + + + + + Return the Invoke method symbol if the type is a delegate + type and the Invoke method is available, otherwise null. + + + + + This is specifically a private helper function (rather than a public property or extension method) + because applying this predicate to a non-method member doesn't have a clear meaning. The goal was + simply to avoid repeating ad-hoc code in a group of related collections. + + + + + To duplicate native compiler behavior for some scenarios we force a priority among + operators. If two operators are both applicable and both have a non-null Priority, + the one with the numerically lower Priority value is preferred. + + + + + Omit ref feature for COM interop: We can pass arguments by value for ref parameters if we are invoking a method/property on an instance of a COM imported type. + This property returns a flag indicating whether we had any ref omitted argument for the given call. + + + + + Returns false for + because those diagnostics are only reported if no other candidates are + available. + + + + + Indicates why the compiler accepted or rejected the member during overload resolution. + + + + + No resolution has (yet) been determined. + + + + + The candidate member was accepted in its normal (non-expanded) form. + + + + + The candidate member was accepted in its expanded form, after expanding a "params" parameter. + + + + + The candidate member was rejected because an inferred type argument is inaccessible. + + + + + The candidate member was rejected because an argument was specified that did not have a corresponding + parameter. + + + + + The candidate member was rejected because a named argument was specified that did not have a corresponding + parameter. + + + + + The candidate member was rejected because an required parameter had no corresponding argument. + + + + + The candidate member was rejected because a named argument was used that corresponded to a previously-given positional argument. + + + + + The candidate member was rejected because it is not supported by the language or cannot be used + given the current set of assembly references. + + + + + The candidate member was rejected because it is not supported by the language. + + + No diagnostics will be reported for such candidates unless they "win" overload resolution. + + + + + The candidate member was rejected because an argument could not be converted to the appropriate parameter + type. + + + + + The candidate member was rejected because type inference failed. + + + + + The extension method candidate was rejected because type + inference based on the "instance" argument failed. + + + + + The candidate member was rejected because it a constraint on a type parameter was not satisfied. + + + + + The candidate member was rejected because another member further down in the inheritance hierarchy was + present. + + + + + The candidate member was rejected because it was considered worse that another member (according to section + 7.5.3.2 of the language specification). + + + + + Same as , but the candidate shouldn't be mentioned in an ambiguity diagnostics. + + + + + Represents the results of overload resolution for a single member. + + + + + The member considered during overload resolution. + + + + + The least overridden member that is accessible from the call site that performed overload resolution. + Typically a virtual or abstract method (but not necessarily). + + + The member whose parameter types and params modifiers were considered during overload resolution. + + + + + Indicates why the compiler accepted or rejected the member during overload resolution. + + + + + Returns true if the compiler accepted this member as the sole correct result of overload resolution. + + + + + The result of member analysis. + + + + + Return the interface with an original definition matches + the original definition of the target. If the are no matches, + or multiple matches, the return value is null. + + + + + Return the inferred type arguments using null + for any type arguments that were not inferred. + + + + + Summarizes the results of an overload resolution analysis, as described in section 7.5 of + the language specification. Describes whether overload resolution succeeded, and which + method was selected if overload resolution succeeded, as well as detailed information about + each method that was considered. + + + + + True if overload resolution successfully selected a single best method. + + + + + If overload resolution successfully selected a single best method, returns information + about that method. Otherwise returns null. + + + + + If there was a method that overload resolution considered better than all others, + returns information about that method. A method may be returned even if that method was + not considered a successful overload resolution, as long as it was better that any other + potential method considered. + + + + + Returns information about each method that was considered during overload resolution, + and what the results of overload resolution were for that method. + + + + + Returns true if one or more of the members in the group are applicable. (Note that + Succeeded implies IsApplicable but IsApplicable does not imply Succeeded. It is possible + that no applicable member was better than all others.) + + + + + Returns all methods in the group that are applicable, . + + + + + Called when overload resolution has failed. Figures out the best way to describe what went wrong. + + + Overload resolution (effectively) starts out assuming that all candidates are valid and then + gradually disqualifies them. Therefore, our strategy will be to perform our checks in the + reverse order - the farther a candidate got through the process without being flagged, the + "better" it was. + + Note that "final validation" is performed after overload resolution, + so final validation errors are not seen here. Final validation errors include + violations of constraints on method type parameters, static/instance mismatches, + and so on. + + + + + If an argument fails to convert to the type of the corresponding parameter and that + parameter is a params array, then the error message should reflect the element type + of the params array - not the array type. + + + + + The base class for all symbols (namespaces, classes, method, parameters, etc.) that are + exposed by the compiler. + + + + + Checks if 'symbol' is accessible from within named type 'within'. If 'symbol' is accessed off + of an expression then 'throughTypeOpt' is the type of that expression. This is needed to + properly do protected access checks. + + + + + Checks if 'symbol' is accessible from within assembly 'within'. + + + + + Checks if this symbol is a definition and its containing module is a SourceModuleSymbol. + + + + + Return whether the symbol is either the original definition + or distinct from the original. Intended for use in Debug.Assert + only since it may include a deep comparison. + + + + + Returns a list of attributes to emit to CustomAttribute table. + The builder is freed after all its items are enumerated. + + + + + True if this Symbol should be completed by calling ForceComplete. + Intuitively, true for source entities (from any compilation). + + + + + Gets the name of this symbol. Symbols without a name return the empty string; null is + never returned. + + + + + Gets the name of a symbol as it appears in metadata. Most of the time, this + is the same as the Name property, with the following exceptions: + 1) The metadata name of generic types includes the "`1", "`2" etc. suffix that + indicates the number of type parameters (it does not include, however, names of + containing types or namespaces). + 2) The metadata name of explicit interface names have spaces removed, compared to + the name property. + + + + + Gets the kind of this symbol. + + + + + Get the symbol that logically contains this symbol. + + + + + Returns the nearest lexically enclosing type, or null if there is none. + + + + + Gets the nearest enclosing namespace for this namespace or type. For a nested type, + returns the namespace that contains its container. + + + + + Returns the assembly containing this symbol. If this symbol is shared across multiple + assemblies, or doesn't belong to an assembly, returns null. + + + + + For a source assembly, the associated compilation. + For any other assembly, null. + For a source module, the DeclaringCompilation of the associated source assembly. + For any other module, null. + For any other symbol, the DeclaringCompilation of the associated module. + + + We're going through the containing module, rather than the containing assembly, + because of /addmodule (symbols in such modules should return null). + + Remarks, not "ContainingCompilation" because it isn't transitive. + + + + + Returns the module containing this symbol. If this symbol is shared across multiple + modules, or doesn't belong to a module, returns null. + + + + + The original definition of this symbol. If this symbol is constructed from another + symbol by type substitution then OriginalDefinition gets the original symbol as it was defined in + source or metadata. + + + + + Returns true if this is the original definition of this symbol. + + + + + + Get a source location key for sorting. For performance, it's important that this + be able to be returned from a symbol without doing any additional allocations (even + if nothing is cached yet.) + + + Only (original) source symbols and namespaces that can be merged + need implement this function if they want to do so for efficiency. + + + + + + Gets the locations where this symbol was originally defined, either in source or + metadata. Some symbols (for example, partial classes) may be defined in more than one + location. + + + + + + Get the syntax node(s) where this symbol was declared in source. Some symbols (for + example, partial classes) may be defined in more than one location. This property should + return one or more syntax nodes only if the symbol was declared in source code and also + was not implicitly declared (see the property). + + + Note that for namespace symbol, the declaring syntax might be declaring a nested + namespace. For example, the declaring syntax node for N1 in "namespace N1.N2 {...}" is + the entire for N1.N2. For the global namespace, the declaring + syntax will be the . + + + + The syntax node(s) that declared the symbol. If the symbol was declared in metadata or + was implicitly declared, returns an empty read-only array. + + + To go the opposite direction (from syntax node to symbol), see . + + + + + Helper for implementing for derived classes that store a location but not a + or . + + + + + Get this accessibility that was declared on this symbol. For symbols that do not have + accessibility declared on them, returns . + + + + + Returns true if this symbol is "static"; i.e., declared with the static modifier or + implicitly static. + + + + + Returns true if this symbol is "virtual", has an implementation, and does not override a + base class member; i.e., declared with the virtual modifier. Does not return true for + members declared as abstract or override. + + + + + Returns true if this symbol was declared to override a base class member; i.e., declared + with the override modifier. Still returns true if member was declared to override + something, but (erroneously) no member to override exists. + + + Even for metadata symbols, = true does not imply that will + be non-null. + + + + + Returns true if this symbol was declared as requiring an override; i.e., declared with + the abstract modifier. Also returns true on a type declared as "abstract", all + interface types, and members of interface types. + + + + + Returns true if this symbol was declared to override a base class member and was also + sealed from further overriding; i.e., declared with the sealed modifier. Also set for + types that do not allow a derived class (declared with sealed or static or struct + or enum or delegate). + + + + + Returns true if this symbol has external implementation; i.e., declared with the + extern modifier. + + + + + Returns true if this symbol was automatically created by the compiler, and does not + have an explicit corresponding source code declaration. + + This is intended for symbols that are ordinary symbols in the language sense, + and may be used by code, but that are simply declared implicitly rather than + with explicit language syntax. + + Examples include (this list is not exhaustive): + the default constructor for a class or struct that is created if one is not provided, + the BeginInvoke/Invoke/EndInvoke methods for a delegate, + the generated backing field for an auto property or a field-like event, + the "this" parameter for non-static methods, + the "value" parameter for a property setter, + the parameters on indexer accessor methods (not on the indexer itself), + methods in anonymous types, + + + + + Returns true if this symbol can be referenced by its name in code. Examples of symbols + that cannot be referenced by name are: + constructors, destructors, operators, explicit interface implementations, + accessor methods for properties and events, array types. + + + + + As an optimization, viability checking in the lookup code should use this property instead + of . The full name check will then be performed in the . + + + This property exists purely for performance reasons. + + + + + Perform additional checks after the member has been + added to the member list of the containing type. + + + + + Compare two symbol objects to see if they refer to the same symbol. You should always + use and , or the method, to compare two symbols for equality. + + + + + Compare two symbol objects to see if they refer to the same symbol. You should always + use == and !=, or the Equals method, to compare two symbols for equality. + + + + + Returns a string representation of this symbol, suitable for debugging purposes, or + for placing in an error message. + + + This will provide a useful representation, but it would be clearer to call + directly and provide an explicit format. + Sealed so that and can't get out of sync. + + + + + Build and add synthesized attributes for this symbol. + + + + + Convenience helper called by subclasses to add a synthesized attribute to a collection of attributes. + + + + + effective for this symbol (type or DllImport method). + Nothing if isn't applied on the containing module or it doesn't apply on this symbol. + + + Determined based upon value specified via applied on the containing module. + + + + + Always prefer . + + + + Unfortunately, when determining overriding/hiding/implementation relationships, we don't + have the "current" compilation available. We could, but that would clutter up the API + without providing much benefit. As a compromise, we consider all compilations "current". + + + Unlike in VB, we are not allowing retargeting symbols. This method is used as an approximation + for when a compilation is not available and that method will never return + true for retargeting symbols. + + + + + + Returns the Documentation Comment ID for the symbol, or null if the symbol doesn't + support documentation comments. + + + + + Fetches the documentation comment for this element with a cancellation token. + + Optionally, retrieve the comments formatted for a particular culture. No impact on source documentation comments. + Optionally, expand ]]> elements. No impact on non-source documentation comments. + Optionally, allow cancellation of documentation comment retrieval. + The XML that would be written to the documentation file for the symbol. + + + + True if the symbol has a use-site diagnostic with error severity. + + + + + Returns diagnostic info that should be reported at the use site of the symbol, or null if there is none. + + + + + Return error code that has highest priority while calculating use site error for this symbol. + Supposed to be ErrorCode, but it causes inconsistent accessibility error. + + + + + Indicates that this symbol uses metadata that cannot be supported by the language. + + Examples include: + - Pointer types in VB + - ByRef return type + - Required custom modifiers + + This is distinguished from, for example, references to metadata symbols defined in assemblies that weren't referenced. + Symbols where this returns true can never be used successfully, and thus should never appear in any IDE feature. + + This is set for metadata symbols, as follows: + Type - if a type is unsupported (e.g., a pointer type, etc.) + Method - parameter or return type is unsupported + Field - type is unsupported + Event - type is unsupported + Property - type is unsupported + Parameter - type is unsupported + + + + + Merges given diagnostic to the existing result diagnostic. + + + + + Reports specified use-site diagnostic to given diagnostic bag. + + + This method should be the only method adding use-site diagnostics to a diagnostic bag. + It performs additional adjustments of the location for unification related diagnostics and + may be the place where to add more use-site location post-processing. + + True if the diagnostic has error severity. + + + + Derive error info from a type symbol. + + + + + True if this symbol has been marked with the attribute. + This property returns if the attribute hasn't been cracked yet. + + + + + Returns data decoded from attribute or null if there is no attribute. + This property returns if attribute arguments haven't been decoded yet. + + + + + Returns true and a from the first on the symbol, + the string might be null or an invalid guid representation. False, + if there is no with string argument. + + + + + Gets the attributes for this symbol. Returns an empty if + there are no attributes. + + + + + Gets the attribute target kind corresponding to the symbol kind + If attributes cannot be applied to this symbol kind, returns + an invalid AttributeTargets value of 0 + + AttributeTargets or 0 + + + + Method to early decode the type of well-known attribute which can be queried during the BindAttributeType phase. + This method is called first during attribute binding so that any attributes that affect semantics of type binding + can be decoded here. + + + NOTE: If you are early decoding any new well-known attribute, make sure to update PostEarlyDecodeWellKnownAttributeTypes + to default initialize this data. + + + + + This method is called during attribute binding after EarlyDecodeWellKnownAttributeTypes has been executed. + Symbols should default initialize the data for early decoded well-known attributes here. + + + + + Method to early decode applied well-known attribute which can be queried by the binder. + This method is called during attribute binding after we have bound the attribute types for all attributes, + but haven't yet bound the attribute arguments/attribute constructor. + Early decoding certain well-known attributes enables the binder to use this decoded information on this symbol + when binding the attribute arguments/attribute constructor without causing attribute binding cycle. + + + + + This method is called by the binder when it is finished binding a set of attributes on the symbol so that + the symbol can extract data from the attribute arguments and potentially perform validation specific to + some well known attributes. + + NOTE: If we are decoding a well-known attribute that could be queried by the binder, consider decoding it during early decoding pass. + + + + + Symbol types should override this if they want to handle a specific well-known attribute. + If the attribute is of a type that the symbol does not wish to handle, it should delegate back to + this (base) method. + + + + + + Called to report attribute related diagnostics after all attributes have been bound and decoded. + Called even if there are no attributes. + + + This method is called by the binder from after it has finished binding attributes on the symbol, + has executed for attributes applied on the symbol and has stored the decoded data in the + lazyCustomAttributesBag on the symbol. Bound attributes haven't been stored on the bag yet. + + Post-validation for attributes that is dependent on other attributes can be done here. + + This method should not have any side effects on the symbol, i.e. it SHOULD NOT change the symbol state. + + Bound attributes. + Syntax nodes of attributes in order they are specified in source, or null if there are no attributes. + Diagnostic bag. + Specific part of the symbol to which the attributes apply, or if the attributes apply to the symbol itself. + Decoded well-known attribute data, could be null. + + + + This method does the following set of operations in the specified order: + (1) GetAttributesToBind: Merge attributes from the given attributesSyntaxLists and filter out attributes by attribute target. + (2) BindAttributeTypes: Bind all the attribute types to enable early decode of certain well-known attributes by type. + (3) EarlyDecodeWellKnownAttributes: Perform early decoding of certain well-known attributes that could be queried by the binder in subsequent steps. + (NOTE: This step has the side effect of updating the symbol state based on the data extracted from well known attributes). + (4) GetAttributes: Bind the attributes (attribute arguments and constructor) using bound attribute types. + (5) DecodeWellKnownAttributes: Decode and validate bound well known attributes. + (NOTE: This step has the side effect of updating the symbol state based on the data extracted from well known attributes). + (6) StoreBoundAttributesAndDoPostValidation: + (a) Store the bound attributes in lazyCustomAttributes in a thread safe manner. + (b) Perform some additional post attribute validations, such as + 1) Duplicate attributes, attribute usage target validation, etc. + 2) Post validation for attributes dependent on other attributes + These validations cannot be performed prior to step 6(a) as we might need to + perform a GetAttributes() call on a symbol which can introduce a cycle in attribute binding. + We avoid this cycle by performing such validations in PostDecodeWellKnownAttributes after lazyCustomAttributes have been set. + NOTE: PostDecodeWellKnownAttributes SHOULD NOT change the symbol state. + + + Current design of early decoding well-known attributes doesn't permit decoding attribute arguments/constructor as this can lead to binding cycles. + For well-known attributes used by the binder, where we need the decoded arguments, we must handle them specially in one of the following possible ways: + (a) Avoid decoding the attribute arguments during binding and delay the corresponding binder tasks to a separate post-pass executed after binding. + (b) As the cycles can be caused only when we are binding attribute arguments/constructor, special case the corresponding binder tasks based on the current BinderFlags. + + + + Specific part of the symbol to which the attributes apply, or if the attributes apply to the symbol itself. + Indicates that only early decoding should be performed. WARNING: the resulting bag will not be sealed. + Flag indicating whether lazyCustomAttributes were stored on this thread. Caller should check for this flag and perform NotePartComplete if true. + + + + Method to merge attributes from the given attributesSyntaxLists and filter out attributes by attribute target. + This is the first step in attribute binding. + + + This method can generate diagnostics for few cases where we have an invalid target specifier and the parser hasn't generated the necessary diagnostics. + It should not perform any bind operations as it can lead to an attribute binding cycle. + + + + + Method to early decode certain well-known attributes which can be queried by the binder. + This method is called during attribute binding after we have bound the attribute types for all attributes, + but haven't yet bound the attribute arguments/attribute constructor. + Early decoding certain well-known attributes enables the binder to use this decoded information on this symbol + when binding the attribute arguments/attribute constructor without causing attribute binding cycle. + + + + + This method validates attribute usage for each bound attribute and calls + on attributes with valid attribute usage. + This method is called by the binder when it is finished binding a set of attributes on the symbol so that + the symbol can extract data from the attribute arguments and potentially perform validation specific to + some well known attributes. + + + + + Validate attribute usage target and duplicate attributes. + + Bound attribute + Syntax node for attribute specification + Compilation + Symbol part to which the attribute has been applied. + Diagnostics + Set of unique attribute types applied to the symbol + + + + Ensure that attributes are bound and the ObsoleteState of this symbol is known. + + + + + Represents a result of lookup operation over a 0 or 1 symbol (as opposed to a scope). The + typical use is to represent that a particular symbol is good/bad/unavailable. + + For more explanation of Kind, Symbol, Error - see LookupResult. + + + + + This binder is for binding the argument to typeof. It traverses + the syntax marking each open type ("unbound generic type" in the + C# spec) as either allowed or not allowed, so that BindType can + appropriately return either the corresponding type symbol or an + error type. It also indicates whether the argument as a whole + should be considered open so that the flag can be set + appropriately in BoundTypeOfOperator. + + + + + This visitor walks over a type expression looking for open types. + Open types are allowed if an only if: + 1) There is no constructed generic type elsewhere in the visited syntax; and + 2) The open type is not used as a type argument or array/pointer/nullable + element type. + + + + The argument to typeof. + + Keys are GenericNameSyntax nodes representing unbound generic types. + Values are false if the node should result in an error and true otherwise. + + True if no constructed generic type was encountered. + + + + A binder that places class/interface/struct/delegate type parameters in scope + + + + + The scope within a documentation cref. Contains the implicitly declared type parameters + of the cref (see for details). + + + + + A binder that places method type parameters in scope. + + + + + Binder used to place the parameters of a method, property, indexer, or delegate + in scope when binding <param> tags inside of XML documentation comments. + + + + + Returns true if calls and delegate invocations with this + expression as the receiver should be non-virtual calls. + + + + + Returns a serializable object that is used for displaying this expression in a diagnostic message. + + + + + The set of method symbols from which this call's method was chosen. + Only kept in the tree if the call was an error and overload resolution + was unable to choose a best method. + + + + + The set of indexer symbols from which this call's indexer was chosen. + Only kept in the tree if the call was an error and overload resolution + was unable to choose a best indexer. + + + + + The set of method symbols from which this operator's method was chosen. + Only kept in the tree if the operator was an error and overload resolution + was unable to choose a best method. + + + + + The set of method symbols from which this operator's method was chosen. + Only kept in the tree if the operator was an error and overload resolution + was unable to choose a best method. + + + + + The set of method symbols from which this operator's method was chosen. + Only kept in the tree if the operator was an error and overload resolution + was unable to choose a best method. + + + + + The set of method symbols from which this operator's method was chosen. + Only kept in the tree if the operator was an error and overload resolution + was unable to choose a best method. + + + + + The set of method symbols from which this operator's method was chosen. + Only kept in the tree if the operator was an error and overload resolution + was unable to choose a best method. + + + + + The set of method symbols from which this conversion's method was chosen. + Only kept in the tree if the conversion was an error and overload resolution + was unable to choose a best method. + + + + + Returns true when conversion itself (not the operand) may have side-effects + A typical side-effect of a conversion is an exception when conversion is unsuccessful. + + + + + + This method is intended for passes other than the LocalRewriter. + Use MakeConversion helper method in the LocalRewriter instead, + it generates a synthesized conversion in its lowered form. + + + + + NOTE: This method is intended for passes other than the LocalRewriter. + NOTE: Use MakeConversion helper method in the LocalRewriter instead, + NOTE: it generates a synthesized conversion in its lowered form. + + + + + Build an object creation expression without performing any rewriting + + + + + Set if the group has a receiver but none was not specified in syntax. + + + + + Determines if a bound node, or associated syntax or type has an error (not a warning) + diagnostic associated with it. + + Typically used in the binder as a way to prevent cascading errors. + In most other cases a more lightweight HasErrors should be used. + + + + + Determines if a bound node, or any child, grandchild, etc has an error (not warning) + diagnostic associated with it. The HasError bit is initially set for a node by providing it + to the node constructor. If any child nodes of a node have + the HasErrors bit set, then it is automatically set to true on the parent bound node. + + HasErrors indicates that the tree is not emittable and used to short-circuit lowering/emit stages. + NOTE: not having HasErrors does not guarantee that we do not have any diagnostic associated + with corresponding syntax or type. + + + + + NOTE: not generally set in rewriters. + + + + + The bound expression that invokes the operation of the query clause. + + + + + The bound expression that is the invocation of a "Cast" method specified by the query translation. + + + + + The bound expression that is the query expression in "unoptimized" form. Specifically, a final ".Select" + invocation that is omitted by the specification is included here. + + + + + Consumers must provide implementation for . + + + + + We should be intentional about behavior of derived classes regarding guarding against stack overflow. + + + + + BoundExpressions to be used for emit. The expressions are assumed + to be lowered and will not be visited by . + + + + + What we need to do is find a *repeatable* arbitrary way to choose between + two errors; we can for example simply take the one that is lower in alphabetical + order when converted to a string. As an optimization, we compare error codes + first and skip string comparison if they differ. + + + + + In some cases returns are handled as gotos to return epilogue. + This is used to track the state of the epilogue. + + + + + Emits address as in & + + May introduce a temp which it will return. (otherwise returns null) + + + + + Emits address of a temp. + Used in cases where taking address directly is not possible + (typically because expression does not have a home) + + Introduce a temp which it will return. + + + + + May introduce a temp which it will return. (otherwise returns null) + + + + + Checks if expression directly or indirectly represents a value with its own home. In + such cases it is possible to get a reference without loading into a temporary. + + + + + Special HasHome for fields. Fields have homes when they are writable. + + + + + May introduce a temp which it will return. (otherwise returns null) + + + + + Emits receiver in a form that allows member accesses ( O or & ). For verifiably + reference types it is the actual reference. For generic types it is a address of the + receiver with readonly intent. For the value types it is an address of the receiver. + + isAccessConstrained indicates that receiver is a target of a constrained callvirt + in such case it is unnecessary to box a receiver that is typed to a type parameter + + May introduce a temp which it will return. (otherwise returns null) + + + + + May introduce a temp which it will return. (otherwise returns null) + + + + + Entry point to the array initialization. + Assumes that we have newly created array on the stack. + + inits could be an array of values for a single dimensional array + or an array (of array)+ of values for a multidimensional case + + in either case it is expected that number of leaf values will match number + of elements in the array and nesting level should match the rank of the array. + + + + + To handle array initialization of arbitrary rank it is convenient to + approach multidimensional initialization as a recursively nested. + + ForAll{i, j, k} Init(i, j, k) ===> + ForAll{i} ForAll{j, k} Init(i, j, k) ===> + ForAll{i} ForAll{j} ForAll{k} Init(i, j, k) + + This structure is used for capturing initializers of a given index and + the index value itself. + + + + + Emits all initializers that match indices on the stack recursively. + + Example: + if array has [0..2, 0..3, 0..2] shape + and we have {1, 2} indices on the stack + initializers for + [1, 2, 0] + [1, 2, 1] + [1, 2, 2] + + will be emitted and the top index will be pushed off the stack + as at that point we would be completely done with emitting initializers + corresponding to that index. + + + + + Count of all nontrivial initializers and count of those that are constants. + + + + + Produces a serialized blob of all constant initializers. + Non-constant initializers are matched with a zero of corresponding size. + + + + + Check if it is a regular collection of expressions or there are nested initializers. + + + + + Used to decide if we need to emit call or callvirt. + It basically checks if the receiver expression cannot be null, but it is not 100% precise. + There are cases where it really can be null, but we do not care. + + + + + checks if receiver is effectively ldarg.0 + + + + + Used to decide if we need to emit 'call' or 'callvirt' for structure method. + It basically checks if the method overrides any other and method's defining type + is not a 'special' or 'special-by-ref' type. + + + + + When array operation get long or ulong arguments the args should be + cast to native int. + Note that the cast is always checked. + + + + + Emit an element store instruction for a single dimensional array. + + + + + Emit code for a conditional (aka ternary) operator. + + + (b ? x : y) becomes + push b + if pop then goto CONSEQUENCE + push y + goto DONE + CONSEQUENCE: + push x + DONE: + + + + + Emit code for a null-coalescing operator. + + + x ?? y becomes + push x + dup x + if pop != null goto LEFT_NOT_NULL + pop + push y + LEFT_NOT_NULL: + + + + + Produces opcode for a jump that corresponds to given operation and sense. + Also produces a reverse opcode - opcode for the same condition with inverted sense. + + + + + The interesting part in the following method is the support for exception filters. + === Example: + + try + { + TryBlock + } + catch (ExceptionType ex) when (Condition) + { + Handler + } + + gets emitted as something like ===> + + Try + TryBlock + Filter + var tmp = Pop() as {ExceptionType} + if (tmp == null) + { + Push 0 + } + else + { + ex = tmp + Push Condition ? 1 : 0 + } + End Filter // leaves 1 or 0 on the stack + Catch // gets called after finalization of nested exception frames if condition above produced 1 + Pop // CLR pushes the exception object again + variable ex can be used here + Handler + EndCatch + + + + + Delegate to emit string compare call and conditional branch based on the compare result. + + Key to compare + Node for diagnostics. + Case constant to compare the key against + Target label to branch to if key = stringConstant + String equality method + + + + Gets already declared and initialized local. + + + + + Gets the name and id of the local that are going to be generated into the debug metadata. + + + + + Releases a local. + + + + + Allocates a temp without identity. + + + + + Frees a temp. + + + + + Frees an optional temp. + + + + + Clones all labels used in a finally block. + This allows creating an emittable clone of finally. + It is safe to do because no branches can go in or out of the finally handler. + + + + + The argument is BoundTryStatement (and not a BoundBlock) specifically + to support only Finally blocks where it is guaranteed to not have incoming or leaving branches. + + + + + Perform IL specific optimizations (mostly reduction of local slots) + + Method body to optimize + + When set, do not perform aggressive optimizations that degrade debugging experience. + In particular we do not do the following: + + 1) Do not elide any user defined locals, even if never read from. + Example: + { + var dummy = Foo(); // should not become just "Foo" + } + + User might want to examine dummy in the debugger. + + 2) Do not carry values on the stack between statements + Example: + { + var temp = Foo(); + temp.ToString(); // should not become Foo().ToString(); + } + + User might want to examine temp in the debugger. + + + + Produced list of "ephemeral" locals. + Essentially, these locals do not need to leave the evaluation stack. + As such they do not require an allocation of a local slot and + their load/store operations are implemented trivially. + + + + + + when current and other use spans are regular spans we can have only 2 conflict cases: + [1, 3) conflicts with [0, 2) + [1, 3) conflicts with [2, 4) + + NOTE: with regular spans, it is not possible for two spans to share an edge point + unless they belong to the same local. (because we cannot aceess two real locals at the same time) + + specifically: + [1, 3) does not conflict with [0, 1) since such spans would need to belong to the same local + + + + + Dummy locals represent implicit control flow + It is not allowed for a regular local span to cross into or + be immediately adjacent to a dummy span. + + specifically: + [1, 3) does conflict with [0, 1) since that would imply a value flowing into or out of a span surrounded by a branch/label + + + + + + The command line arguments to a C# . + + + + + Gets the compilation options for the C# + created from the . + + + + + Gets the parse options for the C# . + + + + + Should the format of error messages include the line and column of + the end of the offending text. + + + + + Get the path name starting from the + + + + + Parses a command line. + + A collection of strings representing the command line arguments. + The base directory used for qualifying file locations. + The directory to search for mscorlib, or null if not available. + A string representing additional reference paths. + a commandlinearguments object representing the parsed command line. + + + + Diagnostic for the errorCode added if the warningOptions does not mention suppressed for the errorCode. + + + + + Given a compilation and a destination directory, determine three names: + 1) The name with which the assembly should be output. + 2) The path of the assembly/module file. + 3) The path of the pdb file. + + When csc produces an executable, but the name of the resulting assembly + is not specified using the "/out" switch, the name is taken from the name + of the file (note: file, not class) containing the assembly entrypoint + (as determined by binding and the "/main" switch). + + For example, if the command is "csc /target:exe a.cs b.cs" and b.cs contains the + entrypoint, then csc will produce "b.exe" and "b.pdb" in the output directory, + with assembly name "b" and module name "b.exe" embedded in the file. + + + + + Print compiler logo + + + + + + Print Commandline help message (up to 80 English characters per line) + + + + + + A binding for an attribute. Represents the result of binding an attribute constructor and + the positional and named arguments. + + + + + Creates an AttributeSemanticModel that allows asking semantic questions about an attribute node. + + + + + Creates a speculative AttributeSemanticModel that allows asking semantic questions about an attribute node that did not appear in the original source code. + + + + + Structure containing all semantic information about an await expression. + + + + + Internal cache of built-in operators. + Cache is compilation-specific because it uses compilation-specific SpecialTypes. + + + + + Appends all trees (including any trees from #load'ed files). + + + + + Collects all the trees #load'ed by (as well as + itself) and populates + with all the trees that are safe to remove (not #load'ed by any other tree). + + + + + The compilation object is an immutable representation of a single invocation of the + compiler. Although immutable, a compilation is also on-demand, and will realize and cache + data as necessary. A compilation can produce a new compilation from existing compilation + with the application of small deltas. In many cases, it is more efficient than creating a + new compilation from scratch, as the new compilation can reuse information from the old + compilation. + + + + + Manages anonymous types declared in this compilation. Unifies types that are structurally equivalent. + + + + + The for this compilation. Do not access directly, use Assembly property + instead. This field is lazily initialized by ReferenceManager, ReferenceManager.CacheLockObject must be locked + while ReferenceManager "calculates" the value and assigns it, several threads must not perform duplicate + "calculation" simultaneously. + + + + + Holds onto data related to reference binding. + The manager is shared among multiple compilations that we expect to have the same result of reference binding. + In most cases this can be determined without performing the binding. If the compilation however contains a circular + metadata reference (a metadata reference that refers back to the compilation) we need to avoid sharing of the binding results. + We do so by creating a new reference manager for such compilation. + + + + + Contains the main method of this assembly, if there is one. + + + + + The set of trees for which a has been added to the queue. + + + + + The options the compilation was created with. + + + + + True when the compiler is run in "strict" mode, in which it enforces the language specification + in some cases even at the expense of full compatibility. Such differences typically arise when + earlier versions of the compiler failed to enforce the full language specification. + + + + + The language version that was used to parse the syntax trees of this compilation. + + + + + Creates a new compilation from scratch. Methods such as AddSyntaxTrees or AddReferences + on the returned object will allow to continue building up the Compilation incrementally. + + Simple assembly name. + The syntax trees with the source code for the new compilation. + The references for the new compilation. + The compiler options to use. + A new compilation. + + + + Creates a new compilation that can be used in scripting. + + + + + Create a duplicate of this compilation with different symbol instances. + + + + + Creates a new compilation with the specified name. + + + + + Creates a new compilation with the specified references. + + + The new will query the given for the underlying + metadata as soon as the are needed. + + The new compilation uses whatever metadata is currently being provided by the . + E.g. if the current compilation references a metadata file that has changed since the creation of the compilation + the new compilation is going to use the updated version, while the current compilation will be using the previous (it doesn't change). + + + + + Creates a new compilation with the specified references. + + + + + Creates a new compilation with the specified compilation options. + + + + + Returns a new compilation with the given compilation set as the previous submission. + + + + + Returns a new compilation with a given event queue. + + + + + The syntax trees (parsed from source code) that this compilation was created with. + + + + + Returns true if this compilation contains the specified tree. False otherwise. + + + + + Creates a new compilation with additional syntax trees. + + + + + Creates a new compilation with additional syntax trees. + + + + + Creates a new compilation without the specified syntax trees. Preserves metadata info for use with trees + added later. + + + + + Creates a new compilation without the specified syntax trees. Preserves metadata info for use with trees + added later. + + + + + Creates a new compilation without any syntax trees. Preserves metadata info + from this compilation for use with trees added later. + + + + + Creates a new compilation without the old tree but with the new tree. + + + + + Gets the or for a metadata reference used to create this compilation. + + or corresponding to the given reference or null if there is none. + + Uses object identity when comparing two references. + + + + + All reference directives used in this compilation. + + + + + Returns a metadata reference that a given #r resolves to. + + #r directive. + Metadata reference the specified directive resolves to, or null if the doesn't match any #r directive in the compilation. + + + + Creates a new compilation with additional metadata references. + + + + + Creates a new compilation with additional metadata references. + + + + + Creates a new compilation without the specified metadata references. + + + + + Creates a new compilation without the specified metadata references. + + + + + Creates a new compilation without any metadata references + + + + + Creates a new compilation with an old metadata reference replaced with a new metadata reference. + + + + + Get all modules in this compilation, including the source module, added modules, and all + modules of referenced assemblies that do not come from an assembly with an extern alias. + Metadata imported from aliased assemblies is not visible at the source level except through + the use of an extern alias directive. So exclude them from this list which is used to construct + the global namespace. + + + + + Return a list of assembly symbols than can be accessed without using an alias. + For example: + 1) /r:A.dll /r:B.dll -> A, B + 2) /r:Foo=A.dll /r:B.dll -> B + 3) /r:Foo=A.dll /r:A.dll -> A + + + + + Gets the that corresponds to the assembly symbol. + + + + + The AssemblySymbol that represents the assembly being created. + + + + + The AssemblySymbol that represents the assembly being created. + + + + + Get a ModuleSymbol that refers to the module being created by compiling all of the code. + By getting the GlobalNamespace property of that module, all of the namespaces and types + defined in source code can be obtained. + + + + + Gets the root namespace that contains all namespaces and types defined in source code or in + referenced metadata, merged into a single namespace hierarchy. + + + + + Given for the specified module or assembly namespace, gets the corresponding compilation + namespace (merged namespace representation for all namespace declarations and references + with contributions for the namespaceSymbol). Can return null if no corresponding + namespace can be bound in this compilation with the same name. + + + + + A symbol representing the implicit Script class. This is null if the class is not + defined in the compilation. + + + + + Resolves a symbol that represents script container (Script class). Uses the + full name of the container class stored in to find the symbol. + + The Script class symbol or null if it is not defined. + + + + Global imports (including those from previous submissions, if there are any). + + + + + Imports declared by this submission (null if this isn't one). + + + + + Imports from all previous submissions. + + + + + Get the symbol for the predefined type from the COR Library referenced by this compilation. + + + + + Get the symbol for the predefined type member from the COR Library referenced by this compilation. + + + + + Gets the type within the compilation's assembly and all referenced assemblies (other than + those that can only be referenced via an extern alias) using its canonical CLR metadata name. + + + + + The TypeSymbol for the type 'dynamic' in this Compilation. + + + + + The NamedTypeSymbol for the .NET System.Object type, which could have a TypeKind of + Error if there was no COR Library in this Compilation. + + + + + Returns a new ArrayTypeSymbol representing an array type tied to the base types of the + COR Library in this Compilation. + + + + + Returns a new PointerTypeSymbol representing a pointer type tied to a type in this Compilation. + + + + + Gets a new SyntaxTreeSemanticModel for the specified syntax tree. + + + + + Returns imported symbols for the given declaration. + + + + + The bag in which semantic analysis should deposit its diagnostics. + + + + + A bag in which diagnostics that should be reported after code gen can be deposited. + + + + + Gets the diagnostics produced during the parsing stage of a compilation. There are no diagnostics for declarations or accessor or + method bodies, for example. + + + + + Gets the diagnostics produced during symbol declaration headers. There are no diagnostics for accessor or + method bodies, for example. + + + + + Gets the diagnostics produced during the analysis of method bodies and field initializers. + + + + + Gets the all the diagnostics for the compilation, including syntax, declaration, and binding. Does not + include any diagnostics that might be produced during emit. + + + + + Filter out warnings based on the compiler options (/nowarn, /warn and /warnaserror) and the pragma warning directives. + 'incoming' is freed. + + True when there is no error or warning treated as an error. + + + + Filter out warnings based on the compiler options (/nowarn, /warn and /warnaserror) and the pragma warning directives. + + True when there is no error. + + + + Return true if there is a source declaration symbol name that meets given predicate. + + + + + Return source declaration symbols whose name meets given predicate. + + + + + Returns if the compilation has all of the members necessary to emit metadata about + dynamic types. + + + + + + Returns whether the compilation has the Boolean type and if it's good. + + Returns true if Boolean is present and healthy. + + + + Determine if enum arrays can be initialized using block initialization. + + True if it's safe to use block initialization for enum arrays. + + In NetFx 4.0, block array initializers do not work on all combinations of {32/64 X Debug/Retail} when array elements are enums. + This is fixed in 4.5 thus enabling block array initialization for a very common case. + We look for the presence of which was introduced in .Net 4.5 + + + + + An array of cached well known types available for use in this Compilation. + Lazily filled by GetWellKnownType method. + + + + + Lazy cache of well known members. + Not yet known value is represented by ErrorTypeSymbol.UnknownResultType + + + + + Lookup member declaration in well known type used by this Compilation. + + + If a well-known member of a generic type instantiation is needed use this method to get the corresponding generic definition and + to construct an instantiation. + + + + + Synthesizes a custom attribute. + Returns null if the symbol is missing, + or any of the members in are missing. + The attribute is synthesized only if present. + + + Constructor of the attribute. If it doesn't exist, the attribute is not created. + + Arguments to the attribute constructor. + + Takes a list of pairs of well-known members and constants. The constants + will be passed to the field/property referenced by the well-known member. + If the well-known member does not exist in the compilation then no attribute + will be synthesized. + + + + + Given a type , which is either dynamic type OR is a constructed type with dynamic type present in it's type argument tree, + returns a synthesized DynamicAttribute with encoded dynamic transforms array. + + This method is port of AttrBind::CompileDynamicAttr from the native C# compiler. + + + + Used to generate the dynamic attributes for the required typesymbol. + + + + + ReferenceManager encapsulates functionality to create an underlying SourceAssemblySymbol + (with underlying ModuleSymbols) for Compilation and AssemblySymbols for referenced + assemblies (with underlying ModuleSymbols) all properly linked together based on + reference resolution between them. + + ReferenceManager is also responsible for reuse of metadata readers for imported modules + and assemblies as well as existing AssemblySymbols for referenced assemblies. In order + to do that, it maintains global cache for metadata readers and AssemblySymbols + associated with them. The cache uses WeakReferences to refer to the metadata readers and + AssemblySymbols to allow memory and resources being reclaimed once they are no longer + used. The tricky part about reusing existing AssemblySymbols is to find a set of + AssemblySymbols that are created for the referenced assemblies, which (the + AssemblySymbols from the set) are linked in a way, consistent with the reference + resolution between the referenced assemblies. + + When existing Compilation is used as a metadata reference, there are scenarios when its + underlying SourceAssemblySymbol cannot be used to provide symbols in context of the new + Compilation. Consider classic multi-targeting scenario: compilation C1 references v1 of + Lib.dll and compilation C2 references C1 and v2 of Lib.dll. In this case, + SourceAssemblySymbol for C1 is linked to AssemblySymbol for v1 of Lib.dll. However, + given the set of references for C2, the same reference for C1 should be resolved against + v2 of Lib.dll. In other words, in context of C2, all types from v1 of Lib.dll leaking + through C1 (through method signatures, etc.) must be retargeted to the types from v2 of + Lib.dll. In this case, ReferenceManager creates a special RetargetingAssemblySymbol for + C1, which is responsible for the type retargeting. The RetargetingAssemblySymbols could + also be reused for different Compilations, ReferenceManager maintains a cache of + RetargetingAssemblySymbols (WeakReferences) for each Compilation. + + The only public entry point of this class is CreateSourceAssembly() method. + + + + + Checks if the properties of are compatible with properties of . + Reports inconsistencies to the given diagnostic bag. + + True if the properties are compatible and hence merged, false if the duplicate reference should not merge it's properties with primary reference. + + + + C# only considers culture when comparing weak identities. + It ignores versions of weak identities and reports an error if there are two weak assembly + references passed to a compilation that have the same simple name. + + + + + Creates a from specified metadata. + + + Used by EnC to create symbols for emit baseline. The PE symbols are used by . + + The assembly references listed in the metadata AssemblyRef table are matched to the resolved references + stored on this . We assume that the dependencies of the baseline metadata are + the same as the dependencies of the current compilation. This is not exactly true when the dependencies use + time-based versioning pattern, e.g. AssemblyVersion("1.0.*"). In that case we assume only the version + changed and nothing else. + + Each AssemblyRef is matched against the assembly identities using an exact equality comparison modulo version. + AssemblyRef with lower version in metadata is matched to a PE assembly symbol with the higher version + (provided that the assembly name, culture, PKT and flags are the same) if there is no symbol with the exactly matching version. + If there are multiple symbols with higher versions selects the one with the minimal version among them. + + Matching to a higher version is necessary to support EnC for projects whose P2P dependencies use time-based versioning pattern. + The versions of the dependent projects seen from the IDE will be higher than + the one written in the metadata at the time their respective baselines are built. + + No other unification or further resolution is performed. + + + + + A map of the PE assembly symbol identities to the identities of the original metadata AssemblyRefs. + This map will be used in emit when serializing AssemblyRef table of the delta. For the delta to be compatible with + the original metadata we need to map the identities of the PE assembly symbols back to the original AssemblyRefs (if different). + In other words, we pretend that the versions of the dependencies haven't changed. + + + + + Guarded by . + + + + + Import options of the compilation being built. + + + + + For testing purposes only. + + + + + For testing purposes only. + + + + + Represents a reference to another C# compilation. + + + + + Returns the referenced Compilation. + + + + + Create a metadata reference to a compilation. + + The compilation to reference. + Extern aliases for this reference. + Should interop types be embedded in the created assembly? + + + + Applies C#-specific modification and filtering of s. + + + + + Modifies an input per the given options. For example, the + severity may be escalated, or the may be filtered out entirely + (by returning null). + + The input diagnostic + The maximum warning level to allow. Diagnostics with a higher warning level will be filtered out. + How warning diagnostics should be reported + How specific diagnostics should be reported + A diagnostic updated to reflect the options, or null if it has been filtered out + + + + Allows asking semantic questions about a tree of syntax nodes in a Compilation. Typically, + an instance is obtained by a call to .. + + + An instance of caches local symbols and semantic + information. Thus, it is much more efficient to use a single instance of when asking multiple questions about a syntax tree, because + information from the first question may be reused. This also means that holding onto an + instance of SemanticModel for a long time may keep a significant amount of memory from being + garbage collected. + + + When an answer is a named symbol that is reachable by traversing from the root of the symbol + table, (that is, from an of the ), + that symbol will be returned (i.e. the returned value will be reference-equal to one + reachable from the root of the symbol table). Symbols representing entities without names + (e.g. array-of-int) may or may not exhibit reference equality. However, some named symbols + (such as local variables) are not reachable from the root. These symbols are visible as + answers to semantic questions. When the same SemanticModel object is used, the answers + exhibit reference-equality. + + + + + + The compilation this object was obtained from. + + + + + The root node of the syntax tree that this binding is based on. + + + + + Gets symbol information about a syntax node. This is overridden by various specializations of SemanticModel. + It can assume that CheckSyntaxNode and CanGetSemanticInfo have already been called, as well as that named + argument nodes have been handled. + + The syntax node to get semantic information for. + Options to control behavior. + The cancellation token. + + + + Gets symbol information about the 'Add' method corresponding to an expression syntax within collection initializer. + This is the worker function that is overridden in various derived kinds of Semantic Models. It can assume that + CheckSyntaxNode has already been called and the is in the right place in the syntax tree. + + + + + Gets type information about a syntax node. This is overridden by various specializations of SemanticModel. + It can assume that CheckSyntaxNode and CanGetSemanticInfo have already been called, as well as that named + argument nodes have been handled. + + The syntax node to get semantic information for. + The cancellation token. + + + + Gets a list of method or indexed property symbols for a syntax node. This is overridden by various specializations of SemanticModel. + It can assume that CheckSyntaxNode and CanGetSemanticInfo have already been called, as well as that named + argument nodes have been handled. + + The syntax node to get semantic information for. + + The cancellation token. + + + + Gets a list of indexer symbols for a syntax node. This is overridden by various specializations of SemanticModel. + It can assume that CheckSyntaxNode and CanGetSemanticInfo have already been called, as well as that named + argument nodes have been handled. + + The syntax node to get semantic information for. + + The cancellation token. + + + + Gets the constant value for a syntax node. This is overridden by various specializations of SemanticModel. + It can assume that CheckSyntaxNode and CanGetSemanticInfo have already been called, as well as that named + argument nodes have been handled. + + The syntax node to get semantic information for. + The cancellation token. + + + + Bind the given expression speculatively at the given position, and return back + the resulting bound node. May return null in some error cases. + + + Keep in sync with Binder.BindCrefParameterOrReturnType. + + + + + Bind the given attribute speculatively at the given position, and return back + the resulting bound node. May return null in some error cases. + + + + + Gets the semantic information for an ordering clause in an orderby query clause. + + + + + Gets the semantic information associated with a select or group clause. + + + + + Returns what symbol(s), if any, the given expression syntax bound to in the program. + + An AliasSymbol will never be returned by this method. What the alias refers to will be + returned instead. To get information about aliases, call GetAliasInfo. + + If binding the type name C in the expression "new C(...)" the actual constructor bound to + will be returned (or all constructor if overload resolution failed). This occurs as long as C + unambiguously binds to a single type that has a constructor. If C ambiguously binds to multiple + types, or C binds to a static class, then type(s) are returned. + + + + + Returns what 'Add' method symbol(s), if any, corresponds to the given expression syntax + within . + + + + + Returns what symbol(s), if any, the given constructor initializer syntax bound to in the program. + + The syntax node to get semantic information for. + The cancellation token. + + + + Returns what symbol(s), if any, the given attribute syntax bound to in the program. + + The syntax node to get semantic information for. + The cancellation token. + + + + Gets the semantic information associated with a documentation comment cref. + + + + + Binds the expression in the context of the specified location and gets symbol information. + This method is used to get symbol information about an expression that did not actually + appear in the source code. + + A character position used to identify a declaration scope and + accessibility. This character position must be within the FullSpan of the Root syntax + node in this SemanticModel. + + A syntax node that represents a parsed expression. This syntax + node need not and typically does not appear in the source code referred to by the + SemanticModel instance. + Indicates whether to binding the expression as a full expressions, + or as a type or namespace. If SpeculativeBindingOption.BindAsTypeOrNamespace is supplied, then + expression should derive from TypeSyntax. + The symbol information for the topmost node of the expression. + + The passed in expression is interpreted as a stand-alone expression, as if it + appeared by itself somewhere within the scope that encloses "position". + + is ignored if is within a documentation + comment cref attribute value. + + + + + Bind the attribute in the context of the specified location and get semantic information + such as type, symbols and diagnostics. This method is used to get semantic information about an attribute + that did not actually appear in the source code. + + A character position used to identify a declaration scope and accessibility. This + character position must be within the FullSpan of the Root syntax node in this SemanticModel. In order to obtain + the correct scoping rules for the attribute, position should be the Start position of the Span of the symbol that + the attribute is being applied to. + + A syntax node that represents a parsed attribute. This syntax node + need not and typically does not appear in the source code referred to SemanticModel instance. + The semantic information for the topmost node of the attribute. + + + + Bind the constructor initializer in the context of the specified location and get semantic information + such as type, symbols and diagnostics. This method is used to get semantic information about a constructor + initializer that did not actually appear in the source code. + + NOTE: This will only work in locations where there is already a constructor initializer. + + A character position used to identify a declaration scope and accessibility. This + character position must be within the FullSpan of the Root syntax node in this SemanticModel. + Furthermore, it must be within the span of an existing constructor initializer. + + A syntax node that represents a parsed constructor initializer. This syntax node + need not and typically does not appear in the source code referred to SemanticModel instance. + The semantic information for the topmost node of the constructor initializer. + + + + Bind the cref in the context of the specified location and get semantic information + such as type, symbols and diagnostics. This method is used to get semantic information about a cref + that did not actually appear in the source code. + + A character position used to identify a declaration scope and accessibility. This + character position must be within the FullSpan of the Root syntax node in this SemanticModel. In order to obtain + the correct scoping rules for the cref, position should be the Start position of the Span of the original cref. + + A syntax node that represents a parsed cref. This syntax node + need not and typically does not appear in the source code referred to SemanticModel instance. + SymbolInfo options. + The semantic information for the topmost node of the cref. + + + + Gets type information about a constructor initializer. + + The syntax node to get semantic information for. + The cancellation token. + + + + Gets type information about an expression. + + The syntax node to get semantic information for. + The cancellation token. + + + + Gets type information about an attribute. + + The syntax node to get semantic information for. + The cancellation token. + + + + Gets the conversion that occurred between the expression's type and type implied by the expression's context. + + + + + Binds the expression in the context of the specified location and gets type information. + This method is used to get type information about an expression that did not actually + appear in the source code. + + A character position used to identify a declaration scope and + accessibility. This character position must be within the FullSpan of the Root syntax + node in this SemanticModel. + + A syntax node that represents a parsed expression. This syntax + node need not and typically does not appear in the source code referred to by the + SemanticModel instance. + Indicates whether to binding the expression as a full expressions, + or as a type or namespace. If SpeculativeBindingOption.BindAsTypeOrNamespace is supplied, then + expression should derive from TypeSyntax. + The type information for the topmost node of the expression. + The passed in expression is interpreted as a stand-alone expression, as if it + appeared by itself somewhere within the scope that encloses "position". + + + + Gets the conversion that occurred between the expression's type and type implied by the expression's context. + + + + + Gets a list of method or indexed property symbols for a syntax node. + + The syntax node to get semantic information for. + The cancellation token. + + + + Gets a list of method or indexed property symbols for a syntax node. + + The syntax node to get semantic information for. + The cancellation token. + + + + Gets a list of method or indexed property symbols for a syntax node. + + The syntax node to get semantic information for. + The cancellation token. + + + + Returns the list of accessible, non-hidden indexers that could be invoked with the given expression as receiver. + + Potential indexer receiver. + To cancel the computation. + Accessible, non-hidden indexers. + + If the receiver is an indexer expression, the list will contain the indexers that could be applied to the result + of accessing the indexer, not the set of candidates that were considered during construction of the indexer expression. + + + + + Gets the semantic information associated with a query clause. + + + + + If resolves to an alias name, return the AliasSymbol corresponding + to A. Otherwise return null. + + + + + Binds the name in the context of the specified location and sees if it resolves to an + alias name. If it does, return the AliasSymbol corresponding to it. Otherwise, return null. + + A character position used to identify a declaration scope and + accessibility. This character position must be within the FullSpan of the Root syntax + node in this SemanticModel. + + A syntax node that represents a name. This syntax + node need not and typically does not appear in the source code referred to by the + SemanticModel instance. + Indicates whether to binding the name as a full expression, + or as a type or namespace. If SpeculativeBindingOption.BindAsTypeOrNamespace is supplied, then + expression should derive from TypeSyntax. + The passed in name is interpreted as a stand-alone name, as if it + appeared by itself somewhere within the scope that encloses "position". + + + + Gets the binder that encloses the position. + + + + + Gets the MemberSemanticModel that contains the node. + + + + + Given a position, locates the containing token. If the position is actually within the + leading trivia of the containing token or if that token is EOF, moves one token to the + left. Returns the start position of the resulting token. + + This has the effect of moving the position left until it hits the beginning of a non-EOF + token. + + Throws an ArgumentOutOfRangeException if position is not within the root of this model. + + + + + A convenience method that determines a position from a node. If the node is missing, + then its position will be adjusted using CheckAndAdjustPosition. + + + + + Gets the available named symbols in the context of the specified location and optional container. Only + symbols that are accessible and visible from the given location are returned. + + The character position for determining the enclosing declaration scope and + accessibility. + The container to search for symbols within. If null then the enclosing declaration + scope around position is used. + The name of the symbol to find. If null is specified then symbols + with any names are returned. + Consider (reduced) extension methods. + A list of symbols that were found. If no symbols were found, an empty list is returned. + + The "position" is used to determine what variables are visible and accessible. Even if "container" is + specified, the "position" location is significant for determining which members of "containing" are + accessible. + + Labels are not considered (see ). + + Non-reduced extension methods are considered regardless of the value of . + + + + + Gets the available base type members in the context of the specified location. Akin to + calling with the container set to the immediate base type of + the type in which occurs. However, the accessibility rules + are different: protected members of the base type will be visible. + + Consider the following example: + + public class Base + { + protected void M() { } + } + + public class Derived : Base + { + void Test(Base b) + { + b.M(); // Error - cannot access protected member. + base.M(); + } + } + + Protected members of an instance of another type are only accessible if the instance is known + to be "this" instance (as indicated by the "base" keyword). + + The character position for determining the enclosing declaration scope and + accessibility. + The name of the symbol to find. If null is specified then symbols + with any names are returned. + A list of symbols that were found. If no symbols were found, an empty list is returned. + + The "position" is used to determine what variables are visible and accessible. + + Non-reduced extension methods are considered, but reduced extension methods are not. + + + + + Gets the available named static member symbols in the context of the specified location and optional container. + Only members that are accessible and visible from the given location are returned. + + Non-reduced extension methods are considered, since they are static methods. + + The character position for determining the enclosing declaration scope and + accessibility. + The container to search for symbols within. If null then the enclosing declaration + scope around position is used. + The name of the symbol to find. If null is specified then symbols + with any names are returned. + A list of symbols that were found. If no symbols were found, an empty list is returned. + + The "position" is used to determine what variables are visible and accessible. Even if "container" is + specified, the "position" location is significant for determining which members of "containing" are + accessible. + + + + + Gets the available named namespace and type symbols in the context of the specified location and optional container. + Only members that are accessible and visible from the given location are returned. + + The character position for determining the enclosing declaration scope and + accessibility. + The container to search for symbols within. If null then the enclosing declaration + scope around position is used. + The name of the symbol to find. If null is specified then symbols + with any names are returned. + A list of symbols that were found. If no symbols were found, an empty list is returned. + + The "position" is used to determine what variables are visible and accessible. Even if "container" is + specified, the "position" location is significant for determining which members of "containing" are + accessible. + + Does not return INamespaceOrTypeSymbol, because there could be aliases. + + + + + Gets the available named label symbols in the context of the specified location and optional container. + Only members that are accessible and visible from the given location are returned. + + The character position for determining the enclosing declaration scope and + accessibility. + The name of the symbol to find. If null is specified then symbols + with any names are returned. + A list of symbols that were found. If no symbols were found, an empty list is returned. + + The "position" is used to determine what variables are visible and accessible. Even if "container" is + specified, the "position" location is significant for determining which members of "containing" are + accessible. + + + + + Gets the available named symbols in the context of the specified location and optional + container. Only symbols that are accessible and visible from the given location are + returned. + + The character position for determining the enclosing declaration + scope and accessibility. + The container to search for symbols within. If null then the + enclosing declaration scope around position is used. + The name of the symbol to find. If null is specified then symbols + with any names are returned. + Additional options that affect the lookup process. + Ignore 'throughType' in accessibility checking. + Used in checking accessibility of symbols accessed via 'MyBase' or 'base'. + + The "position" is used to determine what variables are visible and accessible. Even if + "container" is specified, the "position" location is significant for determining which + members of "containing" are accessible. + + Throws an argument exception if the passed lookup options are invalid. + + + + Determines if the symbol is accessible from the specified location. + + A character position used to identify a declaration scope and + accessibility. This character position must be within the FullSpan of the Root syntax + node in this SemanticModel. + + The symbol that we are checking to see if it accessible. + + True if "symbol is accessible, false otherwise. + + This method only checks accessibility from the point of view of the accessibility + modifiers on symbol and its containing types. Even if true is returned, the given symbol + may not be able to be referenced for other reasons, such as name hiding. + + + + + Field-like events can be used as fields in types that can access private + members of the declaring type of the event. + + + + + Analyze control-flow within a part of a method body. + + The first statement to be included in the analysis. + The last statement to be included in the analysis. + An object that can be used to obtain the result of the control flow analysis. + The two statements are not contained within the same statement list. + + + + Analyze control-flow within a part of a method body. + + The statement to be included in the analysis. + An object that can be used to obtain the result of the control flow analysis. + + + + Analyze data-flow within an expression. + + The expression within the associated SyntaxTree to analyze. + An object that can be used to obtain the result of the data flow analysis. + + + + Analyze data-flow within a part of a method body. + + The first statement to be included in the analysis. + The last statement to be included in the analysis. + An object that can be used to obtain the result of the data flow analysis. + The two statements are not contained within the same statement list. + + + + Analyze data-flow within a part of a method body. + + The statement to be included in the analysis. + An object that can be used to obtain the result of the data flow analysis. + + + + Get a SemanticModel object that is associated with a method body that did not appear in this source code. + Given must lie within an existing method body of the Root syntax node for this SemanticModel. + Locals and labels declared within this existing method body are not considered to be in scope of the speculated method body. + + A character position used to identify a declaration scope and accessibility. This + character position must be within the FullSpan of the Root syntax node in this SemanticModel and must be + within the FullSpan of a Method body within the Root syntax node. + A syntax node that represents a parsed method declaration. This method should not be + present in the syntax tree associated with this object, but must have identical signature to the method containing + the given in this SemanticModel. + A SemanticModel object that can be used to inquire about the semantic + information associated with syntax nodes within . + Flag indicating whether a speculative semantic model was created. + Throws this exception if the node is contained any SyntaxTree in the current Compilation + Throws this exception if is null. + Throws this exception if this model is a speculative semantic model, i.e. is true. + Chaining of speculative semantic model is not supported. + + + + Get a SemanticModel object that is associated with a method body that did not appear in this source code. + Given must lie within an existing method body of the Root syntax node for this SemanticModel. + Locals and labels declared within this existing method body are not considered to be in scope of the speculated method body. + + A character position used to identify a declaration scope and accessibility. This + character position must be within the FullSpan of the Root syntax node in this SemanticModel and must be + within the FullSpan of a Method body within the Root syntax node. + A syntax node that represents a parsed accessor declaration. This accessor should not be + present in the syntax tree associated with this object. + A SemanticModel object that can be used to inquire about the semantic + information associated with syntax nodes within . + Flag indicating whether a speculative semantic model was created. + Throws this exception if the node is contained any SyntaxTree in the current Compilation + Throws this exception if is null. + Throws this exception if this model is a speculative semantic model, i.e. is true. + Chaining of speculative semantic model is not supported. + + + + Get a SemanticModel object that is associated with a type syntax node that did not appear in + this source code. This can be used to get detailed semantic information about sub-parts + of a type syntax that did not appear in source code. + + A character position used to identify a declaration scope and accessibility. This + character position must be within the FullSpan of the Root syntax node in this SemanticModel. + + A syntax node that represents a parsed expression. This expression should not be + present in the syntax tree associated with this object. + Indicates whether to bind the expression as a full expression, + or as a type or namespace. + A SemanticModel object that can be used to inquire about the semantic + information associated with syntax nodes within . + Flag indicating whether a speculative semantic model was created. + Throws this exception if the node is contained any SyntaxTree in the current Compilation + Throws this exception if is null. + Throws this exception if this model is a speculative semantic model, i.e. is true. + Chaining of speculative semantic model is not supported. + + + + Get a SemanticModel object that is associated with a statement that did not appear in + this source code. This can be used to get detailed semantic information about sub-parts + of a statement that did not appear in source code. + + A character position used to identify a declaration scope and accessibility. This + character position must be within the FullSpan of the Root syntax node in this SemanticModel. + A syntax node that represents a parsed statement. This statement should not be + present in the syntax tree associated with this object. + A SemanticModel object that can be used to inquire about the semantic + information associated with syntax nodes within . + Flag indicating whether a speculative semantic model was created. + Throws this exception if the node is contained any SyntaxTree in the current Compilation + Throws this exception if is null. + Throws this exception if this model is a speculative semantic model, i.e. is true. + Chaining of speculative semantic model is not supported. + + + + Get a SemanticModel object that is associated with an initializer that did not appear in + this source code. This can be used to get detailed semantic information about sub-parts + of a field initializer or default parameter value that did not appear in source code. + + A character position used to identify a declaration scope and accessibility. This + character position must be within the FullSpan of the Root syntax node in this SemanticModel. + + A syntax node that represents a parsed initializer. This initializer should not be + present in the syntax tree associated with this object. + A SemanticModel object that can be used to inquire about the semantic + information associated with syntax nodes within . + Flag indicating whether a speculative semantic model was created. + Throws this exception if the node is contained any SyntaxTree in the current Compilation. + Throws this exception if is null. + Throws this exception if this model is a speculative semantic model, i.e. is true. + Chaining of speculative semantic model is not supported. + + + + Get a SemanticModel object that is associated with an expression body that did not appear in + this source code. This can be used to get detailed semantic information about sub-parts + of an expression body that did not appear in source code. + + A character position used to identify a declaration scope and accessibility. This + character position must be within the FullSpan of the Root syntax node in this SemanticModel. + + A syntax node that represents a parsed expression body. This node should not be + present in the syntax tree associated with this object. + A SemanticModel object that can be used to inquire about the semantic + information associated with syntax nodes within . + Flag indicating whether a speculative semantic model was created. + Throws this exception if the node is contained any SyntaxTree in the current Compilation. + Throws this exception if is null. + Throws this exception if this model is a speculative semantic model, i.e. is true. + Chaining of speculative semantic model is not supported. + + + + Get a SemanticModel object that is associated with a constructor initializer that did not appear in + this source code. This can be used to get detailed semantic information about sub-parts + of a constructor initializer that did not appear in source code. + + NOTE: This will only work in locations where there is already a constructor initializer. + + A character position used to identify a declaration scope and accessibility. This + character position must be within the FullSpan of the Root syntax node in this SemanticModel. + Furthermore, it must be within the span of an existing constructor initializer. + + A syntax node that represents a parsed constructor initializer. + This node should not be present in the syntax tree associated with this object. + A SemanticModel object that can be used to inquire about the semantic + information associated with syntax nodes within . + Flag indicating whether a speculative semantic model was created. + Throws this exception if the node is contained any SyntaxTree in the current Compilation. + Throws this exception if is null. + Throws this exception if this model is a speculative semantic model, i.e. is true. + Chaining of speculative semantic model is not supported. + + + + Get a SemanticModel object that is associated with a cref that did not appear in + this source code. This can be used to get detailed semantic information about sub-parts + of a cref that did not appear in source code. + + NOTE: This will only work in locations where there is already a cref. + + A character position used to identify a declaration scope and accessibility. This + character position must be within the FullSpan of the Root syntax node in this SemanticModel. + Furthermore, it must be within the span of an existing cref. + + A syntax node that represents a parsed cref syntax. + This node should not be present in the syntax tree associated with this object. + A SemanticModel object that can be used to inquire about the semantic + information associated with syntax nodes within . + Flag indicating whether a speculative semantic model was created. + Throws this exception if the node is contained any SyntaxTree in the current Compilation. + Throws this exception if is null. + Throws this exception if this model is a speculative semantic model, i.e. is true. + Chaining of speculative semantic model is not supported. + + + + Get a SemanticModel object that is associated with an attribute that did not appear in + this source code. This can be used to get detailed semantic information about sub-parts + of an attribute that did not appear in source code. + + A character position used to identify a declaration scope and accessibility. This + character position must be within the FullSpan of the Root syntax node in this SemanticModel. + A syntax node that represents a parsed attribute. This attribute should not be + present in the syntax tree associated with this object. + A SemanticModel object that can be used to inquire about the semantic + information associated with syntax nodes within . + Flag indicating whether a speculative semantic model was created. + Throws this exception if the node is contained any SyntaxTree in the current Compilation. + Throws this exception if is null. + Throws this exception if this model is a speculative semantic model, i.e. is true. + Chaining of speculative semantic model is not supported. + + + + If this is a speculative semantic model, then returns its parent semantic model. + Otherwise, returns null. + + + + + The SyntaxTree that this object is associated with. + + + + + Determines what type of conversion, if any, would be used if a given expression was + converted to a given type. If isExplicitInSource is true, the conversion produced is + that which would be used if the conversion were done for a cast expression. + + An expression which much occur within the syntax tree + associated with this object. + The type to attempt conversion to. + True if the conversion should be determined as for a cast expression. + Returns a Conversion object that summarizes whether the conversion was + possible, and if so, what kind of conversion it was. If no conversion was possible, a + Conversion object with a false "Exists" property is returned. + To determine the conversion between two types (instead of an expression and a + type), use Compilation.ClassifyConversion. + + + + Determines what type of conversion, if any, would be used if a given expression was + converted to a given type. If isExplicitInSource is true, the conversion produced is + that which would be used if the conversion were done for a cast expression. + + The character position for determining the enclosing declaration + scope and accessibility. + The expression to classify. This expression does not need to be + present in the syntax tree associated with this object. + The type to attempt conversion to. + True if the conversion should be determined as for a cast expression. + Returns a Conversion object that summarizes whether the conversion was + possible, and if so, what kind of conversion it was. If no conversion was possible, a + Conversion object with a false "Exists" property is returned. + To determine the conversion between two types (instead of an expression and a + type), use Compilation.ClassifyConversion. + + + + Determines what type of conversion, if any, would be used if a given expression was + converted to a given type using an explicit cast. + + An expression which much occur within the syntax tree + associated with this object. + The type to attempt conversion to. + Returns a Conversion object that summarizes whether the conversion was + possible, and if so, what kind of conversion it was. If no conversion was possible, a + Conversion object with a false "Exists" property is returned. + To determine the conversion between two types (instead of an expression and a + type), use Compilation.ClassifyConversion. + + + + Determines what type of conversion, if any, would be used if a given expression was + converted to a given type using an explicit cast. + + The character position for determining the enclosing declaration + scope and accessibility. + The expression to classify. This expression does not need to be + present in the syntax tree associated with this object. + The type to attempt conversion to. + Returns a Conversion object that summarizes whether the conversion was + possible, and if so, what kind of conversion it was. If no conversion was possible, a + Conversion object with a false "Exists" property is returned. + To determine the conversion between two types (instead of an expression and a + type), use Compilation.ClassifyConversion. + + + + Given a member declaration syntax, get the corresponding symbol. + + The syntax node that declares a member. + The cancellation token. + The symbol that was declared. + + NOTE: We have no GetDeclaredSymbol overloads for following subtypes of MemberDeclarationSyntax: + NOTE: (1) GlobalStatementSyntax as they don't declare any symbols. + NOTE: (2) IncompleteMemberSyntax as there are no symbols for incomplete members. + NOTE: (3) BaseFieldDeclarationSyntax or its subtypes as these declarations can contain multiple variable declarators. + NOTE: GetDeclaredSymbol should be called on the variable declarators directly. + + + + + Given a namespace declaration syntax node, get the corresponding namespace symbol for + the declaration assembly. + + The syntax node that declares a namespace. + The cancellation token. + The namespace symbol that was declared by the namespace declaration. + + + + Given a type declaration, get the corresponding type symbol. + + The syntax node that declares a type. + The cancellation token. + The type symbol that was declared. + + NOTE: We have no GetDeclaredSymbol overloads for subtypes of BaseTypeDeclarationSyntax as all of them return a NamedTypeSymbol. + + + + + Given a delegate declaration, get the corresponding type symbol. + + The syntax node that declares a delegate. + The cancellation token. + The type symbol that was declared. + + + + Given a enum member declaration, get the corresponding field symbol. + + The syntax node that declares an enum member. + The cancellation token. + The symbol that was declared. + + + + Given a base method declaration syntax, get the corresponding method symbol. + + The syntax node that declares a method. + The cancellation token. + The symbol that was declared. + + NOTE: We have no GetDeclaredSymbol overloads for subtypes of BaseMethodDeclarationSyntax as all of them return a MethodSymbol. + + + + + Given a syntax node that declares a property, indexer or an event, get the corresponding declared symbol. + + The syntax node that declares a property, indexer or an event. + The cancellation token. + The symbol that was declared. + + + + Given a syntax node that declares a property, get the corresponding declared symbol. + + The syntax node that declares a property. + The cancellation token. + The symbol that was declared. + + + + Given a syntax node that declares an indexer, get the corresponding declared symbol. + + The syntax node that declares an indexer. + The cancellation token. + The symbol that was declared. + + + + Given a syntax node that declares a (custom) event, get the corresponding event symbol. + + The syntax node that declares a event. + The cancellation token. + The symbol that was declared. + + + + Given a syntax node of anonymous object creation initializer, get the anonymous object property symbol. + + The syntax node that declares a property. + The cancellation token. + The symbol that was declared. + + + + Given a syntax node of anonymous object creation expression, get the anonymous object type symbol. + + The syntax node that declares an anonymous object. + The cancellation token. + The symbol that was declared. + + + + Given a syntax node that declares a property or member accessor, get the corresponding + symbol. + + The syntax node that declares an accessor. + The cancellation token. + The symbol that was declared. + + + + Given a syntax node that declares an expression body, get the corresponding symbol. + + The syntax node that declares an expression body. + The cancellation token. + The symbol that was declared. + + + + Given a variable declarator syntax, get the corresponding symbol. + + The syntax node that declares a variable. + The cancellation token. + The symbol that was declared. + + + + Given a labeled statement syntax, get the corresponding label symbol. + + The syntax node of the labeled statement. + The cancellation token. + The label symbol for that label. + + + + Given a switch label syntax, get the corresponding label symbol. + + The syntax node of the switch label. + The cancellation token. + The label symbol for that label. + + + + Given a using declaration get the corresponding symbol for the using alias that was + introduced. + + + The cancellation token. + The alias symbol that was declared. + + If the using directive is an error because it attempts to introduce an alias for which an existing alias was + previously declared in the same scope, the result is a newly-constructed AliasSymbol (i.e. not one from the + symbol table). + + + + + Given an extern alias declaration get the corresponding symbol for the alias that was introduced. + + + The cancellation token. + The alias symbol that was declared, or null if a duplicate alias symbol was declared. + + + + Given a parameter declaration syntax node, get the corresponding symbol. + + The syntax node that declares a parameter. + The cancellation token. + The parameter that was declared. + + + + Given a base field declaration syntax, get the corresponding symbols. + + The syntax node that declares one or more fields or events. + The cancellation token. + The symbols that were declared. + + + + Given a type parameter declaration (field or method), get the corresponding symbol + + The cancellation token. + + + + + Given a foreach statement, get the symbol for the iteration variable + + The cancellation token. + + + + + Given a catch declaration, get the symbol for the exception variable + + The cancellation token. + + + + + Get the query range variable declared in a join into clause. + + + + + Get the query range variable declared in a query continuation clause. + + + + + Returns a list of accessible, non-hidden indexers that could be invoked with the given expression + as a receiver. + + + If the given expression is an indexer access, then this method will return the list of indexers + that could be invoked on the result, not the list of indexers that were considered. + + + + + The method group can contain "duplicate" symbols that we do not want to display in the IDE analysis. + + For example, there could be an overriding virtual method and the method it overrides both in + the method group. This, strictly speaking, is a violation of the C# specification because we are + supposed to strip out overriding methods from the method group before overload resolution; overload + resolution is supposed to treat overridden methods as being methods of the less derived type. However, + in the IDE we want to display information about the overriding method, not the overridden method, and + therefore we leave both in the method group. The overload resolution algorithm has been written + to handle this departure from the specification. + + Similarly, we might have two methods in the method group where one is a "new" method that hides + another. Again, in overload resolution this would be handled by the rule that says that methods + declared on more derived types take priority over methods declared on less derived types. Both + will be in the method group, but in the IDE we want to only display information about the + hiding method, not the hidden method. + + We can also have "diamond" inheritance of interfaces leading to multiple copies of the same + method ending up in the method group: + + interface IB { void M(); } + interface IL : IB {} + interface IR : IB {} + interface ID : IL, IR {} + ... + id.M(); + + We only want to display one symbol in the IDE, even if the member lookup algorithm is unsophisticated + and puts IB.M in the member group twice. (Again, this is a mild spec violation since a method group + is supposed to be a set, without duplicates.) + + Finally, the interaction of multiple inheritance of interfaces and hiding can lead to some subtle + situations. Suppose we make a slight modification to the scenario above: + + interface IL : IB { new void M(); } + + Again, we only want to display one symbol in the method group. The fact that there is a "path" + to IB.M from ID via IR is irrelevant; if the symbol IB.M is hidden by IL.M then it is hidden + in ID, period. + + + + + Get the semantic info of a named argument in an invocation-like expression. + + + + + Find the first parameter named "argumentName". + + + + + If the call represents an extension method invocation with an explicit receiver, return the original + methods as ReducedExtensionMethodSymbols. Otherwise, return the original methods unchanged. + + + + + If the call represents an extension method with an explicit receiver, return a + ReducedExtensionMethodSymbol if it can be constructed. Otherwise, return the + original call method. + + + + + Gets for each statement info. + + The node. + + + + Gets await expression info. + + The node. + + + + If the given node is within a preprocessing directive, gets the preprocessing symbol info for it. + + Preprocessing symbol identifier node. + + + + Options to control the internal working of GetSymbolInfoWorker. Not currently exposed + to public clients, but could be if desired. + + + + + When binding "C" new C(...), return the type C and do not return information about + which constructor was bound to. Bind "new C(...)" to get information about which constructor + was chosen. + + + + + When binding "C" new C(...), return the constructor of C that was bound to, if C unambiguously + binds to a single type with at least one constructor. + + + + + When binding a name X that was declared with a "using X=OtherTypeOrNamespace", return OtherTypeOrNamespace. + + + + + When binding a name X that was declared with a "using X=OtherTypeOrNamespace", return the alias symbol X. + + + + + Given a position in the SyntaxTree for this SemanticModel returns the innermost + NamedType that the position is considered inside of. + + + + + Structure containing all semantic information about a for each statement. + + + + + Gets the "GetEnumerator" method. + + + + + Gets the "MoveNext" method. + + + + + Gets the "Current" property. + + + + + Gets the "Dispose" method. + + + + + The intermediate type to which the output of the is converted + before being converted to the iteration variable type. + + + As you might hope, for an array, it is the element type of the array. + + + + + The conversion from the to the iteration variable type. + + + May be user-defined. + + + + + The conversion from the type of the to the . + + + + + Initializes a new instance of the structure. + + + + + A binding for a field initializer, property initializer, constructor + initializer, or a parameter default value. + Represents the result of binding a value expression rather than a + block (for that, use a ). + + + + + Creates a SemanticModel for a true field initializer (field = value) of a named type (incl. Enums). + + + + + Creates a SemanticModel for an autoprop initializer of a named type + + + + + Creates a SemanticModel for a constructor initializer (": this(...)" or ": base(...)"). + + + + + Creates a SemanticModel for a constructor initializer (": base-class(...)"). + + + + + Creates a SemanticModel for a parameter default value. + + + + + Creates a speculative SemanticModel for an initializer node (field initializer, constructor initializer, or parameter default value) + that did not appear in the original source code. + + + + This is an implementation of a special symbol comparer, which is supposed to be used for + sorting original definition symbols (explicitly or explicitly declared in source within the same + container) in lexical order of their declarations. It will not work on anything that uses non-source locations. + + + + + Binding info for expressions and statements that are part of a member declaration. + + + + + The member symbol + + + + + This overload exists for callers who + a) Already have a node in hand and don't want to search through the tree + b) May want to search from an indirect container (e.g. node containing node + containing position). + + + + + Get the bound node corresponding to the root. + + + + + Get the highest bound node in the tree associated with a particular syntax node. + + + + + Get the lowest bound node in the tree associated with a particular syntax node. Lowest is defined as last + in a pre-order traversal of the bound tree. + + + + + Returned binder doesn't need to have set - the caller will add it. + + + + + Performs the same function as GetEnclosingBinder, but is known to take place within a + specified lambda. Walks up the syntax hierarchy until a node with an associated binder + is found. + + + CONSIDER: can this share code with MemberSemanticModel.GetEnclosingBinder? + + Returned binder doesn't need to have set - the caller will add it. + + + + + Get all bounds nodes associated with a node, ordered from highest to lowest in the bound tree. + Strictly speaking, the order is that of a pre-order traversal of the bound tree. + + + + + If the node is an expression, return the nearest parent node + with semantic meaning. Otherwise return null. + + + + + The incremental binder is used when binding statements. Whenever a statement + is bound, it checks the bound node cache to see if that statement was bound, + and returns it instead of rebinding it. + + For example, we might have: + while (x > foo()) + { + y = y * x; + z = z + y; + } + + We might first get semantic info about "z", and thus bind just the statement + "z = z + y". Later, we might bind the entire While block. While binding the while + block, we can reuse the binding we did of "z = z + y". + + + NOTE: any member overridden by this binder should follow the BuckStopsHereBinder pattern. + Otherwise, a subsequent binder in the chain could suppress the caching behavior. + + + + + We override GetBinder so that the BindStatement override is still + in effect on nested binders. + + + + + Walks the bound tree and adds all non compiler generated bound nodes whose syntax matches the given one + to the cache. + + The root of the bound tree. + The cache. + The syntax node where to add bound nodes for. + + + + Decides whether to the add the bound node to the cache or not. + + The bound node. + + + + Allows asking semantic questions about a TypeSyntax (or its descendants) within a member, that did not appear in the original source code. + Typically, an instance is obtained by a call to SemanticModel.TryGetSpeculativeSemanticModel. + + + + + Creates a speculative SemanticModel for a TypeSyntax node at a position within an existing MemberSemanticModel. + + + + + Creates a SemanticModel that creates and owns the ExecutableCodeBinder for the method of which it is a model. + + + + + Creates a speculative SemanticModel for a method body that did not appear in the original source code. + + + + + Creates a speculative SemanticModel for an expression body that did not appear in the original source code. + + + + + Semantic information associated with a query clause in a C# query expression. + + + + + The .Cast<T>() operation generated from the query range variable's type restriction, + or null if the type restriction isn't specified. + + + The operation, when present is implemented via . + To access the type, when this is non-null use [0]. + If it is an extension method, it is returned in reduced form. + + + + + The operation (e.g. Select(), Where(), etc) that implements the given clause. + + + The clause can be implemented via , or + or that return a delegate. + If it is an extension method, it is returned in reduced form. + + + + + Allows asking semantic questions about a tree of syntax nodes that did not appear in the original source code. + Typically, an instance is obtained by a call to SemanticModel.TryGetSpeculativeSemanticModel. + + + + + Allows asking semantic questions about any node in a SyntaxTree within a Compilation. + + + Allows asking semantic questions about any node in a SyntaxTree within a Compilation. + + + + + The compilation this object was obtained from. + + + + + The root node of the syntax tree that this object is associated with. + + + + + The SyntaxTree that this object is associated with. + + + + + Returns true if this is a SemanticModel that ignores accessibility rules when answering semantic questions. + + + + + Gets the enclosing binder associated with the node + + + + + + + Given a namespace declaration syntax node, get the corresponding namespace symbol for the declaration + assembly. + + The syntax node that declares a namespace. + The cancellation token. + The namespace symbol that was declared by the namespace declaration. + + + + Given a type declaration, get the corresponding type symbol. + + The syntax node that declares a type. + The cancellation token. + The type symbol that was declared. + + NOTE: We have no GetDeclaredSymbol overloads for subtypes of BaseTypeDeclarationSyntax as all of them return a NamedTypeSymbol. + + + + + Given a delegate declaration, get the corresponding type symbol. + + The syntax node that declares a delegate. + The cancellation token. + The type symbol that was declared. + + + + Given an member declaration syntax, get the corresponding symbol. + + The syntax node that declares a member. + The cancellation token. + The symbol that was declared. + + NOTE: We have no GetDeclaredSymbol overloads for following subtypes of MemberDeclarationSyntax: + NOTE: (1) GlobalStatementSyntax as they don't declare any symbols. + NOTE: (2) IncompleteMemberSyntax as there are no symbols for incomplete members. + NOTE: (3) BaseFieldDeclarationSyntax or its subtypes as these declarations can contain multiple variable declarators. + NOTE: GetDeclaredSymbol should be called on the variable declarators directly. + + + + + Given a enum member declaration, get the corresponding field symbol. + + The syntax node that declares an enum member. + The cancellation token. + The symbol that was declared. + + + + Given a base method declaration syntax, get the corresponding method symbol. + + The syntax node that declares a method. + The cancellation token. + The symbol that was declared. + + NOTE: We have no GetDeclaredSymbol overloads for subtypes of BaseMethodDeclarationSyntax as all of them return a MethodSymbol. + + + + + Given a syntax node that declares a property, indexer or an event, get the corresponding declared symbol. + + The syntax node that declares a property, indexer or an event. + The cancellation token. + The symbol that was declared. + + + + Given a syntax node that declares a property, get the corresponding declared symbol. + + The syntax node that declares a property, indexer or an event. + The cancellation token. + The symbol that was declared. + + + + Given a syntax node that declares an indexer, get the corresponding declared symbol. + + The syntax node that declares an indexer. + The cancellation token. + The symbol that was declared. + + + + Given a syntax node that declares a (custom) event, get the corresponding event symbol. + + The syntax node that declares a event. + The cancellation token. + The symbol that was declared. + + + + Given an syntax node that declares a property or member accessor, get the corresponding symbol. + + The syntax node that declares an accessor. + The cancellation token. + The symbol that was declared. + + + + Finds the member in the containing symbol which is inside the given declaration span. + + + + + Given an variable declarator syntax, get the corresponding symbol. + + The syntax node that declares a variable. + The cancellation token. + The symbol that was declared. + + + + Given a labeled statement syntax, get the corresponding label symbol. + + The syntax node of the labeled statement. + The cancellation token. + The label symbol for that label. + + + + Given a switch label syntax, get the corresponding label symbol. + + The syntax node of the switch label. + The cancellation token. + The label symbol for that label. + + + + Given a using declaration get the corresponding symbol for the using alias that was introduced. + + + The cancellation token. + The alias symbol that was declared. + + If the using directive is an error because it attempts to introduce an alias for which an existing alias was + previously declared in the same scope, the result is a newly-constructed AliasSymbol (i.e. not one from the + symbol table). + + + + + Given an extern alias declaration get the corresponding symbol for the alias that was introduced. + + + The cancellation token. + The alias symbol that was declared, or null if a duplicate alias symbol was declared. + + + + Given a base field declaration syntax, get the corresponding symbols. + + The syntax node that declares one or more fields or events. + The cancellation token. + The field symbols that were declared. + + + + Given an parameter declaration syntax node, get the corresponding symbol. + + The syntax node that declares a parameter. + The cancellation token. + The parameter that was declared. + + + + Given a type parameter declaration (field or method), get the corresponding symbol + + + The cancellation token. + + + + + The type of the expression represented by the syntax node. For expressions that do not + have a type, null is returned. If the type could not be determined due to an error, than + an object derived from ErrorTypeSymbol is returned. + + + + + The type of the expression after it has undergone an implicit conversion. If the type + did not undergo an implicit conversion, returns the same as Type. + + + + + If the expression underwent an implicit conversion, return information about that + conversion. Otherwise, returns an identity conversion. + + + + + Manages anonymous types created in owning compilation. All requests for + anonymous type symbols go via the instance of this class. + + + Manages anonymous types created on module level. All requests for anonymous type symbols + go via the instance of this class, the symbol will be either created or returned from cache. + + + + + Represents an anonymous type constructor. + + + + + Represents a getter for anonymous type property. + + + + + Represents an anonymous type 'Equals' method. + + + + + Represents an anonymous type 'GetHashCode' method. + + + + + Represents an anonymous type 'ToString' method. + + + + + Current compilation + + + + + Given anonymous type descriptor provided constructs an anonymous type symbol. + + + + + Get a symbol of constructed anonymous type property by property index + + + + + Retrieves anonymous type properties types + + + + + Given an anonymous type and new field types construct a new anonymous type symbol; + a new type symbol will reuse type descriptor from the constructed type with new type arguments. + + + + + Logical equality on anonymous types that ignores custom modifiers and/or the object/dynamic distinction. + Differs from IsSameType for arrays, pointers, and generic instantiations. + + + + + Reports all use site errors in special or well known symbols required for anonymous types + + true if there was at least one error + + + + Cache of created anonymous type templates used as an implementation of anonymous + types in emit phase. + + + + + Maps delegate signature shape (number of parameters and their ref-ness) to a synthesized generic delegate symbol. + Unlike anonymous types synthesized delegates are not available through symbol APIs. They are only used in lowered bound trees. + Currently used for dynamic call-site sites whose signature doesn't match any of the well-known Func or Action types. + + + + + Given anonymous type provided constructs an implementation type symbol to be used in emit phase; + if the anonymous type has at least one field the implementation type symbol will be created based on + a generic type template generated for each 'unique' anonymous type structure, otherwise the template + type will be non-generic. + + + + + Resets numbering in anonymous type names and compiles the + anonymous type methods. Also seals the collection of templates. + + + + + The set of anonymous type templates created by + this AnonymousTypeManager, in fixed order. + + + + + The set of synthesized delegates created by + this AnonymousTypeManager. + + + + + Returns all templates owned by this type manager + + + + + Returns true if the named type is an implementation template for an anonymous type + + + + + Retrieves methods of anonymous type template which are not placed to symbol table. + In current implementation those are overridden 'ToString', 'Equals' and 'GetHashCode' + + + + + Translates anonymous type public symbol into an implementation type symbol to be used in emit. + + + + + Translates anonymous type method symbol into an implementation method symbol to be used in emit. + + + + + Comparator being used for stable ordering in anonymous type indices. + + + + + Represents an anonymous type 'public' symbol which is used in binding and lowering. + In emit phase it is being substituted with implementation symbol. + + + + Properties defined in the type + + + Maps member names to symbol(s) + + + Anonymous type manager owning this template + + + Anonymous type descriptor + + + + Represents a baking field for an anonymous type template property symbol. + + + + + Represents an anonymous type template's property symbol. + + + + + Represents a base implementation for anonymous type synthesized methods. + + + + + Represents an anonymous type 'template' which is a generic type to be used for all + anonymous type having the same structure, i.e. the same number of fields and field names. + + + + Name to be used as metadata name during emit + + + This list consists of synthesized method symbols for ToString, + Equals and GetHashCode which are not part of symbol table + + + Properties defined in the template + + + Maps member names to symbol(s) + + + Anonymous type manager owning this template + + + Smallest location of the template, actually contains the smallest location + of all the anonymous type instances created using this template during EMIT + + + Key pf the anonymous type descriptor + + + + Smallest location of the template, actually contains the smallest location + of all the anonymous type instances created using this template during EMIT; + + NOTE: if this property is queried, smallest location must not be null. + + + + + In emit phase every time a created anonymous type is referenced we try to store the lowest + location of the template. It will be used for ordering templates and assigning emitted type names. + + + + + Returns a synthesized debugger display attribute or null if one + could not be synthesized. + + + + + Represents an anonymous type template's type parameter. + + + + + Represents a compiler generated synthesized method symbol + representing string switch hash function + + + + + Compute the hashcode of a sub string using FNV-1a + See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + + + This method should be kept consistent with MethodBodySynthesizer.ConstructStringSwitchHashFunctionBody + The control flow in this method mimics lowered "for" loop. It is exactly what we want to emit + to ensure that JIT can do range check hoisting. + + + + + When C# interface implementation differs from CLR interface implementation, + we insert a synthesized explicit interface implementation that delegates + to the method that C# considers an implicit implementation. + There are two key scenarios for this: + 1) A single source method is implicitly implementing one or more interface + methods from metadata and the interface methods have different custom + modifiers. In this case, we explicitly implement the interface methods + and have (all) implementations delegate to the source method. + 2) A non-virtual, non-source method in a base type is implicitly implementing + an interface method. Since we can't change the "virtualness" of the + non-source method, we introduce an explicit implementation that delegates + to it instead. + + + + + Given a SynthesizedExplicitImplementationMethod (effectively a tuple (interface method, implementing method, implementing type)), + construct a BoundBlock body. Consider the tuple (Interface.Foo, Base.Foo, Derived). The generated method will look like: + + R Interface.Foo<T1, T2, ...>(A1 a1, A2 a2, ...) + { + //don't return the output if the return type is void + return this.Foo<T1, T2, ...>(a1, a2, ...); + } + + + + + If a sealed override property defines fewer accessors than the + original virtual property, it is necessary to synthesize a sealed + accessor so that the accessor will not be overridable from metadata. + + + + + Given a SynthesizedSealedPropertyAccessor (an accessor with a reference to the accessor it overrides), + construct a BoundBlock body. + + + + + a bound node rewriter that rewrites types properly (which in some cases the automatically-generated + base class does not). This is used in the lambda rewriter, the iterator rewriter, and the async rewriter. + + + + + A wrapper method that is created for non-virtually calling a base-class + virtual method from other classes (like those created for lambdas...). + + + + + Given a SynthesizedSealedPropertyAccessor (an accessor with a reference to the accessor it overrides), + construct a BoundBlock body. + + + + A not-null collection of synthesized methods generated for the current source type. + + + + Returns true if the specified local/parameter needs to be hoisted to a field. + Variable may be hoisted even if it is not captured, to improve debugging experience. + + + + + Contains methods related to synthesizing bound nodes in lowered form + that does not need any processing before passing to codegen + + + + + Construct a body for a method containing a call to a single other method with the same signature (modulo name). + + Bound node factory. + Method to invoke in constructed body. + True for "base.", false for "this.". + Body for implementedMethod. + + + + An ArrayTypeSymbol represents an array type, such as int[] or object[,]. + + + + + Gets the list of custom modifiers associated with the array. + Returns an empty list if there are no custom modifiers. + + + + + Gets the number of dimensions of the array. A regular single-dimensional array + has rank 1, a two-dimensional array has rank 2, etc. + + + + + Is this zero-based one-dimensional array, i.e. SZArray in CLR terms. + + + + + Specified sizes for dimensions, by position. The length can be less than , + meaning that some trailing dimensions don't have the size specified. + The most common case is none of the dimensions have the size specified - an empty array is returned. + + + + + Specified lower bounds for dimensions, by position. The length can be less than , + meaning that some trailing dimensions don't have the lower bound specified. + The most common case is all dimensions are zero bound - a null array is returned in this case. + + + + + Note, equality should be checked separately!!! + + + + + Normally C# arrays have default sizes and lower bounds - sizes are not specified and all dimensions are zero bound. + This property should return false for any deviations. + + + + + Gets the type of the elements stored in the array. + + + + + Represents SZARRAY - zero-based one-dimensional array + + + + + Represents MDARRAY - multi-dimensional array (possibly of rank 1) + + + + + Represents an attribute applied to a Symbol. + + + + + Gets the attribute class being applied. + + + + + Gets the constructor used in this application of the attribute. + + + + + Gets a reference to the source for this application of the attribute. Returns null for applications of attributes on metadata Symbols. + + + + + Gets the list of constructor arguments specified by this application of the attribute. This list contains both positional arguments + and named arguments that are formal parameters to the constructor. + + + + + Gets the list of named field or property value arguments specified by this application of the attribute. + + + + + Compares the namespace and type name with the attribute's namespace and type name. + Returns true if they are the same. + + + + + Checks if an applied attribute with the given attributeType matches the namespace name and type name of the given early attribute's description + and the attribute description has a signature with parameter count equal to the given attribute syntax's argument list count. + NOTE: We don't allow early decoded attributes to have optional parameters. + + + + + Returns the that represents the current AttributeData. + + A that represents the current AttributeData. + + + + Gets the attribute class being applied as an + + + + + Gets the constructor used in this application of the attribute as an . + + + + + Gets a reference to the source for this application of the attribute. Returns null for applications of attributes on metadata Symbols. + + + + + Decodes PermissionSetAttribute applied in source to determine if it needs any fixup during codegen. + + + PermissionSetAttribute needs fixup when it contains an assignment to the 'File' property as a single named attribute argument. + Fixup performed is ported from SecurityAttributes::FixUpPermissionSetAttribute. + It involves following steps: + 1) Verifying that the specified file name resolves to a valid path. + 2) Reading the contents of the file into a byte array. + 3) Convert each byte in the file content into two bytes containing hexadecimal characters. + 4) Replacing the 'File = fileName' named argument with 'Hex = hexFileContent' argument, where hexFileContent is the converted output from step 3) above. + + Step 1) is performed in this method, i.e. during binding. + Remaining steps are performed during serialization as we want to avoid retaining the entire file contents throughout the binding/codegen pass. + See for remaining fixup steps. + + String containing the resolved file path if PermissionSetAttribute needs fixup during codegen, null otherwise. + + + + This method determines if an applied attribute must be emitted. + Some attributes appear in symbol model to reflect the source code, + but should not be emitted. + + + + + Represents a custom modifier (modopt/modreq). + + + + + A type used as a tag that indicates which type of modification applies. + + + + + Represents an event. + + + + + The original definition of this symbol. If this symbol is constructed from another + symbol by type substitution then OriginalDefinition gets the original symbol as it was defined in + source or metadata. + + + + + The type of the event. + + + + + The 'add' accessor of the event. Null only in error scenarios. + + + + + The 'remove' accessor of the event. Null only in error scenarios. + + + + + True if this is a Windows Runtime-style event. + + A normal C# event, "event D E", has accessors + void add_E(D d) + void remove_E(D d) + + A Windows Runtime event, "event D E", has accessors + EventRegistrationToken add_E(D d) + void remove_E(EventRegistrationToken t) + + + + + True if this symbol has a special name (metadata flag SpecialName is set). + + + + + Gets the attributes on event's associated field, if any. + Returns an empty if + there are no attributes. + + + This publicly exposes the attributes of the internal backing field. + + + + + Returns the overridden event, or null. + + + + + Source: Was the member name qualified with a type name? + Metadata: Is the member an explicit implementation? + + + Will not always agree with ExplicitInterfaceImplementations.Any() + (e.g. if binding of the type part of the name fails). + + + + + Returns interface events explicitly implemented by this event. + + + Events imported from metadata can explicitly implement more than one event. + + + + + Gets the kind of this symbol. + + + + + Implements visitor pattern. + + + + + Represents a field in a class, struct or enum + + + + + The original definition of this symbol. If this symbol is constructed from another + symbol by type substitution then OriginalDefinition gets the original symbol as it was defined in + source or metadata. + + + + + Gets the type of this field. + + + + + Gets the list of custom modifiers, if any, associated with the field. + + + + + If this field serves as a backing variable for an automatically generated + property or a field-like event, returns that + property/event. Otherwise returns null. + Note, the set of possible associated symbols might be expanded in the future to + reflect changes in the languages. + + + + + Returns true if this field was declared as "readonly". + + + + + Returns true if this field was declared as "volatile". + + + + + Returns true if this field was declared as "fixed". + Note that for a fixed-size buffer declaration, this.Type will be a pointer type, of which + the pointed-to type will be the declared element type of the fixed-size buffer. + + + + + If IsFixed is true, the value between brackets in the fixed-size-buffer declaration. + If IsFixed is false FixedSize is 0. + Note that for fixed-a size buffer declaration, this.Type will be a pointer type, of which + the pointed-to type will be the declared element type of the fixed-size buffer. + + + + + If this.IsFixed is true, returns the underlying implementation type for the + fixed-size buffer when emitted. Otherwise returns null. + + + + + Returns true when field is a backing field for a captured frame pointer (typically "this"). + + + + + Returns true if this field was declared as "const" (i.e. is a constant declaration). + Also returns true for an enum member. + + + + + Returns false if the field wasn't declared as "const", or constant value was omitted or erroneous. + True otherwise. + + + + + If IsConst returns true, then returns the constant value of the field or enum member. If IsConst returns + false, then returns null. + + + + + Gets the kind of this symbol. + + + + + Returns false because field can't be abstract. + + + + + Returns false because field can't be defined externally. + + + + + Returns false because field can't be overridden. + + + + + Returns false because field can't be sealed. + + + + + Returns false because field can't be virtual. + + + + + True if this symbol has a special name (metadata flag SpecialName is set). + + + + + True if this symbol has a runtime-special name (metadata flag RuntimeSpecialName is set). + + + + + True if this field is not serialized (metadata flag NotSerialized is set). + + + + + True if this field has a pointer type. + + + By default we defer to this.Type.IsPointerType() + However in some cases this may cause circular dependency via binding a + pointer that points to the type that contains the current field. + Fortunately in those cases we do not need to force binding of the field's type + and can just check the declaration syntax if the field type is not yet known. + + + + + Describes how the field is marshalled when passed to native code. + Null if no specific marshalling information is available for the field. + + PE symbols don't provide this information and always return null. + + + + Returns the marshalling type of this field, or 0 if marshalling information isn't available. + + + By default this information is extracted from if available. + Since the compiler does only need to know the marshalling type of symbols that aren't emitted + PE symbols just decode the type from metadata and don't provide full marshalling information. + + + + + Offset assigned to the field when the containing type is laid out by the VM. + Null if unspecified. + + + + + Return error code that has highest priority while calculating use site error for this symbol. + + + + + Represents a method or method-like symbol (including constructor, + destructor, operator, or property/event accessor). + + + + + This method indicates whether or not the runtime will regard the method + as newslot (as indicated by the presence of the "newslot" modifier in the + signature). + WARN WARN WARN: We won't have a final value for this until declaration + diagnostics have been computed for all s, so pass + ignoringInterfaceImplementationChanges: true if you need a value sooner + and aren't concerned about tweaks made to satisfy interface implementation + requirements. + NOTE: Not ignoring changes can only result in a value that is more true. + + + + + This method indicates whether or not the runtime will regard the method + as virtual (as indicated by the presence of the "virtual" modifier in the + signature). + WARN WARN WARN: We won't have a final value for this until declaration + diagnostics have been computed for all s, so pass + ignoringInterfaceImplementationChanges: true if you need a value sooner + and aren't concerned about tweaks made to satisfy interface implementation + requirements. + NOTE: Not ignoring changes can only result in a value that is more true. + + + + + The original definition of this symbol. If this symbol is constructed from another + symbol by type substitution then OriginalDefinition gets the original symbol as it was defined in + source or metadata. + + + + + Gets what kind of method this is. There are several different kinds of things in the + C# language that are represented as methods. This property allow distinguishing those things + without having to decode the name of the method. + + + + + Returns the arity of this method, or the number of type parameters it takes. + A non-generic method has zero arity. + + + + + Returns whether this method is generic; i.e., does it have any type parameters? + + + + + Returns true if this method is an extension method. + + + + + True if this symbol has a special name (metadata flag SpecialName is set). + + + + + Misc implementation metadata flags (ImplFlags in metadata). + + + + + True if the type has declarative security information (HasSecurity flags). + + + + + Platform invoke information, or null if the method isn't a P/Invoke. + + + + + Declaration security information associated with this type, or null if there is none. + + + + + Marshalling information for return value (FieldMarshal in metadata). + + + + + True if the method calls another method containing security code (metadata flag RequiresSecurityObject is set). + + + A method can me marked as RequiresSecurityObject by applying the DynamicSecurityMethodAttribute in source. + DynamicSecurityMethodAttribute is a pseudo custom attribute defined as an internal class in System.Security namespace. + This attribute is set on certain security methods defined within mscorlib. + + + + + Returns true if this method hides base methods by name. This cannot be specified directly + in the C# language, but can be true for methods defined in other languages imported from + metadata. The equivalent of the "hidebyname" flag in metadata. + + + + + Returns whether this method is using CLI VARARG calling convention. This is used for C-style variable + argument lists. This is used extremely rarely in C# code and is represented using the undocumented "__arglist" keyword. + + Note that methods with "params" on the last parameter are indicated with the "IsParams" property on ParameterSymbol, and + are not represented with this property. + + + + + Returns whether this built-in operator checks for integer overflow. + + + + + Returns true if this method has no return type; i.e., returns "void". + + + + + Source: Returns whether this method is async; i.e., does it have the async modifier? + Metadata: Returns false; methods from metadata cannot be async. + + + + + Gets the return type of the method + + + + + Returns the type arguments that have been substituted for the type parameters. + If nothing has been substituted for a given type parameter, + then the type parameter itself is consider the type argument. + + + + + Get the type parameters on this method. If the method has not generic, + returns an empty list. + + + + + Call and throw if it returns false. + + + + + True if this type supports retrieving the this parameter + and false otherwise. Note that a return value of true does not guarantee a non-null + (e.g. fails for static methods). + + + + + Optimization: in many cases, the parameter count (fast) is sufficient and we + don't need the actual parameter symbols (slow). + + + The default implementation is always correct, but may be unnecessarily slow. + + + + + Gets the parameters of this method. If this method has no parameters, returns + an empty list. + + + + + Returns the method symbol that this method was constructed from. The resulting + method symbol + has the same containing type (if any), but has type arguments that are the same + as the type parameters (although its containing type might not). + + + + + Source: Was the member name qualified with a type name? + Metadata: Is the member an explicit implementation? + + + Will not always agree with ExplicitInterfaceImplementations.Any() + (e.g. if binding of the type part of the name fails). + + + + + Returns interface methods explicitly implemented by this method. + + + Methods imported from metadata can explicitly implement more than one method, + that is why return type is ImmutableArray. + + + + + Returns the list of custom modifiers, if any, associated with the returned value. + + + + + Gets the attributes on method's return type. + Returns an empty array if there are no attributes. + + + + + If this method has MethodKind of MethodKind.PropertyGet or MethodKind.PropertySet, + returns the property that this method is the getter or setter for. + If this method has MethodKind of MethodKind.EventAdd or MethodKind.EventRemove, + returns the event that this method is the adder or remover for. + Note, the set of possible associated symbols might be expanded in the future to + reflect changes in the languages. + + + + + Returns the original virtual or abstract method which a given method symbol overrides, + ignoring any other overriding methods in base classes. + + The search must respect accessibility from this type. + + + + Returns the original virtual or abstract method which a given method symbol overrides, + ignoring any other overriding methods in base classes. + Also, if the given method symbol is generic then the resulting virtual or abstract method is constructed with the + same type arguments as the given method. + + + + + If this method overrides another method (because it both had the override modifier + and there correctly was a method to override), returns the overridden method. + Note that if an overriding method D.M overrides C.M, which in turn overrides + virtual method A.M, the "overridden method" of D.M is C.M, not the original virtual + method A.M. Note also that constructed generic methods are not considered to + override anything. + + + + + Returns true if calls to this method are omitted in this syntax tree. Calls are omitted + when the called method is a partial method with no implementation part, or when the + called method is a conditional method whose condition is not true in the source file + corresponding to the given syntax tree. + + + + + Calls are conditionally omitted if both the following requirements are true: + (a) IsConditional == true, i.e. it has at least one applied/inherited conditional attribute AND + (b) None of conditional symbols corresponding to these conditional attributes are defined in the given syntaxTree. + + + Forces binding and decoding of attributes. + + + + + Returns a sequence of preprocessor symbols specified in applied on this symbol, or null if there are none. + + + + + Returns a flag indicating whether this symbol has at least one applied/inherited conditional attribute. + + + Forces binding and decoding of attributes. + + + + + Some method kinds do not participate in overriding/hiding (e.g. constructors). + + + + + Returns value 'Method' of the + + + + + Returns true if this symbol represents a constructor of a script class. + + + + + Returns if the method is implicit constructor (normal and static) + + + + + Returns if the method is implicit instance constructor + + + + + Returns true if this symbol represents a constructor of an interactive submission class. + + + + + Determines whether this method is a candidate for a default assembly entry point + (i.e. it is a static method called "Main"). + + + + + Checks if the method has an entry point compatible signature, i.e. + - the return type is either void or int + - has either no parameter or a single parameter of type string[] + + + + + If this is an extension method that can be applied to a receiver of the given type, + returns a reduced extension method symbol thus formed. Otherwise, returns null. + + + + + If this is an extension method, returns a reduced extension method + symbol representing the method. Otherwise, returns null. + + + + + If this method is a reduced extension method, returns the extension method that + should be used at call site during ILGen. Otherwise, returns null. + + + + + If this is a partial method declaration without a body, and the method also + has a part that implements it with a body, returns that implementing + definition. Otherwise null. + + + + + If this is a partial method with a body, returns the corresponding + definition part (without a body). Otherwise null. + + + + + If this method is a reduced extension method, gets the extension method definition that + this method was reduced from. Otherwise, returns null. + + + + + If this method can be applied to an object, returns the type of object it is applied to. + + + + + If this method is a reduced extension method, returns a type inferred during reduction process for the type parameter. + + Type parameter of the corresponding method. + Inferred type or Nothing if nothing was inferred. + If this is not a reduced extension method. + If is null. + If doesn't belong to the corresponding method. + + + + Apply type substitution to a generic method to create an method symbol with the given type parameters supplied. + + + + + + + Apply type substitution to a generic method to create an method symbol with the given type parameters supplied. + + + + + + + As a performance optimization, cache parameter types and refkinds - overload resolution uses them a lot. + + + + + Null if no parameter is ref/out. Otherwise the RefKind for each parameter. + + + + + Returns the map from type parameters to type arguments. + If this is not a generic method instantiation, returns null. + The map targets the original definition of the method. + + + + + Return error code that has highest priority while calculating use site error for this symbol. + + + + + If the method was written as an iterator method (i.e. with yield statements in its body) returns the + element type of the iterator. Otherwise returns null. + + + + + Generates bound block representing method's body for methods in lowered form and adds it to + a collection of method bodies of the current module. This method is supposed to only be + called for method symbols which return SynthesizesLoweredBoundBody == true. + + + + + Returns true for synthesized symbols which generate synthesized body in lowered form + + + + + Return true iff the method contains user code. + + + + + Calculates a syntax offset for a local (user-defined or long-lived synthesized) declared at . + Must be implemented by all methods that may contain user code. + + + Syntax offset is a unique identifier for the local within the emitted method body. + It's based on position of the local declarator. In single-part method bodies it's simply the distance + from the start of the method body syntax span. If a method body has multiple parts (such as a constructor + comprising of code for member initializers and constructor initializer calls) the offset is calculated + as if all source these parts were concatenated together and prepended to the constructor body. + The resulting syntax offset is then negative for locals defined outside of the constructor body. + + + + + Build and add synthesized return type attributes for this method symbol. + + + + + Represents a type other than an array, a pointer, a type parameter, and dynamic. + + + + + Gets the set of interfaces to emit on this type. This set can be different from the set returned by Interfaces property. + + + + + Add the type to the builder and then recurse on its interfaces. + + + Pre-order depth-first search. + + + + + To represent a gap in interface's v-table null value should be returned in the appropriate position, + unless the gap has a symbol (happens if it is declared in source, for example). + + + + + Returns the arity of this type, or the number of type parameters it takes. + A non-generic type has zero arity. + + + + + Returns the type parameters that this type has. If this is a non-generic type, + returns an empty ImmutableArray. + + + + + Returns the type arguments that have been substituted for the type parameters. + If nothing has been substituted for a give type parameters, + then the type parameter itself is consider the type argument. + + + + + Returns custom modifiers for the type arguments that have been substituted for the type parameters. + + + + + Returns the type symbol that this type was constructed from. This type symbol + has the same containing type (if any), but has type arguments that are the same + as the type parameters (although its containing type might not). + + + + + For enum types, gets the underlying type. Returns null on all other + kinds of types. + + + + + Returns true for a struct type containing a cycle. + This property is intended for flow analysis only + since it is only implemented for source types. + + + + + Is this a NoPia local type explicitly declared in source, i.e. + top level type with a TypeIdentifier attribute on it? + + + + + Returns true and a string from the first GuidAttribute on the type, + the string might be null or an invalid guid representation. False, + if there is no GuidAttribute with string argument. + + + + + For delegate types, gets the delegate's invoke method. Returns null on + all other kinds of types. Note that it is possible to have an ill-formed + delegate type imported from metadata which does not have an Invoke method. + Such a type will be classified as a delegate but its DelegateInvokeMethod + would be null. + + + + + Get the operators for this type by their metadata name + + + + + Get the instance constructors for this type. + + + + + Get the static constructors for this type. + + + + + Get the instance and static constructors for this type. + + + + + Get the indexers for this type. + + + Won't include indexers that are explicit interface implementations. + + + + + Returns true if this type might contain extension methods. If this property + returns false, there are no extension methods in this type. + + + This property allows the search for extension methods to be narrowed quickly. + + + + + Returns true if this type is known to be a reference type. It is never the case that + IsReferenceType and IsValueType both return true. However, for an unconstrained type + parameter, IsReferenceType and IsValueType will both return false. + + + + + Returns true if this type is known to be a value type. It is never the case that + IsReferenceType and IsValueType both return true. However, for an unconstrained type + parameter, IsReferenceType and IsValueType will both return false. + + + + + Gets the associated attribute usage info for an attribute type. + + + + + Returns true if the type is a Script class. + It might be an interactive submission class or a Script class in a csx file. + + + + + Returns true if the type is the implicit class that holds onto invalid global members (like methods or + statements in a non script file). + + + + + Gets the name of this symbol. Symbols without a name return the empty string; null is + never returned. + + + + + Return the name including the metadata arity suffix. + + + + + Should the name returned by Name property be mangled with [`arity] suffix in order to get metadata name. + Must return False for a type with Arity == 0. + + + + + Collection of names of members declared within this type. + + + + + Get all the members of this symbol. + + An ImmutableArray containing all the members of this symbol. If this symbol has no members, + returns an empty ImmutableArray. Never returns null. + + + + Get all the members of this symbol that have a particular name. + + An ImmutableArray containing all the members of this symbol with the given name. If there are + no members with this name, returns an empty ImmutableArray. Never returns null. + + + + Get all the members of this symbol that are types. + + An ImmutableArray containing all the types that are members of this symbol. If this symbol has no type members, + returns an empty ImmutableArray. Never returns null. + + + + Get all the members of this symbol that are types that have a particular name, of any arity. + + An ImmutableArray containing all the types that are members of this symbol with the given name. + If this symbol has no type members with this name, + returns an empty ImmutableArray. Never returns null. + + + + Get all the members of this symbol that are types that have a particular name and arity + + An ImmutableArray containing all the types that are members of this symbol with the given name and arity. + If this symbol has no type members with this name and arity, + returns an empty ImmutableArray. Never returns null. + + + + Get all instance field and event members. + + + For source symbols may be called while calculating + . + + + + + Get this accessibility that was declared on this symbol. For symbols that do not have + accessibility declared on them, returns NotApplicable. + + + + + Used to implement visitor pattern. + + + + + During early attribute decoding, we consider a safe subset of all members that will not + cause cyclic dependencies. Get all such members for this symbol. + + + Never returns null (empty instead). + Expected implementations: for source, return type and field members; for metadata, return all members. + + + + + During early attribute decoding, we consider a safe subset of all members that will not + cause cyclic dependencies. Get all such members for this symbol that have a particular name. + + + Never returns null (empty instead). + Expected implementations: for source, return type and field members; for metadata, return all members. + + + + + Gets the kind of this symbol. + + + + + Compares this type to another type. + + + + + Helper for more complicated cases of Equals like when we have generic instantiations or types nested within them. + + + + + Returns a constructed type given its type arguments. + + The immediate type arguments to be replaced for type + parameters in the type. + + + + Returns a constructed type given its type arguments. + + The immediate type arguments to be replaced for type + parameters in the type. + + + + Returns a constructed type given its type arguments. + + + + + + Returns an unbound generic type of this named type. + + + + + True if this type or some containing type has type parameters. + + + + + True if this is a reference to an unbound generic type. These occur only + within a typeof expression. A generic type is considered unbound + if all of the type argument lists in its fully qualified name are empty. + Note that the type arguments of an unbound generic type will be returned as error + types because they do not really have type arguments. An unbound generic type + yields null for its BaseType and an empty result for its Interfaces. + + + + + The original definition of this symbol. If this symbol is constructed from another + symbol by type substitution then OriginalDefinition gets the original symbol as it was defined in + source or metadata. + + + + + Returns the map from type parameters to type arguments. + If this is not a generic type instantiation, returns null. + The map targets the original definition of the type. + + + + + True if this symbol has a special name (metadata flag SpecialName is set). + + + + + Returns a flag indicating whether this symbol is ComImport. + + + A type can me marked as a ComImport type in source by applying the + + + + + True if the type is a Windows runtime type. + + + A type can me marked as a Windows runtime type in source by applying the WindowsRuntimeImportAttribute. + WindowsRuntimeImportAttribute is a pseudo custom attribute defined as an internal class in System.Runtime.InteropServices.WindowsRuntime namespace. + This is needed to mark Windows runtime types which are redefined in mscorlib.dll and System.Runtime.WindowsRuntime.dll. + These two assemblies are special as they implement the CLR's support for WinRT. + + + + + True if the type should have its WinRT interfaces projected onto .NET types and + have missing .NET interface members added to the type. + + + + + Returns a flag indicating whether this symbol has at least one applied/inherited conditional attribute. + + + Forces binding and decoding of attributes. + + + + + True if the type is serializable (has Serializable metadata flag). + + + + + Type layout information (ClassLayout metadata and layout kind flags). + + + + + The default charset used for type marshalling. + Can be changed via applied on the containing module. + + + + + Marshalling charset of string data fields within the type (string formatting flags in metadata). + + + + + True if the type has declarative security information (HasSecurity flags). + + + + + Declaration security information associated with this type, or null if there is none. + + + + + Returns a sequence of preprocessor symbols specified in applied on this symbol, or null if there are none. + + + + + If was applied to the type and the attribute argument is a valid named type argument, i.e. accessible class type, then it returns the type symbol for the argument. + Otherwise, returns null. + + + + This property invokes force completion of attributes. If you are accessing this property + from the binder, make sure that we are not binding within an Attribute context. + This could lead to a possible cycle in attribute binding. + We can avoid this cycle by first checking if we are within the context of an Attribute argument, + i.e. if(!binder.InAttributeArgument) { ... namedType.ComImportCoClass ... } + + + CONSIDER: We can remove the above restriction and possibility of cycle if we do an + early binding of some well known attributes. + + + + + + If class represents fixed buffer, this property returns the FixedElementField + + + + + Requires less computation than == . + + + Metadata types need to compute their base types in order to know their TypeKinds, and that can lead + to cycles if base types are already being computed. + + True if this is an interface type. + + + + Represents a namespace. + + + + + Get all the members of this symbol that are namespaces. + + An IEnumerable containing all the namespaces that are members of this symbol. + If this symbol has no namespace members, returns an empty IEnumerable. Never returns + null. + + + + Returns whether this namespace is the unnamed, global namespace that is + at the root of all namespaces. + + + + + The kind of namespace: Module, Assembly or Compilation. + Module namespaces contain only members from the containing module that share the same namespace name. + Assembly namespaces contain members for all modules in the containing assembly that share the same namespace name. + Compilation namespaces contain all members, from source or referenced metadata (assemblies and modules) that share the same namespace name. + + + + + The containing compilation for compilation namespaces. + + + + + If a namespace has Assembly or Compilation extent, it may be composed of multiple + namespaces that are merged together. If so, ConstituentNamespaces returns + all the namespaces that were merged. If this namespace was not merged, returns + an array containing only this namespace. + + + + + Containing assembly. + + + + + Gets the kind of this symbol. + + + + + Implements visitor pattern. + + + + + Get this accessibility that was declared on this symbol. For symbols that do not have + accessibility declared on them, returns NotApplicable. + + + + + Returns true if this symbol is "static"; i.e., declared with the "static" modifier or + implicitly static. + + + + + Returns true if this symbol was declared as requiring an override; i.e., declared with + the "abstract" modifier. Also returns true on a type declared as "abstract", all + interface types, and members of interface types. + + + + + Returns true if this symbol was declared to override a base class member and was also + sealed from further overriding; i.e., declared with the "sealed" modifier. Also set for + types that do not allow a derived class (declared with "sealed" or "static" or "struct" + or "enum" or "delegate"). + + + + + Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. + This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. + + + + + Returns an implicit type symbol for this namespace or null if there is none. This type + wraps misplaced global code. + + + + + Lookup a nested namespace. + + + Sequence of names for nested child namespaces. + + + Symbol for the most nested namespace, if found. Nothing + if namespace or any part of it can not be found. + + + + + Add all extension methods in this namespace to the given list. If name or arity + or both are provided, only those extension methods that match are included. + + Methods list + Optional method name + Method arity + Lookup options + + + + Represents a parameter of a method or indexer. + + + + + Gets constant value to be stored in metadata Constant table. + + + + + The original definition of this symbol. If this symbol is constructed from another + symbol by type substitution then OriginalDefinition gets the original symbol as it was defined in + source or metadata. + + + + + Gets the type of the parameter. + + + + + Determines if the parameter ref, out or neither. + + + + + The list of custom modifiers, if any, associated with the parameter. + + + + + Describes how the parameter is marshalled when passed to native code. + Null if no specific marshalling information is available for the parameter. + + PE symbols don't provide this information and always return null. + + + + Returns the marshalling type of this parameter, or 0 if marshalling information isn't available. + + + By default this information is extracted from if available. + Since the compiler does only need to know the marshalling type of symbols that aren't emitted + PE symbols just decode the type from metadata and don't provide full marshalling information. + + + + + Gets the ordinal position of the parameter. The first parameter has ordinal zero. + The "'this' parameter has ordinal -1. + + + + + Returns true if the parameter was declared as a parameter array. + + + + + Returns true if the parameter is semantically optional. + + + True iff the parameter has a default argument syntax, + or the parameter is not a params-array and Optional metadata flag is set. + + + + + True if Optional flag is set in metadata. + + + + + True if In flag is set in metadata. + + + + + True if Out flag is set in metadata. + + + + + Returns true if the parameter explicitly specifies a default value to be passed + when no value is provided as an argument to a call. + + + True if the parameter has a default argument syntax, + or the parameter is from source and is applied, + or the parameter is from metadata and HasDefault metadata flag is set. See + to determine if the parameter will be considered optional by + overload resolution. + + The default value can be obtained with property. + + + + + Returns the default value of the parameter. If + returns false then DefaultValue throws an InvalidOperationException. + + + If the parameter type is a struct and the default value of the parameter + is the default value of the struct type or of type parameter type which is + not known to be a referenced type, then this property will return null. + + The parameter has no default value. + + + + Returns the default value constant of the parameter, + or null if the parameter doesn't have a default value or + the parameter type is a struct and the default value of the parameter + is the default value of the struct type or of type parameter type which is + not known to be a referenced type. + + + This is used for emitting. It does not reflect the language semantics + (i.e. even non-optional parameters can have default values). + + + + + Gets the kind of this symbol. + + + + + Implements visitor pattern. + + + + + Get this accessibility that was declared on this symbol. For symbols that do not have + accessibility declared on them, returns NotApplicable. + + + + + Returns true if this symbol was declared as requiring an override; i.e., declared with + the "abstract" modifier. Also returns true on a type declared as "abstract", all + interface types, and members of interface types. + + + + + Returns true if this symbol was declared to override a base class member and was also + sealed from further overriding; i.e., declared with the "sealed" modifier. Also set for + types that do not allow a derived class (declared with "sealed" or "static" or "struct" + or "enum" or "delegate"). + + + + + Returns true if this symbol is "virtual", has an implementation, and does not override a + base class member; i.e., declared with the "virtual" modifier. Does not return true for + members declared as abstract or override. + + + + + Returns true if this symbol was declared to override a base class member; i.e., declared + with the "override" modifier. Still returns true if member was declared to override + something, but (erroneously) no member to override exists. + + + + + Returns true if this symbol is "static"; i.e., declared with the "static" modifier or + implicitly static. + + + + + Returns true if this symbol has external implementation; i.e., declared with the + "extern" modifier. + + + + + Returns true if the parameter is the hidden 'this' parameter. + + + + + Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. + This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. + + + + + The CLI spec says that custom modifiers must precede the ByRef type code in the encoding of a parameter. + Unfortunately, the managed C++ compiler emits them in the reverse order. In order to avoid breaking + interop scenarios, we need to support such signatures. + Should be 0 for non-ref parameters. + + + + + Represents a pointer type such as "int *". Pointer types + are used only in unsafe code. + + + + + Create a new PointerTypeSymbol. + + The type being pointed at. + + + + Create a new PointerTypeSymbol. + + The type being pointed at. + Custom modifiers for the element type of this array type. + + + + The list of custom modifiers, if any, associated with the pointer type. + + + + + Gets the type of the storage location that an instance of the pointer type points to. + + + + + Represents a property or indexer. + + + + + As a performance optimization, cache parameter types and refkinds - overload resolution uses them a lot. + + + + + The original definition of this symbol. If this symbol is constructed from another + symbol by type substitution then OriginalDefinition gets the original symbol as it was defined in + source or metadata. + + + + + The type of the property. + + + + + The list of custom modifiers, if any, associated with the type of the property. + + + + + The parameters of this property. If this property has no parameters, returns + an empty list. Parameters are only present on indexers, or on some properties + imported from a COM interface. + + + + + Optimization: in many cases, the parameter count (fast) is sufficient and we + don't need the actual parameter symbols (slow). + + + + + Returns whether the property is really an indexer. + + + In source, we regard a property as an indexer if it is declared with an IndexerDeclarationSyntax. + From metadata, we regard a property if it has parameters and is a default member of the containing + type. + CAVEAT: To ensure that this property (and indexer Names) roundtrip, source properties are not + indexers if they are explicit interface implementations (since they will not be marked as default + members in metadata). + + + + + True if this an indexed property; that is, a property with parameters + within a [ComImport] type. + + + + + True if this is a read-only property; that is, a property with no set accessor. + + + + + True if this is a write-only property; that is, a property with no get accessor. + + + + + True if this symbol has a special name (metadata flag SpecialName is set). + + + + + The 'get' accessor of the property, or null if the property is write-only. + + + + + The 'set' accessor of the property, or null if the property is read-only. + + + + + Returns the overridden property, or null. + + + + + Source: Was the member name qualified with a type name? + Metadata: Is the member an explicit implementation? + + + Will not always agree with ExplicitInterfaceImplementations.Any() + (e.g. if binding of the type part of the name fails). + + + + + Returns interface properties explicitly implemented by this property. + + + Properties imported from metadata can explicitly implement more than one property. + + + + + Gets the kind of this symbol. + + + + + Implements visitor pattern. + + + + + Return error code that has highest priority while calculating use site error for this symbol. + + + + + Represents a type parameter in a generic type or generic method. + + + + + The original definition of this symbol. If this symbol is constructed from another + symbol by type substitution then OriginalDefinition gets the original symbol as it was defined in + source or metadata. + + + + + If this is a type parameter of a reduced extension method, gets the type parameter definition that + this type parameter was reduced from. Otherwise, returns Nothing. + + + + + The ordinal position of the type parameter in the parameter list which declares + it. The first type parameter has ordinal zero. + + + + + The types that were directly specified as constraints on the type parameter. + Duplicates and cycles are removed, although the collection may include + redundant constraints where one constraint is a base type of another. + + + + + True if the parameterless constructor constraint was specified for the type parameter. + + + + + The type parameter kind of this type parameter. + + + + + The method that declared this type parameter, or null. + + + + + The type that declared this type parameter, or null. + + + + + The effective base class of the type parameter (spec 10.1.5). If the deduced + base type is a reference type, the effective base type will be the same as + the deduced base type. Otherwise if the deduced base type is a value type, + the effective base type will be the most derived reference type from which + deduced base type is derived. + + + + + The effective interface set (spec 10.1.5). + + + + + The most encompassed type (spec 6.4.2) from the constraints. + + + + + The effective interface set and any base interfaces of those + interfaces. This is AllInterfaces excluding interfaces that are + only implemented by the effective base type. + + + + + Called by , , , and . + to allow derived classes to ensure constraints within the containing + type or method are resolved in a consistent order, regardless of the + order the callers query individual type parameters. + + + + + Helper method to force type parameter constraints to be resolved. + + + + + Returns a bag of applied custom attributes and data decoded from well-known attributes. Returns null if there are no attributes applied on the symbol. + + + Forces binding and decoding of attributes. + + + + + State machine interface property implementation. + + + + + A base method symbol used as a base class for lambda method symbol and base method wrapper symbol. + + + + + Abstract base class for mutable and immutable type maps. + + + + + Substitute for a type declaration. May use alpha renaming if the container is substituted. + + + + + SubstType, but for NamedTypeSymbols only. This is used for concrete types, so no alpha substitution appears in the result. + + + + + Perform the substitution on the given type. Each occurrence of the type parameter is + replaced with its corresponding type argument from the map. + + The type to be rewritten. + The type with type parameters replaced with the type arguments. + + + + Substitute types, and return the results without duplicates, preserving the original order. + + + + + Like SubstTypes, but for NamedTypeSymbols. + + + + + Symbol representing a using alias appearing in a compilation unit or within a namespace + declaration. Generally speaking, these symbols do not appear in the set of symbols reachable + from the unnamed namespace declaration. In other words, when a using alias is used in a + program, it acts as a transparent alias, and the symbol to which it is an alias is used in + the symbol table. For example, in the source code +
+            namespace NS
+            {
+                using o = System.Object;
+                partial class C : o {}
+                partial class C : object {}
+                partial class C : System.Object {}
+            }
+            
+ all three declarations for class C are equivalent and result in the same symbol table object + for C. However, these using alias symbols do appear in the results of certain SemanticModel + APIs. Specifically, for the base clause of the first of C's class declarations, the + following APIs may produce a result that contains an AliasSymbol: +
+                SemanticInfo SemanticModel.GetSemanticInfo(ExpressionSyntax expression);
+                SemanticInfo SemanticModel.BindExpression(CSharpSyntaxNode location, ExpressionSyntax expression);
+                SemanticInfo SemanticModel.BindType(CSharpSyntaxNode location, ExpressionSyntax type);
+                SemanticInfo SemanticModel.BindNamespaceOrType(CSharpSyntaxNode location, ExpressionSyntax type);
+            
+ Also, the following are affected if container==null (and, for the latter, when arity==null + or arity==0): +
+                IList<string> SemanticModel.LookupNames(CSharpSyntaxNode location, NamespaceOrTypeSymbol container = null, LookupOptions options = LookupOptions.Default, List<string> result = null);
+                IList<Symbol> SemanticModel.LookupSymbols(CSharpSyntaxNode location, NamespaceOrTypeSymbol container = null, string name = null, int? arity = null, LookupOptions options = LookupOptions.Default, List<Symbol> results = null);
+            
+
+
+ + + Gets the for the + namespace or type referenced by the alias. + + + + + Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. + This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. + + + + + Using aliases in C# are always contained within a namespace declaration, or at the top + level within a compilation unit, within the implicit unnamed namespace declaration. We + return that as the "containing" symbol, even though the alias isn't a member of the + namespace as such. + + + + + Describes anonymous type in terms of fields + + + + Anonymous type location + + + Anonymous type fields + + + + Anonymous type descriptor Key + + The key is to be used to separate anonymous type templates in an anonymous type symbol cache. + The type descriptors with the same keys are supposed to map to 'the same' anonymous type + template in terms of the same generic type being used for their implementation. + + + + + Compares two anonymous type descriptors, takes into account fields names and types, not locations. + + + + + Compares two anonymous type descriptors, takes into account fields names and types, not locations. + + + + + Creates a new anonymous type descriptor based on 'this' one, + but having field types passed as an argument. + + + + + Describes anonymous type field in terms of its name, type and other attributes + + + + Anonymous type field name, not nothing and not empty + + + Anonymous type field location + + + Anonymous type field type + + + + Represents a .NET assembly, consisting of one or more modules. + + + + + The system assembly, which provides primitive types like Object, String, etc., e.g. mscorlib.dll. + The value is provided by ReferenceManager and must not be modified. For SourceAssemblySymbol, non-missing + coreLibrary must match one of the referenced assemblies returned by GetReferencedAssemblySymbols() method of + the main module. If there is no existing assembly that can be used as a source for the primitive types, + the value is a Compilation.MissingCorLibrary. + + + + + The system assembly, which provides primitive types like Object, String, etc., e.g. mscorlib.dll. + The value is MissingAssemblySymbol if none of the referenced assemblies can be used as a source for the + primitive types and the owning assembly cannot be used as the source too. Otherwise, it is one of + the referenced assemblies returned by GetReferencedAssemblySymbols() method or the owning assembly. + + + + + A helper method for ReferenceManager to set the system assembly, which provides primitive + types like Object, String, etc., e.g. mscorlib.dll. + + + + + Simple name the assembly. + + + This is equivalent to ., but may be + much faster to retrieve for source code assemblies, since it does not require binding + the assembly-level attributes that contain the version number and other assembly + information. + + + + + Gets the identity of this assembly. + + + + + Assembly version pattern with wildcards represented by , + or null if the version string specified in the doesn't contain a wildcard. + + For example, + AssemblyVersion("1.2.*") is represented as 1.2.65535.65535, + AssemblyVersion("1.2.3.*") is represented as 1.2.3.65535. + + + + + Target architecture of the machine. + + + + + Indicates that this PE file makes Win32 calls. See CorPEKind.pe32BitRequired for more information (http://msdn.microsoft.com/en-us/library/ms230275.aspx). + + + + + Gets the merged root namespace that contains all namespaces and types defined in the modules + of this assembly. If there is just one module in this assembly, this property just returns the + GlobalNamespace of that module. + + + + + Given a namespace symbol, returns the corresponding assembly specific namespace symbol + + + + + Gets a read-only list of all the modules in this assembly. (There must be at least one.) The first one is the main module + that holds the assembly manifest. + + + + + Does this symbol represent a missing assembly. + + + + + Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. + This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. + + + + + True if the assembly contains interactive code. + + + + + Lookup a top level type referenced from metadata, names should be + compared case-sensitively. + + + Full type name with generic name mangling. + + + Take forwarded types into account. + + + + + + Lookup a top level type referenced from metadata, names should be + compared case-sensitively. Detect cycles during lookup. + + + Full type name, possibly with generic name mangling. + + + List of assemblies lookup has already visited (since type forwarding can introduce cycles). + + + Take forwarded types into account. + + + + + Returns the type symbol for a forwarded type based its canonical CLR metadata name. + The name should refer to a non-nested type. If type with this name is not forwarded, + null is returned. + + + + + Look up the given metadata type, if it is forwarded. + + + + + Look up the given metadata type, if it is forwarded. + + + + + Lookup declaration for predefined CorLib type in this Assembly. + + The symbol for the pre-defined type or an error type if the type is not defined in the core library. + + + + Register declaration of predefined CorLib type in this Assembly. + + + + + + Continue looking for declaration of predefined CorLib type in this Assembly + while symbols for new type declarations are constructed. + + + + + Return an array of assemblies involved in canonical type resolution of + NoPia local types defined within this assembly. In other words, all + references used by previous compilation referencing this assembly. + + + + + + Return an array of assemblies referenced by this assembly, which are linked (/l-ed) by + each compilation that is using this AssemblySymbol as a reference. + If this AssemblySymbol is linked too, it will be in this array too. + + + + + Assembly is /l-ed by compilation that is using it as a reference. + + + + + Returns true and a string from the first GuidAttribute on the assembly, + the string might be null or an invalid guid representation. False, + if there is no GuidAttribute with string argument. + + + + + Gets the set of type identifiers from this assembly. + + + These names are the simple identifiers for the type, and do not include namespaces, + outer type names, or type parameters. + + This functionality can be used for features that want to quickly know if a name could be + a type for performance reasons. For example, classification does not want to incur an + expensive binding call cost if it knows that there is no type with the name that they + are looking at. + + + + + Gets the set of namespace names from this assembly. + + + + + Returns true if this assembly might contain extension methods. If this property + returns false, there are no extension methods in this assembly. + + + This property allows the search for extension methods to be narrowed quickly. + + + + + Gets the symbol for the pre-defined type from core library associated with this assembly. + + The symbol for the pre-defined type or an error type if the type is not defined in the core library. + + + + The NamedTypeSymbol for the .NET System.Object type, which could have a TypeKind of + Error if there was no COR Library in a compilation using the assembly. + + + + + Get symbol for predefined type from Cor Library used by this assembly. + + + + + + + Lookup a type within the assembly using the canonical CLR metadata name of the type. + + Type name. + Symbol for the type or null if type cannot be found or is ambiguous. + + + + Lookup a type within the assembly using its canonical CLR metadata name. + + + + If search within assembly fails, lookup in assemblies referenced by the primary module. + For source assembly, this is equivalent to all assembly references given to compilation. + + + Extra restrictions apply when searching for a well-known type. In particular, the type must be public. + + + While resolving the name, consider only types following CLS-compliant generic type names and arity encoding (ECMA-335, section 10.7.2). + I.e. arity is inferred from the name and matching type must have the same emitted name and arity. + + + A diagnostic bag to receive warnings if we should allow multiple definitions and pick one. + + Null if the type can't be found. + + + + Resolves to a available in this assembly + its referenced assemblies. + + The type to resolve. + Use referenced assemblies for resolution. + The resolved symbol if successful or null on failure. + + + + Lookup member declaration in predefined CorLib type in this Assembly. Only valid if this + assembly is the Cor Library + + + + + Lookup member declaration in predefined CorLib type used by this Assembly. + + + + + If this symbol represents a metadata assembly returns the underlying . + + Otherwise, this returns null. + + + + + Represents a PE custom attribute + + + + + Matches an attribute by metadata namespace, metadata type name. Does not load the type symbol for + the attribute. + + + + True if the attribute data matches. + + + + Matches an attribute by metadata namespace, metadata type name and metadata signature. Does not load the + type symbol for the attribute. + + Target symbol. + Attribute to match. + + An index of the target constructor signature in + signatures array, -1 if + this is not the target attribute. + + + + + Decodes applied to a specified metadata symbol and + transforms the specified metadata type, using the decoded dynamic transforms attribute argument, + by replacing each occurrence of type with dynamic type. + + + This is a port of TypeManager::ImportDynamicTransformType from the native compiler. + Comments from the C# design document for Dynamic: + SPEC: To represent the dynamic type in metadata, any indexer, field or return value typed as dynamic or known to be a constructed type + SPEC: containing dynamic will have each occurrence of dynamic erased to object and will be annotated with a [DynamicAttribute]. + SPEC: If the relevant type is a constructed type, the attribute's constructor is passed a bool array. + SPEC: This array represents a preorder traversal of each "node" in the constructed type's "tree of types", + SPEC: with true set for each "node" that is dynamic, and false set for all other types. + SPEC: When dynamic occurs as part of the base type of a type, the applicable [DynamicAttribute] is applied to the type itself. + + + + + Should be accessed through , , and . + + + + + Decodes the attributes applied to the given from metadata and checks if is applied. + If so, it transforms the given , using the decoded dynamic transforms attribute argument, + by replacing each occurrence of type with dynamic type. + If no is applied or the decoded dynamic transforms attribute argument is erroneous, + returns the unchanged . + + This method is a port of TypeManager::ImportDynamicTransformType from the native compiler. + + + + This subclass of MetadataDecoder is specifically for finding + method symbols corresponding to method MemberRefs. The parent + implementation is unsuitable because it requires a PEMethodSymbol + for context when decoding method type parameters and no such + context is available because it is precisely what we are trying + to find. Since we know in advance that there will be no context + and that signatures decoded with this class will only be used + for comparison (when searching through the methods of a known + TypeSymbol), we can return indexed type parameters instead. + + + + + Type context for resolving generic type arguments. + + + + + We know that we'll never have a method context because that's what we're + trying to find. Instead, just return an indexed type parameter that will + make comparison easier. + + + + + + + This override changes two things: + 1) Return type arguments instead of type parameters. + 2) Handle non-PE types. + + + + + Search through the members of a given type symbol to find the method that matches a particular + signature. + + Type containing the desired method symbol. + A MemberRef handle that can be used to obtain the name and signature of the method + True to only return a method. + The matching method symbol, or null if the inputs do not correspond to a valid method. + + + + Helper class to resolve metadata tokens and signatures. + + + + + Type context for resolving generic type arguments. + + + + + Method context for resolving generic method type arguments. + + + + + Lookup a type defined in referenced assembly. + + + + + + + Lookup a type defined in a module of a multi-module assembly. + + + + + Lookup a type defined in this module. + This method will be called only if the type we are + looking for hasn't been loaded yet. Otherwise, MetadataDecoder + would have found the type in TypeDefRowIdToTypeMap based on its + TypeDef row id. + + + + + Perform a check whether the type or at least one of its generic arguments + is defined in the specified assemblies. The check is performed recursively. + + + + + Find canonical type for NoPia embedded type. + + + Symbol for the canonical type or an ErrorTypeSymbol. Never returns null. + + + + + Represents an assembly imported from a PE. + + + + + An Assembly object providing metadata for the assembly. + + + + + A DocumentationProvider that provides XML documentation comments for this assembly. + + + + + The list of contained PEModuleSymbol objects. + The list doesn't use type ReadOnlyCollection(Of PEModuleSymbol) so that we + can return it from Modules property as is. + + + + + An array of assemblies involved in canonical type resolution of + NoPia local types defined within this assembly. In other words, all + references used by a compilation referencing this assembly. + The array and its content is provided by ReferenceManager and must not be modified. + + + + + An array of assemblies referenced by this assembly, which are linked (/l-ed) by + each compilation that is using this AssemblySymbol as a reference. + If this AssemblySymbol is linked too, it will be in this array too. + The array and its content is provided by ReferenceManager and must not be modified. + + + + + Assembly is /l-ed by compilation that is using it as a reference. + + + + + Assembly's custom attributes + + + + + Look up the assembly to which the given metadata type is forwarded. + + + + The assembly to which the given type is forwarded or null, if there isn't one. + + + The returned assembly may also forward the type. + + + + + The class to represent all events imported from a PE/module. + + + + + Look for a field with the same name and an appropriate type (i.e. the same type, except in WinRT). + If one is found, the caller will assume that this event was originally field-like and associate + the two symbols. + + + Perf impact: If we find a field with the same name, we will eagerly evaluate its type. + + + + + Intended behavior: this event, E, explicitly implements an interface event, IE, + if E.add explicitly implements IE.add and E.remove explicitly implements IE.remove. + + + + + The class to represent all fields imported from a PE/module. + + + + + Mark this field as the backing field of a field-like event. + The caller will also ensure that it is excluded from the member list of + the containing type (as it would be in source). + + + + + The module containing the namespace. + + + + + + The class to represent all methods imported from a PE/module. + + + + + Holds infrequently accessed fields. See for an explanation. + + + + + A single field to hold optional auxiliary data. + In many scenarios it is possible to avoid allocating this, thus saving total space in . + Even for lazily-computed values, it may be possible to avoid allocating if + the computed value is a well-known "empty" value. In this case, bits in are used + to indicate that the lazy values have been computed and, if is null, then + the "empty" value should be inferred. + + + + + Associate the method with a particular property. Returns + false if the method is already associated with a property or event. + + + + + Associate the method with a particular event. Returns + false if the method is already associated with a property or event. + + + + + Represents a net-module imported from a PE. Can be a primary module of an assembly. + + + + + Owning AssemblySymbol. This can be a PEAssemblySymbol or a SourceAssemblySymbol. + + + + + A Module object providing metadata. + + + + + Global namespace. + + + + + Cache the symbol for well-known type System.Type because we use it frequently + (for attributes). + + + + + The same value as ConcurrentDictionary.DEFAULT_CAPACITY + + + + + This is a map from TypeDef handle to the target . + It is used by to speed up type reference resolution + for metadata coming from this module. The map is lazily populated + as we load types from the module. + + + + + This is a map from TypeRef row id to the target . + It is used by to speed up type reference resolution + for metadata coming from this module. The map is lazily populated + by as we resolve TypeRefs from the module. + + + + + Module's custom attributes + + + + + Module's assembly attributes + + + + + Returns a possibly ExtensionAttribute filtered roArray of attributes. If + filterExtensionAttributes is set to true, the method will remove all ExtensionAttributes + from the returned array. If it is false, the parameter foundExtension will always be set to + false and can be safely ignored. + + The paramArrayAttribute parameter is similar to the foundExtension parameter, but instead + of just indicating if the attribute was found, the parameter is set to the attribute handle + for the ParamArrayAttribute if any is found and is null otherwise. This allows NoPia to filter + the attribute out for the symbol but still cache it separately for emit. + + + + + Get the custom attributes, but filter out any ParamArrayAttributes. + + The parameter token handle. + Set to a ParamArrayAttribute + CustomAttributeHandle if any are found. Nil token otherwise. + + + + Filters extension attributes from the attribute results. + + + True if we found an extension method, false otherwise. + The attributes on the token, minus any ExtensionAttributes. + + + + If this module forwards the given type to another assembly, return that assembly; + otherwise, return null. + + Type to look up. + Assembly symbol or null. + + The returned assembly may also forward the type. + + + + + The class to represent all types imported from a PE/module. + + + + + A set of all the names of the members in this type. + We can get names without getting members (which is a more expensive operation) + + + + + We used to sort symbols on demand and relied on row ids to figure out the order between symbols of the same kind. + However, that was fragile because, when map tables are used in metadata, row ids in the map table define the order + and we don't have them. + Members are grouped by kind. First we store fields, then methods, then properties, then events and finally nested types. + Within groups, members are sorted based on declaration order. + + + + + A map of members immediately contained within this type + grouped by their name (case-sensitively). + + + + + A map of types immediately contained within this type + grouped by their name (case-sensitively). + + + + + Lazily initialized by TypeKind property. + + + + + Need to import them for an enum from a linked assembly, when we are embedding it. These symbols are not included into lazyMembersInDeclarationOrder. + + + + + Returns the index of the first member of the specific kind. + Returns the number of members if not found. + + + + + Returns all members of the specific kind, starting at the optional offset. + Members of the same kind are assumed to be contiguous. + + + + + Specialized PENamedTypeSymbol for types with no type parameters in + metadata (no type parameters on this type and all containing types). + + + + + Specialized PENamedTypeSymbol for types with type parameters in metadata. + NOTE: the type may have Arity == 0 if it has same metadata arity as the metadata arity of the containing type. + + + + + Return true if the type parameters specified on the nested type (this), + that represent the corresponding type parameters on the containing + types, in fact match the actual type parameters on the containing types. + + + + + The base class to represent a namespace imported from a PE/module. Namespaces that differ + only by casing in name are not merged. + + + + + A map of namespaces immediately contained within this namespace + mapped by their name (case-sensitively). + + + + + A map of types immediately contained within this namespace + grouped by their name (case-sensitively). + + + + + A map of NoPia local types immediately contained in this assembly. + Maps type name (non-qualified) to the row id. Note, for VB we should use + full name. + + + + + All type members in a flat array + + + + + Returns PEModuleSymbol containing the namespace. + + PEModuleSymbol containing the namespace. + + + + Initializes namespaces and types maps with information about + namespaces and types immediately contained within this namespace. + + + The sequence of groups of TypeDef row ids for types contained within the namespace, + recursively including those from nested namespaces. The row ids must be grouped by the + fully-qualified namespace name case-sensitively. There could be multiple groups + for each fully-qualified namespace name. The groups must be sorted by + their key in case-sensitive manner. Empty string must be used as namespace name for types + immediately contained within Global namespace. Therefore, all types in this namespace, if any, + must be in several first IGroupings. + + + + + Create symbols for nested namespaces and initialize namespaces map. + + + + + Create symbols for nested types and initialize types map. + + + + + The class to represent all, but Global, namespaces imported from a PE/module. + Namespaces that differ only by casing in name are not merged. + + + + + + The parent namespace. There is always one, Global namespace contains all + top level namespaces. + + + + + + The name of the namespace. + + + + + + The sequence of groups of TypeDef row ids for types contained within the namespace, + recursively including those from nested namespaces. The row ids are grouped by the + fully-qualified namespace name case-sensitively. There could be multiple groups + for each fully-qualified namespace name. The groups are sorted by their + key in case-sensitive manner. Empty string is used as namespace name for types + immediately contained within Global namespace. Therefore, all types in this namespace, if any, + will be in several first IGroupings. + + This member is initialized by constructor and is cleared in EnsureAllMembersLoaded + as soon as symbols for children are created. + + + + + + Constructor. + + + Name of the namespace, must be not empty. + + + Containing namespace. + + + The sequence of groups of TypeDef row ids for types contained within the namespace, + recursively including those from nested namespaces. The row ids are grouped by the + fully-qualified namespace name case-sensitively. There could be multiple groups + for each fully-qualified namespace name. The groups are sorted by their + key in case-sensitive manner. Empty string is used as namespace name for types + immediately contained within Global namespace. Therefore, all types in this namespace, if any, + will be in several first IGroupings. + + + + + The class to represent all method parameters imported from a PE/module. + + + + + Attributes filtered out from m_lazyCustomAttributes, ParamArray, etc. + + + + + Construct a parameter symbol for a property loaded from metadata. + + + + + The property parameter doesn't have a name in metadata, + so this is the handle of a corresponding accessor parameter, if there is one, + or of the ParamInfo passed in, otherwise). + + + + + + Internal for testing. Non-test code should use . + + + + + The class to represent all properties imported from a PE/module. + + + + + To facilitate lookup, all indexer symbols have the same name. + Check the MetadataName property to find the name we imported. + + + + + This property can return true for bogus indexers. + Rationale: If a type in metadata has a single, bogus indexer + and a source method tries to invoke it, then Dev10 reports a bogus + indexer rather than lack of an indexer. + + + + + Intended behavior: this property, P, explicitly implements an interface property, IP, + if any of the following is true: + + 1) P.get explicitly implements IP.get and P.set explicitly implements IP.set + 2) P.get explicitly implements IP.get and there is no IP.set + 3) P.set explicitly implements IP.set and there is no IP.get + + Extra or missing accessors will not result in errors, P will simply not report that + it explicitly implements IP. + + + + + The class to represent all generic type parameters imported from a PE/module. + + + + + + First error calculating bounds. + + + + + Represents a retargeting custom attribute + + + + + Gets the retargeted System.Type type symbol. + + Target symbol on which this attribute is applied. + Retargeted System.Type type symbol. + + + + Essentially this is a wrapper around another AssemblySymbol that is responsible for retargeting + symbols from one assembly to another. It can retarget symbols for multiple assemblies at the same time. + + For example, compilation C1 references v1 of Lib.dll and compilation C2 references C1 and v2 of Lib.dll. + In this case, in context of C2, all types from v1 of Lib.dll leaking through C1 (through method + signatures, etc.) must be retargeted to the types from v2 of Lib.dll. This is what + RetargetingAssemblySymbol is responsible for. In the example above, modules in C2 do not + reference C1.m_AssemblySymbol, but reference a special RetargetingAssemblySymbol created for + C1 by ReferenceManager. + + Here is how retargeting is implemented in general: + - Symbols from underlying assembly are substituted with retargeting symbols. + - Symbols from referenced assemblies that can be reused as is (i.e. doesn't have to be retargeted) are + used as is. + - Symbols from referenced assemblies that must be retargeted are substituted with result of retargeting. + + + + + The underlying AssemblySymbol, it leaks symbols that should be retargeted. + This cannot be an instance of RetargetingAssemblySymbol. + + + + + The list of contained ModuleSymbol objects. First item in the list + is RetargetingModuleSymbol that wraps corresponding SourceModuleSymbol + from underlyingAssembly.Modules list, the rest are PEModuleSymbols for + added modules. + + + + + An array of assemblies involved in canonical type resolution of + NoPia local types defined within this assembly. In other words, all + references used by a compilation referencing this assembly. + The array and its content is provided by ReferenceManager and must not be modified. + + + + + An array of assemblies referenced by this assembly, which are linked (/l-ed) by + each compilation that is using this AssemblySymbol as a reference. + If this AssemblySymbol is linked too, it will be in this array too. + The array and its content is provided by ReferenceManager and must not be modified. + + + + + Backing field for the map from a local NoPia type to corresponding canonical type. + + + + + A map from a local NoPia type to corresponding canonical type. + + + + + Assembly is /l-ed by compilation that is using it as a reference. + + + + + Retargeted custom attributes + + + + + Constructor. + + + The underlying AssemblySymbol, cannot be an instance of RetargetingAssemblySymbol. + + + Assembly is /l-ed by compilation that is using it as a reference. + + + + + The underlying AssemblySymbol. + This cannot be an instance of RetargetingAssemblySymbol. + + + + + Lookup declaration for FX type in this Assembly. + + + + + + + + Owning RetargetingModuleSymbol. + + + + + The underlying EventSymbol, cannot be another RetargetingEventSymbol. + + + + + Represents a field in a RetargetingModuleSymbol. Essentially this is a wrapper around + another FieldSymbol that is responsible for retargeting symbols from one assembly to another. + It can retarget symbols for multiple assemblies at the same time. + + + + + Owning RetargetingModuleSymbol. + + + + + The underlying FieldSymbol, cannot be another RetargetingFieldSymbol. + + + + + Retargeted custom attributes + + + + + Represents a method in a RetargetingModuleSymbol. Essentially this is a wrapper around + another MethodSymbol that is responsible for retargeting symbols from one assembly to another. + It can retarget symbols for multiple assemblies at the same time. + + + + + Owning RetargetingModuleSymbol. + + + + + The underlying MethodSymbol, cannot be another RetargetingMethodSymbol. + + + + + Retargeted custom attributes + + + + + Retargeted return type custom attributes + + + + + Represents a primary module of a . Essentially this is a wrapper around + another that is responsible for retargeting symbols from one assembly to another. + It can retarget symbols for multiple assemblies at the same time. + + Here is how retargeting is implemented in general: + - Symbols from underlying module are substituted with retargeting symbols. + - Symbols from referenced assemblies that can be reused as is (i.e. don't have to be retargeted) are + used as is. + - Symbols from referenced assemblies that must be retargeted are substituted with result of retargeting. + + + + + Owning . + + + + + The underlying , cannot be another . + + + + + The map that captures information about what assembly should be retargeted + to what assembly. Key is the referenced by the underlying module, + value is the corresponding referenced by this module, and corresponding + retargeting map for symbols. + + + + + Retargeted custom attributes + + + + + Constructor. + + + Owning assembly. + + + The underlying ModuleSymbol, cannot be another RetargetingModuleSymbol. + + + + + The underlying ModuleSymbol, cannot be another RetargetingModuleSymbol. + + + + + A helper method for ReferenceManager to set AssemblySymbols for assemblies + referenced by this module. + + + + + Retargeting map from underlying module to this one. + + + + + Retargeting map from underlying module to the retargeting module. + + + + + RetargetingAssemblySymbol owning retargetingModule. + + + + + The underlying ModuleSymbol for retargetingModule. + + + + + The map that captures information about what assembly should be retargeted + to what assembly. Key is the AssemblySymbol referenced by the underlying module, + value is the corresponding AssemblySymbol referenced by the retargeting module, and + corresponding retargeting map for symbols. + + + + + Perform a check whether the type or at least one of its generic arguments + is an explicitly defined local type. The check is performed recursively. + + + + + Represents a type of a RetargetingModuleSymbol. Essentially this is a wrapper around + another NamedTypeSymbol that is responsible for retargeting referenced symbols from one assembly to another. + It can retarget symbols for multiple assemblies at the same time. + + + + + Owning RetargetingModuleSymbol. + + + + + The underlying NamedTypeSymbol, cannot be another RetargetingNamedTypeSymbol. + + + + + Represents a namespace of a RetargetingModuleSymbol. Essentially this is a wrapper around + another NamespaceSymbol that is responsible for retargeting symbols from one assembly to another. + It can retarget symbols for multiple assemblies at the same time. + + + + + Owning RetargetingModuleSymbol. + + + + + The underlying NamespaceSymbol, cannot be another RetargetingNamespaceSymbol. + + + + + Represents a parameter of a RetargetingMethodSymbol. Essentially this is a wrapper around + another ParameterSymbol that is responsible for retargeting symbols from one assembly to another. + It can retarget symbols for multiple assemblies at the same time. + + + + + Retargeted custom attributes + + + + + Owning RetargetingMethodSymbol. + + + + + Owning RetargetingPropertySymbol. + + + + + Owning RetargetingModuleSymbol. + + + + + The underlying PropertySymbol, cannot be another RetargetingPropertySymbol. + + + + + Retargeted custom attributes + + + + + Represents a type parameter in a RetargetingModuleSymbol. Essentially this is a wrapper around + another TypeParameterSymbol that is responsible for retargeting symbols from one assembly to another. + It can retarget symbols for multiple assemblies at the same time. + + + + + Owning RetargetingModuleSymbol. + + + + + The underlying TypeParameterSymbol, cannot be another RetargetingTypeParameterSymbol. + + + + + Retargeted custom attributes + + + + + Represents a Source custom attribute specification + + + + + If the contains any named constructor arguments or default value arguments, + it returns an array representing each argument's source argument index. A value of -1 indicates default value argument. + Otherwise, returns null. + + + + + This method finds an attribute by metadata name and signature. The algorithm for signature matching is similar to the one + in Module.GetTargetAttributeSignatureIndex. Note, the signature matching is limited to primitive types + and System.Type. It will not match an arbitrary signature but it is sufficient to match the signatures of the current set of + well known attributes. + + The symbol which is the target of the attribute + The attribute to match. + + + + Gets the System.Type type symbol from targetSymbol's containing assembly. + + Target symbol on which this attribute is applied. + System.Type type symbol. + + + + Information early-decoded from well-known custom attributes applied on a parameter. + + + + + Information decoded from early well-known custom attributes applied on a property. + + + + + Information decoded from well-known custom attributes applied on a type. + + + + + IsManagedType is simple for most named types: + enums are not managed; + non-enum, non-struct named types are managed; + generic types and their nested types are managed; + type parameters are managed; + all special types have spec'd values (basically, (non-string) primitives) are not managed; + + Only structs are complicated, because the definition is recursive. A struct type is managed + if one of its instance fields is managed. Unfortunately, this can result in infinite recursion. + If the closure is finite, and we don't find anything definitely managed, then we return true. + If the closure is infinite, we disregard all but a representative of any expanding cycle. + + Intuitively, this will only return true if there's a specific type we can point to that is would + be managed even if it had no fields. e.g. struct S { S s; } is not managed, but struct S { S s; object o; } + is because we can point to object. + + + + + Returns a boolean value if we can determine whether the type is managed + without looking at its fields and Unset otherwise. + + + + + An error type, used to represent a byref return in a metadata signature. + + + If we ever decide to support by-ref returns, don't just make this a non-error + type. For consistency with parameters and locals, we should have a bit on the + signature (i.e. on the MethodSymbol). + + + + + This enum describes the types of components that could give + us diagnostics. We shouldn't read the list of diagnostics + until all of these types are accounted for. + + + PEParameterSymbol reserves all completion part bits and uses them to track the completion state and + presence of well known attributes. + + + + + A tuple of TypeParameterSymbol and DiagnosticInfo, created for errors + reported from ConstraintsHelper rather than creating Diagnostics directly. + This decouples constraints checking from syntax and Locations, and supports + callers that may want to create Location instances lazily or not at all. + + + + + Helper methods for generic type parameter constraints. There are two sets of methods: one + set for resolving constraint "bounds" (that is, determining the effective base type, interface set, + etc.), and another set for checking for constraint violations in type and method references. + + Bounds are resolved by calling one of the ResolveBounds overloads. Typically bounds are + resolved by each TypeParameterSymbol at, or before, one of the corresponding properties + (BaseType, Interfaces, etc.) is accessed. Resolving bounds may result in errors (cycles, + inconsistent constraints, etc.) and it is the responsibility of the caller to report any such + errors as declaration errors or use-site errors (depending on whether the type parameter + was from source or metadata) and to ensure bounds are resolved for source type parameters + even if the corresponding properties are never accessed directly. + + Constraints are checked by calling one of the CheckConstraints or CheckAllConstraints + overloads for any generic type or method reference from source. In some circumstances, + references are checked at the time the generic type or generic method is bound and constructed + by the Binder. In those case, it is sufficient to call one of the CheckConstraints overloads + since compound types (such as A<T>.B<U> or A<B<T>>) are checked + incrementally as each part is bound. In other cases however, constraint checking needs to be + delayed to prevent cycles where checking constraints requires binding the syntax that is currently + being bound (such as the constraint in class C<T> where T : C<T>). In those cases, + the caller must lazily check constraints, and since the types may be compound types, it is + necessary to call CheckAllConstraints. + + + + + Determine the effective base type, effective interface set, and set of type + parameters (excluding cycles) from the type parameter constraints. Conflicts + within the constraints and constraint types are returned as diagnostics. + 'inherited' should be true if the type parameters are from an overridden + generic method. In those cases, additional constraint checks are applied. + + + + + Check all generic constraints on the given type and any containing types + (such as A<T> in A<T>.B<U>). This includes checking constraints + on generic types within the type (such as B<T> in A<B<T>[]>). + + + + + Check type parameter constraints for the containing type or method symbol. + + The generic type or method. + Conversions instance. + The map from type parameters to type arguments. + Containing symbol type parameters. + Containing symbol type arguments. + Improves error message detail. + Diagnostics. + Parameters to skip. + + True if the constraints were satisfied, false otherwise. + + + + Return true if the class type has a public parameterless constructor. + + + + + Returns true if type a is encompassed by type b (spec 6.4.3), + and returns false otherwise. + + + + + A named type symbol that results from substituting a new owner for a type declaration. + + + + + A generic named type symbol that has been constructed with type arguments distinct from its own type parameters. + + + + + Substitutes all occurrences of dynamic type with Object type. + + + + + When indexer overload resolution fails, we have two options: + 1) Create a BoundBadExpression with the candidates as child nodes; + 2) Create a BoundIndexerAccess with the error flag set. + + Option 2 is preferable, because it retains information about the arguments + (names, ref kind, etc), and results in better output from flow analysis. + However, we can't create a BoundIndexerAccess with a null indexer symbol, + so we create an ErrorPropertySymbol to fill the gap. + + + + + An ErrorSymbol is used when the compiler cannot determine a symbol object to return because + of an error. For example, if a field is declared "Foo x;", and the type "Foo" cannot be + found, an ErrorSymbol is returned when asking the field "x" what it's type is. + + + + + The underlying error. + + + + + Summary of the reason why the type is bad. + + + + + Called by to perform substitution + on types with TypeKind ErrorType. The general pattern is to use the type map + to perform substitution on the wrapped type, if any, and then construct a new + error type symbol from the result (if there was a change). + + + + + When constructing this ErrorTypeSymbol, there may have been symbols that seemed to + be what the user intended, but were unsuitable. For example, a type might have been + inaccessible, or ambiguous. This property returns the possible symbols that the user + might have intended. It will return no symbols if no possible symbols were found. + See the CandidateReason property to understand why the symbols were unsuitable. + + + + + If CandidateSymbols returns one or more symbols, returns the reason that those + symbols were not chosen. Otherwise, returns None. + + + + + Returns true if this type is known to be a reference type. It is never the case that + IsReferenceType and IsValueType both return true. However, for an unconstrained type + parameter, IsReferenceType and IsValueType will both return false. + + + + + Returns true if this type is known to be a value type. It is never the case that + IsReferenceType and IsValueType both return true. However, for an unconstrained type + parameter, IsReferenceType and IsValueType will both return false. + + + + + Collection of names of members declared within this type. + + + + + Get all the members of this symbol. + + An ImmutableArray containing all the members of this symbol. If this symbol has no members, + returns an empty ImmutableArray. Never returns Null. + + + + Get all the members of this symbol that have a particular name. + + An ImmutableArray containing all the members of this symbol with the given name. If there are + no members with this name, returns an empty ImmutableArray. Never returns Null. + + + + Get all the members of this symbol that are types. + + An ImmutableArray containing all the types that are members of this symbol. If this symbol has no type members, + returns an empty ImmutableArray. Never returns null. + + + + Get all the members of this symbol that are types that have a particular name, of any arity. + + An ImmutableArray containing all the types that are members of this symbol with the given name. + If this symbol has no type members with this name, + returns an empty ImmutableArray. Never returns null. + + + + Get all the members of this symbol that are types that have a particular name and arity + + An ImmutableArray containing all the types that are members of this symbol with the given name and arity. + If this symbol has no type members with this name and arity, + returns an empty ImmutableArray. Never returns null. + + + + Gets the kind of this symbol. + + + + + Gets the kind of this type. + + + + + Get the symbol that logically contains this symbol. + + + + + Gets the locations where this symbol was originally defined, either in source or + metadata. Some symbols (for example, partial classes) may be defined in more than one + location. + + + + + Returns the arity of this type, or the number of type parameters it takes. + A non-generic type has zero arity. + + + + + Gets the name of this symbol. Symbols without a name return the empty string; null is + never returned. + + + + + Returns the type arguments that have been substituted for the type parameters. + If nothing has been substituted for a give type parameters, + then the type parameter itself is consider the type argument. + + + + + Returns the type parameters that this type has. If this is a non-generic type, + returns an empty ImmutableArray. + + + + + Returns the type symbol that this type was constructed from. This type symbol + has the same containing type (if any), but has type arguments that are the same + as the type parameters (although its containing type might not). + + + + + Implements visitor pattern. + + + + + Get this accessibility that was declared on this symbol. For symbols that do not have + accessibility declared on them, returns NotApplicable. + + + + + Returns true if this symbol is "static"; i.e., declared with the "static" modifier or + implicitly static. + + + + + Returns true if this symbol was declared as requiring an override; i.e., declared with + the "abstract" modifier. Also returns true on a type declared as "abstract", all + interface types, and members of interface types. + + + + + Returns true if this symbol was declared to override a base class member and was also + sealed from further overriding; i.e., declared with the "sealed" modifier. Also set for + types that do not allow a derived class (declared with "sealed" or "static" or "struct" + or "enum" or "delegate"). + + + + + An error type, used to represent the type of a type binding + operation when binding fails. + + + + + If (we believe) we know which symbol the user intended, then we should retain that information + in the corresponding error symbol - it can be useful for deciding how to handle the error. + For example, we might want to know whether (we believe) the error type was supposed to be an + interface, so that we can put it in a derived type's interface list, rather than in the base + type slot. + + Sometimes we will return the original definition of the intended symbol. For example, if we see + ]]> and we have an IFoo with a different arity or accessibility + (e.g. ]]> was constructed from an error symbol based on ]]>), + then we'll return ]]>, rather than trying to construct a corresponding closed + type (which may not be difficult/possible in the case of nested types or mismatched arities). + + NOTE: Any non-null type symbol returned is guaranteed not to be an error type. + + + TypeSymbolExtensions.GetNonErrorGuess is a more discoverable version of this functionality. + However, the real definition is in this class so that it can access the private field + nonErrorGuessType. + + + + + Represents a field initializer, a property initializer, or a global statement in script code. + + + + + The field being initialized (possibly a backing field of a property), or null if this is a top-level statement in script code. + + + + + A reference to or top-level in script code. + + + + + A sum of widths of spans of all preceding initializers + (instance and static initializers are summed separately, and trivias are not counted). + + + + + Represents a label in method body + + + + + Returns false because label can't be defined externally. + + + + + Returns false because label can't be sealed. + + + + + Returns false because label can't be abstract. + + + + + Returns false because label can't be overridden. + + + + + Returns false because label can't be virtual. + + + + + Returns false because label can't be static. + + + + + Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. + This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. + + + + + Returns 'NotApplicable' because label can't be used outside the member body. + + + + + Gets the locations where the symbol was originally defined, either in source or + metadata. Some symbols (for example, partial classes) may be defined in more than one + location. + + + + + Gets the immediately containing symbol of the . + It should be the containing the label in its body. + + + + + Gets the immediately containing symbol of the . + It should be the containing the label in its body. + + + + + Returns value 'Label' of the + + + + + A structure used to lexically order symbols. For performance, it's important that this be + a STRUCTURE, and be able to be returned from a symbol without doing any additional allocations (even + if nothing is cached yet.) + + + + + Compare two lexical sort keys in a compilation. + + + + + Specifies the syntax that a user defined variable comes from. + + + + + The local is not user defined nor it is a copy of a user defined local (e.g. with a substituted type). + Check the value of for the kind of synthesized variable. + + + + + User defined local variable declared by . + + + + + User defined local constant declared by . + + + + + User defined local variable declared by in . + + + + + User defined local variable declared by in . + + + + + User defined local variable declared by . + + + + + User defined local variable declared by in . + + + + + User defined local variable declared by . + + + + + Represents a local variable in a method body. + + + + + Gets the type of this local. + + + + + WARN WARN WARN: If you access this via the semantic model, things will break (since the initializer may not have been bound). + + Whether or not this local is pinned (i.e. the type will be emitted with the "pinned" modifier). + + + Superficially, it seems as though this should always be the same as DeclarationKind == LocalDeclarationKind.Fixed. + Unfortunately, when we fix a string expression, it is not the declared local (e.g. char*) but a synthesized temp (string) + that is pinned. + + + + + Returns false because local variable can't be defined externally. + + + + + Returns false because local variable can't be sealed. + + + + + Returns false because local variable can't be abstract. + + + + + Returns false because local variable can't be overridden. + + + + + Returns false because local variable can't be virtual. + + + + + Returns false because local variable can't be declared as static in C#. + + + + + Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. + This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. + + + + + Returns 'NotApplicable' because local variable can't be used outside the member body.. + + + + + Returns value 'Local' of the + + + + + Returns true if this local variable was declared in a catch clause. + + + + + Returns true if this local variable was declared as "const" (i.e. is a constant declaration). + + + + + Returns true if the local variable is declared in resource-acquisition of a 'using statement'; + otherwise false + + + + using (var localVariable = new StreamReader("C:\\Temp\\MyFile.txt")) { ... } + + + + + + Returns true if the local variable is declared in fixed-pointer-initializer (in unsafe context) + + + + + Returns true if this local variable is declared in for-initializer + + + + + Returns true if this local variable is declared as iteration variable + + + + + Returns the syntax node that declares the variable. + + + All user-defined and long-lived synthesized variables must return a reference to a node that is + tracked by the EnC diffing algorithm. For example, for variable + the declarator is the node. + + The location of the declarator is used to calculate during emit. + + + + + Returns false if the field wasn't declared as "const", or constant value was omitted or erroneous. + True otherwise. + + + + + If IsConst returns true, then returns the constant value of the field or enum member. If IsConst returns + false, then returns null. + + + + + Returns true if the local symbol was compiler generated. + + + + + + C# 4.0 §10.6: The name, the type parameter list and the formal parameter list of a method define + the signature (§3.6) of the method. Specifically, the signature of a method consists of its + name, the number of type parameters and the number, modifiers, and types of its formal + parameters. For these purposes, any type parameter of the method that occurs in the type of + a formal parameter is identified not by its name, but by its ordinal position in the type + argument list of the method. The return type is not part of a method's signature, nor are + the names of the type parameters or the formal parameters. + + + C# 4.0 §3.6: For the purposes of signatures, the types object and dynamic are considered the + same. + + + C# 4.0 §3.6: We implement the rules for ref/out by mapping both to ref. The caller (i.e. + checking for proper overrides or partial methods, etc) should check that ref/out are + consistent. + + + + + + This instance is used when trying to determine if one member explicitly implements another, + according the C# definition. + The member signatures are compared without regard to name (including the interface part, if any) + and the return types must match. + + + + + This instance is used when trying to determine if one member implicitly implements another, + according to the C# definition. + The member names, parameters, and (return) types must match. Custom modifiers are ignored. + + + One would expect this comparer to have requireSourceMethod = true, but it doesn't because (for source types) + we allow inexact matching of custom modifiers when computing implicit member implementations. Consider the + following scenario: interface I has a method M with custom modifiers C1, source type ST includes I in its + interface list but has no method M, and metadata type MT has a method M with custom modifiers C2. + In this scenario, we want to compare I.M to MT.M without regard to custom modifiers, because if C1 != C2, + we can just synthesize an explicit implementation of I.M in ST that calls MT.M. + + + + + This instance is used as a fallback when it is determined that one member does not implicitly implement + another. It applies a looser check to determine whether the proposed implementation should be reported + as "close". + + + + + This instance is used to determine if two C# member declarations in source conflict with each other. + Names, arities, and parameter types are considered. + Return types, type parameter constraints, custom modifiers, and parameter ref kinds, etc are ignored. + + + This does the same comparison that MethodSignature used to do. + + + + + This instance is used to check whether one member overrides another, according to the C# definition. + + + + + This instance is used to check whether one property or event overrides another, according to the C# definition. + NOTE: C# ignores accessor member names. + CAVEAT: considers return types so that getters and setters will be treated the same. + + + + + Same as except that it pays attention to custom modifiers and return type. + Normally, the return type isn't considered during overriding, but this comparer is actually used to find + exact matches (i.e. before tie-breaking takes place amongst close matches). + + + + + If this returns false, then the real override comparer (whichever one is appropriate for the scenario) + will also return false. + + + + + This instance is intended to reflect the definition of signature equality used by the runtime + (ECMA-335, Partition I, §8.6.1.6 Signature Matching). + It considers return type, name, parameters, calling convention, and custom modifiers, but ignores + the difference between and . + + + + + Same as , but distinguishes between ref and out. During override resolution, + if we find two methods that match except for ref/out, we want to prefer the one that matches, even + if the runtime doesn't. + + + + + This instance is the same as RuntimeSignatureComparer. + CONSIDER: just use RuntimeSignatureComparer? + + + + + This instance is used to search for members that have the same name, parameters, (return) type, and constraints (if any) + according to the C# definition. Custom modifiers are ignored. + + + + + This instance is used to search for members that have identical signatures in every regard. + + + + + This instance is used for performing approximate overload resolution of documentation + comment cref attributes. It ignores the name, because the candidates were all found by lookup. + + + + + This instance is used as a key in the lambda return type inference. + We basically only interested in parameters since inference will set the return type to null. + + + + + Returns true if the first set of constraint types + is a subset of the second set. + + + + + SymbolExtensions for member symbols. + + + + + Get the parameters of a member symbol. Should be a method, property, or event. + + + + + Get the types of the parameters of a member symbol. Should be a method, property, or event. + + + + + Get the ref kinds of the parameters of a member symbol. Should be a method, property, or event. + + + + + Count the number of custom modifiers in/on the return type + and parameters of the specified method. + + + + + Count the number of custom modifiers in/on the type + and parameters (for indexers) of the specified property. + + + + + Return the arity of a member. + + + + + NOTE: every struct has a public parameterless constructor either used-defined or default one + + + + + default zero-init constructor symbol is added to a struct when it does not define + its own parameterless public constructor. + We do not emit this constructor and do not call it + + + + + If the event has a AddMethod, return that. Otherwise check the overridden + event, if any. Repeat for each overridden event. + + + This method exists to mimic the behavior of GetOwnOrInheritedGetMethod, but it + should only ever look at the overridden event in error scenarios. + + + + + If the event has a RemoveMethod, return that. Otherwise check the overridden + event, if any. Repeat for each overridden event. + + + This method exists to mimic the behavior of GetOwnOrInheritedSetMethod, but it + should only ever look at the overridden event in error scenarios. + + + + + Does the compilation this symbol belongs to output to a winmdobj? + + + + + + + Returns a constructed named type symbol if 'type' is generic, otherwise just returns 'type' + + + + + Returns true if the members of superType are accessible from subType due to inheritance. + + + + + The immediately containing namespace or named type, or null + if the containing symbol is neither a namespace or named type. + + + + + Returns true if all type parameter references within the given + type belong to containingSymbol or its containing types. + + + + + Returns true if all type parameter references within the given + types belong to containingSymbol or its containing types. + + + + + A MergedNamespaceSymbol represents a namespace that merges the contents of two or more other + namespaces. Any sub-namespaces with the same names are also merged if they have two or more + instances. + + Merged namespaces are used to merge the symbols from multiple metadata modules and the + source "module" into a single symbol tree that represents all the available symbols. The + compiler resolves names against this merged set of symbols. + + Typically there will not be very many merged namespaces in a Compilation: only the root + namespaces and namespaces that are used in multiple referenced modules. (Microsoft, System, + System.Xml, System.Diagnostics, System.Threading, ...) + + + + + Create a possibly merged namespace symbol. If only a single namespace is passed it, it + is just returned directly. If two or more namespaces are passed in, then a new merged + namespace is created with the given extent and container. + + The namespace extent to use, IF a merged namespace is created. + The containing namespace to used, IF a merged + namespace is created. + One or more namespaces to merged. If just one, then it + is returned. The merged namespace symbol may hold onto the array. + An optional name to give the resulting namespace. + A namespace symbol representing the merged namespace. + + + + Method that is called from the CachingLookup to lookup the children of a given name. + Looks in all the constituent namespaces. + + + + + Method that is called from the CachingLookup to get all child names. Looks in all + constituent namespaces. + + + + + Represents source or metadata assembly. + + + + + + An array of cached Cor types defined in this assembly. + Lazily filled by GetSpecialType method. + + + + + + How many Cor types have we cached so far. + + + + + Lookup declaration for predefined CorLib type in this Assembly. + + + + + + + + Register declaration of predefined CorLib type in this Assembly. + + + + + + Continue looking for declaration of predefined CorLib type in this Assembly + while symbols for new type declarations are constructed. + + + + + Not yet known value is represented by ErrorTypeSymbol.UnknownResultType + + + + + Lookup member declaration in predefined CorLib type in this Assembly. Only valid if this + assembly is the Cor Library + + + + + Determine whether this assembly has been granted access to . + Assumes that the public key has been determined. The result will be cached. + + + + + + + + If the extension method is applicable based on the "this" argument type, return + the method constructed with the inferred type arguments. If the method is not an + unconstructed generic method, type inference is skipped. If the method is not + applicable, or if constraints when inferring type parameters from the "this" type + are not satisfied, the return value is null. + + + + + The runtime considers a method to be a finalizer (i.e. a method that should be invoked + by the garbage collector) if it (directly or indirectly) overrides System.Object.Finalize. + + + As an optimization, return true immediately for metadata methods with MethodKind + Destructor - they are guaranteed to be finalizers. + + Method to inspect. + This method is used to determine the method kind of + a PEMethodSymbol, so we may need to avoid using MethodKind until we move on to a different + MethodSymbol. + + + + Returns a constructed method symbol if 'method' is generic, otherwise just returns 'method' + + + + + Some kinds of methods are not considered to be hideable by certain kinds of members. + Specifically, methods, properties, and types cannot hide constructors, destructors, + operators, conversions, or accessors. + + + + + Some kinds of methods are never considered hidden by methods, properties, or types + (constructors, destructors, operators, conversions, and accessors). + + + + + Returns whether this method is async and returns void. + + + + + Returns whether this method is async and returns a task. + + + + + Returns whether this method is async and returns a generic task. + + + + + A is a special kind of that represents + an assembly that couldn't be found. + + + + + AssemblySymbol to represent missing, for whatever reason, CorLibrary. + The symbol is created by ReferenceManager on as needed basis and is shared by all compilations + with missing CorLibraries. + + + + + An array of cached Cor types defined in this assembly. + Lazily filled by GetDeclaredSpecialType method. + + + + + + Lookup declaration for predefined CorLib type in this Assembly. Only should be + called if it is know that this is the Cor Library (mscorlib). + + + + + + A is a special kind of that represents + a type symbol that was attempted to be read from metadata, but couldn't be + found, because: + a) The metadata file it lives in wasn't referenced + b) The metadata file was referenced, but didn't contain the type + c) The metadata file was referenced, contained the correct outer type, but + didn't contains a nested type in that outer type. + + + + + Get the arity of the missing type. + + + + + Represents not nested missing type. + + + + + Either , , or -1 if not initialized. + + + + + This is the FULL namespace name (e.g., "System.Collections.Generic") + of the type that couldn't be found. + + + + + Represents nested missing type. + + + + + A is a special kind of that represents + a module that couldn't be found. + + + + + A is a special kind of that represents + a namespace that couldn't be found. + + + + + Represents a module within an assembly. Every assembly contains one or more modules. + + + + + Returns a NamespaceSymbol representing the global (root) namespace, with + module extent, that can be used to browse all of the symbols defined in this module. + + + + + Returns the containing assembly. Modules are always directly contained by an assembly, + so this property always returns the same as ContainingSymbol. + + + + + Returns value 'NetModule' of the + + + + + Module's ordinal within containing assembly's Modules array. + 0 - for a source module, etc. + -1 - for a module that doesn't have containing assembly, or has it, but is not part of Modules array. + + + + + Target architecture of the machine. + + + + + Indicates that this PE file makes Win32 calls. See CorPEKind.pe32BitRequired for more information (http://msdn.microsoft.com/en-us/library/ms230275.aspx). + + + + + Does this symbol represent a missing module. + + + + + Returns 'NotApplicable' + + + + + Returns false because module can't be declared as 'static'. + + + + + Returns false because module can't be virtual. + + + + + Returns false because module can't be overridden. + + + + + Returns false because module can't be abstract. + + + + + Returns false because module can't be sealed. + + + + + Returns false because module can't be defined externally. + + + + + Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. + This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. + + + + + Returns an array of assembly identities for assemblies referenced by this module. + Items at the same position from ReferencedAssemblies and from ReferencedAssemblySymbols + correspond to each other. + + + + + Returns an array of assembly identities for assemblies referenced by this module. + Items at the same position from GetReferencedAssemblies and from GetReferencedAssemblySymbols + should correspond to each other. + + The array and its content is provided by ReferenceManager and must not be modified. + + + + + + Returns an array of AssemblySymbol objects corresponding to assemblies referenced + by this module. Items at the same position from ReferencedAssemblies and + from ReferencedAssemblySymbols correspond to each other. + + + + + Returns an array of AssemblySymbol objects corresponding to assemblies referenced + by this module. Items at the same position from GetReferencedAssemblies and + from GetReferencedAssemblySymbols should correspond to each other. If reference is + not resolved by compiler, GetReferencedAssemblySymbols returns MissingAssemblySymbol in the + corresponding item. + + The array and its content is provided by ReferenceManager and must not be modified. + + + + + A helper method for ReferenceManager to set assembly identities for assemblies + referenced by this module and corresponding AssemblySymbols. + + A description of the assemblies referenced by this module. + + Source assembly that triggered creation of this module symbol. + For debug purposes only, this assembly symbol should not be persisted within + this module symbol because the module can be shared across multiple source + assemblies. This method will only be called for the first one. + + + + + True if this module has any unified references. + + + + + Returns a unification use-site error (if any) for a symbol contained in this module + that is referring to a specified . + + + If an assembly referenced by this module isn't exactly matching any reference given to compilation + the Assembly Manager might decide to use another reference if it matches except for version + (it unifies the version with the existing reference). + + + + + Lookup a top level type referenced from metadata, names should be + compared case-sensitively. + + + Full type name, possibly with generic name mangling. + + + Symbol for the type, or MissingMetadataSymbol if the type isn't found. + + + + + + Returns true if there is any applied CompilationRelaxationsAttribute assembly attribute for this module. + + + + + Returns true if there is any applied RuntimeCompatibilityAttribute assembly attribute for this module. + + + + + Default char set for contained types, or null if not specified. + + + + + Given a namespace symbol, returns the corresponding module specific namespace symbol + + + + + If this symbol represents a metadata module returns the underlying . + + Otherwise, this returns null. + + + + + Utility class for substituting actual type arguments for formal generic type parameters. + + + + + A NamespaceExtent represents whether a namespace contains types and sub-namespaces from a + particular module, assembly, or merged across all modules (source and metadata) in a + particular compilation. + + + + + Returns what kind of extent: Module, Assembly, or Compilation. + + + + + If the Kind is ExtendKind.Module, returns the module symbol that this namespace + encompasses. Otherwise throws InvalidOperationException. + + + + + If the Kind is ExtendKind.Assembly, returns the assembly symbol that this namespace + encompasses. Otherwise throws InvalidOperationException. + + + + + If the Kind is ExtendKind.Compilation, returns the compilation symbol that this + namespace encompasses. Otherwise throws InvalidOperationException. + + + + + Create a NamespaceExtent that represents a given ModuleSymbol. + + + + + Create a NamespaceExtent that represents a given AssemblySymbol. + + + + + Create a NamespaceExtent that represents a given Compilation. + + + + + Represents either a namespace or a type. + + + + + Returns true if this symbol is a namespace. If it is not a namespace, it must be a type. + + + + + Returns true if this symbols is a type. Equivalent to !IsNamespace. + + + + + Returns true if this symbol is "virtual", has an implementation, and does not override a + base class member; i.e., declared with the "virtual" modifier. Does not return true for + members declared as abstract or override. + + + Always returns false. + + + + + Returns true if this symbol was declared to override a base class member; i.e., declared + with the "override" modifier. Still returns true if member was declared to override + something, but (erroneously) no member to override exists. + + + Always returns false. + + + + + Returns true if this symbol has external implementation; i.e., declared with the + "extern" modifier. + + + Always returns false. + + + + + Get all the members of this symbol. + + An ImmutableArray containing all the members of this symbol. If this symbol has no members, + returns an empty ImmutableArray. Never returns null. + + + + Get all the members of this symbol. The members may not be in a particular order, and the order + may not be stable from call-to-call. + + An ImmutableArray containing all the members of this symbol. If this symbol has no members, + returns an empty ImmutableArray. Never returns null. + + + + Get all the members of this symbol that have a particular name. + + An ImmutableArray containing all the members of this symbol with the given name. If there are + no members with this name, returns an empty ImmutableArray. Never returns null. + + + + Get all the members of this symbol that are types. The members may not be in a particular order, and the order + may not be stable from call-to-call. + + An ImmutableArray containing all the types that are members of this symbol. If this symbol has no type members, + returns an empty ImmutableArray. Never returns null. + + + + Get all the members of this symbol that are types. + + An ImmutableArray containing all the types that are members of this symbol. If this symbol has no type members, + returns an empty ImmutableArray. Never returns null. + + + + Get all the members of this symbol that are types that have a particular name, of any arity. + + An ImmutableArray containing all the types that are members of this symbol with the given name. + If this symbol has no type members with this name, + returns an empty ImmutableArray. Never returns null. + + + + Get all the members of this symbol that are types that have a particular name and arity + + An IEnumerable containing all the types that are members of this symbol with the given name and arity. + If this symbol has no type members with this name and arity, + returns an empty IEnumerable. Never returns null. + + + + Get a source type symbol for the given declaration syntax. + + Null if there is no matching declaration. + + + + Get a source type symbol for the given declaration syntax. + + Null if there is no matching declaration. + + + + Get a source type symbol of given name, arity and kind. If a tree and syntax are provided, restrict the results + to those that are declared within the given syntax. + + Null if there is no matching declaration. + + + + Lookup an immediately nested type referenced from metadata, names should be + compared case-sensitively. + + + Simple type name, possibly with generic name mangling. + + + Symbol for the type, or MissingMetadataSymbol if the type isn't found. + + + + + Finds types or namespaces described by a qualified name. + + Sequence of simple plain names. + + A set of namespace or type symbols with given qualified name (might comprise of types with multiple generic arities), + or an empty set if the member can't be found (the qualified name is ambiguous or the symbol doesn't exist). + + + "C.D" matches C.D, C{T}.D, C{S,T}.D{U}, etc. + + + + + A is a special kind of that represents + an assembly that is not missing, i.e. the "real" thing. + + + + + This is a cache similar to the one used by MetaImport::GetTypeByName + in native compiler. The difference is that native compiler pre-populates + the cache when it loads types. Here we are populating the cache only + with things we looked for, so that next time we are looking for the same + thing, the lookup is fast. This cache also takes care of TypeForwarders. + Gives about 8% win on subsequent lookups in some scenarios. + + + + + + Does this symbol represent a missing assembly. + + + + + Gets the merged root namespace that contains all namespaces and types defined in the modules + of this assembly. If there is just one module in this assembly, this property just returns the + GlobalNamespace of that module. + + + + + Lookup a top level type referenced from metadata, names should be + compared case-sensitively. Detect cycles during lookup. + + + Full type name, possibly with generic name mangling. + + + List of assemblies lookup has already visited (since type forwarding can introduce cycles). + + + Take forwarded types into account. + + + + + For test purposes only. + + + + + For test purposes only. + + + + + A is a special kind of that represents + a module that is not missing, i.e. the "real" thing. + + + + + An array of objects corresponding to assemblies directly referenced by this module. + + + The contents are provided by ReferenceManager and may not be modified. + + + + + Does this symbol represent a missing module. + + + + + Returns an array of assembly identities for assemblies referenced by this module. + Items at the same position from GetReferencedAssemblies and from GetReferencedAssemblySymbols + should correspond to each other. + + + + + Returns an array of AssemblySymbol objects corresponding to assemblies referenced + by this module. Items at the same position from GetReferencedAssemblies and + from GetReferencedAssemblySymbols should correspond to each other. If reference is + not resolved by compiler, GetReferencedAssemblySymbols returns MissingAssemblySymbol in the + corresponding item. + + + + + A helper method for ReferenceManager to set assembly identities for assemblies + referenced by this module and corresponding AssemblySymbols. + + + + + Lookup a top level type referenced from metadata, names should be + compared case-sensitively. + + + Full type name, possibly with generic name mangling. + + + Symbol for the type, or MissingMetadataSymbol if the type isn't found. + + + + + + A NoPiaAmbiguousCanonicalTypeSymbol is a special kind of ErrorSymbol that represents a NoPia + embedded type symbol that was attempted to be substituted with canonical type, but the + canonical type was ambiguous. + + + + + A NoPiaIllegalGenericInstantiationSymbol is a special kind of ErrorSymbol that represents a + generic type instantiation that cannot cross assembly boundaries according to NoPia rules. + + + + + A NoPiaMissingCanonicalTypeSymbol is a special kind of ErrorSymbol that represents a NoPia + embedded type symbol that was attempted to be substituted with canonical type, but the + canonical type couldn't be found. + + + + + Initialize the ObsoleteAttributeData by fetching attributes and decoding ObsoleteAttributeData. This can be + done for Metadata symbol easily whereas trying to do this for source symbols could result in cycles. + + + + + Get the ObsoleteAttributeData by fetching attributes and decoding ObsoleteAttributeData. This can be + done for Metadata symbol easily whereas trying to do this for source symbols could result in cycles. + + + + + This method checks to see if the given symbol is Obsolete or if any symbol in the parent hierarchy is Obsolete. + + + True if some symbol in the parent hierarchy is known to be Obsolete. Unknown if any + symbol's Obsoleteness is Unknown. False, if we are certain that no symbol in the parent + hierarchy is Obsolete. + + + + + Create a diagnostic for the given symbol. This could be an error or a warning based on + the ObsoleteAttribute's arguments. + + + + + Encapsulates the MakeOverriddenOrHiddenMembers functionality for methods, properties (including indexers), + and events. + + + + + Walk up the type hierarchy from ContainingType and list members that this + member either overrides (accessible members with the same signature, if this + member is declared "override") or hides (accessible members with the same name + but different kinds, plus members that would be in the overrides list if + this member were not declared "override"). + + Members in the overridden list may be non-virtual or may have different + accessibilities, types, accessors, etc. They are really candidates to be + overridden. + + Members in the hidden list are definitely hidden. + + Members in the runtime overridden list are indistinguishable from the members + in the overridden list from the point of view of the runtime (see + FindOtherOverriddenMethodsInContainingType for details). + + + In the presence of non-C# types, the meaning of "same signature" is rather + complicated. If this member isn't from source, then it refers to the runtime's + notion of signature (i.e. including return type, custom modifiers, etc). + If this member is from source, then the process is (conceptually) as follows. + + 1) Walk up the type hierarchy, recording all matching members with the same + signature, ignoring custom modifiers and return type. Stop if a hidden + member is encountered. + 2) Apply the following "tie-breaker" rules until you have at most one member, + a) Prefer members in more derived types. + b) Prefer an exact custom modifier match (i.e. none, for a source member). + c) Prefer fewer custom modifiers (values/positions don't matter, just count). + d) Prefer earlier in GetMembers order (within the same type). + 3) If a member remains, search its containing type for other members that + have the same C# signature (overridden members) or runtime signature + (runtime overridden members). + + In metadata, properties participate in overriding only through their accessors. + That is, property/event accessors may implicitly or explicitly override other methods + and a property/event can be considered to override another property/event if its accessors + override those of the other property/event. + This implementation (like Dev10) will not follow that approach. Instead, it is + based on spec section 10.7.5, which treats properties as entities in their own + right. If all property/event accessors have conventional names in metadata and nothing + "unusual" is done with explicit overriding, this approach should produce the same + results as an implementation based on accessor overriding. + + + + + In the CLI, accessors are just regular methods and their overriding/hiding rules are the same as for + regular methods. In C#, however, accessors are intimately connected with their corresponding properties. + Rather than walking up the type hierarchy from the containing type of this accessor, looking for members + with the same name, MakePropertyAccessorOverriddenOrHiddenMembers delegates to the associated property. + For an accessor to hide a member, the hidden member must be a corresponding accessor on a property hidden + by the associated property. For an accessor to override a member, the overridden member must be a + corresponding accessor on a property (directly or indirectly) overridden by the associated property. + + Example 1: + + public class A { public virtual int P { get; set; } } + public class B : A { public override int P { get { return 1; } } } //get only + public class C : B { public override int P { set { } } } // set only + + C.P.set overrides A.P.set because C.P.set is the setter of C.P, which overrides B.P, + which overrides A.P, which has A.P.set as a setter. + + Example 2: + + public class A { public virtual int P { get; set; } } + public class B : A { public new virtual int P { get { return 1; } } } //get only + public class C : B { public override int P { set { } } } // set only + + C.P.set does not override any method because C.P overrides B.P, which has no setter + and does not override a property. + + This accessor. + The property associated with this accessor. + Members overridden or hidden by this accessor. + + This method is intended to return values consistent with the definition of C#, which + may differ from the actual meaning at runtime. + + Note: we don't need a different path for interfaces - Property.OverriddenOrHiddenMembers handles that. + + + + + In the CLI, accessors are just regular methods and their overriding/hiding rules are the same as for + regular methods. In C#, however, accessors are intimately connected with their corresponding events. + Rather than walking up the type hierarchy from the containing type of this accessor, looking for members + with the same name, MakeEventAccessorOverriddenOrHiddenMembers delegates to the associated event. + For an accessor to hide a member, the hidden member must be a corresponding accessor on a event hidden + by the associated event. For an accessor to override a member, the overridden member must be a + corresponding accessor on a event (directly or indirectly) overridden by the associated event. + + This accessor. + The event associated with this accessor. + Members overridden or hidden by this accessor. + + This method is intended to return values consistent with the definition of C#, which + may differ from the actual meaning at runtime. + + Note: we don't need a different path for interfaces - Event.OverriddenOrHiddenMembers handles that. + + CONSIDER: It is an error for an event to have only one accessor. Currently, we mimic the behavior for + properties, for consistency, but an alternative approach would be to say that nothing is overridden. + + CONSIDER: is there a way to share code with MakePropertyAccessorOverriddenOrHiddenMembers? + + + + + There are two key reasons why interface overriding/hiding is different from class overriding/hiding: + 1) interface members never override other members; and + 2) interfaces can extend multiple interfaces. + The first difference doesn't require any special handling - as long as the members have IsOverride=false, + the code for class overriding/hiding does the right thing. + The second difference is more problematic. For one thing, an interface member can hide a different member in + each base interface. We only report the first one, but we need to expose all of them in the API. More importantly, + multiple inheritance raises the possibility of diamond inheritance. Spec section 13.2.5, Interface member access, + says: "The intuitive rule for hiding in multiple-inheritance interfaces is simply this: If a member is hidden in any + access path, it is hidden in all access paths." For example, consider the following interfaces: + + interface I0 { void M(); } + interface I1 : I0 { void M(); } + interface I2 : I0, I1 { void M(); } + + I2.M does not hide I0.M, because it is already hidden by I1.M. To make this work, we need to traverse the graph + of ancestor interfaces in topological order and flag ones later in the enumeration that are hidden along some path. + + + See SymbolPreparer::checkIfaceHiding. + + + + + Look for overridden or hidden members in a specific type. + + Member that is hiding or overriding. + True if member is from the current compilation. + The type that contains member (member.ContainingType). + The type to search. + + A member with the same signature if currTypeHasExactMatch is true, + a member with (a minimal number of) different custom modifiers if there is one, + and null otherwise. + True if there's a member with the same name and kind that is not a match. + Hidden members (same name, different kind) will be added to this builder. + + There is some similarity between this member and TypeSymbol.FindPotentialImplicitImplementationMethodDeclaredInType. + When making changes to this member, think about whether or not they should also be applied in TypeSymbol. + + In incorrect or imported code, it is possible that both currTypeBestMatch and hiddenBuilder will be populated. + + + + + If representative member is non-null and is contained in a constructed type, then find + other members in the same type with the same signature. If this is an override member, + add them to the overridden and runtime overridden lists. Otherwise, add them to the + hidden list. + + + + + Some kinds of methods are not considered to be hideable by certain kinds of members. + Specifically, methods, properties, and types cannot hide constructors, destructors, + operators, conversions, or accessors. + + + + + Having found the best member to override, we want to find members with the same signature on the + best member's containing type. + + + The member that we consider to be overridden (may have different custom modifiers from the overriding member). + Assumed to already be in the overridden and runtime overridden lists. + + + If the best match was based on the custom modifier count, rather than the custom modifiers themselves + (because the overriding member is in the current compilation), then we should use the count when determining + whether the override is ambiguous. + + + If the declaring type is constructed, it's possible that two (or more) members have the same signature + (including custom modifiers). Return a list of such members so that we can report the ambiguity. + + + If the declaring type is constructed, it's possible that two (or more) members have the same signature + (including custom modifiers) in metadata (no ref/out distinction). Return a list of such members so + that we can report the ambiguity. + + Even in a non-generic type, it's possible for two indexers to have the same signature. For example, + this would be the case if the default member of a type is "get_Item" and indexers "A" and "B", + with the same signature, both have an indexer called "get_Item". + + From: SymbolPreparer.cpp + DevDiv Bugs 115384: Both out and ref parameters are implemented as references. In addition, out parameters are + decorated with OutAttribute. In CLR when a signature is looked up in virtual dispatch, CLR does not distinguish + between these to parameter types. The choice is the last method in the vtable. Therefore we check and warn if + there would potentially be a mismatch in CLRs and C#s choice of the overridden method. Unfortunately we have no + way of communicating to CLR which method is the overridden one. We only run into this problem when the + parameters are generic. + + + + + Having found that we are hiding a method with exactly the same signature + (including custom modifiers), we want to find methods with the same signature + on the declaring type because they will also be hidden. + (If the declaring type is constructed, it's possible that two or more + methods have the same signature (including custom modifiers).) + (If the representative member is an indexer, it's possible that two or more + properties have the same signature (including custom modifiers, even in a + non-generic type). + + + This kind of the hiding member. + + + The member that we consider to be hidden (must have exactly the same custom modifiers as the hiding member). + Assumed to already be in hiddenBuilder. + + + Will have all other members with the same signature (including custom modifiers) as + representativeMember added. + + + + + Given a method, find a method that it overrides from the perspective of the CLI. + Key differences from C#: non-virtual methods are ignored, the RuntimeSignatureComparer + is used (i.e. consider return types, ignore ref/out distinction). + + + WARN: Must not check method.MethodKind - PEMethodSymbol.ComputeMethodKind uses this method. + NOTE: Does not check whether the given method will be marked "newslot" in metadata (which + would indicate that it does not override anything). + WARN: If the method may override a source method and declaration diagnostics have yet to + be computed, then it is important to pass ignoreInterfaceImplementationChanges: true + (see MethodSymbol.IsMetadataVirtual for details). + + + + + Note that the access check is done using the original definitions. This is because we want to avoid + reductions in accessibility that result from type argument substitution (e.g. if an inaccessible type + has been passed as a type argument). + See DevDiv #11967 for an example. + + + + + Groups the information computed by MakeOverriddenOrHiddenMembers. + + + + + It is not suitable to call this method on a object + associated with a member within substituted type, + should be used instead. + + + + + Represents a preprocessing conditional compilation symbol. + + + + + Helper methods that exist to share code between properties and events. + + + + + If the property has a GetMethod, return that. Otherwise check the overridden + property, if any. Repeat for each overridden property. + + + + + If the property has a SetMethod, return that. Otherwise check the overridden + property, if any. Repeat for each overridden property. + + + + + A RangeVariableSymbol represents an identifier introduced in a query expression as the + identifier of a "from" clause, an "into" query continuation, a "let" clause, or a "join" clause. + + + + + Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. + This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. + + + + + An extension method with the "this" parameter removed. + Used for the public binding API only, not for compilation. + + + + + Return the extension method in reduced form if the extension method + is applicable, and satisfies type parameter constraints, based on the + "this" argument type. Otherwise, returns null. + + + + + A representation of a method symbol that is intended only to be used for comparison purposes + (esp in MethodSignatureComparer). + + + + + Intended to be used to create ParameterSymbols for a SignatureOnlyMethodSymbol. + + + + + A representation of a property symbol that is intended only to be used for comparison purposes + (esp in PropertySignatureComparer). + + + + + Generate a list containing the given field and all dependencies + of that field that require evaluation. The list is ordered by + dependencies, with fields with no dependencies first. Cycles are + broken at the first field lexically in the cycle. If multiple threads + call this method with the same field, the order of the fields + returned should be the same, although some fields may be missing + from the lists in some threads as other threads evaluate fields. + + + + + The set of fields on which the field depends. + + + + + The set of fields that depend on the field. + + + + + Build a dependency graph (a map from + field to dependencies). + + + + + Return an ordering of the compilations referenced in the graph. + The actual ordering is not important, but we need some ordering + to compare source locations across different compilations. + + + + + Return one member from one cycle in the graph. + (There must be at least one cycle. In fact, there + shouldn't be any fields without dependencies.) + + + + + Type parameters in documentation comments are complicated since they sort of act as declarations, + rather than references. Consider the following example: + + See . + class B { void M(T t) { } } + ]]> + + We make some key observations: + 1) The type parameter name in the cref is not tied to the type parameter name in the type declaration. + 2) A relationship exists between the two occurrences of "U" in the cref: they both refer to (or define) + the same symbol. + + In Roslyn, we've decided on the following representation: within the (entire) scope of a cref, the names + of all type parameters "declared" in the cref are in scope and bind to the corresponding type parameters. + This representation has one major advantage: as long as the appropriate binder (i.e. the one that knows + about the implicitly-declared type parameters) is used, TypeSyntaxes within the cref can be bound by + calling BindType. In addition to eliminating the necessity for custom binding code in the batch case, + this reduces the problem of exposing such nodes in the SemanticModel to one of ensuring that the right + enclosing binder is chosen. That is, new code will have to be written to handle CrefSyntaxes, but the + existing code for TypeSyntaxes should just work! + + In the example above, this means that, between the cref quotation marks, the name "U" binds to an + implicitly declared type parameter, whether it is in "B{U}", "M{U}", or "M{List{U[]}}". + + Of course, it's not all gravy. One thing we're giving up by using this representation is the ability to + distinguish between "declared" type parameters with the same name. Consider the following example: + + See . + class A + { + void M(T t) { } + void M(U u) { } + } + ]]> + + + The native compiler interprets this in the same way as it would interpret A{T1, T2}.M(T2) and unambiguously + (i.e. without a warning) binds to A{T, U}.M(U). Since Roslyn does not distinguish between the T's, Roslyn + reports an ambiguity warning and picks the first method. Furthermore, renaming one 'T' will rename all of + them. + + This class represents such an implicitly declared type parameter. The declaring syntax is expected to be + an IdentifierNameSyntax in the type argument list of a QualifiedNameSyntax. + + + + Out params are updated by assignment. If you require thread-safety, pass temps and then + CompareExchange them back into shared memory. + + + + Type that already has custom modifiers. + Same as , but without custom modifiers. May differ in object/dynamic. + of the parameter of which this is the type (or for a return type. + The assembly containing the signature referring to the destination type. + with custom modifiers copied from . + + + + Given a member, look for other members contained in the same type with signatures that will + not be distinguishable by the runtime. + + + + + Implemented by symbols that can be targetted by an attribute declaration (i.e. source symbols). + + + + + Returns the owner of attributes that apply to this symbol. + + + Attributes for this symbol might be retrieved from attribute list of another (owning) symbol. + In that case this property returns that owning symbol, otherwise it returns "this". + + + + + Returns a bit set of attribute locations applicable to this symbol. + + + + + Attribute location corresponding to this symbol. + + + Location of an attribute if an explicit location is not specified via attribute target specification syntax. + + + + + Represents implicit, script and submission classes. + + + + + Returns null for a submission class. + This ensures that a submission class does not inherit methods such as ToString or GetHashCode. + + + + + Indexed type parameters are used in place of type parameters for method signatures. There is + a unique mapping from index to a single IndexedTypeParameterSymbol. + + They don't have a containing symbol or locations. + + They do not have constraints, variance, or attributes. + + + + + Create a vector of n dummy type parameters. Always reuses the same type parameter symbol + for the same position. + + + + + + + Represents an assembly built by compiler. + + + + + A Compilation the assembly is created for. + + + + + Assembly's identity. + + + + + A list of modules the assembly consists of. + The first (index=0) module is a SourceModuleSymbol, which is a primary module, the rest are net-modules. + + + + + Bag of assembly's custom attributes and decoded well-known attribute data from source. + + + + + Bag of assembly's custom attributes and decoded well-known attribute data from added netmodules. + + + + + Indices of attributes that will not be emitted for one of two reasons: + - They are duplicates of another attribute (i.e. attributes that bind to the same constructor and have identical arguments) + - They are InternalsVisibleToAttributes with invalid assembly identities + + + These indices correspond to the merged assembly attributes from source and added net modules, i.e. attributes returned by method. + + + + + Map for storing effectively private or effectively internal fields declared in this assembly but never initialized nor assigned. + Each {symbol, bool} key-value pair in this map indicates the following: + (a) Key: Unassigned field symbol. + (b) Value: True if the unassigned field is effectively internal, false otherwise. + + + + + private fields declared in this assembly but never read + + + + + We imitate the native compiler's policy of not warning about unused fields + when the enclosing type is used by an extern method for a ref argument. + Here we keep track of those types. + + + + + The warnings for unused fields. + + + + + This override is essential - it's a base case of the recursive definition. + + + + + Raw assembly version as specified in the AssemblyVersionAttribute, or null if none specified. + If the string passed to AssemblyVersionAttribute contains * the version build and/or revision numbers are set to . + + + + + This represents what the user claimed in source through the AssemblyFlagsAttribute. + It may be modified as emitted due to presence or absence of the public key. + + + + + We're going to synthesize some well-known attributes for this assembly symbol. However, at synthesis time, it is + too late to report diagnostics or cancel the emit. Instead, we check for use site errors on the types and members + we know we'll need at synthesis time. + + + As in Dev10, we won't report anything if the attribute TYPES are missing (note: missing, not erroneous) because we won't + synthesize anything in that case. We'll only report diagnostics if the attribute TYPES are present and either they or + the attribute CONSTRUCTORS have errors. + + + + + If this compilation allows unsafe code (note: allows, not contains), then when we actually emit the assembly/module, + we're going to synthesize SecurityPermissionAttribute/UnverifiableCodeAttribute. However, at synthesis time, it is + too late to report diagnostics or cancel the emit. Instead, we check for use site errors on the types and members + we know we'll need at synthesis time. + + + As in Dev10, we won't report anything if the attribute TYPES are missing (note: missing, not erroneous) because we won't + synthesize anything in that case. We'll only report diagnostics if the attribute TYPES are present and either they or + the attribute CONSTRUCTORS have errors. + + + + + True if internals are exposed at all. + + + Forces binding and decoding of attributes. + This property shouldn't be accessed during binding as it can lead to attribute binding cycle. + + + + + Gets unique source assembly attributes that should be emitted, + i.e. filters out attributes with errors and duplicate attributes. + + + + + Returns a bag of applied custom attributes and data decoded from well-known attributes. Returns null if there are no attributes applied on the symbol. + + + Forces binding and decoding of attributes. + + + + + Gets the attributes applied on this symbol. + Returns an empty array if there are no attributes. + + + NOTE: This method should always be kept as a sealed override. + If you want to override attribute binding logic for a sub-class, then override method. + + + + + Returns true if the assembly attribute at the given index is a duplicate assembly attribute that must not be emitted. + Duplicate assembly attributes are attributes that bind to the same constructor and have identical arguments. + + + This method must be invoked only after all the assembly attributes have been bound. + + + + + Returns data decoded from source assembly attributes or null if there are none. + + + Forces binding and decoding of attributes. + TODO: We should replace methods GetSourceDecodedWellKnownAttributeData and GetNetModuleDecodedWellKnownAttributeData with + a single method GetDecodedWellKnownAttributeData, which merges DecodedWellKnownAttributeData from source and netmodule attributes. + + + + + Returns true if and only if at least one type within the assembly contains + extension methods. Note, this method is expensive since it potentially + inspects all types within the assembly. The expectation is that this method is + only called at emit time, when all types have been or will be traversed anyway. + + + + + Get the warnings for unused fields. This should only be fetched when all method bodies have been compiled. + + + + + Represents a source parameter cloned from another , when they must share attribute data and default constant value. + For example, parameters on a property symbol are cloned to generate parameters on accessors. + Similarly parameters on delegate invoke method are cloned to delegate begin/end invoke methods. + + + + + A source parameter, potentially with a default value, attributes, etc. + + + + + Symbol to copy bound attributes from, or null if the attributes are not shared among multiple source parameter symbols. + + + Used for parameters of partial implementation. We bind the attributes only on the definition + part and copy them over to the implementation. + + + + + Gets the syntax list of custom attributes that declares attributes for this parameter symbol. + + + + + Returns data decoded from well-known attributes applied to the symbol or null if there are no applied attributes. + + + Forces binding and decoding of attributes. + + + + + Returns data decoded from special early bound well-known attributes applied to the symbol or null if there are no applied attributes. + + + Forces binding and decoding of attributes. + + + + + Returns a bag of applied custom attributes and data decoded from well-known attributes. Returns null if there are no attributes applied on the symbol. + + + Forces binding and decoding of attributes. + + + + + Verify the default value matches the default value from any earlier attribute + (DefaultParameterValueAttribute, DateTimeConstantAttribute or DecimalConstantAttribute). + If not, report ERR_ParamDefaultValueDiffersFromAttribute. + + + + + Is the attribute syntax appearing on a parameter of a partial method implementation part? + Since attributes are merged between the parts of a partial, we need to look at the syntax where the + attribute appeared in the source to see if it corresponds to a partial method implementation part. + + + + + + + True if the parameter has default argument syntax. + + + + + True if the parameter is marked by . + + + + + This class represents an event accessor declared in source + (i.e. not one synthesized for a field-like event). + + + The accessors are associated with . + + + + + This class represents an event declared in source with explicit accessors + (i.e. not a field-like event). + + + + + Represents a constant field of an enum. + + + + + Base class for event accessors - synthesized and user defined. + + + + + A delegate field associated with a . + + + SourceFieldSymbol takes care of the initializer (plus "var" in the interactive case). + + + + + This class represents an event declared in source. It may be either + field-like (see ) or property-like (see + ). + + + + + Gets the syntax list of custom attributes applied on the event symbol. + + + + + Returns a bag of applied custom attributes and data decoded from well-known attributes. Returns null if there are no attributes applied on the symbol. + + + Forces binding and decoding of attributes. + + + + + Gets the attributes applied on this symbol. + Returns an empty array if there are no attributes. + + + NOTE: This method should always be kept as a sealed override. + If you want to override attribute binding logic for a sub-class, then override method. + + + + + Returns data decoded from well-known attributes applied to the symbol or null if there are no applied attributes. + + + Forces binding and decoding of attributes. + + + + + Returns data decoded from special early bound well-known attributes applied to the symbol or null if there are no applied attributes. + + + Forces binding and decoding of attributes. + + + + + Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. + This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. + + + + + This class represents an event declared in source without explicit accessors. + It implicitly has thread safe accessors and an associated field (of the same + name), unless it does not have an initializer and is either extern or inside + an interface, in which case it only has accessors. + + + + + Backing field for field-like event. Will be null if the event + has no initializer and is either extern or inside an interface. + + + + + Gets the syntax list of custom attributes applied on the symbol. + + + + + Returns a bag of applied custom attributes and data decoded from well-known attributes. Returns null if there are no attributes applied on the symbol. + + + Forces binding and decoding of attributes. + + + + + Gets the attributes applied on this symbol. + Returns an empty array if there are no attributes. + + + NOTE: This method should always be kept as a sealed override. + If you want to override attribute binding logic for a sub-class, then override method. + + + + + Returns data decoded from well-known attributes applied to the symbol or null if there are no applied attributes. + + + Forces binding and decoding of attributes. + + + + + Returns data decoded from special early bound well-known attributes applied to the symbol or null if there are no applied attributes. + + + Forces binding and decoding of attributes. + + + + + Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. + This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. + + + + + Verify the constant value matches the default value from any earlier attribute + (DateTimeConstantAttribute or DecimalConstantAttribute). + If not, report ERR_FieldHasMultipleDistinctConstantValues. + + + + + Return the constant value dependencies. Compute the dependencies + if necessary by evaluating the constant value but only persist the + constant value if there were no dependencies. (If there are dependencies, + the constant value will be re-evaluated after evaluating dependencies.) + + + + + Switch case labels have a constant expression associated with them. + + + + + If the label is a switch case label, returns the associated constant value with + case expression, otherwise returns null. + + + + + Represents a local variable in a method body. + + + + + Might not be a method symbol. + + + + + There are three ways to initialize a fixed statement local: + 1) with an address; + 2) with an array (or fixed-size buffer); or + 3) with a string. + + In the first two cases, the resulting local will be emitted with a "pinned" modifier. + In the third case, it is not the fixed statement local but a synthesized temp that is pinned. + Unfortunately, we can't distinguish these cases when the local is declared; we only know + once we have bound the initializer. + + + CompareExchange doesn't support bool, so use an int. First bit is true/false, second bit + is read/unread (debug-only). + + + + + Gets the name of the local variable. + + + + + Gets the locations where the local symbol was originally defined in source. + There should not be local symbols from metadata, and there should be only one local variable declared. + TODO: check if there are multiple same name local variables - error symbol or local symbol? + + + + + Store the constant value and the corresponding diagnostics together + to avoid having the former set by one thread and the latter set by + another. + + + + + Determine the constant value of this local and the corresponding diagnostics. + Set both to constantTuple in a single operation for thread safety. + + Null for the initial call, non-null if we are in the process of evaluating a constant. + If we already have the bound node for the initial value, pass it in to avoid recomputing it. + + + + Represents a named type symbol whose members are declared in source. + + + + + Compute the "effective accessibility" of the current class for the purpose of warnings about unused fields. + + + + + Encapsulates information about the non-type members of a (i.e. this) type. + 1) For non-initializers, symbols are created and stored in a list. + 2) For fields and properties, the symbols are stored in (1) and their initializers are + stored with other initialized fields and properties from the same syntax tree with + the same static-ness. + 3) For indexers, syntax (weak) references are stored for later binding. + + + CONSIDER: most types won't have indexers, so we could move the indexer list + into a subclass to spare most instances the space required for the field. + + + + + Calculates a syntax offset of a syntax position that is contained in a property or field initializer (if it is in fact contained in one). + + + + + During early attribute decoding, we consider a safe subset of all members that will not + cause cyclic dependencies. Get all such members for this symbol. + + In particular, this method will return nested types and fields (other than auto-property + backing fields). + + + + + During early attribute decoding, we consider a safe subset of all members that will not + cause cyclic dependencies. Get all such members for this symbol that have a particular name. + + In particular, this method will return nested types and fields (other than auto-property + backing fields). + + + + + Merge (already ordered) non-type, non-indexer members with (already ordered) indexer members. + + + + + Fix up a partial method by combining its defining and implementing declarations, updating the array of symbols (by name), + and returning the combined symbol. + + The symbols array containing both the latent and implementing declaration + One of the two declarations + The other declaration + An updated symbols array containing only one method symbol representing the two parts + + + + Report an error if a member (other than a method) exists with the same name + as the property accessor, or if a method exists with the same name and signature. + + + + + Report an error if a member (other than a method) exists with the same name + as the event accessor, or if a method exists with the same name and signature. + + + + + Return the location of the accessor, or if no accessor, the location of the property. + + + + + Return the location of the accessor, or if no accessor, the location of the event. + + + + + Return true if the method parameters match the parameters of the + property accessor, including the value parameter for the setter. + + + + + Return true if the method parameters match the parameters of the + event accessor, including the value parameter. + + + + + In some circumstances (e.g. implicit implementation of an interface method by a non-virtual method in a + base type from another assembly) it is necessary for the compiler to generate explicit implementations for + some interface methods. They don't go in the symbol table, but if we are emitting, then we should + generate code for them. + + + + + It's not interesting to report diagnostics on implementation of interface accessors + if the corresponding events or properties are not implemented (i.e. we want to suppress + cascading diagnostics). + Caveat: Indexed property accessors are always interesting. + Caveat: It's also uninteresting if a WinRT event is implemented by a non-WinRT event, + or vice versa. + + + + + If necessary, report a diagnostic for a hidden abstract member. + + True if a diagnostic was reported. + + + + It is invalid for a type to directly (vs through a base class) implement two interfaces that + unify (i.e. are the same for some substitution of type parameters). + + + CONSIDER: check this while building up InterfacesAndTheirBaseInterfaces (only in the SourceNamedTypeSymbol case). + + + + + Though there is a method that C# considers to be an implementation of the interface method, that + method may not be considered an implementation by the CLR. In particular, implicit implementation + methods that are non-virtual or that have different (usually fewer) custom modifiers than the + interface method, will not be considered CLR overrides. To address this problem, we either make + them virtual (in metadata, not in C#), or we introduce an explicit interface implementation that + delegates to the implicit implementation. + + Returned from FindImplementationForInterfaceMemberWithDiagnostics. + The interface method or property that is being implemented. + Synthesized implementation or null if not needed. + + + + The CLR will only look for an implementation of an interface method in a type that + 1) declares that it implements that interface; or + 2) is a base class of a type that declares that it implements the interface but not + a subtype of a class that declares that it implements the interface. + + For example, + + interface I + class A + class B : A, I + class C : B + class D : C, I + + Suppose the runtime is looking for D's implementation of a member of I. It will look in + D because of (1), will not look in C, will look in B because of (1), and will look in A + because of (2). + + The key point is that it does not look in C, which C# *does*. + + + + + If C# picks a different implementation than the CLR (see IsPossibleImplementationUnderClrRules), then we might + still be okay, but dynamic dispatch might result in C#'s choice getting called anyway. + + + This is based on SymbolPreparer::IsCLRMethodImplSame in the native compiler. + + ACASEY: What the native compiler actually does is compute the C# answer, compute the CLR answer, + and then confirm that they override the same method. What I've done here is check for the situations + where the answers could disagree. I believe the results will be equivalent. If in doubt, a more conservative + check would be implementingMethod.ContainingType.InterfacesAndTheirBaseInterfaces.Contains(@interface). + + + + + A collection of type parameter constraints, populated when + constraints for the first type parameter is requested. + + + + + If this symbol represents a partial method definition or implementation part, its other part (if any). + This should be set, if at all, before this symbol appears among the members of its owner. + The implementation part is not listed among the "members" of the enclosing type. + + + + + If this is a partial implementation part returns the definition part and vice versa. + + + + + Returns true if this symbol represents a partial method definition (the part that specifies a signature but no body). + + + + + Returns true if this symbol represents a partial method implementation (the part that specifies both signature and body). + + + + + True if this is a partial method that doesn't have an implementation part. + + + + + Returns the implementation part of a partial method definition, + or null if this is not a partial method or it is the definition part. + + + + + Returns the definition part of a partial method implementation, + or null if this is not a partial method or it is the implementation part. + + + + + Report differences between the defining and implementing + parts of a partial method. Diagnostics are reported on the + implementing part, matching Dev10 behavior. + + + + + Returns true if the two partial methods have the same constraints. + + + + + Implementers should assume that a lock has been taken on MethodChecksLockObject. + In particular, it should not (generally) be necessary to use CompareExchange to + protect assignments to fields. + + + + + We can usually lock on the syntax reference of this method, but it turns + out that some synthesized methods (e.g. field-like event accessors) also + need to do method checks. This property allows such methods to supply + their own lock objects, so that we don't have to add a new field to every + SourceMethodSymbol. + + + + + Overridden by , + which might return locations of partial methods. + + + + + Symbol to copy bound attributes from, or null if the attributes are not shared among multiple source method symbols. + + + Used for example for event accessors. The "remove" method delegates attribute binding to the "add" method. + The bound attribute data are then applied to both accessors. + + + + + Gets the syntax list of custom attributes that declares attributes for this method symbol. + + + + + Gets the syntax list of custom attributes that declares attributes for return type of this method. + + + + + Returns data decoded from special early bound well-known attributes applied to the symbol or null if there are no applied attributes. + + + Forces binding and decoding of attributes. + + + + + Returns data decoded from well-known attributes applied to the symbol or null if there are no applied attributes. + + + Forces binding and decoding of attributes. + + + + + Returns information retrieved from custom attributes on return type in source, or null if the symbol is not source symbol or there are none. + + + Forces binding and decoding of attributes. + + + + + Returns a bag of applied custom attributes and data decoded from well-known attributes. Returns null if there are no attributes applied on the symbol. + + + Forces binding and decoding of attributes. + + + + + Returns a bag of custom attributes applied on the method return value and data decoded from well-known attributes. Returns null if there are no attributes. + + + Forces binding and decoding of attributes. + + + + + Gets the attributes applied on this symbol. + Returns an empty array if there are no attributes. + + + + + Gets the attributes applied on the return value of this method symbol. + Returns an empty array if there are no attributes. + + + + + Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. + This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. + + + + + Checks to see if a body is legal given the current modifiers. + If it is not, a diagnostic is added with the current type. + + + + + Returns true if the method body is an expression, as expressed + by the syntax. False + otherwise. + + + If the method has both block body and an expression body + present, this is not treated as expression-bodied. + + + + + Represents the primary module of an assembly being built by compiler. + + + + + Owning assembly. + + + + + The declarations corresponding to the source files of this module. + + + + + The name (contains extension) + + + + + This override is essential - it's a base case of the recursive definition. + + + + + Returns a bag of applied custom attributes and data decoded from well-known attributes. Returns null if there are no attributes applied on the symbol. + + + Forces binding and decoding of attributes. + + + + + Gets the attributes applied on this symbol. + Returns an empty array if there are no attributes. + + + NOTE: This method should always be kept as a sealed override. + If you want to override attribute binding logic for a sub-class, then override method. + + + + + Returns data decoded from well-known attributes applied to the symbol or null if there are no applied attributes. + + + Forces binding and decoding of attributes. + + + + + A collection of type parameter constraints, populated when + constraints for the first type parameter are requested. + + + + + Returns a bag of applied custom attributes and data decoded from well-known attributes. Returns null if there are no attributes applied on the symbol. + + + Forces binding and decoding of attributes. + + + + + Gets the attributes applied on this symbol. + Returns an empty array if there are no attributes. + + + + + Returns data decoded from well-known attributes applied to the symbol or null if there are no applied attributes. + + + Forces binding and decoding of attributes. + + + + + Returns data decoded from special early bound well-known attributes applied to the symbol or null if there are no applied attributes. + + + Forces binding and decoding of attributes. + + + + + Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. + This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. + + + + + These won't be returned by GetAttributes on source methods, but they + will be returned by GetAttributes on metadata symbols. + + + + + Gets the BaseType of this type. If the base type could not be determined, then + an instance of ErrorType is returned. If this kind of type does not have a base type + (for example, interfaces), null is returned. Also the special class System.Object + always has a BaseType of null. + + + + + Gets the set of interfaces that this type directly implements. This set does not include + interfaces that are base interfaces of directly implemented interfaces. + + + + + Returns true if the type cannot be used as an explicit base class. + + + + + For enum types, gets the underlying type. Returns null on all other + kinds of types. + + + + + For enum types, returns the synthesized instance field used + for generating metadata. Returns null for non-enum types. + + + + + Register COR types declared in this namespace, if any, in the COR types cache. + + + + + Base class for parameters can be referred to from source code. + + + These parameters can potentially be targetted by an attribute specified in source code. + As an optimization we distinguish simple parameters (no attributes, no modifiers, etc.) and complex parameters. + + + + + True if the parameter is marked by . + + + + + True if the parameter has default argument syntax. + + + + + Gets the attributes applied on this symbol. + Returns an empty array if there are no attributes. + + + NOTE: This method should always be kept as a sealed override. + If you want to override attribute binding logic for a sub-class, then override method. + + + + + Base class for all parameters that are emitted. + + + + + Return Accessibility declared locally on the accessor, or + NotApplicable if no accessibility was declared explicitly. + + + + + If we are outputting a .winmdobj then the setter name is put_, not set_. + + + + + or + + + + + Set in constructor, might be changed while decoding . + + + + + To facilitate lookup, all indexer symbols have the same name. + Check the MetadataName property to find the name that will be + emitted (based on IndexerNameAttribute, or the default "Item"). + + + + + Even though it is declared with an IndexerDeclarationSyntax, an explicit + interface implementation is not an indexer because it will not cause the + containing type to be emitted with a DefaultMemberAttribute (and even if + there is another indexer, the name of the explicit implementation won't + match). This is important for round-tripping. + + + + + Backing field for automatically implemented property, or + for a property with an initializer. + + + + + Return true if the accessor accessibility is more restrictive + than the property accessibility, otherwise false. + + + + + If this property is sealed, then we have to emit both accessors - regardless of whether + they are present in the source - so that they can be marked final. (i.e. sealed). + + + + + Only non-null for sealed properties without both accessors. + + + + + Returns a bag of applied custom attributes and data decoded from well-known attributes. Returns null if there are no attributes applied on the symbol. + + + Forces binding and decoding of attributes. + + + + + Gets the attributes applied on this symbol. + Returns an empty array if there are no attributes. + + + NOTE: This method should always be kept as a sealed override. + If you want to override attribute binding logic for a sub-class, then override method. + + + + + Returns data decoded from well-known attributes applied to the symbol or null if there are no applied attributes. + + + Forces binding and decoding of attributes. + + + + + Returns data decoded from special early bound well-known attributes applied to the symbol or null if there are no applied attributes. + + + Forces binding and decoding of attributes. + + + + + Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. + This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. + + + + + A source parameter that has no default value, no attributes, + and is not params. + + + + + Base class for type and method type parameters. + + + + + Gets the attributes applied on this symbol. + Returns an empty array if there are no attributes. + + + NOTE: This method should always be kept as a sealed override. + If you want to override attribute binding logic for a sub-class, then override method. + + + + + Check constraints of generic types referenced in constraint types. For instance, + with "interface I<T> where T : I<T> {}", check T satisfies constraints + on I<T>. Those constraints are not checked when binding ConstraintTypes + since ConstraintTypes has not been set on I<T> at that point. + + + + + A map shared by all type parameters for an overriding method or a method + that explicitly implements an interface. The map caches the overridden method + and a type map from overridden type parameters to overriding type parameters. + + + + + A type parameter for a method that either overrides a base + type method or explicitly implements an interface method. + + + Exists to copy constraints from the corresponding type parameter of an overridden method. + + + + + The type parameter to use for determining constraints. If there is a base + method that the owner method is overriding, the corresponding type + parameter on that method is used. Otherwise, the result is null. + + + + + Class to represent a synthesized attribute + + + + + A context for binding type parameter symbols of named types. + + + + + A simple representation of a type parameter constraint clause + as a set of constraint bits and a set of constraint types. + + + + + Checks if a type is considered a "built-in integral" by CLR. + + + + + The type is one of the simple types defined in Dev10 C#, see "predeftype.h"/simple + + + + + Either a SubstitutedNestedTypeSymbol or a ConstructedNamedTypeSymbol, which share in common that they + have type parameters substituted. + + + + + This field keeps track of the s for which we already retrieved + diagnostics. We shouldn't return from ForceComplete (i.e. indicate that diagnostics are + available) until this is equal to , except that when completing + with a given position, we might not complete .Member*. + + Since completeParts is used as a flag indicating completion of other assignments + it must be volatile to ensure the read is not reordered/optimized to happen + before the writes. + + + + + Used to force (source) symbols to a given state of completion. + + The owning source symbol. + + + + Since this formula is rather opaque, a demonstration of its correctness is + provided in Roslyn.Compilers.CSharp.UnitTests.CompletionTests.TestHasAtMostOneBitSet. + + + + + Produces name of the synthesized delegate symbol that encodes the parameter byref-ness and return type of the delegate. + The arity is appended via `N suffix in MetadataName calculation since the delegate is generic. + + + + + Represents the compiler generated value parameter for property/event accessor. + This parameter has no source location/syntax, but may have attributes. + Attributes with 'param' target specifier on the accessor must be applied to the this parameter. + + + + + Represents a compiler generated backing field for an automatically implemented property. + + + + + A container synthesized for a lambda, iterator method, async method, or dynamic-sites. + + + + + Dynamic call-site delegate, for call-sites that do not + match System.Action or System.Func signatures. + + + + + Represents an interactive code entry point that is inserted into the compilation if there is not an existing one. + + + + + Represents __value field of an enum. + + + + + Event accessor that has been synthesized for a field-like event declared in source. + + + Associated with . + + + + + Represents a compiler generated field. + + + Represents a compiler generated field of given type and name. + + + + + Represents a compiler generated field or captured variable. + + + + + Represents a compiler generated synthesized method symbol + that must be emitted in the compiler generated + PrivateImplementationDetails class + + + + + Synthesized methods that must be emitted in the compiler generated + PrivateImplementationDetails class have null containing type symbol. + + + + + A base class for synthesized methods that want a this parameter. + + + + + Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. + This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. + + + + + A synthesized local variable. + + + + + Represents a simple compiler generated parameter of a given type. + + + + + For each parameter of a source method, construct a corresponding synthesized parameter + for a destination method. + + Has parameters. + Needs parameters. + Synthesized parameters to add to destination method. + + + + A type parameter for a synthesized class or method. + + + + + Utility class for substituting actual type arguments for formal generic type parameters. + + + + + The effective "bounds" of a type parameter: the constraint types, effective + interface set, and effective base type, determined from the declared + constraints, with any cycles removed. The fields are exposed by the + TypeParameterSymbol as ConstraintTypes, Interfaces, and BaseType. + + + + + The type parameters, classes, and interfaces explicitly declared as + constraint types on the containing type parameter, with cycles removed. + + + + + The set of interfaces explicitly declared on the containing type + parameter and any type parameters on which the containing + type parameter depends, with duplicates removed. + + + + + As defined in 10.1.5 of the specification. + + + + + The "exact" effective base type. + In the definition of effective base type we abstract some concrete types to their base classes: + * For each constraint of T that is a struct-type, R contains System.ValueType. + * For each constraint of T that is an enumeration type, R contains System.Enum. + * For each constraint of T that is a delegate type, R contains System.Delegate. + * For each constraint of T that is an array type, R contains System.Array. + * For each constraint of T that is a class-type C, R contains type C' which is constructed + from C by replacing all occurrences of dynamic with object. + The reason is that the CLR doesn't support operations on generic parameters that would be needed + to work with these types. For example, ldelem instruction requires the receiver to be a specific array, + not a type parameter constrained to be an array. + + When computing the deduced type we don't perform this abstraction. We keep the original constraint T. + Deduced base type is used to check that consistency rules are satisfied. + + + + + A TypeSymbol is a base class for all the symbols that represent a type + in C#. + + + + + A comparator that treats dynamic and object as "the same" types. + + + + + The original definition of this symbol. If this symbol is constructed from another + symbol by type substitution then OriginalDefinition gets the original symbol as it was defined in + source or metadata. + + + + + Gets the BaseType of this type. If the base type could not be determined, then + an instance of ErrorType is returned. If this kind of type does not have a base type + (for example, interfaces), null is returned. Also the special class System.Object + always has a BaseType of null. + + + + + Gets the set of interfaces that this type directly implements. This set does not include + interfaces that are base interfaces of directly implemented interfaces. + + + + + The list of all interfaces of which this type is a declared subtype, excluding this type + itself. This includes all declared base interfaces, all declared base interfaces of base + types, and all declared base interfaces of those results (recursively). Each result + appears exactly once in the list. This list is topologically sorted by the inheritance + relationship: if interface type A extends interface type B, then A precedes B in the + list. This is not quite the same as "all interfaces of which this type is a proper + subtype" because it does not take into account variance: AllInterfaces for + IEnumerable<string> will not include IEnumerable<object> + + + + + If this is a type parameter returns its effective base class, otherwise returns this type. + + + + + Returns true if this type derives from a given type. + + + + + Returns true if this type is equal or derives from a given type. + + + + + Determines if this type symbol represent the same type as another, according to the language + semantics. + + The other type. + True to compare without regard to custom modifiers, false by default. + True to ignore the distinction between object and dynamic, false by default. + True if the types are equivalent. + + + + We ignore custom modifiers, and the distinction between dynamic and object, when computing a type's hash code. + + + + + Produce all implemented interfaces in topologically sorted order. We use + TypeSymbol.Interfaces as the source of edge data, which has had cycles and infinitely + long dependency cycles removed. Consequently, it is possible (and we do) use the + simplest version of Tarjan's topological sorting algorithm. + + + + Gets the set of interfaces that this type directly implements, plus the base interfaces + of all such types. + + + CONSIDER: it probably isn't truly necessary to cache this. If space gets tight, consider + alternative approaches (recompute every time, cache on the side, only store on some types, + etc). + + + + + Returns the corresponding symbol in this type or a base type that implements + interfaceMember (either implicitly or explicitly), or null if no such symbol exists + (which might be either because this type doesn't implement the container of + interfaceMember, or this type doesn't supply a member that successfully implements + interfaceMember). + + + Must be a non-null interface property, method, or event. + + + + + Returns true if this type is known to be a reference type. It is never the case that + IsReferenceType and IsValueType both return true. However, for an unconstrained type + parameter, IsReferenceType and IsValueType will both return false. + + + + + Returns true if this type is known to be a value type. It is never the case that + IsReferenceType and IsValueType both return true. However, for an unconstrained type + parameter, IsReferenceType and IsValueType will both return false. + + + + + Gets the kind of this type. + + + + + Gets corresponding special TypeId of this type. + + + Not preserved in types constructed from this one. + + + + + Gets corresponding primitive type code for this type declaration. + + + + + Return error code that has highest priority while calculating use site error for this symbol. + + + + + Is this a symbol for an anonymous type (including delegate). + + + + + Is this type a managed type (false for everything but enum, pointer, and + some struct types). + + + See Type::computeManagedType. + + + + + Performs interface mapping (spec 13.4.4). + + + CONSIDER: we could probably do less work in the metadata and retargeting cases - we won't use the diagnostics. + + A non-null property on an interface type. + The type implementing the interface property (usually "this"). + Bag to which to add diagnostics. + The implementing property or null, if there isn't one. + + + + Since dev11 didn't expose a symbol API, it had the luxury of being able to accept a base class's claim that + it implements an interface. Roslyn, on the other hand, needs to be able to point to an implementing symbol + for each interface member. + + DevDiv #718115 was triggered by some unusual metadata in a Microsoft reference assembly (Silverlight System.Windows.dll). + The issue was that a type explicitly implemented the accessors of an interface event, but did not tie them together with + an event declaration. To make matters worse, it declared its own protected event with the same name as the interface + event (presumably to back the explicit implementation). As a result, when Roslyn was asked to find the implementing member + for the interface event, it found the protected event and reported an appropriate diagnostic. Would it should have done + (and does do now) is recognize that no event associated with the accessors explicitly implementing the interface accessors + and returned null. + + We resolved this issue by introducing a new step into the interface mapping algorithm: after failing to find an explicit + implementation in a type, but before searching for an implicit implementation in that type, check for an explicit implementation + of an associated accessor. If there is such an implementation, then immediately return the associated property or event, + even if it is null. That is, never attempt to find an implicit implementation for an interface property or event with an + explicitly implemented accessor. + + + + + If we were looking for an accessor, then look for an accessor on the implementation of the + corresponding interface property/event. If it is valid as an implementation (ignoring the name), + then prefer it to our current result if: + 1) our current result is null; or + 2) our current result is on the same type. + + If there is no corresponding accessor on the implementation of the corresponding interface + property/event and we found an accessor, then the accessor we found is invalid, so clear it. + + + + + These diagnostics are for members that do implicitly implement an interface member, but do so + in an undesirable way. + + + + + These diagnostics are for members that almost, but not actually, implicitly implement an interface member. + + + + + Search the declared members of a type for one that could be an implementation + of a given interface member (depending on interface declarations). + + The interface member being implemented. + True if the implementing type is from some compilation (i.e. not from metadata). + The type on which we are looking for a declared implementation of the interface member. + A member on currType that could implement the interface, or null. + A member on currType that could have been an attempt to implement the interface, or null. + + There is some similarity between this member and MemberSymbol.FindOverriddenOrHiddenMembersInType. + When making changes to this member, think about whether or not they should also be applied in MemberSymbol. + One key difference is that custom modifiers are considered when looking up overridden members, but + not when looking up implicit implementations. We're preserving this behavior from Dev10. + + + + + To implement an interface member, a candidate member must be public, non-static, and have + the same signature. "Have the same signature" has a looser definition if the type implementing + the interface is from source. + + + PROPERTIES: + NOTE: we're not checking whether this property has at least the accessors + declared in the interface. Dev10 considers it a match either way and, + reports failure to implement accessors separately. + + If the implementing type (i.e. the type with the interface in its interface + list) is in source, then we can ignore custom modifiers in/on the property + type because they will be copied into the bridge property that explicitly + implements the interface property (or they would be, if we created such + a bridge property). Bridge *methods* (not properties) are inserted in + SourceNamedTypeSymbol.ImplementInterfaceMember. + + CONSIDER: The spec for interface mapping (13.4.4) could be interpreted to mean that this + property is not an implementation unless it has an accessor for each accessor of the + interface property. For now, we prefer to represent that case as having an implemented + property and an unimplemented accessor because it makes finding accessor implementations + much easier. If we decide that we want the API to report the property as unimplemented, + then it might be appropriate to keep current result internally and just check the accessors + before returning the value from the public API (similar to the way MethodSymbol.OverriddenMethod + filters MethodSymbol.OverriddenOrHiddenMembers. + + + + + The set of abstract members in declared in this type or declared in a base type and not overridden. + + + + + Represents the method by which this type implements a given interface type + and/or the corresponding diagnostics. + + + + + Determines if the given type is a valid attribute parameter type. + + Type to validated + compilation + + + + + Gets the typed constant kind for the given attribute parameter type. + + Type to validated + compilation + TypedConstantKind for the attribute parameter type. + + + + return true if the type is constructed from System.Linq.Expressions.Expression`1 + + + + + return true if the type is constructed from a generic interface that + might be implemented by an array. + + + + + Return the default value constant for the given type, + or null if the default value is not a constant. + + + + + Visit the given type and, in the case of compound types, visit all "sub type" + (such as A in A[], or { A<T>, T, U } in A<T>.B<U>) invoking 'predicate' + with the type and 'arg' at each sub type. If the predicate returns true for any type, + traversal stops and that type is returned from this method. Otherwise if traversal + completes without the predicate returning true for any type, this method returns null. + + + + + (null TypeParameterSymbol "parameter"): Checks if the given type is a type parameter + or its referent type is a type parameter (array/pointer) or contains a type parameter (aggregate type) + (non-null TypeParameterSymbol "parameter"): above + also checks if the type parameter + is the same as "parameter" + + + + + Return true if the type contains any dynamic type reference. + + + + + Guess the non-error type that the given type was intended to represent. + If the type itself is not an error type, then it will be returned. + Otherwise, the underlying type (if any) of the error type will be + returned. + + + Any non-null type symbol returned is guaranteed not to be an error type. + + It is possible to pass in a constructed type and received back an + unconstructed type. This can occur when the type passed in was + constructed from an error type - the underlying definition will be + available, but there won't be a good way to "re-substitute" back up + to the level of the specified type. + + + + + Guess the non-error type kind that the given type was intended to represent, + if possible. If not, return TypeKind.Error. + + + + + Returns true if the type is a valid switch expression type. + + + + + Returns true if the type is one of the restricted types, namely: , + , or . + + + + + Add this instance to the set of checked types. Returns true + if this was added, false if the type was already in the set. + + + + + These special types are structs that contain fields of the same type + (e.g. contains an instance field of type ). + + + + + Compute a hash code for the constructed type. The return value will be + non-zero so callers can used zero to represent an uninitialized value. + + + + + If we are in a COM PIA with embedInteropTypes enabled we should turn properties and methods + that have the type and return type of object, respectively, into type dynamic. If the requisite conditions + are fulfilled, this method returns a dynamic type. If not, it returns the original type. + + A property type or method return type to be checked for dynamification. + Containing type. + + + + + Type variables are never considered reference types by the verifier. + + + + + Type variables are never considered value types by the verifier. + + + + + Return all of the type parameters in this type and enclosing types, + from outer-most to inner-most type. + + + + + Return all of the type parameters in this type and enclosing types, + from outer-most to inner-most type. + + + + + Return the nearest type parameter with the given name in + this type or any enclosing type. + + + + + Return true if the fully qualified name of the type's containing symbol + matches the given name. This method avoids string concatenations + in the common case where the type is a top-level type. + + + + + Count the custom modifiers within the specified TypeSymbol. + Potentially non-zero for arrays, pointers, and generic instantiations. + + + + + Check for custom modifiers within the specified TypeSymbol. + Potentially true for arrays, pointers, and generic instantiations. + + + A much less efficient implementation would be CustomModifierCount() == 0. + CONSIDER: Could share a backing method with CustomModifierCount. + + + + + Return true if this type can unify with the specified type + (i.e. is the same for some substitution of type parameters). + + + + + Used when iterating through base types in contexts in which the caller needs to avoid cycles and can't use BaseType + (perhaps because BaseType is in the process of being computed) + + + + + + + + + + Extract type under assumption that there should be no custom modifiers. + The method asserts otherwise. + + + + + This class groups together all of the functionality needed to check for error CS1961, ERR_UnexpectedVariance. + Its functionality is accessible through the NamedTypeSymbol extension method CheckInterfaceVarianceSafety and + the MethodSymbol extension method CheckMethodVarianceSafety (for checking delegate Invoke). + + + + + Accumulate diagnostics related to the variance safety of an interface. + + + + + Accumulate diagnostics related to the variance safety of a delegate. + + + + + Accumulate diagnostics related to the variance safety of an interface method. + + + + + Accumulate diagnostics related to the variance safety of an interface property. + + + + + Accumulate diagnostics related to the variance safety of an interface event. + + + + + Accumulate diagnostics related to the variance safety of an interface method/property parameter. + + + + + Accumulate diagnostics related to the variance safety of an interface method type parameters. + + + + + Returns true if the type is output-unsafe or input-unsafe, as defined in the C# spec. + Roughly, a type is output-unsafe if it could not be the return type of a method and + input-unsafe if it could not be a parameter type of a method. + + + This method is intended to match spec section 13.1.3.1 as closely as possible + (except that the output-unsafe and input-unsafe checks are merged). + + + + + 3) T is an interface, class, struct, enum, or delegate type ]]> constructed + from a generic type ]]> where for at least one A_i one + of the following holds: + a) X_i is covariant or invariant and A_i is output-unsafe [input-unsafe] + b) X_i is contravariant or invariant and A_i is input-unsafe [output-unsafe] (note: spec has "input-safe", but it's a typo) + + + Slight rewrite to make it more idiomatic for C#: + a) X_i is covariant and A_i is input-unsafe + b) X_i is contravariant and A_i is output-unsafe + c) X_i is invariant and A_i is input-unsafe or output-unsafe + + + + + Add an ERR_UnexpectedVariance diagnostic to the diagnostic bag. + + Diagnostic bag. + Type parameter that is not variance safe. + Context in which type is not variance safe (e.g. method). + Callback to provide location. + Callback argument. + Desired variance of type. + + + + Traverses the symbol table checking for CLS compliance. + + + + + Traverses the symbol table checking for CLS compliance. + + Compilation that owns the symbol table. + Will be supplemented with documentation comment diagnostics. + To stop traversing the symbol table early. + Only report diagnostics from this syntax tree, if non-null. + If and is non-null, report diagnostics within this span in the . + + + False if no further checks are required (because they would be cascading). + + + + BREAK: Dev11 reports WRN_CLS_ArrayArgumentToAttribute on all symbols, whereas roslyn reports it only + on accessible symbols. + + + + True if the symbol is okay (i.e. no warnings). + + + + NOTE: Dev11 behavior - First, it ignores arity, + which seems like a good way to disambiguate symbols (in particular, + CLS Rule 43 says that the name includes backtick-arity). Second, it + does not consider two members with identical names (i.e. not differing + in case) to collide. + + + + + This check (the only one that uses the "context" parameter is based on CLS Rule 46, + as implemented by LangCompiler::IsCLSAccessible. The idea is that C<int> and C<char> + are separate types in CLS, so they can't touch each other's protected members. + TODO: This should really have a separate error code - it's logically separate and requires explanation. + + Check the accessibility of this type (probably a parameter or return type). + Context for the accessibility check (e.g. containing type of method with as a parameter type. + + + + As in dev11, we ignore the fact that CLSCompliantAttribute is inherited (i.e. from the base type) + (see CSemanticChecker::CheckSymForCLS). This should only affect types where the syntactic parent + and the inheritance parent disagree. + + + + + Based on CompilationPass::CLSReduceSignature. + + + + + Traverses the symbol table processing XML documentation comments and optionally writing them to + a provided stream. + + + + + Traverses the symbol table processing XML documentation comments and optionally writing them to + a provided stream. + + Compilation that owns the symbol table. + Assembly name override, if specified. Otherwise the of the source assembly is used. + Stream to which XML will be written, if specified. + Will be supplemented with documentation comment diagnostics. + To stop traversing the symbol table early. + Only report diagnostics from this syntax tree, if non-null. + If and filterSpanWithinTree is non-null, report diagnostics within this span in the . + + + + Gets the XML that would be written to the documentation comment file for this assembly. + + The symbol for which to retrieve documentation comments. + True to treat includes as semantically meaningful (pull in contents from other files and bind crefs, etc). + To stop traversing the symbol table early. + + + + Write header, descend into members, and write footer. + + + + + Write own documentation comments and then descend into members. + + + + + Compile documentation comments on the symbol and write them to the stream if one is provided. + + + + + Loop over the DocumentationCommentTriviaSyntaxes. Gather + 1) concatenated XML, as a string; + 2) whether or not the XML is valid; + 3) set of type parameters covered by <typeparam> elements; + 4) set of parameters covered by <param> elements; + 5) list of <include> elements, as SyntaxNodes. + + True, if at least one documentation comment was processed; false, otherwise. + This was factored out for clarity, not because it's reusable. + + + + Similar to SymbolExtensions.GetParameters, but returns empty for unsupported symbols + and handles delegates. + + + + + Similar to SymbolExtensions.GetMemberTypeParameters, but returns empty for unsupported symbols. + + + + + A symbol requires a documentation comment if it was explicitly declared and + will be visible outside the current assembly (ignoring InternalsVisibleTo). + Exception: accessors do not require doc comments. + + + + + Get all of the DocumentationCommentTriviaSyntax associated with any declaring syntax of the + given symbol (except for partial methods, which only consider the part with the body). + + True if the nodes are all valid XML. + + + + Given the full text of a documentation comment, strip off the comment punctuation (///, /**, etc) + and add appropriate indentations. + + + + + Given a string, find the index of the first non-whitespace char. + + The string to search + The index of the first non-whitespace char in the string + + + + Find the first non-whitespace character in a given substring. + + The string to search + The start index + The last index (non-inclusive) + The index of the first non-whitespace char after index start in the string up to, but not including the end index + + + + Determine if the given string starts with the given prefix if whitespace + is first trimmed from the beginning. + + The string to search + The prefix + true if str.TrimStart().StartsWith(prefix) + + + + Given a string which may contain newline sequences, get the index of the first newline + sequence beginning at the given starting index. + + The string to split. + The starting index within the string. + The length of the newline sequence discovered. 0 if the end of the string was reached, otherwise either 1 or 2 chars + The index of the start of the first newline sequence following the start index + + + + Given the full text of a single-line style documentation comment, for each line, strip off + the comment punctuation (///) and add appropriate indentations. + + + + + Given the full text of a multi-line style documentation comment, broken into lines, strip off + the comment punctuation (/**, */, etc) and add appropriate indentations. + + + + + Remove "*/" and any following text, if it is present. + + + + + Return the longest prefix matching [whitespace]*[*][whitespace]*. + + + + + Return the longest common prefix of two strings + + + + + Bind a CrefSyntax and unwrap the result if it's an alias. + + + Does not respect DocumentationMode, so use a temporary bag if diagnostics are not desired. + + + + + Given a cref syntax that cannot be resolved, get the string that will be written to + the documentation file in place of a documentation comment ID. + + + + + Bind an XmlNameAttributeSyntax and update the sets of documented parameters and type parameters. + + + Does not respect DocumentationMode, so do not call unless diagnostics are desired. + + + + + WORKAROUND: + We're taking a dependency on the location and structure of a framework assembly resource. This is not a robust solution. + + Possible alternatives: + 1) Polish our XML parser until it matches MSXML. We don't want to reinvent the wheel. + 2) Build a map that lets us go from XML string positions back to source positions. + This is what the native compiler did, and it was a lot of work. We'd also still need to modify the message. + 3) Do not report a diagnostic. This is very unhelpful. + 4) Report a vague diagnostic (i.e. there's a problem somewhere in this doc comment). This is relatively unhelpful. + 5) Always report the message in English, so that we can pull it apart without needing to consume resource files. + This engenders a lot of ill will. + 6) Report the exception message without modification and (optionally) include the text with respect to which the + position is specified. This would not look sufficiently polished. + + + + + Walks a DocumentationCommentTriviaSyntax, binding the semantically meaningful parts + to produce diagnostics and to replace source crefs with documentation comment IDs. + + + + + Given a DocumentationCommentTriviaSyntax, return the full text, but with + documentation comment IDs substituted into crefs. + + + Still has all of the comment punctuation (///, /**, etc). + + + + + Rewrites nodes in , which is a snapshot of nodes from the original document. + We're mutating the tree as we rewrite, so it's important to grab a snapshot of the + nodes that we're going to reparent before we enumerate them. + + + + + This method boils down to Rewrite(XDocument.Load(fileAttrValue).XPathSelectElements(pathAttrValue)). + Everything else is error handling. + + + + + Respects the DocumentationMode at the source location. + + + + + Respects the DocumentationMode at the source location. + + + + + In some circumstances (e.g. implicit implementation of an interface method by a non-virtual method in a + base type from another assembly) it is necessary for the compiler to generate explicit implementations for + some interface methods. They don't go in the symbol table, but if we are emitting, then we should + generate code for them. + + + + + Synthesized parameterless constructors in structs chain to the "default" constructor + + + + + Bind the (implicit or explicit) constructor initializer of a constructor symbol. + + Constructor method. + Accumulates errors (e.g. access "this" in constructor initializer). + Used to retrieve binder. + A bound expression for the constructor initializer call. + + + + Returns true if the method is a constructor and has a this() constructor initializer. + + + + + Contains methods related to synthesizing bound nodes in initial binding + form that needs lowering, primarily method bodies for compiler-generated methods. + + + + + Generates a submission initialization part of a Script type constructor that represents an interactive submission. + + + The constructor takes a parameter of type Microsoft.CodeAnalysis.Scripting.Session - the session reference. + It adds the object being constructed into the session by calling Microsoft.CSharp.RuntimeHelpers.SessionHelpers.SetSubmission, + and retrieves strongly typed references on all previous submission script classes whose members are referenced by this submission. + The references are stored to fields of the submission (). + + + + + Construct a body for an auto-property accessor (updating or returning the backing field). + + + + + Generate an accessor for a field-like event. + + + + + Generate a thread-safe accessor for a WinRT field-like event. + + Add: + return EventRegistrationTokenTable<Event>.GetOrCreateEventRegistrationTokenTable(ref _tokenTable).AddEventHandler(value); + + Remove: + EventRegistrationTokenTable<Event>.GetOrCreateEventRegistrationTokenTable(ref _tokenTable).RemoveEventHandler(value); + + + + + Generate a thread-safe accessor for a regular field-like event. + + DelegateType tmp0 = _event; //backing field + DelegateType tmp1; + DelegateType tmp2; + do { + tmp1 = tmp0; + tmp2 = (DelegateType)Delegate.Combine(tmp1, value); //Remove for -= + tmp0 = Interlocked.CompareExchange<DelegateType>(ref _event, tmp2, tmp1); + } while ((object)tmp0 != (object)tmp1); + + Note, if System.Threading.Interlocked.CompareExchange<T> is not available, + we emit the following code and mark the method Synchronized (unless it is a struct). + + _event = (DelegateType)Delegate.Combine(_event, value); //Remove for -= + + + + + + Look for a base type method named "Finalize" that is protected (or protected internal), has no parameters, + and returns void. It doesn't need to be virtual or a destructor. + + + You may assume that this would share code and logic with PEMethodSymbol.OverridesRuntimeFinalizer, + but FUNCBRECCS::bindDestructor has its own loop that performs these checks (differently). + + + + + When compiling in metadata-only mode, is not run. This is problematic because + adds synthesized explicit implementations to the list of synthesized definitions. + In lieu of running , this class performs a quick + traversal of the symbol table and performs processing of synthesized symbols if necessary + + + + + Traverse the symbol table and call Module.AddSynthesizedDefinition for each + synthesized explicit implementation stub that has been generated (e.g. when the real + implementation doesn't have the appropriate custom modifiers). + + + + + Represents the state of compilation of one particular type. + This includes, for example, a collection of synthesized methods created during lowering. + + + WARNING: Note that the collection class is not thread-safe and will + need to be revised if emit phase is changed to support multithreading when + translating a particular type. + + + + Synthesized method info + + + Flat array of created methods, non-empty if not-null + + + + Map of wrapper methods created for base access of base type virtual methods from + other classes (like those created for lambdas...); actually each method symbol will + only need one wrapper to call it non-virtually. + + + + + Type symbol being compiled, or null if we compile a synthesized type that doesn't have a symbol (e.g. PrivateImplementationDetails). + + + + + The builder for generating code, or null if not in emit phase. + + + + + Any generated methods that don't suppress debug info will use this + list of debug imports. + + + + + A graph of method->method references for this(...) constructor initializers. + Used to detect and report initializer cycles. + + + + + The type for which this compilation state is being used. + + + + + The type passed to the runtime binder as context. + + + + + Add a 'regular' synthesized method. + + + + + Add a 'wrapper' synthesized method and map it to the original one so it can be reused. + + + Wrapper methods are created for base access of base type virtual methods from + other classes (like those created for lambdas...). + + + + The index of the next wrapped method to be used + + + + Get a 'wrapper' method for the original one. + + + Wrapper methods are created for base access of base type virtual methods from + other classes (like those created for lambdas...). + + + + Free resources allocated for this method collection + + + + Report an error if adding the edge (method1, method2) to the ctor-initializer + graph would add a new cycle to that graph. + + a calling ctor + the chained-to ctor + where to report a cyclic error if needed + a diagnostic bag for receiving the diagnostic + + + + Represents various options that affect compilation, such as + whether to emit an executable or a library, whether to optimize + generated code, and so on. + + + + + Allow unsafe regions (i.e. unsafe modifiers on members and unsafe blocks). + + + + + Global namespace usings. + + + + + Flags applied to the top-level binder created for each syntax tree in the compilation + as well as for the binder of global imports. + + + + + Insert one or more tokens in the list at the specified index. + + A new list with the tokens inserted. + + + + Creates a new token with the specified old trivia replaced with computed new trivia. + + + The trivia to be replaced; descendants of the root token. + A function that computes a replacement trivia for + the argument trivia. The first argument is the original trivia. The second argument is + the same trivia rewritten with replaced structure. + + + + Creates a new token with the specified old trivia replaced with a new trivia. The old trivia may appear in + the token's leading or trailing trivia. + + + The trivia to be replaced. + The new trivia to use in the new tree in place of the old + trivia. + + + + Returns this list as a . + + The type of the list elements in the separated list. + + + + + Gets the first directive of the tree rooted by this node. + + + + + Gets the last directive of the tree rooted by this node. + + + + + Gets the semantic information for an ordering clause in an orderby query clause. + + + + + Gets the semantic information associated with a select or group clause. + + + + + Returns what symbol(s), if any, the given expression syntax bound to in the program. + + An AliasSymbol will never be returned by this method. What the alias refers to will be + returned instead. To get information about aliases, call GetAliasInfo. + + If binding the type name C in the expression "new C(...)" the actual constructor bound to + will be returned (or all constructor if overload resolution failed). This occurs as long as C + unambiguously binds to a single type that has a constructor. If C ambiguously binds to multiple + types, or C binds to a static class, then type(s) are returned. + + + + + Returns what 'Add' method symbol(s), if any, corresponds to the given expression syntax + within . + + + + + Returns what symbol(s), if any, the given constructor initializer syntax bound to in the program. + + + + + Returns what symbol(s), if any, the given attribute syntax bound to in the program. + + + + + Gets the semantic information associated with a documentation comment cref. + + + + + Binds the expression in the context of the specified location and gets symbol information. + This method is used to get symbol information about an expression that did not actually + appear in the source code. + + + + + Binds the CrefSyntax expression in the context of the specified location and gets symbol information. + This method is used to get symbol information about an expression that did not actually + appear in the source code. + + + + + Bind the attribute in the context of the specified location and get semantic information + such as type, symbols and diagnostics. This method is used to get semantic information about an attribute + that did not actually appear in the source code. + + + + + Bind the constructor initializer in the context of the specified location and get semantic information + such as type, symbols and diagnostics. This method is used to get semantic information about a constructor + initializer that did not actually appear in the source code. + + NOTE: This will only work in locations where there is already a constructor initializer. + + + + + Gets type information about a constructor initializer. + + + + + Gets type information about an expression. + + + + + Gets type information about an attribute. + + + + + Binds the expression in the context of the specified location and gets type information. + This method is used to get type information about an expression that did not actually + appear in the source code. + + + + + Returns the list of accessible, non-hidden indexers that could be invoked with the given expression as receiver. + + + + + Gets the semantic information associated with a query clause. + + + + + If resolves to an alias name, return the AliasSymbol corresponding + to A. Otherwise return null. + + + + + Binds the name in the context of the specified location and sees if it resolves to an + alias name. If it does, return the AliasSymbol corresponding to it. Otherwise, return null. + + + + + Analyze control-flow within a part of a method body. + + + + + Analyze control-flow within a part of a method body. + + + + + Analyze data-flow within an expression. + + + + + Analyze data-flow within a part of a method body. + + + + + Analyze data-flow within a part of a method body. + + + + + Get a SemanticModel object that is associated with a method body that did not appear in this source code. + Given must lie within an existing method body of the Root syntax node for this SemanticModel. + Locals and labels declared within this existing method body are not considered to be in scope of the speculated method body. + + + + + Get a SemanticModel object that is associated with a method body that did not appear in this source code. + Given must lie within an existing method body of the Root syntax node for this SemanticModel. + Locals and labels declared within this existing method body are not considered to be in scope of the speculated method body. + + + + + Get a SemanticModel object that is associated with a type syntax node that did not appear in + this source code. This can be used to get detailed semantic information about sub-parts + of a type syntax that did not appear in source code. + + + + + Get a SemanticModel object that is associated with a cref syntax node that did not appear in + this source code. This can be used to get detailed semantic information about sub-parts + of a cref syntax that did not appear in source code. + + + + + Get a SemanticModel object that is associated with a statement that did not appear in + this source code. This can be used to get detailed semantic information about sub-parts + of a statement that did not appear in source code. + + + + + Get a SemanticModel object that is associated with an initializer that did not appear in + this source code. This can be used to get detailed semantic information about sub-parts + of a field initializer or default parameter value that did not appear in source code. + + + + + Get a SemanticModel object that is associated with an expression body that did not appear in + this source code. This can be used to get detailed semantic information about sub-parts + of an expression body that did not appear in source code. + + + + + Get a SemanticModel object that is associated with a constructor initializer that did not appear in + this source code. This can be used to get detailed semantic information about sub-parts + of a constructor initializer that did not appear in source code. + + NOTE: This will only work in locations where there is already a constructor initializer. + + + + + Get a SemanticModel object that is associated with an attribute that did not appear in + this source code. This can be used to get detailed semantic information about sub-parts + of an attribute that did not appear in source code. + + + + + Determines what type of conversion, if any, would be used if a given expression was + converted to a given type. If isExplicitInSource is true, the conversion produced is + that which would be used if the conversion were done for a cast expression. + + + + + Determines what type of conversion, if any, would be used if a given expression was + converted to a given type. If isExplicitInSource is true, the conversion produced is + that which would be used if the conversion were done for a cast expression. + + + + + Given a member declaration syntax, get the corresponding symbol. + + + + + Given a namespace declaration syntax node, get the corresponding namespace symbol for + the declaration assembly. + + + + + Given a type declaration, get the corresponding type symbol. + + + + + Given a delegate declaration, get the corresponding type symbol. + + + + + Given a enum member declaration, get the corresponding field symbol. + + + + + Given a base method declaration syntax, get the corresponding method symbol. + + + + + Given a syntax node that declares a property, indexer or an event, get the corresponding declared symbol. + + + + + Given a syntax node that declares a property, get the corresponding declared symbol. + + + + + Given a syntax node that declares an indexer, get the corresponding declared symbol. + + + + + Given a syntax node that declares a (custom) event, get the corresponding event symbol. + + + + + Given a syntax node of anonymous object creation initializer, get the anonymous object property symbol. + + + + + Given a syntax node of anonymous object creation expression, get the anonymous object type symbol. + + + + + Given a syntax node that declares a property or member accessor, get the corresponding symbol. + + + + + Given a variable declarator syntax, get the corresponding symbol. + + + + + Given a labeled statement syntax, get the corresponding label symbol. + + + + + Given a switch label syntax, get the corresponding label symbol. + + + + + Given a using declaration get the corresponding symbol for the using alias that was introduced. + + + + + Given an extern alias declaration get the corresponding symbol for the alias that was introduced. + + + + + Given a parameter declaration syntax node, get the corresponding symbol. + + + + + Given a type parameter declaration (field or method), get the corresponding symbol + + + + + Given a foreach statement, get the symbol for the iteration variable + + + + + Given a catch declaration, get the symbol for the exception variable + + + + + Get the query range variable declared in a join into clause. + + + + + Get the query range variable declared in a query continuation clause. + + + + + Emit the IL for the compilation into the specified stream. + + Compilation. + Path of the file to which the PE image will be written. + Path of the file to which the compilation's debug info will be written. + Also embedded in the output file. Null to forego PDB generation. + + Path of the file to which the compilation's XML documentation will be written. Null to forego XML generation. + Path of the file from which the compilation's Win32 resources will be read (in RES format). + Null to indicate that there are none. + List of the compilation's managed resources. Null to indicate that there are none. + To cancel the emit process. + Compilation or path is null. + Path is empty or invalid. + An error occurred while reading or writing a file. + + + + This class stores several source parsing related options and offers access to their values. + + + + + The default parse options. + + + + + Gets the language version. + + + + + Gets the names of defined preprocessor symbols. + + + + + Enable some experimental language features for testing. + + + + + A strongly-typed resource class, for looking up localized strings, etc. + + + + + Returns the cached ResourceManager instance used by this class. + + + + + Overrides the current thread's CurrentUICulture property for all + resource lookups using this strongly typed resource class. + + + + + Looks up a localized string similar to Can't reference compilation of type '{0}' from {1} compilation.. + + + + + Looks up a localized string similar to Chaining speculative semantic model is not supported. You should create a speculative model from the non-speculative ParentModel.. + + + + + Looks up a localized string similar to Compilation (C#): . + + + + + Looks up a localized string similar to Could not find file.. + + + + + Looks up a localized string similar to element is expected. + + + + + Looks up a localized string similar to Elements cannot be null.. + + + + + Looks up a localized string similar to '{0}' cannot be both extern and abstract. + + + + + Looks up a localized string similar to '{0}' cannot be both abstract and sealed. + + + + + Looks up a localized string similar to Cannot apply attribute class '{0}' because it is abstract. + + + + + Looks up a localized string similar to Cannot call an abstract base member: '{0}'. + + + + + Looks up a localized string similar to '{0}': abstract event cannot have initializer. + + + + + Looks up a localized string similar to The modifier 'abstract' is not valid on fields. Try using a property instead.. + + + + + Looks up a localized string similar to '{0}' cannot declare a body because it is marked abstract. + + + + + Looks up a localized string similar to '{0}' is abstract but it is contained in non-abstract class '{1}'. + + + + + Looks up a localized string similar to The abstract method '{0}' cannot be marked virtual. + + + + + Looks up a localized string similar to '{0}': an abstract class cannot be sealed or static. + + + + + Looks up a localized string similar to '{0}': accessibility modifiers on accessors may only be used if the property or indexer has both a get and a set accessor. + + + + + Looks up a localized string similar to Accessor '{0}' cannot implement interface member '{1}' for type '{2}'. Use an explicit interface implementation.. + + + + + Looks up a localized string similar to Properties cannot combine accessor lists with expression bodies.. + + + + + Looks up a localized string similar to '{0}' cannot be added to this assembly because it already is an assembly. + + + + + Looks up a localized string similar to An add or remove accessor expected. + + + + + Looks up a localized string similar to An add or remove accessor must have a body. + + + + + Looks up a localized string similar to Cannot take the address of a read-only local variable. + + + + + Looks up a localized string similar to Agnostic assembly cannot have a processor specific module '{0}'.. + + + + + Looks up a localized string similar to Invalid reference alias option: '{0}=' -- missing filename. + + + + + Looks up a localized string similar to Alias '{0}' not found. + + + + + Looks up a localized string similar to The namespace alias qualifier '::' always resolves to a type or namespace so is illegal here. Consider using '.' instead.. + + + + + Looks up a localized string similar to An alias-qualified name is not an expression.. + + + + + Looks up a localized string similar to Operator '{0}' is ambiguous on operands of type '{1}' and '{2}'. + + + + + Looks up a localized string similar to The call is ambiguous between the following methods or properties: '{0}' and '{1}'. + + + + + Looks up a localized string similar to '{0}' is an ambiguous reference between '{1}' and '{2}'. + + + + + Looks up a localized string similar to Ambiguity between '{0}' and '{1}'. + + + + + Looks up a localized string similar to The inherited members '{0}' and '{1}' have the same signature in type '{2}', so they cannot be overridden. + + + + + Looks up a localized string similar to Type of conditional expression cannot be determined because '{0}' and '{1}' implicitly convert to one another. + + + + + Looks up a localized string similar to Ambiguous user defined conversions '{0}' and '{1}' when converting from '{2}' to '{3}'. + + + + + Looks up a localized string similar to Operator '{0}' is ambiguous on an operand of type '{1}'. + + + + + Looks up a localized string similar to '{0}' is ambiguous between '{1}' and '{2}'; use either '@{0}' or '{0}Attribute'. + + + + + Looks up a localized string similar to Cannot use ref or out parameter '{0}' inside an anonymous method, lambda expression, or query expression. + + + + + Looks up a localized string similar to Foreach cannot operate on a '{0}'. Did you intend to invoke the '{0}'?. + + + + + Looks up a localized string similar to Cannot convert {0} to type '{1}' because it is not a delegate type. + + + + + Looks up a localized string similar to An anonymous method expression cannot be converted to an expression tree. + + + + + Looks up a localized string similar to Not all code paths return a value in {0} of type '{1}'. + + + + + Looks up a localized string similar to An anonymous type cannot have multiple properties with the same name. + + + + + Looks up a localized string similar to Cannot use anonymous type in a constant expression. + + + + + Looks up a localized string similar to Cannot assign {0} to anonymous type property. + + + + + Looks up a localized string similar to The __arglist construct is valid only within a variable argument method. + + + + + Looks up a localized string similar to Array elements cannot be of type '{0}'. + + + + + Looks up a localized string similar to A nested array initializer is expected. + + + + + Looks up a localized string similar to An array initializer of length '{0}' is expected. + + + + + Looks up a localized string similar to Array initializers can only be used in a variable or field initializer. Try using a new expression instead.. + + + + + Looks up a localized string similar to Can only use array initializer expressions to assign to array types. Try using a new expression instead.. + + + + + Looks up a localized string similar to '{0}': array elements cannot be of static type. + + + + + Looks up a localized string similar to Array size cannot be specified in a variable declaration (try initializing with a 'new' expression). + + + + + Looks up a localized string similar to The as operator must be used with a reference type or nullable type ('{0}' is a non-nullable value type). + + + + + Looks up a localized string similar to Assembly '{0}' with identity '{1}' uses '{2}' which has a higher version than referenced assembly '{3}' with identity '{4}'. + + + + + Looks up a localized string similar to The /moduleassemblyname option may only be specified when building a target type of 'module'. + + + + + Looks up a localized string similar to Assemblies '{0}' and '{1}' refer to the same metadata but only one is a linked reference (specified using /link option); consider removing one of the references.. + + + + + Looks up a localized string similar to The left-hand side of an assignment must be a variable, property or indexer. + + + + + Looks up a localized string similar to A readonly field cannot be assigned to (except in a constructor or a variable initializer). + + + + + Looks up a localized string similar to Members of readonly field '{0}' cannot be modified (except in a constructor or a variable initializer). + + + + + Looks up a localized string similar to Cannot assign to '{0}' because it is read-only. + + + + + Looks up a localized string similar to Cannot modify members of '{0}' because it is a '{1}'. + + + + + Looks up a localized string similar to Cannot assign to '{0}' because it is a '{1}'. + + + + + Looks up a localized string similar to Property or indexer '{0}' cannot be assigned to -- it is read only. + + + + + Looks up a localized string similar to A static readonly field cannot be assigned to (except in a static constructor or a variable initializer). + + + + + Looks up a localized string similar to Fields of static readonly field '{0}' cannot be assigned to (except in a static constructor or a variable initializer). + + + + + Looks up a localized string similar to The type parameter '{0}' cannot be used with the 'as' operator because it does not have a class type constraint nor a 'class' constraint. + + + + + Looks up a localized string similar to '{0}': an attribute argument cannot use type parameters. + + + + + Looks up a localized string similar to Cannot apply attribute class '{0}' because it is generic. + + + + + Looks up a localized string similar to Attribute '{0}' is not valid on property or event accessors. It is only valid on '{1}' declarations.. + + + + + Looks up a localized string similar to Attribute '{0}' is not valid on this declaration type. It is only valid on '{1}' declarations.. + + + + + Looks up a localized string similar to Attribute parameter '{0}' must be specified.. + + + + + Looks up a localized string similar to Attribute parameter '{0}' or '{1}' must be specified.. + + + + + Looks up a localized string similar to Attributes are not valid in this context.. + + + + + Looks up a localized string similar to Attribute '{0}' is only valid on classes derived from System.Attribute. + + + + + Looks up a localized string similar to Auto-implemented properties inside interfaces cannot have initializers.. + + + + + Looks up a localized string similar to Auto-implemented properties must have get accessors.. + + + + + Looks up a localized string similar to Auto-implemented properties must override all accessors of the overridden property.. + + + + + Looks up a localized string similar to Cannot await in an unsafe context. + + + + + Looks up a localized string similar to '{0}' is inaccessible due to its protection level. + + + + + Looks up a localized string similar to AppConfigPath must be absolute.. + + + + + Looks up a localized string similar to No overload for method '{0}' takes {1} arguments. + + + + + Looks up a localized string similar to Argument {0} may not be passed with the '{1}' keyword. + + + + + Looks up a localized string similar to Argument {0} must be passed with the '{1}' keyword. + + + + + Looks up a localized string similar to Argument {0}: cannot convert from '{1}' to '{2}'. + + + + + Looks up a localized string similar to '{0}' has no applicable method named '{1}' but appears to have an extension method by that name. Extension methods cannot be dynamically dispatched. Consider casting the dynamic arguments or calling the extension method without the extension method syntax.. + + + + + Looks up a localized string similar to The best overloaded Add method '{0}' for the collection initializer has some invalid arguments. + + + + + Looks up a localized string similar to The argument to the '{0}' attribute must be a valid identifier. + + + + + Looks up a localized string similar to Using the generic {1} '{0}' requires {2} type arguments. + + + + + Looks up a localized string similar to Array type specifier, [], must appear before parameter name. + + + + + Looks up a localized string similar to Async methods cannot have ref or out parameters. + + + + + Looks up a localized string similar to Async lambda expressions cannot be converted to expression trees. + + + + + Looks up a localized string similar to The 'async' modifier can only be used in methods that have a body.. + + + + + Looks up a localized string similar to The return type of an async method must be void, Task or Task<T>. + + + + + Looks up a localized string similar to Since this is an async method, the return expression must be of type '{0}' rather than 'Task<{0}>'. + + + + + Looks up a localized string similar to An attribute argument must be a constant expression, typeof expression or array creation expression of an attribute parameter type. + + + + + Looks up a localized string similar to Attribute constructor parameter '{0}' is optional, but no default parameter value was specified.. + + + + + Looks up a localized string similar to Attribute constructor parameter '{0}' has type '{1}', which is not a valid attribute parameter type. + + + + + Looks up a localized string similar to 'await' requires that the type {0} have a suitable GetAwaiter method. + + + + + Looks up a localized string similar to 'await' requires that the type '{0}' have a suitable GetAwaiter method. Are you missing a using directive for 'System'?. + + + + + Looks up a localized string similar to Cannot await '{0}'. + + + + + Looks up a localized string similar to Cannot await 'void'. + + + + + Looks up a localized string similar to 'await' cannot be used as an identifier within an async method or lambda expression. + + + + + Looks up a localized string similar to 'await' requires that the return type '{0}' of '{1}.GetAwaiter()' have suitable IsCompleted, OnCompleted, and GetResult members, and implement INotifyCompletion or ICriticalNotifyCompletion. + + + + + Looks up a localized string similar to Cannot await in a catch clause. + + + + + Looks up a localized string similar to Cannot await in the filter expression of a catch clause. + + + + + Looks up a localized string similar to Cannot await in the body of a finally clause. + + + + + Looks up a localized string similar to Cannot await in the body of a lock statement. + + + + + Looks up a localized string similar to The 'await' operator may only be used in a query expression within the first collection expression of the initial 'from' clause or within the collection expression of a 'join' clause. + + + + + Looks up a localized string similar to The 'await' operator cannot be used in a static script variable initializer.. + + + + + Looks up a localized string similar to The 'await' operator can only be used when contained within a method or lambda expression marked with the 'async' modifier. + + + + + Looks up a localized string similar to The 'await' operator can only be used within an async {0}. Consider marking this {0} with the 'async' modifier.. + + + + + Looks up a localized string similar to The 'await' operator can only be used within an async method. Consider marking this method with the 'async' modifier and changing its return type to 'Task<{0}>'.. + + + + + Looks up a localized string similar to The 'await' operator can only be used within an async method. Consider marking this method with the 'async' modifier and changing its return type to 'Task'.. + + + + + Looks up a localized string similar to Invalid image base number '{0}'. + + + + + Looks up a localized string similar to Invalid base type. + + + + + Looks up a localized string similar to One of the parameters of a binary operator must be the containing type. + + + + + Looks up a localized string similar to Operator '{0}' cannot be applied to operands of type '{1}' and '{2}'. + + + + + Looks up a localized string similar to Overloaded binary operator '{0}' takes two parameters. + + + + + Looks up a localized string similar to In order to be applicable as a short circuit operator a user-defined logical operator ('{0}') must have the same return type and parameter types. + + + + + Looks up a localized string similar to '{0}' is not a valid constraint. A type used as a constraint must be an interface, a non-sealed class or a type parameter.. + + + + + Looks up a localized string similar to The CallerFilePathAttribute may only be applied to parameters with default values. + + + + + Looks up a localized string similar to The CallerLineNumberAttribute may only be applied to parameters with default values. + + + + + Looks up a localized string similar to The CallerMemberNameAttribute may only be applied to parameters with default values. + + + + + Looks up a localized string similar to The right hand side of a fixed statement assignment may not be a cast expression. + + + + + Looks up a localized string similar to The managed coclass wrapper class signature '{0}' for interface '{1}' is not a valid class name signature. + + + + + Looks up a localized string similar to Invalid option '{0}' for /langversion; must be ISO-1, ISO-2, Default or an integer in range 1 to 6.. + + + + + Looks up a localized string similar to {0}. + + + + + Looks up a localized string similar to Invalid '{0}' value: '{1}'.. + + + + + Looks up a localized string similar to Invalid constraint type. A type used as a constraint must be an interface, a non-sealed class or a type parameter.. + + + + + Looks up a localized string similar to The type '{0}' cannot be declared const. + + + + + Looks up a localized string similar to '{0}' does not contain a constructor that takes {1} arguments. + + + + + Looks up a localized string similar to Invalid option '{0}' for /debug; must be full or pdbonly. + + + + + Looks up a localized string similar to Delegate '{0}' does not take {1} arguments. + + + + + Looks up a localized string similar to The delegate '{0}' does not have a valid constructor. + + + + + Looks up a localized string similar to Control cannot leave the body of an anonymous method or lambda expression. + + + + + Looks up a localized string similar to Name of destructor must match name of class. + + + + + Looks up a localized string similar to Preprocessor directives must appear as the first non-whitespace character on a line. + + + + + Looks up a localized string similar to '{0}': user-defined conversions to or from the dynamic type are not allowed. + + + + + Looks up a localized string similar to Cannot use an expression of type '{0}' as an argument to a dynamically dispatched operation.. + + + + + Looks up a localized string similar to Cannot use a lambda expression as an argument to a dynamically dispatched operation without first casting it to a delegate or expression tree type.. + + + + + Looks up a localized string similar to Cannot use a method group as an argument to a dynamically dispatched operation. Did you intend to invoke the method?. + + + + + Looks up a localized string similar to Query expressions over source type 'dynamic' or with a join sequence of type 'dynamic' are not allowed. + + + + + Looks up a localized string similar to The typeof operator cannot be used on the dynamic type. + + + + + Looks up a localized string similar to Embedded statement cannot be a declaration or labeled statement. + + + + + Looks up a localized string similar to A throw statement with no arguments is not allowed outside of a catch clause. + + + + + Looks up a localized string similar to A throw statement with no arguments is not allowed in a finally clause that is nested inside the nearest enclosing catch clause. + + + + + Looks up a localized string similar to The event '{0}' can only appear on the left hand side of += or -= (except when used from within the type '{1}'). + + + + + Looks up a localized string similar to The event '{0}' can only appear on the left hand side of += or -=. + + + + + Looks up a localized string similar to The type caught or thrown must be derived from System.Exception. + + + + + Looks up a localized string similar to Extension method must be defined in a non-generic static class. + + + + + Looks up a localized string similar to '{0}' does not contain a definition for '{1}' and the best extension method overload '{2}' has some invalid arguments. + + + + + Looks up a localized string similar to Extension method must be static. + + + + + Looks up a localized string similar to The extern alias '{0}' was not specified in a /reference option. + + + + + Looks up a localized string similar to Invalid extern alias for '/reference'; '{0}' is not a valid identifier. + + + + + Looks up a localized string similar to Control cannot leave the body of a finally clause. + + + + + Looks up a localized string similar to The type of a local declared in a fixed statement must be a pointer type. + + + + + Looks up a localized string similar to Type and identifier are both required in a foreach statement. + + + + + Looks up a localized string similar to foreach requires that the return type '{0}' of '{1}' must have a suitable public MoveNext method and public Current property. + + + + + Looks up a localized string similar to The return type for ++ or -- operator must match the parameter type or be derived from the parameter type. + + + + + Looks up a localized string similar to The parameter type for ++ or -- operator must be the containing type. + + + + + Looks up a localized string similar to Wrong number of indices inside []; expected {0}. + + + + + Looks up a localized string similar to The '{0}' attribute is valid only on an indexer that is not an explicit interface member declaration. + + + + + Looks up a localized string similar to Cannot apply indexing with [] to an expression of type '{0}'. + + + + + Looks up a localized string similar to '{0}' does not contain a definition for '{1}' and the best extension method overload '{2}' requires a receiver of type '{3}'. + + + + + Looks up a localized string similar to Iterators cannot have ref or out parameters. + + + + + Looks up a localized string similar to The body of '{0}' cannot be an iterator block because '{1}' is not an iterator interface type. + + + + + Looks up a localized string similar to The modifier '{0}' is not valid for this item. + + + + + Looks up a localized string similar to More than one protection modifier. + + + + + Looks up a localized string similar to Member modifier '{0}' must precede the member type and name. + + + + + Looks up a localized string similar to A namespace declaration cannot have modifiers or attributes. + + + + + Looks up a localized string similar to The best overload for '{0}' does not have a parameter named '{1}'. + + + + + Looks up a localized string similar to The delegate '{0}' does not have a parameter named '{1}'. + + + + + Looks up a localized string similar to '{0}' is not a valid named attribute argument. Named attribute arguments must be fields which are not readonly, static, or const, or read-write properties which are public and not static.. + + + + + Looks up a localized string similar to '{0}' is not a valid named attribute argument because it is not a valid attribute parameter type. + + + + + Looks up a localized string similar to A new expression requires (), [], or {} after type. + + + + + Looks up a localized string similar to Declaration is not valid; use '{0} operator <dest-type> (...' instead. + + + + + Looks up a localized string similar to The parameter modifier 'out' cannot be used with 'this' . + + + + + Looks up a localized string similar to Parameter {0} should not be declared with the '{1}' keyword. + + + + + Looks up a localized string similar to A parameter array cannot be used with 'this' modifier on an extension method. + + + + + Looks up a localized string similar to Parameter {0} must be declared with the '{1}' keyword. + + + + + Looks up a localized string similar to Parameter {0} is declared as type '{1}{2}' but should be '{3}{4}'. + + + + + Looks up a localized string similar to Error reading debug information for '{0}'. + + + + + Looks up a localized string similar to Invalid option '{0}' for /platform; must be anycpu, x86, Itanium or x64. + + + + + Looks up a localized string similar to /platform:anycpu32bitpreferred can only be used with /t:exe, /t:winexe and /t:appcontainerexe. + + + + + Looks up a localized string similar to Cannot access protected member '{0}' via a qualifier of type '{1}'; the qualifier must be of type '{2}' (or derived from it). + + + + + Looks up a localized string similar to The parameter modifier 'ref' cannot be used with 'this' . + + + + + Looks up a localized string similar to Invalid option '{0}'; Resource visibility must be either 'public' or 'private'. + + + + + Looks up a localized string similar to '{1} {0}' has the wrong return type. + + + + + Looks up a localized string similar to The first operand of an overloaded shift operator must have the same type as the containing type, and the type of the second operand must be int. + + + + + Looks up a localized string similar to '{0}' is a {1} but is used like a {2}. + + + + + Looks up a localized string similar to '{0}' is a {1}, which is not valid in the given context. + + + + + Looks up a localized string similar to Parameters or locals of type '{0}' cannot be declared in async methods or lambda expressions.. + + + + + Looks up a localized string similar to A stackalloc expression requires [] after type. + + + + + Looks up a localized string similar to Unrecognized option: '{0}'. + + + + + Looks up a localized string similar to Method '{0}' has a parameter modifier 'this' which is not on the first parameter. + + + + + Looks up a localized string similar to The type '{0}' may not be used as a type argument. + + + + + Looks up a localized string similar to The first parameter of an extension method cannot be of type '{0}'. + + + + + Looks up a localized string similar to '{0}': cannot reference a type through an expression; try '{1}' instead. + + + + + Looks up a localized string similar to Operator '{0}' cannot be applied to operand of type '{1}'. + + + + + Looks up a localized string similar to The parameter of a unary operator must be the containing type. + + + + + Looks up a localized string similar to Overloaded unary operator '{0}' takes one parameter. + + + + + Looks up a localized string similar to A 'using namespace' directive can only be applied to namespaces; '{0}' is a type not a namespace. Consider a 'using static' directive instead. + + + + + Looks up a localized string similar to A 'using static' directive can only be applied to types; '{0}' is a namespace not a type. Consider a 'using namespace' directive instead. + + + + + Looks up a localized string similar to A method with vararg cannot be generic, be in a generic type, or have a params parameter. + + + + + Looks up a localized string similar to Expected ; or = (cannot specify constructor arguments in declaration). + + + + + Looks up a localized string similar to Inconsistent accessibility: base class '{1}' is less accessible than class '{0}'. + + + + + Looks up a localized string similar to Inconsistent accessibility: base interface '{1}' is less accessible than interface '{0}'. + + + + + Looks up a localized string similar to Inconsistent accessibility: constraint type '{1}' is less accessible than '{0}'. + + + + + Looks up a localized string similar to Inconsistent accessibility: parameter type '{1}' is less accessible than delegate '{0}'. + + + + + Looks up a localized string similar to Inconsistent accessibility: return type '{1}' is less accessible than delegate '{0}'. + + + + + Looks up a localized string similar to Inconsistent accessibility: event type '{1}' is less accessible than event '{0}'. + + + + + Looks up a localized string similar to Inconsistent accessibility: field type '{1}' is less accessible than field '{0}'. + + + + + Looks up a localized string similar to Inconsistent accessibility: parameter type '{1}' is less accessible than indexer '{0}'. + + + + + Looks up a localized string similar to Inconsistent accessibility: indexer return type '{1}' is less accessible than indexer '{0}'. + + + + + Looks up a localized string similar to Inconsistent accessibility: parameter type '{1}' is less accessible than operator '{0}'. + + + + + Looks up a localized string similar to Inconsistent accessibility: return type '{1}' is less accessible than operator '{0}'. + + + + + Looks up a localized string similar to Inconsistent accessibility: parameter type '{1}' is less accessible than method '{0}'. + + + + + Looks up a localized string similar to Inconsistent accessibility: property type '{1}' is less accessible than property '{0}'. + + + + + Looks up a localized string similar to Inconsistent accessibility: return type '{1}' is less accessible than method '{0}'. + + + + + Looks up a localized string similar to Warning level must be in the range 0-4. + + + + + Looks up a localized string similar to Error reading Win32 resources -- {0}. + + + + + Looks up a localized string similar to Cannot yield a value in the body of a catch clause. + + + + + Looks up a localized string similar to Cannot yield in the body of a finally clause. + + + + + Looks up a localized string similar to Cannot yield a value in the body of a try block with a catch clause. + + + + + Looks up a localized string similar to Base class '{0}' must come before any interfaces. + + + + + Looks up a localized string similar to Type parameter '{0}' inherits conflicting constraints '{1}' and '{2}'. + + + + + Looks up a localized string similar to Use of keyword 'base' is not valid in this context. + + + + + Looks up a localized string similar to Keyword 'base' is not available in the current context. + + + + + Looks up a localized string similar to Keyword 'base' is not available in a static method. + + + + + Looks up a localized string similar to '{0}' is a binary file instead of a text file. + + + + + Looks up a localized string similar to '{0}' is not supported by the language. + + + + + Looks up a localized string similar to Property, indexer, or event '{0}' is not supported by the language; try directly calling accessor method '{1}'. + + + + + Looks up a localized string similar to Property, indexer, or event '{0}' is not supported by the language; try directly calling accessor methods '{1}' or '{2}'. + + + + + Looks up a localized string similar to Methods cannot combine block bodies with expression bodies.. + + + + + Looks up a localized string similar to '{0}' cannot implement '{1}' because it is not supported by the language. + + + + + Looks up a localized string similar to '{0}' is a type not supported by the language. + + + + + Looks up a localized string similar to An expression tree lambda may not contain an out or ref parameter. + + + + + Looks up a localized string similar to By-reference return type 'ref {0}' is not supported.. + + + + + Looks up a localized string similar to 'await' cannot be used in an expression containing the type '{0}'. + + + + + Looks up a localized string similar to Do not directly call your base class Finalize method. It is called automatically from your destructor.. + + + + + Looks up a localized string similar to Destructors and object.Finalize cannot be called directly. Consider calling IDisposable.Dispose if available.. + + + + + Looks up a localized string similar to Cannot pass null for friend assembly name. + + + + + Looks up a localized string similar to '{0}': cannot explicitly call operator or accessor. + + + + + Looks up a localized string similar to '{0}': cannot change access modifiers when overriding '{1}' inherited member '{2}'. + + + + + Looks up a localized string similar to '{0}': return type must be '{2}' to match overridden member '{1}'. + + + + + Looks up a localized string similar to '{0}': type must be '{2}' to match overridden member '{1}'. + + + + + Looks up a localized string similar to Cannot convert anonymous method block without a parameter list to delegate type '{0}' because it has one or more out parameters. + + + + + Looks up a localized string similar to Cannot convert {0} to delegate type '{1}' because the parameter types do not match the delegate parameter types. + + + + + Looks up a localized string similar to Cannot convert {0} to intended delegate type because some of the return types in the block are not implicitly convertible to the delegate return type. + + + + + Looks up a localized string similar to Cannot convert async {0} to delegate type '{1}'. An async {0} may return void, Task or Task<T>, none of which are convertible to '{1}'.. + + + + + Looks up a localized string similar to '{0}': cannot derive from sealed type '{1}'. + + + + + Looks up a localized string similar to Conflicting options specified: Win32 resource file; Win32 icon. + + + + + Looks up a localized string similar to Conflicting options specified: Win32 resource file; Win32 manifest. + + + + + Looks up a localized string similar to The type arguments for method '{0}' cannot be inferred from the usage. Try specifying the type arguments explicitly.. + + + + + Looks up a localized string similar to Cannot create temporary file -- {0}. + + + + + Looks up a localized string similar to Cannot open '{0}' for writing -- '{1}'. + + + + + Looks up a localized string similar to Error opening icon file {0} -- {1}. + + + + + Looks up a localized string similar to Error opening Win32 manifest file {0} -- {1}. + + + + + Looks up a localized string similar to Error opening Win32 resource file '{0}' -- '{1}'. + + + + + Looks up a localized string similar to '{0}': cannot override '{1}' because it is not supported by the language. + + + + + Looks up a localized string similar to '{0}': cannot override; '{1}' is not an event. + + + + + Looks up a localized string similar to '{0}': cannot override because '{1}' is not a function. + + + + + Looks up a localized string similar to '{0}': cannot override because '{1}' is not a property. + + + + + Looks up a localized string similar to '{0}': cannot override inherited member '{1}' because it is not marked virtual, abstract, or override. + + + + + Looks up a localized string similar to '{0}': cannot override inherited member '{1}' because it is sealed. + + + + + Looks up a localized string similar to Cannot read config file '{0}' -- '{1}'. + + + + + Looks up a localized string similar to Error reading resource '{0}' -- '{1}'. + + + + + Looks up a localized string similar to Error reading ruleset file {0} - {1}. + + + + + Looks up a localized string similar to Cannot link resource files when building a module. + + + + + Looks up a localized string similar to Cannot return an expression of type 'void'. + + + + + Looks up a localized string similar to Error reading Win32 manifest file '{0}' -- '{1}'. + + + + + Looks up a localized string similar to The RequiredAttribute attribute is not permitted on C# types. + + + + + Looks up a localized string similar to The operation overflows at compile time in checked mode. + + + + + Looks up a localized string similar to The evaluation of the constant value for '{0}' involves a circular definition. + + + + + Looks up a localized string similar to Circular base class dependency involving '{0}' and '{1}'. + + + + + Looks up a localized string similar to Circular constraint dependency involving '{0}' and '{1}'. + + + + + Looks up a localized string similar to The class type constraint '{0}' must come before any other constraints. + + + + + Looks up a localized string similar to '{0}': containing type does not implement interface '{1}'. + + + + + Looks up a localized string similar to An object, string, or class type expected. + + + + + Looks up a localized string similar to ) expected. + + + + + Looks up a localized string similar to '{0}' does not implement interface member '{1}'. '{2}' cannot implement an interface member because it is not public.. + + + + + Looks up a localized string similar to '{0}' does not implement interface member '{1}'. '{2}' cannot implement an interface member because it is static.. + + + + + Looks up a localized string similar to '{0}' does not implement interface member '{1}'. '{2}' cannot implement '{1}' because it does not have the matching return type of '{3}'.. + + + + + Looks up a localized string similar to Attribute '{0}' given in a source file conflicts with option '{1}'.. + + + + + Looks up a localized string similar to Cannot use alias '{0}' with '::' since the alias references a type. Use '.' instead.. + + + + + Looks up a localized string similar to Cannot initialize type '{0}' with a collection initializer because it does not implement 'System.Collections.IEnumerable'. + + + + + Looks up a localized string similar to '{0}': a class with the ComImport attribute cannot specify a base class. + + + + + Looks up a localized string similar to Since '{1}' has the ComImport attribute, '{0}' must be extern or abstract. + + + + + Looks up a localized string similar to '{0}': a class with the ComImport attribute cannot specify field initializers.. + + + + + Looks up a localized string similar to The Guid attribute must be specified with the ComImport attribute. + + + + + Looks up a localized string similar to A class with the ComImport attribute cannot have a user-defined constructor. + + + + + Looks up a localized string similar to Compilation cancelled by user. + + + + + Looks up a localized string similar to An expression tree lambda may not contain a COM call with ref omitted on arguments. + + + + + Looks up a localized string similar to '{0}' must declare a body because it is not marked abstract, extern, or partial. + + + + + Looks up a localized string similar to The Conditional attribute is not valid on '{0}' because its return type is not void. + + + + + Looks up a localized string similar to The Conditional attribute is not valid on interface members. + + + + + Looks up a localized string similar to Attribute '{0}' is only valid on methods or attribute classes. + + + + + Looks up a localized string similar to The Conditional attribute is not valid on '{0}' because it is an override method. + + + + + Looks up a localized string similar to The Conditional attribute is not valid on '{0}' because it is a constructor, destructor, operator, or explicit interface implementation. + + + + + Looks up a localized string similar to Conditional member '{0}' cannot have an out parameter. + + + + + Looks up a localized string similar to Namespace '{1}' contains a definition conflicting with alias '{0}'. + + + + + Looks up a localized string similar to Alias '{0}' conflicts with {1} definition. + + + + + Looks up a localized string similar to Assembly and module '{0}' cannot target different processors.. + + + + + Looks up a localized string similar to A constant value is expected. + + + + + Looks up a localized string similar to Length of String constant exceeds current memory limit. Try splitting the string into multiple constants.. + + + + + Looks up a localized string similar to Constant value '{0}' cannot be converted to a '{1}'. + + + + + Looks up a localized string similar to Constant value '{0}' cannot be converted to a '{1}' (use 'unchecked' syntax to override). + + + + + Looks up a localized string similar to '{0}': static classes cannot be used as constraints. + + + + + Looks up a localized string similar to Constraints are not allowed on non-generic declarations. + + + + + Looks up a localized string similar to Constraint cannot be a dynamic type '{0}'. + + + + + Looks up a localized string similar to Static classes cannot have instance constructors. + + + + + Looks up a localized string similar to A const field requires a value to be provided. + + + + + Looks up a localized string similar to User-defined conversion must convert to or from the enclosing type. + + + + + Looks up a localized string similar to '{0}': user-defined conversions to or from a base class are not allowed. + + + + + Looks up a localized string similar to '{0}': user-defined conversions to or from a derived class are not allowed. + + + + + Looks up a localized string similar to '{0}': user-defined conversions to or from an interface are not allowed. + + + + + Looks up a localized string similar to Cannot convert to static type '{0}'. + + + + + Looks up a localized string similar to Type parameter '{1}' has the 'struct' constraint so '{1}' cannot be used as a constraint for '{0}'. + + + + + Looks up a localized string similar to Cryptographic failure while creating hashes.. + + + + + Looks up a localized string similar to Bad array declarator: To declare a managed array the rank specifier precedes the variable's identifier. To declare a fixed size buffer field, use the fixed keyword before the field type.. + + + + + Looks up a localized string similar to Inherited interface '{1}' causes a cycle in the interface hierarchy of '{0}'. + + + + + Looks up a localized string similar to The type forwarder for type '{0}' in assembly '{1}' causes a cycle. + + + + + Looks up a localized string similar to Debug entry point must be a definition of a method declared in the current compilation.. + + + + + Looks up a localized string similar to Evaluation of the decimal constant expression failed. + + + + + Looks up a localized string similar to Cannot specify the DefaultMember attribute on a type containing an indexer. + + + + + Looks up a localized string similar to Argument of type '{0}' is not applicable for the DefaultParameterValue attribute. + + + + + Looks up a localized string similar to Optional parameters must appear after all required parameters. + + + + + Looks up a localized string similar to Cannot specify a default value for the 'this' parameter. + + + + + Looks up a localized string similar to Cannot specify a default value for a parameter array. + + + + + Looks up a localized string similar to Default parameter value for '{0}' must be a compile-time constant. + + + + + Looks up a localized string similar to Default values are not valid in this context.. + + + + + Looks up a localized string similar to The type of the argument to the DefaultParameterValue attribute must match the parameter type. + + + + + Looks up a localized string similar to Cannot specify default parameter value in conjunction with DefaultParameterAttribute or OptionalAttribute. + + + + + Looks up a localized string similar to Cannot create delegate with '{0}' because it or a method it overrides has a Conditional attribute. + + + + + Looks up a localized string similar to Cannot bind delegate to '{0}' because it is a member of 'System.Nullable<T>'. + + + + + Looks up a localized string similar to The best overloaded Add method '{0}' for the collection initializer element is obsolete. {1}. + + + + + Looks up a localized string similar to '{0}' is obsolete: '{1}'. + + + + + Looks up a localized string similar to '{0}': cannot implement a dynamic interface '{1}'. + + + + + Looks up a localized string similar to '{0}': cannot derive from the dynamic type. + + + + + Looks up a localized string similar to '{0}' cannot derive from special class '{1}'. + + + + + Looks up a localized string similar to Cannot derive from '{0}' because it is a type parameter. + + + + + Looks up a localized string similar to Static classes cannot contain destructors. + + + + + Looks up a localized string similar to An expression tree lambda may not contain a dictionary initializer.. + + + + + Looks up a localized string similar to The DllImport attribute cannot be applied to a method that is generic or contained in a generic type.. + + + + + Looks up a localized string similar to The DllImport attribute must be specified on a method marked 'static' and 'extern'. + + + + + Looks up a localized string similar to '{0}' does not implement '{1}'. + + + + + Looks up a localized string similar to Do not use 'System.Runtime.CompilerServices.FixedBuffer' attribute. Use the 'fixed' field modifier instead.. + + + + + Looks up a localized string similar to The type name '{0}' does not exist in the type '{1}'. + + + + + Looks up a localized string similar to The type or namespace name '{0}' does not exist in the namespace '{1}' (are you missing an assembly reference?). + + + + + Looks up a localized string similar to The type name '{0}' could not be found in the namespace '{1}'. This type has been forwarded to assembly '{2}' Consider adding a reference to that assembly.. + + + + + Looks up a localized string similar to Property accessor already defined. + + + + + Looks up a localized string similar to The using alias '{0}' appeared previously in this namespace. + + + + + Looks up a localized string similar to Duplicate '{0}' attribute. + + + + + Looks up a localized string similar to Duplicate '{0}' attribute in '{1}'. + + + + + Looks up a localized string similar to Duplicate constraint '{0}' for type parameter '{1}'. + + + + + Looks up a localized string similar to The switch statement contains multiple cases with the label value '{0}'. + + + + + Looks up a localized string similar to A constraint clause has already been specified for type parameter '{0}'. All of the constraints for a type parameter must be specified in a single where clause.. + + + + + Looks up a localized string similar to Duplicate user-defined conversion in type '{0}'. + + + + + Looks up a localized string similar to The parameter name '{0}' conflicts with an automatically-generated parameter name. + + + + + Looks up a localized string similar to Multiple assemblies with equivalent identity have been imported: '{0}' and '{1}'. Remove one of the duplicate references.. + + + + + Looks up a localized string similar to An assembly with the same simple name '{0}' has already been imported. Try removing one of the references (e.g. '{1}') or sign them to enable side-by-side.. + + + + + Looks up a localized string similar to '{0}' is already listed in interface list. + + + + + Looks up a localized string similar to The label '{0}' is a duplicate. + + + + + Looks up a localized string similar to Duplicate '{0}' modifier. + + + + + Looks up a localized string similar to Named argument '{0}' cannot be specified multiple times. + + + + + Looks up a localized string similar to '{0}' duplicate named attribute argument. + + + + + Looks up a localized string similar to The type '{0}' already contains a definition for '{1}'. + + + + + Looks up a localized string similar to The namespace '{1}' already contains a definition for '{0}'. + + + + + Looks up a localized string similar to The parameter name '{0}' is a duplicate. + + + + + Looks up a localized string similar to Cannot specify accessibility modifiers for both accessors of the property or indexer '{0}'. + + + + + Looks up a localized string similar to '{0}' duplicate TypeForwardedToAttribute. + + + + + Looks up a localized string similar to Duplicate type parameter '{0}'. + + + + + Looks up a localized string similar to A parameter can only have one '{0}' modifier. + + + + + Looks up a localized string similar to Cannot define a class or member that utilizes 'dynamic' because the compiler required type '{0}' cannot be found. Are you missing a reference?. + + + + + Looks up a localized string similar to One or more types required to compile a dynamic expression cannot be found. Are you missing a reference?. + + + + + Looks up a localized string similar to Constraint cannot be the dynamic type. + + + + + Looks up a localized string similar to Empty character literal. + + + + + Looks up a localized string similar to Element initializer cannot be empty. + + + + + Looks up a localized string similar to Empty format specifier.. + + + + + Looks up a localized string similar to Expression expected after yield return. + + + + + Looks up a localized string similar to Cannot continue since the edit includes a reference to an embedded type: '{0}'.. + + + + + Looks up a localized string similar to Cannot emit debug information for a source text without encoding.. + + + + + Looks up a localized string similar to Member '{0}' added during the current debug session can only be accessed from within its declaring assembly '{1}'.. + + + + + Looks up a localized string similar to Cannot update '{0}'; attribute '{1}' is missing.. + + + + + Looks up a localized string similar to #endif directive expected. + + + + + Looks up a localized string similar to Single-line comment or end-of-line expected. + + + + + Looks up a localized string similar to #endregion directive expected. + + + + + Looks up a localized string similar to '{0}': the enumerator value is too large to fit in its type. + + + + + Looks up a localized string similar to Enums cannot contain explicit parameterless constructors. + + + + + Looks up a localized string similar to Type or namespace definition, or end-of-file expected. + + + + + Looks up a localized string similar to Error building Win32 resources -- {0}. + + + + + Looks up a localized string similar to #error: '{0}'. + + + + + Looks up a localized string similar to There is an error in a referenced assembly '{0}'.. + + + + + Looks up a localized string similar to A '{0}' character may only be escaped by doubling '{0}{0}' in an interpolated string.. + + + + + Looks up a localized string similar to '{0}': event property must have both add and remove accessors. + + + + + Looks up a localized string similar to '{0}': event must be of a delegate type. + + + + + Looks up a localized string similar to An event in an interface cannot have add or remove accessors. + + + + + Looks up a localized string similar to Expected contextual keyword 'by'. + + + + + Looks up a localized string similar to Expected contextual keyword 'equals'. + + + + + Looks up a localized string similar to Expected contextual keyword 'on'. + + + + + Looks up a localized string similar to Expected catch or finally. + + + + + Looks up a localized string similar to Quoted file name expected. + + + + + Looks up a localized string similar to A query body must end with a select clause or a group clause. + + + + + Looks up a localized string similar to Expected a script (.csx file) but none specified. + + + + + Looks up a localized string similar to Keyword, identifier, or string expected after verbatim specifier: @. + + + + + Looks up a localized string similar to Do not use 'System.Runtime.CompilerServices.DynamicAttribute'. Use the 'dynamic' keyword instead.. + + + + + Looks up a localized string similar to An explicit interface implementation of an event must use event accessor syntax. + + + + + Looks up a localized string similar to Do not use 'System.Runtime.CompilerServices.ExtensionAttribute'. Use the 'this' keyword instead.. + + + + + Looks up a localized string similar to Cannot inherit interface '{0}' with the specified type parameters because it causes method '{1}' to contain overloads which differ only on ref and out. + + + + + Looks up a localized string similar to '{0}' should not have a params parameter since '{1}' does not. + + + + + Looks up a localized string similar to '{0}': explicit interface declaration can only be declared in a class or struct. + + + + + Looks up a localized string similar to '{0}' in explicit interface declaration is not an interface. + + + + + Looks up a localized string similar to '{0}': Auto-implemented properties cannot be used inside a type marked with StructLayout(LayoutKind.Explicit). + + + + + Looks up a localized string similar to '{0}' explicit method implementation cannot implement '{1}' because it is an accessor. + + + + + Looks up a localized string similar to Do not use 'System.ParamArrayAttribute'. Use the 'params' keyword instead.. + + + + + Looks up a localized string similar to '{0}' adds an accessor not found in interface member '{1}'. + + + + + Looks up a localized string similar to Explicit interface implementation '{0}' is missing accessor '{1}'. + + + + + Looks up a localized string similar to Type '{0}' exported from module '{1}' conflicts with type declared in primary module of this assembly.. + + + + + Looks up a localized string similar to Type '{0}' exported from module '{1}' conflicts with type '{2}' exported from module '{3}'.. + + + + + Looks up a localized string similar to Expected expression. + + + + + Looks up a localized string similar to Expression does not have a name.. + + + + + Looks up a localized string similar to Expression or declaration statement expected.. + + + + + Looks up a localized string similar to An expression tree may not contain an anonymous method expression. + + + + + Looks up a localized string similar to An expression tree may not contain an assignment operator. + + + + + Looks up a localized string similar to An expression tree lambda may not contain a coalescing operator with a null literal left-hand side. + + + + + Looks up a localized string similar to An expression tree may not contain a base access. + + + + + Looks up a localized string similar to An expression tree may not contain a dynamic operation. + + + + + Looks up a localized string similar to An expression tree may not contain an indexed property. + + + + + Looks up a localized string similar to An expression tree may not contain a multidimensional array initializer. + + + + + Looks up a localized string similar to An expression tree may not contain a named argument specification. + + + + + Looks up a localized string similar to An expression tree may not contain a call or invocation that uses optional arguments. + + + + + Looks up a localized string similar to An expression tree may not contain an unsafe pointer operation. + + + + + Looks up a localized string similar to Cannot convert lambda to an expression tree whose type argument '{0}' is not a delegate type. + + + + + Looks up a localized string similar to Cannot define a new extension method because the compiler required type '{0}' cannot be found. Are you missing a reference to System.Core.dll?. + + + + + Looks up a localized string similar to An extension Add method is not supported for a collection initializer in an expression lambda.. + + + + + Looks up a localized string similar to Extension methods must be defined in a top level static class; {0} is a nested class. + + + + + Looks up a localized string similar to An extern alias declaration must precede all other elements defined in the namespace. + + + + + Looks up a localized string similar to 'extern alias' is not valid in this context. + + + + + Looks up a localized string similar to '{0}' cannot be extern and declare a body. + + + + + Looks up a localized string similar to '{0}' cannot be extern and have a constructor initializer. + + + + + Looks up a localized string similar to Feature '{0}' is only available in 'experimental' language version.. + + + + + Looks up a localized string similar to Feature '{0}' is not available in C# 1. Please use language version {1} or greater.. + + + + + Looks up a localized string similar to Feature '{0}' is not available in C# 2. Please use language version {1} or greater.. + + + + + Looks up a localized string similar to Feature '{0}' is not available in C# 3. Please use language version {1} or greater.. + + + + + Looks up a localized string similar to Feature '{0}' is not available in C# 4. Please use language version {1} or greater.. + + + + + Looks up a localized string similar to Feature '{0}' is not available in C# 5. Please use language version {1} or greater.. + + + + + Looks up a localized string similar to Feature '{0}' is not available in C# 6. Please use language version {1} or greater.. + + + + + Looks up a localized string similar to An expression tree may not contain '{0}'. + + + + + Looks up a localized string similar to Field or property cannot be of type '{0}'. + + + + + Looks up a localized string similar to Field cannot have void type. + + + + + Looks up a localized string similar to The field has multiple distinct constant values.. + + + + + Looks up a localized string similar to '{0}': cannot have instance property or field initializers in structs. + + + + + Looks up a localized string similar to A field initializer cannot reference the non-static field, method, or property '{0}'. + + + + + Looks up a localized string similar to Source file '{0}' could not be found.. + + + + + Looks up a localized string similar to You cannot use fixed size buffers contained in unfixed expressions. Try using the fixed statement.. + + + + + Looks up a localized string similar to A fixed buffer may only have one dimension.. + + + + + Looks up a localized string similar to A fixed size buffer field must have the array size specifier after the field name. + + + + + Looks up a localized string similar to Cannot use fixed local '{0}' inside an anonymous method, lambda expression, or query expression. + + + + + Looks up a localized string similar to You must provide an initializer in a fixed or using statement declaration. + + + + + Looks up a localized string similar to You can only take the address of an unfixed expression inside of a fixed statement initializer. + + + + + Looks up a localized string similar to Fixed size buffers can only be accessed through locals or fields. + + + + + Looks up a localized string similar to Fixed size buffer fields may only be members of structs. + + + + + Looks up a localized string similar to You cannot use the fixed statement to take the address of an already fixed expression. + + + + + Looks up a localized string similar to Fixed size buffer of length {0} and type '{1}' is too big. + + + + + Looks up a localized string similar to Floating-point constant is outside the range of type '{0}'. + + + + + Looks up a localized string similar to foreach statement cannot operate on variables of type '{0}' because '{0}' does not contain a public definition for '{1}'. + + + + + Looks up a localized string similar to Forwarded type '{0}' conflicts with type declared in primary module of this assembly.. + + + + + Looks up a localized string similar to Type '{0}' forwarded to assembly '{1}' conflicts with type '{2}' exported from module '{3}'.. + + + + + Looks up a localized string similar to Type '{0}' is defined in this assembly, but a type forwarder is specified for it. + + + + + Looks up a localized string similar to Cannot forward type '{0}' because it is a nested type of '{1}'. + + + + + Looks up a localized string similar to Type '{0}' forwarded to assembly '{1}' conflicts with type '{2}' forwarded to assembly '{3}'.. + + + + + Looks up a localized string similar to Friend assembly reference '{0}' is invalid. InternalsVisibleTo declarations cannot have a version, culture, public key token, or processor architecture specified.. + + + + + Looks up a localized string similar to Friend assembly reference '{0}' is invalid. Strong-name signed assemblies must specify a public key in their InternalsVisibleTo declarations.. + + + + + Looks up a localized string similar to Friend access was granted by '{0}', but the public key of the output assembly does not match that specified by the attribute in the granting assembly.. + + + + + Looks up a localized string similar to Friend access was granted by '{0}', but the strong name signing state of the output assembly does not match that of the granting assembly.. + + + + + Looks up a localized string similar to '{0}': static types cannot be used as type arguments. + + + + + Looks up a localized string similar to The type '{3}' cannot be used as type parameter '{2}' in the generic type or method '{0}'. The nullable type '{3}' does not satisfy the constraint of '{1}'.. + + + + + Looks up a localized string similar to The type '{3}' cannot be used as type parameter '{2}' in the generic type or method '{0}'. The nullable type '{3}' does not satisfy the constraint of '{1}'. Nullable types can not satisfy any interface constraints.. + + + + + Looks up a localized string similar to The type '{3}' cannot be used as type parameter '{2}' in the generic type or method '{0}'. There is no implicit reference conversion from '{3}' to '{1}'.. + + + + + Looks up a localized string similar to The type '{3}' cannot be used as type parameter '{2}' in the generic type or method '{0}'. There is no boxing conversion or type parameter conversion from '{3}' to '{1}'.. + + + + + Looks up a localized string similar to The type '{3}' cannot be used as type parameter '{2}' in the generic type or method '{0}'. There is no boxing conversion from '{3}' to '{1}'.. + + + + + Looks up a localized string similar to A generic type cannot derive from '{0}' because it is an attribute class. + + + + + Looks up a localized string similar to Type '{0}' from assembly '{1}' cannot be used across assembly boundaries because it has a generic type parameter that is an embedded interop type.. + + + + + Looks up a localized string similar to Type '{0}' cannot be embedded because it has a generic argument. Consider setting the 'Embed Interop Types' property to false.. + + + + + Looks up a localized string similar to A get or set accessor expected. + + + + + Looks up a localized string similar to Assembly and module attributes are not allowed in this context. + + + + + Looks up a localized string similar to Assembly and module attributes must precede all other elements defined in a file except using clauses and extern alias declarations. + + + + + Looks up a localized string similar to Member definition, statement, or end-of-file expected. + + + + + Looks up a localized string similar to You cannot redefine the global extern alias. + + + + + Looks up a localized string similar to The type or namespace name '{0}' could not be found in the global namespace (are you missing an assembly reference?). + + + + + Looks up a localized string similar to The type name '{0}' could not be found in the global namespace. This type has been forwarded to assembly '{1}' Consider adding a reference to that assembly.. + + + + + Looks up a localized string similar to Expressions and statements can only occur in a method body. + + + + + Looks up a localized string similar to The non-generic {1} '{0}' cannot be used with type arguments. + + + + + Looks up a localized string similar to '{0}' hides inherited abstract member '{1}'. + + + + + Looks up a localized string similar to Identifier expected. + + + + + Looks up a localized string similar to Identifier expected; '{1}' is a keyword. + + + + + Looks up a localized string similar to User-defined operator cannot take an object of the enclosing type and convert to an object of the enclosing type. + + + + + Looks up a localized string similar to An __arglist expression may only appear inside of a call or new expression. + + + + + Looks up a localized string similar to Unrecognized escape sequence. + + + + + Looks up a localized string similar to Fixed size buffer type must be one of the following: bool, byte, short, int, long, char, sbyte, ushort, uint, ulong, float or double. + + + + + Looks up a localized string similar to Unsafe code may not appear in iterators. + + + + + Looks up a localized string similar to params is not valid in this context. + + + + + Looks up a localized string similar to ref and out are not valid in this context. + + + + + Looks up a localized string similar to Only assignment, call, increment, decrement, and new object expressions can be used as a statement. + + + + + Looks up a localized string similar to Unsafe code may only appear if compiling with /unsafe. + + + + + Looks up a localized string similar to __arglist is not valid in this context. + + + + + Looks up a localized string similar to Invalid variance modifier. Only interface and delegate type parameters can be specified as variant.. + + + + + Looks up a localized string similar to The constraints for type parameter '{0}' of method '{1}' must match the constraints for type parameter '{2}' of interface method '{3}'. Consider using an explicit interface implementation instead.. + + + + + Looks up a localized string similar to No best type found for implicitly-typed array. + + + + + Looks up a localized string similar to Implicitly-typed local variables cannot be fixed. + + + + + Looks up a localized string similar to Cannot initialize an implicitly-typed variable with an array initializer. + + + + + Looks up a localized string similar to Cannot assign {0} to an implicitly-typed variable. + + + + + Looks up a localized string similar to Implicitly-typed variables cannot be constant. + + + + + Looks up a localized string similar to Implicitly-typed variables cannot have multiple declarators. + + + + + Looks up a localized string similar to Implicitly-typed variables must be initialized. + + + + + Looks up a localized string similar to Imported type '{0}' is invalid. It contains a circular base class dependency.. + + + + + Looks up a localized string similar to The referenced file '{0}' is not an assembly. + + + + + Looks up a localized string similar to The property or indexer '{0}' cannot be used in this context because the get accessor is inaccessible. + + + + + Looks up a localized string similar to The property or indexer '{0}' cannot be used in this context because the set accessor is inaccessible. + + + + + Looks up a localized string similar to An out parameter cannot have the In attribute. + + + + + Looks up a localized string similar to Two indexers have different names; the IndexerName attribute must be used with the same name on every indexer within a type. + + + + + Looks up a localized string similar to Inconsistent lambda parameter usage; parameter types must be all explicit or all implicit. + + + + + Looks up a localized string similar to The operand of an increment or decrement operator must be a variable, property or indexer. + + + + + Looks up a localized string similar to Indexed property '{0}' must have all arguments optional. + + + + + Looks up a localized string similar to Indexed property '{0}' has non-optional arguments which must be provided. + + + + + Looks up a localized string similar to Indexers cannot have void type. + + + + + Looks up a localized string similar to '{0}': cannot declare indexers in a static class. + + + + + Looks up a localized string similar to Indexers must have at least one parameter. + + + + + Looks up a localized string similar to Constructor '{0}' cannot call itself through another constructor. + + + + + Looks up a localized string similar to 'in' expected. + + + + + Looks up a localized string similar to The best overloaded method match '{0}' for the collection initializer element cannot be used. Collection initializer 'Add' methods cannot have ref or out parameters.. + + + + + Looks up a localized string similar to The best overloaded method match for '{0}' has wrong signature for the initializer element. The initializable Add must be an accessible instance method.. + + + + + Looks up a localized string similar to Structs without explicit constructors cannot contain members with initializers.. + + + + + Looks up a localized string similar to Only auto-implemented properties can have initializers.. + + + + + Looks up a localized string similar to '{0}': cannot declare instance members in a static class. + + + + + Looks up a localized string similar to Cannot create an instance of the static class '{0}'. + + + + + Looks up a localized string similar to An expression is too long or complex to compile. + + + + + Looks up a localized string similar to Division by constant zero. + + + + + Looks up a localized string similar to Type byte, sbyte, short, ushort, int, uint, long, or ulong expected. + + + + + Looks up a localized string similar to A value of an integral type expected. + + + + + Looks up a localized string similar to '{0}': event in interface cannot have initializer. + + + + + Looks up a localized string similar to Conditional member '{0}' cannot implement interface member '{1}' in type '{2}'. + + + + + Looks up a localized string similar to '{0}': interface members cannot have a definition. + + + + + Looks up a localized string similar to '{0}' in explicit interface declaration is not a member of interface. + + + + + Looks up a localized string similar to '{0}': interfaces cannot declare types. + + + + + Looks up a localized string similar to Interfaces cannot contain constructors. + + + + + Looks up a localized string similar to Interfaces cannot contain fields. + + + + + Looks up a localized string similar to Interfaces cannot contain operators. + + + + + Looks up a localized string similar to Embedded interop method '{0}' contains a body.. + + + + + Looks up a localized string similar to Embedded interop struct '{0}' can contain only public instance fields.. + + + + + Looks up a localized string similar to Interop type '{0}' cannot be embedded because it is missing the required '{1}' attribute.. + + + + + Looks up a localized string similar to Cannot embed interop type '{0}' found in both assembly '{1}' and '{2}'. Consider setting the 'Embed Interop Types' property to false.. + + + + + Looks up a localized string similar to Integral constant is too large. + + + + + Looks up a localized string similar to Cannot take the address of the given expression. + + + + + Looks up a localized string similar to Invalid anonymous type member declarator. Anonymous type members must be declared with a member assignment, simple name or member access.. + + + + + Looks up a localized string similar to Invalid rank specifier: expected ',' or ']'. + + + + + Looks up a localized string similar to Assembly culture strings may not contain embedded NUL characters.. + + + + + Looks up a localized string similar to Executables cannot be satellite assemblies; culture should always be empty. + + + + + Looks up a localized string similar to Assembly reference '{0}' is invalid and cannot be resolved. + + + + + Looks up a localized string similar to Invalid value for argument to '{0}' attribute. + + + + + Looks up a localized string similar to '{0}' is of type '{1}'. The type specified in a constant declaration must be sbyte, byte, short, ushort, int, uint, long, ulong, char, float, double, decimal, bool, string, an enum-type, or a reference-type.. + + + + + Looks up a localized string similar to Invalid debug information format: {0}. + + + + + Looks up a localized string similar to Delegate '{0}' has no invoke method or an invoke method with a return type or parameter types that are not supported.. + + + + + Looks up a localized string similar to Expression must be implicitly convertible to Boolean or its type '{0}' must define operator '{1}'.. + + + + + Looks up a localized string similar to Invalid expression term '{0}'. + + + + + Looks up a localized string similar to Invalid file section alignment '{0}'. + + + + + Looks up a localized string similar to Fixed size buffers must have a length greater than zero. + + + + + Looks up a localized string similar to Command-line syntax error: Invalid Guid format '{0}' for option '{1}'. + + + + + Looks up a localized string similar to Invalid type specified as an argument for TypeForwardedTo attribute. + + + + + Looks up a localized string similar to A goto case is only valid inside a switch statement. + + + + + Looks up a localized string similar to Invalid initializer member declarator. + + + + + Looks up a localized string similar to The line number specified for #line directive is missing or invalid. + + + + + Looks up a localized string similar to Invalid token '{0}' in class, struct, or interface member declaration. + + + + + Looks up a localized string similar to Invalid value for named attribute argument '{0}'. + + + + + Looks up a localized string similar to Invalid number. + + + + + Looks up a localized string similar to Invalid output name: {0}. + + + + + Looks up a localized string similar to The pathmap option was incorrectly formatted.. + + + + + Looks up a localized string similar to Invalid preprocessor expression. + + + + + Looks up a localized string similar to The accessibility modifier of the '{0}' accessor must be more restrictive than the property or indexer '{1}'. + + + + + Looks up a localized string similar to Type of conditional expression cannot be determined because there is no implicit conversion between '{0}' and '{1}'. + + + + + Looks up a localized string similar to Invalid real literal.. + + + + + Looks up a localized string similar to Invalid signature public key specified in AssemblySignatureKeyAttribute.. + + + + + Looks up a localized string similar to '{0}' is not a valid format specifier. + + + + + Looks up a localized string similar to Invalid version {0} for /subsystemversion. The version must be 6.02 or greater for ARM or AppContainerExe, and 4.00 or greater otherwise. + + + + + Looks up a localized string similar to The specified version string does not conform to the required format - major[.minor[.build[.revision]]]. + + + + + Looks up a localized string similar to The specified version string does not conform to the required format - major.minor.build.revision. + + + + + Looks up a localized string similar to Yield statements may not appear at the top level in interactive code.. + + + + + Looks up a localized string similar to No such label '{0}' within the scope of the goto statement. + + + + + Looks up a localized string similar to The label '{0}' shadows another label by the same name in a contained scope. + + + + + Looks up a localized string similar to The first operand of an 'is' or 'as' operator may not be a lambda expression, anonymous method, or method group.. + + + + + Looks up a localized string similar to { expected. + + + + + Looks up a localized string similar to 'id#' syntax is no longer supported. Use '$id' instead.. + + + + + Looks up a localized string similar to Linked netmodule metadata must provide a full PE image: '{0}'.. + + + + + Looks up a localized string similar to Literal of type double cannot be implicitly converted to type '{1}'; use an '{0}' suffix to create a literal of this type. + + + + + Looks up a localized string similar to #load is only allowed in scripts. + + + + + Looks up a localized string similar to Local '{0}' or its members cannot have their address taken and be used inside an anonymous method or lambda expression. + + + + + Looks up a localized string similar to A local variable named '{0}' is already defined in this scope. + + + + + Looks up a localized string similar to A local or parameter named '{0}' cannot be declared in this scope because that name is used in an enclosing local scope to define a local or parameter. + + + + + Looks up a localized string similar to '{0}': a parameter or local variable cannot have the same name as a method type parameter. + + + + + Looks up a localized string similar to Embedding the interop type '{0}' from assembly '{1}' causes a name clash in the current assembly. Consider setting the 'Embed Interop Types' property to false.. + + + + + Looks up a localized string similar to '{0}' is not a reference type as required by the lock statement. + + + + + Looks up a localized string similar to Cannot do member lookup in '{0}' because it is a type parameter. + + + + + Looks up a localized string similar to '{0}': an entry point cannot be marked with the 'async' modifier. + + + + + Looks up a localized string similar to Cannot use '{0}' for Main method because it is imported. + + + + + Looks up a localized string similar to '{0}' specified for Main method must be a valid non-generic class or struct. + + + + + Looks up a localized string similar to Could not find '{0}' specified for Main method. + + + + + Looks up a localized string similar to Cannot take the address of, get the size of, or declare a pointer to a managed type ('{0}'). + + + + + Looks up a localized string similar to Unmanaged type '{0}' not valid for fields.. + + + + + Looks up a localized string similar to Unmanaged type '{0}' is only valid for fields.. + + + + + Looks up a localized string similar to Type '{1}' already defines a member called '{0}' with the same parameter types. + + + + + Looks up a localized string similar to Duplicate initialization of member '{0}'. + + + + + Looks up a localized string similar to Member '{0}' cannot be initialized. It is not a field or property.. + + + + + Looks up a localized string similar to '{0}': member names cannot be the same as their enclosing type. + + + + + Looks up a localized string similar to Method must have a return type. + + + + + Looks up a localized string similar to Type '{1}' already reserves a member called '{0}' with the same parameter types. + + + + + Looks up a localized string similar to An expression tree lambda may not contain a method group. + + + + + Looks up a localized string similar to Name '{0}' exceeds the maximum length allowed in metadata.. + + + + + Looks up a localized string similar to Metadata references are not supported.. + + + + + Looks up a localized string similar to No overload for '{0}' matches delegate '{1}'. + + + + + Looks up a localized string similar to Cannot convert method group '{0}' to non-delegate type '{1}'. Did you intend to invoke the method?. + + + + + Looks up a localized string similar to Cannot make reference to variable of type '{0}'. + + + + + Looks up a localized string similar to Method '{0}' cannot implement interface accessor '{1}' for type '{2}'. Use an explicit interface implementation.. + + + + + Looks up a localized string similar to Method name expected. + + + + + Looks up a localized string similar to Method or delegate cannot return type '{0}'. + + + + + Looks up a localized string similar to Argument missing. + + + + + Looks up a localized string similar to Array creation must have array size or array initializer. + + + + + Looks up a localized string similar to The managed coclass wrapper class '{0}' for interface '{1}' cannot be found (are you missing an assembly reference?). + + + + + Looks up a localized string similar to The /pdb option requires that the /debug option also be used. + + + + + Looks up a localized string similar to Command-line syntax error: Missing Guid for option '{1}'. + + + + + Looks up a localized string similar to Source interface '{0}' is missing method '{1}' which is required to embed event '{2}'.. + + + + + Looks up a localized string similar to Reference to '{0}' netmodule missing.. + + + + + Looks up a localized string similar to Missing partial modifier on declaration of type '{0}'; another partial declaration of this type exists. + + + + + Looks up a localized string similar to Quoted file name, single-line comment or end-of-line expected. + + + + + Looks up a localized string similar to Missing compiler required member '{0}.{1}'. + + + + + Looks up a localized string similar to Interface '{0}' has an invalid source interface which is required to embed event '{1}'.. + + + + + Looks up a localized string similar to '{0}': instance field types marked with StructLayout(LayoutKind.Explicit) must have a FieldOffset attribute. + + + + + Looks up a localized string similar to Reference to type '{0}' claims it is defined in '{1}', but it could not be found. + + + + + Looks up a localized string similar to Reference to type '{0}' claims it is defined in this assembly, but it is not defined in source or any added modules. + + + + + Looks up a localized string similar to '{0}' cannot implement '{1}' because '{2}' is a Windows Runtime event and '{3}' is a regular .NET event.. + + + + + Looks up a localized string similar to Failed to emit module '{0}'.. + + + + + Looks up a localized string similar to A parameter cannot have all the specified modifiers; there are too many modifiers on the parameter. + + + + + Looks up a localized string similar to Program has more than one entry point defined. Compile with /main to specify the type that contains the entry point.. + + + + + Looks up a localized string similar to foreach statement cannot operate on variables of type '{0}' because it implements multiple instantiations of '{1}'; try casting to a specific interface instantiation. + + + + + Looks up a localized string similar to Cannot use more than one type in a for, using, fixed, or declaration statement. + + + + + Looks up a localized string similar to In order for '{0}' to be applicable as a short circuit operator, its declaring type '{1}' must define operator true and operator false. + + + + + Looks up a localized string similar to Compilation options '{0}' and '{1}' can't both be specified at the same time.. + + + + + Looks up a localized string similar to Named attribute argument expected. + + + + + Looks up a localized string similar to An array access may not have a named argument specifier. + + + + + Looks up a localized string similar to Named argument specifications must appear after all fixed arguments have been specified. + + + + + Looks up a localized string similar to Named argument '{0}' specifies a parameter for which a positional argument has already been given. + + + + + Looks up a localized string similar to The name '{0}' does not exist in the current context. + + + + + Looks up a localized string similar to The name '{0}' does not exist in the current context (are you missing a reference to assembly '{1}'?). + + + + + Looks up a localized string similar to Extension method groups are not allowed as an argument to 'nameof'.. + + + + + Looks up a localized string similar to Type parameters are not allowed on a method group as an argument to 'nameof'.. + + + + + Looks up a localized string similar to Cannot declare namespace in script code. + + + + + Looks up a localized string similar to A namespace cannot directly contain members such as fields or methods. + + + + + Looks up a localized string similar to Cannot create an array with a negative size. + + + + + Looks up a localized string similar to Cannot use a negative size with stackalloc. + + + + + Looks up a localized string similar to Module name '{0}' stored in '{1}' must match its filename.. + + + + + Looks up a localized string similar to Module '{0}' is already defined in this assembly. Each module must have a unique filename.. + + + + + Looks up a localized string similar to The new() constraint must be the last constraint specified. + + + + + Looks up a localized string similar to The 'new()' constraint cannot be used with the 'struct' constraint. + + + + + Looks up a localized string similar to Interop type '{0}' cannot be embedded. Use the applicable interface instead.. + + + + + Looks up a localized string similar to '{2}' must be a non-abstract type with a public parameterless constructor in order to use it as parameter '{1}' in the generic type or method '{0}'. + + + + + Looks up a localized string similar to Newline in constant. + + + + + Looks up a localized string similar to '{0}': cannot provide arguments when creating an instance of a variable type. + + + + + Looks up a localized string similar to '{0}' is a new virtual member in sealed class '{1}'. + + + + + Looks up a localized string similar to A 'using static' directive cannot be used to declare an alias. + + + + + Looks up a localized string similar to A base class is required for a 'base' reference. + + + + + Looks up a localized string similar to No enclosing loop out of which to break or continue. + + + + + Looks up a localized string similar to Cannot find the interop type that matches the embedded interop type '{0}'. Are you missing an assembly reference?. + + + + + Looks up a localized string similar to The type '{0}' has no constructors defined. + + + + + Looks up a localized string similar to CallerFilePathAttribute cannot be applied because there are no standard conversions from type '{0}' to type '{1}'. + + + + + Looks up a localized string similar to CallerLineNumberAttribute cannot be applied because there are no standard conversions from type '{0}' to type '{1}'. + + + + + Looks up a localized string similar to CallerMemberNameAttribute cannot be applied because there are no standard conversions from type '{0}' to type '{1}'. + + + + + Looks up a localized string similar to A value of type '{0}' cannot be used as a default parameter because there are no standard conversions to type '{1}'. + + + + + Looks up a localized string similar to A value of type '{0}' cannot be used as default parameter for nullable parameter '{1}' because '{0}' is not a simple type. + + + + + Looks up a localized string similar to '{0}': type used in a using statement must be implicitly convertible to 'System.IDisposable'. + + + + + Looks up a localized string similar to There is no argument given that corresponds to the required formal parameter '{0}' of '{1}'. + + + + + Looks up a localized string similar to The call to method '{0}' needs to be dynamically dispatched, but cannot be because it is part of a base access expression. Consider casting the dynamic arguments or eliminating the base access.. + + + + + Looks up a localized string similar to The constructor call needs to be dynamically dispatched, but cannot be because it is part of a constructor initializer. Consider casting the dynamic arguments.. + + + + + Looks up a localized string similar to The indexer access needs to be dynamically dispatched, but cannot be because it is part of a base access expression. Consider casting the dynamic arguments or eliminating the base access.. + + + + + Looks up a localized string similar to Program does not contain a static 'Main' method suitable for an entry point. + + + + + Looks up a localized string similar to Cannot convert type '{0}' to '{1}' via a reference conversion, boxing conversion, unboxing conversion, wrapping conversion, or null type conversion. + + + + + Looks up a localized string similar to Cannot convert type '{0}' to '{1}'. + + + + + Looks up a localized string similar to Missing file specification for '{0}' option. + + + + + Looks up a localized string similar to '{0}': cannot override because '{1}' does not have an overridable get accessor. + + + + + Looks up a localized string similar to Cannot implicitly convert type '{0}' to '{1}'. + + + + + Looks up a localized string similar to Cannot implicitly convert type '{0}' to '{1}'. An explicit conversion exists (are you missing a cast?). + + + + + Looks up a localized string similar to '{0}' does not have a suitable static Main method. + + + + + Looks up a localized string similar to Cannot specify /main if building a module or library. + + + + + Looks up a localized string similar to Metadata file '{0}' could not be found. + + + + + Looks up a localized string similar to Modifiers cannot be placed on event accessor declarations. + + + + + Looks up a localized string similar to Class '{0}' cannot have multiple base classes: '{1}' and '{2}'. + + + + + Looks up a localized string similar to Elements defined in a namespace cannot be explicitly declared as private, protected, or protected internal. + + + + + Looks up a localized string similar to Cannot create an instance of the abstract class or interface '{0}'. + + + + + Looks up a localized string similar to Cannot create an instance of the variable type '{0}' because it does not have the new() constraint. + + + + + Looks up a localized string similar to Type '{0}' in interface list is not an interface. + + + + + Looks up a localized string similar to Non-invocable member '{0}' cannot be used like a method.. + + + + + Looks up a localized string similar to Cannot embed interop types from assembly '{0}' because it is missing the '{1}' attribute.. + + + + + Looks up a localized string similar to Cannot embed interop types from assembly '{0}' because it is missing either the '{1}' attribute or the '{2}' attribute.. + + + + + Looks up a localized string similar to Type '{0}' cannot be embedded because it is a nested type. Consider setting the 'Embed Interop Types' property to false.. + + + + + Looks up a localized string similar to '{0}': cannot override because '{1}' does not have an overridable set accessor. + + + + + Looks up a localized string similar to Source file '{0}' could not be opened -- {1}. + + + + + Looks up a localized string similar to '{0}' does not contain a definition for '{1}'. + + + + + Looks up a localized string similar to '{0}' does not contain a definition for '{1}' and no extension method '{1}' accepting a first argument of type '{0}' could be found (are you missing a using directive or an assembly reference?). + + + + + Looks up a localized string similar to '{0}' does not contain a definition for '{1}' and no extension method '{1}' accepting a first argument of type '{0}' could be found (are you missing a using directive for '{2}'?). + + + + + Looks up a localized string similar to '{0}' is not an attribute class. + + + + + Looks up a localized string similar to The expression being assigned to '{0}' must be constant. + + + + + Looks up a localized string similar to '{0}' is of type '{1}'. A const field of a reference type other than string can only be initialized with null.. + + + + + Looks up a localized string similar to '{0}' is of type '{1}'. A default parameter value of a reference type other than string can only be initialized with null. + + + + + Looks up a localized string similar to This language feature ('{0}') is not yet implemented.. + + + + + Looks up a localized string similar to The type '{0}' is defined in an assembly that is not referenced. You must add a reference to assembly '{1}'.. + + + + + Looks up a localized string similar to The type '{0}' is defined in a module that has not been added. You must add the module '{1}'.. + + + + + Looks up a localized string similar to Keyword 'void' cannot be used in this context. + + + + + Looks up a localized string similar to Invalid parameter type 'void'. + + + + + Looks up a localized string similar to Use of null is not valid in this context. + + + + + Looks up a localized string similar to An expression tree lambda may not contain a null propagating operator.. + + + + + Looks up a localized string similar to '{0}' has no base class and cannot call a base constructor. + + + + + Looks up a localized string similar to The class System.Object cannot have a base class or implement an interface. + + + + + Looks up a localized string similar to Object and collection initializer expressions may not be applied to a delegate creation expression. + + + + + Looks up a localized string similar to Member '{0}' cannot be accessed with an instance reference; qualify it with a type name instead. + + + + + Looks up a localized string similar to An object reference is required for the non-static field, method, or property '{0}'. + + + + + Looks up a localized string similar to A /reference option that declares an extern alias can only have one filename. To specify multiple aliases or filenames, use multiple /reference options.. + + + + + Looks up a localized string similar to Only class types can contain destructors. + + + + + Looks up a localized string similar to End-of-file found, '*/' expected. + + + + + Looks up a localized string similar to Error opening response file '{0}'. + + + + + Looks up a localized string similar to User-defined operators cannot return void. + + + + + Looks up a localized string similar to '{0}': static classes cannot contain user-defined operators. + + + + + Looks up a localized string similar to The operator '{0}' requires a matching operator '{1}' to also be defined. + + + + + Looks up a localized string similar to User-defined operator '{0}' must be declared static and public. + + + + + Looks up a localized string similar to The return type of operator True or False must be bool. + + + + + Looks up a localized string similar to Option '{0}' must be an absolute path.. + + + + + Looks up a localized string similar to Cannot specify only Out attribute on a ref parameter. Use both In and Out attributes, or neither.. + + + + + Looks up a localized string similar to Outputs without source must have the /out option specified. + + + + + Looks up a localized string similar to Could not write to output file '{0}' -- '{1}'. + + + + + Looks up a localized string similar to '{0}' cannot define overloaded methods that differ only on ref and out. + + + + + Looks up a localized string similar to Cannot define overloaded constructor '{0}' because it differs from another constructor only on ref and out. + + + + + Looks up a localized string similar to Do not override object.Finalize. Instead, provide a destructor.. + + + + + Looks up a localized string similar to '{0}': no suitable method found to override. + + + + + Looks up a localized string similar to A member '{0}' marked as override cannot be marked as new or virtual. + + + + + Looks up a localized string similar to Constraints for override and explicit interface implementation methods are inherited from the base method, so they cannot be specified directly. + + + + + Looks up a localized string similar to Overloadable binary operator expected. + + + + + Looks up a localized string similar to Overloadable operator expected. + + + + + Looks up a localized string similar to Overloadable unary operator expected. + + + + + Looks up a localized string similar to The parameter has multiple distinct default values.. + + + + + Looks up a localized string similar to '{0}': static types cannot be used as parameters. + + + + + Looks up a localized string similar to Parameter not valid for the specified unmanaged type.. + + + + + Looks up a localized string similar to The params parameter cannot be declared as ref or out. + + + + + Looks up a localized string similar to A params parameter must be the last parameter in a formal parameter list. + + + + + Looks up a localized string similar to The params parameter must be a single dimensional array. + + + + + Looks up a localized string similar to The out parameter '{0}' must be assigned to before control leaves the current method. + + + + + Looks up a localized string similar to A partial method cannot have out parameters. + + + + + Looks up a localized string similar to Both partial method declarations must be extension methods or neither may be an extension method. + + + + + Looks up a localized string similar to Partial method declarations of '{0}' have inconsistent type parameter constraints. + + + + + Looks up a localized string similar to Partial methods with only a defining declaration or removed conditional methods cannot be used in expression trees. + + + + + Looks up a localized string similar to A partial method cannot have access modifiers or the virtual, abstract, override, new, sealed, or extern modifiers. + + + + + Looks up a localized string similar to No defining declaration found for implementing declaration of partial method '{0}'. + + + + + Looks up a localized string similar to Partial methods must have a void return type. + + + + + Looks up a localized string similar to A partial method may not explicitly implement an interface method. + + + + + Looks up a localized string similar to A partial method must be declared within a partial class or partial struct. + + + + + Looks up a localized string similar to Only methods, classes, structs, or interfaces may be partial. + + + + + Looks up a localized string similar to A partial method may not have multiple implementing declarations. + + + + + Looks up a localized string similar to A partial method may not have multiple defining declarations. + + + + + Looks up a localized string similar to Both partial method declarations must use a params parameter or neither may use a params parameter. + + + + + Looks up a localized string similar to Both partial method declarations must be static or neither may be static. + + + + + Looks up a localized string similar to Cannot create delegate from method '{0}' because it is a partial method without an implementing declaration. + + + + + Looks up a localized string similar to Both partial method declarations must be unsafe or neither may be unsafe. + + + + + Looks up a localized string similar to The 'partial' modifier can only appear immediately before 'class', 'struct', 'interface', or 'void'. + + + + + Looks up a localized string similar to Partial declarations of '{0}' have conflicting accessibility modifiers. + + + + + Looks up a localized string similar to Partial declarations of '{0}' must not specify different base classes. + + + + + Looks up a localized string similar to Partial declarations of '{0}' must be all classes, all structs, or all interfaces. + + + + + Looks up a localized string similar to Partial declarations of '{0}' have inconsistent constraints for type parameter '{1}'. + + + + + Looks up a localized string similar to Partial declarations of '{0}' must have the same type parameter names in the same order. + + + + + Looks up a localized string similar to Partial declarations of '{0}' must have the same type parameter names and variance modifiers in the same order. + + + + + Looks up a localized string similar to Error reading file '{0}' specified for the named argument '{1}' for PermissionSet attribute: '{2}'. + + + + + Looks up a localized string similar to Unable to resolve file path '{0}' specified for the named argument '{1}' for PermissionSet attribute. + + + + + Looks up a localized string similar to An error occurred while writing the output file: {0}. + + + + + Looks up a localized string similar to Neither 'is' nor 'as' is valid on pointer types. + + + + + Looks up a localized string similar to Cannot define/undefine preprocessor symbols after first token in file. + + + + + Looks up a localized string similar to Preprocessor directive expected. + + + + + Looks up a localized string similar to Cannot use #load after first token in file. + + + + + Looks up a localized string similar to Cannot use #r after first token in file. + + + + + Looks up a localized string similar to Predefined type '{0}' is not defined or imported. + + + + + Looks up a localized string similar to SecurityAction value '{0}' is invalid for PrincipalPermission attribute. + + + + + Looks up a localized string similar to '{0}': abstract properties cannot have private accessors. + + + + + Looks up a localized string similar to '{0}': accessibility modifiers may not be used on accessors in an interface. + + + + + Looks up a localized string similar to '{0}': property or indexer cannot have void type. + + + + + Looks up a localized string similar to The property or indexer '{0}' cannot be used in this context because it lacks the get accessor. + + + + + Looks up a localized string similar to '{0}': property or indexer must have at least one accessor. + + + + + Looks up a localized string similar to '{0}': static classes cannot contain protected members. + + + + + Looks up a localized string similar to '{0}': new protected member declared in struct. + + + + + Looks up a localized string similar to The * or -> operator must be applied to a pointer. + + + + + Looks up a localized string similar to A pointer must be indexed by only one value. + + + + + Looks up a localized string similar to Error signing output with public key from container '{0}' -- {1}. + + + + + Looks up a localized string similar to Error signing output with public key from file '{0}' -- {1}. + + + + + Looks up a localized string similar to Public signing was specified and requires a public key, but no public key was specified.. + + + + + Looks up a localized string similar to The range variable '{0}' has already been declared. + + + + + Looks up a localized string similar to The name '{0}' is not in scope on the right side of 'equals'. Consider swapping the expressions on either side of 'equals'.. + + + + + Looks up a localized string similar to Multiple implementations of the query pattern were found for source type '{0}'. Ambiguous call to '{1}'.. + + + + + Looks up a localized string similar to Could not find an implementation of the query pattern for source type '{0}'. '{1}' not found.. + + + + + Looks up a localized string similar to Could not find an implementation of the query pattern for source type '{0}'. '{1}' not found. Consider explicitly specifying the type of the range variable '{2}'.. + + + + + Looks up a localized string similar to Could not find an implementation of the query pattern for source type '{0}'. '{1}' not found. Are you missing a reference to 'System.Core.dll' or a using directive for 'System.Linq'?. + + + + + Looks up a localized string similar to The name '{0}' is not in scope on the left side of 'equals'. Consider swapping the expressions on either side of 'equals'.. + + + + + Looks up a localized string similar to Cannot pass the range variable '{0}' as an out or ref parameter. + + + + + Looks up a localized string similar to Cannot assign {0} to a range variable. + + + + + Looks up a localized string similar to The range variable '{0}' conflicts with a previous declaration of '{0}'. + + + + + Looks up a localized string similar to Range variable '{0}' cannot be assigned to -- it is read only. + + + + + Looks up a localized string similar to The range variable '{0}' cannot have the same name as a method type parameter. + + + + + Looks up a localized string similar to The type of the expression in the {0} clause is incorrect. Type inference failed in the call to '{1}'.. + + + + + Looks up a localized string similar to The type of one of the expressions in the {0} clause is incorrect. Type inference failed in the call to '{1}'.. + + + + + Looks up a localized string similar to An expression of type '{0}' is not allowed in a subsequent from clause in a query expression with source type '{1}'. Type inference failed in the call to '{2}'.. + + + + + Looks up a localized string similar to } expected. + + + + + Looks up a localized string similar to Members of readonly field '{0}' of type '{1}' cannot be assigned with an object initializer because it is of a value type. + + + + + Looks up a localized string similar to Constructor '{0}' cannot call itself. + + + + + Looks up a localized string similar to Type of '{0}' cannot be inferred since its initializer directly or indirectly refers to the definition.. + + + + + Looks up a localized string similar to The type '{2}' must be a reference type in order to use it as parameter '{1}' in the generic type or method '{0}'. + + + + + Looks up a localized string similar to #r is only allowed in scripts. + + + + + Looks up a localized string similar to A ref or out argument must be an assignable variable. + + + + + Looks up a localized string similar to A ref or out parameter cannot have a default value. + + + + + Looks up a localized string similar to A property or indexer may not be passed as an out or ref parameter. + + + + + Looks up a localized string similar to A readonly field cannot be passed ref or out (except in a constructor). + + + + + Looks up a localized string similar to Members of readonly field '{0}' cannot be passed ref or out (except in a constructor). + + + + + Looks up a localized string similar to Cannot pass '{0}' as a ref or out argument because it is read-only. + + + + + Looks up a localized string similar to Cannot pass fields of '{0}' as a ref or out argument because it is a '{1}'. + + + + + Looks up a localized string similar to Cannot pass '{0}' as a ref or out argument because it is a '{1}'. + + + + + Looks up a localized string similar to A static readonly field cannot be passed ref or out (except in a static constructor). + + + + + Looks up a localized string similar to Fields of static readonly field '{0}' cannot be passed ref or out (except in a static constructor). + + + + + Looks up a localized string similar to The 'class' or 'struct' constraint must come before any other constraints. + + + + + Looks up a localized string similar to '{0}': cannot specify both a constraint class and the 'class' or 'struct' constraint. + + + + + Looks up a localized string similar to The assembly name '{0}' is reserved and cannot be used as a reference in an interactive session. + + + + + Looks up a localized string similar to The enumerator name '{0}' is reserved and cannot be used. + + + + + Looks up a localized string similar to Each linked resource and module must have a unique filename. Filename '{0}' is specified more than once in this assembly. + + + + + Looks up a localized string similar to Resource identifier '{0}' has already been used in this assembly. + + + + + Looks up a localized string similar to Since '{0}' returns void, a return keyword must not be followed by an object expression. + + + + + Looks up a localized string similar to Anonymous function converted to a void returning delegate cannot return a value. + + + + + Looks up a localized string similar to An object of a type convertible to '{0}' is required. + + + + + Looks up a localized string similar to '{0}': not all code paths return a value. + + + + + Looks up a localized string similar to Cannot return a value from an iterator. Use the yield return statement to return a value, or yield break to end the iteration.. + + + + + Looks up a localized string similar to Cannot modify the return value of '{0}' because it is not a variable. + + + + + Looks up a localized string similar to '{0}': static types cannot be used as return types. + + + + + Looks up a localized string similar to The type '{1}' exists in both '{0}' and '{2}'. + + + + + Looks up a localized string similar to The namespace '{1}' in '{0}' conflicts with the type '{3}' in '{2}'. + + + + + Looks up a localized string similar to The type '{1}' in '{0}' conflicts with the namespace '{3}' in '{2}'. + + + + + Looks up a localized string similar to '{0}' cannot be sealed because it is not an override. + + + + + Looks up a localized string similar to '{0}': a class cannot be both static and sealed. + + + + + Looks up a localized string similar to Security attribute '{0}' has an invalid SecurityAction value '{1}'. + + + + + Looks up a localized string similar to SecurityAction value '{0}' is invalid for security attributes applied to an assembly. + + + + + Looks up a localized string similar to SecurityAction value '{0}' is invalid for security attributes applied to a type or a method. + + + + + Looks up a localized string similar to Security attribute '{0}' is not valid on this declaration type. Security attributes are only valid on assembly, type and method declarations.. + + + + + Looks up a localized string similar to First argument to a security attribute must be a valid SecurityAction. + + + + + Looks up a localized string similar to Security attribute '{0}' cannot be applied to an Async method.. + + + + + Looks up a localized string similar to Async methods are not allowed in an Interface, Class, or Structure which has the 'SecurityCritical' or 'SecuritySafeCritical' attribute.. + + + + + Looks up a localized string similar to ; expected. + + + + + Looks up a localized string similar to { or ; expected. + + + + + Looks up a localized string similar to Key file '{0}' is missing the private key needed for signing. + + + + + Looks up a localized string similar to A single-line comment may not be used in an interpolated string.. + + + + + Looks up a localized string similar to The type or namespace name '{0}' could not be found (are you missing a using directive or an assembly reference?). + + + + + Looks up a localized string similar to The type name '{0}' could not be found. This type has been forwarded to assembly '{1}'. Consider adding a reference to that assembly.. + + + + + Looks up a localized string similar to '{0}' does not have a predefined size, therefore sizeof can only be used in an unsafe context (consider using System.Runtime.InteropServices.Marshal.SizeOf). + + + + + Looks up a localized string similar to Source file references are not supported.. + + + + + Looks up a localized string similar to Instance of type '{0}' cannot be used inside an anonymous function, query expression, iterator block or async method. + + + + + Looks up a localized string similar to Constraint cannot be special class '{0}'. + + + + + Looks up a localized string similar to stackalloc may not be used in a catch or finally block. + + + + + Looks up a localized string similar to A lambda expression with a statement body cannot be converted to an expression tree. + + + + + Looks up a localized string similar to '{1}': cannot derive from static class '{0}'. + + + + + Looks up a localized string similar to '{0}': static classes cannot implement interfaces. + + + + + Looks up a localized string similar to The constant '{0}' cannot be marked static. + + + + + Looks up a localized string similar to '{0}': a static constructor must be parameterless. + + + + + Looks up a localized string similar to '{0}': access modifiers are not allowed on static constructors. + + + + + Looks up a localized string similar to '{0}': static constructor cannot have an explicit 'this' or 'base' constructor call. + + + + + Looks up a localized string similar to Static class '{0}' cannot derive from type '{1}'. Static classes must derive from object.. + + + + + Looks up a localized string similar to The second operand of an 'is' or 'as' operator may not be static type '{0}'. + + + + + Looks up a localized string similar to Static field or property '{0}' cannot be assigned in an object initializer. + + + + + Looks up a localized string similar to A static member '{0}' cannot be marked as override, virtual, or abstract. + + + + + Looks up a localized string similar to Struct member '{0}' of type '{1}' causes a cycle in the struct layout. + + + + + Looks up a localized string similar to The FieldOffset attribute is not allowed on static or const fields. + + + + + Looks up a localized string similar to The FieldOffset attribute can only be placed on members of types marked with the StructLayout(LayoutKind.Explicit). + + + + + Looks up a localized string similar to Structs cannot contain explicit parameterless constructors. + + + + + Looks up a localized string similar to '{0}': structs cannot call base class constructors. + + + + + Looks up a localized string similar to Sub-expression cannot be used in an argument to nameof.. + + + + + Looks up a localized string similar to Control cannot fall out of switch from final case label ('{0}'). + + + + + Looks up a localized string similar to Control cannot fall through from one case label ('{0}') to another. + + + + + Looks up a localized string similar to A switch expression or case label must be a bool, char, string, integral, enum, or corresponding nullable type. + + + + + Looks up a localized string similar to Command-line syntax error: Missing ':<number>' for '{0}' option. + + + + + Looks up a localized string similar to Command-line syntax error: Missing '{0}' for '{1}' option. + + + + + Looks up a localized string similar to 'MethodImplOptions.Synchronized' cannot be applied to an async method. + + + + + Looks up a localized string similar to Syntax error, '{0}' expected. + + + + + Looks up a localized string similar to System.Void cannot be used from C# -- use typeof(void) to get the void type object. + + + + + Looks up a localized string similar to Since '{0}' is an async method that returns 'Task', a return keyword must not be followed by an object expression. Did you intend to return 'Task<T>'?. + + + + + Looks up a localized string similar to Async lambda expression converted to a 'Task' returning delegate cannot return a value. Did you intend to return 'Task<T>'?. + + + + + Looks up a localized string similar to Keyword 'this' is not available in the current context. + + + + + Looks up a localized string similar to Keyword 'this' is not valid in a static property, static method, or static field initializer. + + + + + Looks up a localized string similar to Keyword 'this' or 'base' expected. + + + + + Looks up a localized string similar to Anonymous methods, lambda expressions, and query expressions inside structs cannot access instance members of 'this'. Consider copying 'this' to a local variable outside the anonymous method, lambda expression or query expression and using the local instead.. + + + + + Looks up a localized string similar to Catch clauses cannot follow the general catch clause of a try statement. + + + + + Looks up a localized string similar to Too many characters in character literal. + + + + + Looks up a localized string similar to Only 65534 locals, including those generated by the compiler, are allowed. + + + + + Looks up a localized string similar to Combined length of user strings used by the program exceeds allowed limit. Try to decrease use of string literals.. + + + + + Looks up a localized string similar to A format specifier may not contain trailing whitespace.. + + + + + Looks up a localized string similar to The {1} '{0}' cannot be used with type arguments. + + + + + Looks up a localized string similar to Type expected. + + + + + Looks up a localized string similar to Type parameter declaration must be an identifier not a type. + + + + + Looks up a localized string similar to Cannot convert null to type parameter '{0}' because it could be a non-nullable value type. Consider using 'default({0})' instead.. + + + + + Looks up a localized string similar to Type parameter '{0}' has the same name as the containing type, or method. + + + + + Looks up a localized string similar to The contextual keyword 'var' may only appear within a local variable declaration or in script code. + + + + + Looks up a localized string similar to The contextual keyword 'var' cannot be used in a range variable declaration. + + + + + Looks up a localized string similar to '{1}' does not define type parameter '{0}'. + + + + + Looks up a localized string similar to Field '{0}' must be fully assigned before control is returned to the caller. + + + + + Looks up a localized string similar to Auto-implemented property '{0}' must be fully assigned before control is returned to the caller.. + + + + + Looks up a localized string similar to Cannot modify the result of an unboxing conversion. + + + + + Looks up a localized string similar to Missing close delimiter '}' for interpolated expression started with '{'.. + + + + + Looks up a localized string similar to A '{0}' character must be escaped (by doubling) in an interpolated string.. + + + + + Looks up a localized string similar to Unexpected use of an aliased name. + + + + + Looks up a localized string similar to Type arguments are not allowed in the nameof operator.. + + + + + Looks up a localized string similar to Unexpected character '{0}'. + + + + + Looks up a localized string similar to Unexpected preprocessor directive. + + + + + Looks up a localized string similar to Unexpected use of a generic name. + + + + + Looks up a localized string similar to Semicolon after method or accessor block is not valid. + + + + + Looks up a localized string similar to Unexpected token '{0}'. + + + + + Looks up a localized string similar to Unexpected use of an unbound generic name. + + + + + Looks up a localized string similar to Invalid variance: The type parameter '{1}' must be {3} valid on '{0}'. '{1}' is {2}.. + + + + + Looks up a localized string similar to '{0}' cannot implement both '{1}' and '{2}' because they may unify for some type parameter substitutions. + + + + + Looks up a localized string similar to '{0}' does not implement inherited abstract member '{1}'. + + + + + Looks up a localized string similar to '{0}' does not implement interface member '{1}'. '{2}' is not public.. + + + + + Looks up a localized string similar to '{0}' does not implement interface member '{1}'. + + + + + Looks up a localized string similar to A previous catch clause already catches all exceptions of this or of a super type ('{0}'). + + + + + Looks up a localized string similar to Async methods cannot have unsafe parameters or return types. + + + + + Looks up a localized string similar to Iterators cannot have unsafe parameters or yield types. + + + + + Looks up a localized string similar to Pointers and fixed size buffers may only be used in an unsafe context. + + + + + Looks up a localized string similar to Unsafe type '{0}' cannot be used in object creation. + + + + + Looks up a localized string similar to Transparent identifier member access failed for field '{0}' of '{1}'. Does the data being queried implement the query pattern?. + + + + + Looks up a localized string similar to Unterminated string literal. + + + + + Looks up a localized string similar to Use of unassigned local variable '{0}'. + + + + + Looks up a localized string similar to Use of possibly unassigned field '{0}'. + + + + + Looks up a localized string similar to Use of unassigned out parameter '{0}'. + + + + + Looks up a localized string similar to Use of possibly unassigned auto-implemented property '{0}'. + + + + + Looks up a localized string similar to The 'this' object cannot be used before all of its fields are assigned to. + + + + + Looks up a localized string similar to A using clause must precede all other elements defined in the namespace except extern alias declarations. + + + + + Looks up a localized string similar to The type '{2}' must be a non-nullable value type in order to use it as parameter '{1}' in the generic type or method '{0}'. + + + + + Looks up a localized string similar to Cannot convert null to '{0}' because it is a non-nullable value type. + + + + + Looks up a localized string similar to Syntax error; value expected. + + + + + Looks up a localized string similar to Extension method '{0}' defined on value type '{1}' cannot be used to create delegates. + + + + + Looks up a localized string similar to Members of property '{0}' of type '{1}' cannot be assigned with an object initializer because it is of a value type. + + + + + Looks up a localized string similar to __arglist is not allowed in the parameter list of async methods. + + + + + Looks up a localized string similar to An expression tree lambda may not contain a method with variable arguments. + + + + + Looks up a localized string similar to __arglist is not allowed in the parameter list of iterators. + + + + + Looks up a localized string similar to An __arglist parameter must be the last parameter in a formal parameter list. + + + + + Looks up a localized string similar to Cannot declare a variable of static type '{0}'. + + + + + Looks up a localized string similar to Cannot use local variable '{0}' before it is declared. + + + + + Looks up a localized string similar to Cannot use local variable '{0}' before it is declared. The declaration of the local variable hides the field '{1}'.. + + + + + Looks up a localized string similar to '{0}': virtual or abstract members cannot be private. + + + + + Looks up a localized string similar to The operation in question is undefined on void pointers. + + + + + Looks up a localized string similar to '{0}': a field cannot be both volatile and readonly. + + + + + Looks up a localized string similar to '{0}': a volatile field cannot be of the type '{1}'. + + + + + Looks up a localized string similar to A Windows Runtime event may not be passed as an out or ref parameter.. + + + + + Looks up a localized string similar to The yield statement cannot be used inside an anonymous method or lambda expression. + + + + + Looks up a localized string similar to Cannot use 'yield' in top-level script code. + + + + + Looks up a localized string similar to Algorithm '{0}' is not supported. + + + + + Looks up a localized string similar to Code page '{0}' is invalid or not installed. + + + + + Looks up a localized string similar to Unexpected error writing debug information -- '{0}'. + + + + + Looks up a localized string similar to File name '{0}' is empty, contains invalid characters, has a drive specification without an absolute path, or is too long. + + + + + Looks up a localized string similar to Invalid target type for /target: must specify 'exe', 'winexe', 'library', or 'module'. + + + + + Looks up a localized string similar to Metadata file '{0}' could not be opened -- {1}. + + + + + Looks up a localized string similar to Cannot create short filename '{0}' when a long filename with the same short filename already exists. + + + + + Looks up a localized string similar to Generic parameter is definition when expected to be reference {0}. + + + + + Looks up a localized string similar to Unused extern alias.. + + + + + Looks up a localized string similar to Unused extern alias. + + + + + Looks up a localized string similar to Unnecessary using directive.. + + + + + Looks up a localized string similar to Unnecessary using directive. + + + + + Looks up a localized string similar to anonymous method. + + + + + Looks up a localized string similar to await in catch blocks and finally blocks. + + + + + Looks up a localized string similar to collection. + + + + + Looks up a localized string similar to contravariant. + + + + + Looks up a localized string similar to contravariantly. + + + + + Looks up a localized string similar to covariant. + + + + + Looks up a localized string similar to covariantly. + + + + + Looks up a localized string similar to + Visual C# Compiler Options + + - OUTPUT FILES - + /out:<file> Specify output file name (default: base name of + file with main class or first file) + /target:exe Build a console executable (default) (Short + form: /t:exe) + /target:winexe Build a Windows executable (Short form: + /t:winexe) + /target:library [rest of string was truncated]";. + + + + + Looks up a localized string similar to directory does not exist. + + + + + Looks up a localized string similar to path is too long or invalid. + + + + + Looks up a localized string similar to anonymous methods. + + + + + Looks up a localized string similar to anonymous types. + + + + + Looks up a localized string similar to async function. + + + + + Looks up a localized string similar to automatically implemented properties. + + + + + Looks up a localized string similar to auto property initializer. + + + + + Looks up a localized string similar to collection initializer. + + + + + Looks up a localized string similar to declaration expression. + + + + + Looks up a localized string similar to default operator. + + + + + Looks up a localized string similar to dictionary initializer. + + + + + Looks up a localized string similar to dynamic. + + + + + Looks up a localized string similar to exception filter. + + + + + Looks up a localized string similar to expression-bodied indexer. + + + + + Looks up a localized string similar to expression-bodied method. + + + + + Looks up a localized string similar to expression-bodied property. + + + + + Looks up a localized string similar to extension method. + + + + + Looks up a localized string similar to extern alias. + + + + + Looks up a localized string similar to fixed size buffers. + + + + + Looks up a localized string similar to generics. + + + + + Looks up a localized string similar to namespace alias qualifier. + + + + + Looks up a localized string similar to implicitly typed array. + + + + + Looks up a localized string similar to implicitly typed local variable. + + + + + Looks up a localized string similar to interpolated strings. + + + + + Looks up a localized string similar to iterators. + + + + + Looks up a localized string similar to lambda expression. + + + + + Looks up a localized string similar to module as an attribute target specifier. + + + + + Looks up a localized string similar to named argument. + + + + + Looks up a localized string similar to nameof operator. + + + + + Looks up a localized string similar to nullable types. + + + + + Looks up a localized string similar to null propagating operator. + + + + + Looks up a localized string similar to object initializer. + + + + + Looks up a localized string similar to optional parameter. + + + + + Looks up a localized string similar to partial method. + + + + + Looks up a localized string similar to partial types. + + + + + Looks up a localized string similar to #pragma. + + + + + Looks up a localized string similar to access modifiers on properties. + + + + + Looks up a localized string similar to query expression. + + + + + Looks up a localized string similar to readonly automatically implemented properties. + + + + + Looks up a localized string similar to static classes. + + + + + Looks up a localized string similar to switch on boolean type. + + + + + Looks up a localized string similar to type variance. + + + + + Looks up a localized string similar to using static. + + + + + Looks up a localized string similar to fixed variable. + + + + + Looks up a localized string similar to foreach iteration variable. + + + + + Looks up a localized string similar to <global namespace>. + + + + + Looks up a localized string similar to invariantly. + + + + + Looks up a localized string similar to lambda expression. + + + + + Looks up a localized string similar to LIB environment variable. + + + + + Looks up a localized string similar to /LIB option. + + + + + Looks up a localized string similar to {0} version {1}. + + + + + Looks up a localized string similar to Copyright (C) Microsoft Corporation. All rights reserved.. + + + + + Looks up a localized string similar to method group. + + + + + Looks up a localized string similar to <namespace>. + + + + + Looks up a localized string similar to <null>. + + + + + Looks up a localized string similar to Operation caused a stack overflow.. + + + + + Looks up a localized string similar to <path list>. + + + + + Looks up a localized string similar to /REFERENCEPATH option. + + + + + Looks up a localized string similar to (Location of symbol related to previous error). + + + + + Looks up a localized string similar to (Location of symbol related to previous warning). + + + + + Looks up a localized string similar to using alias. + + + + + Looks up a localized string similar to event. + + + + + Looks up a localized string similar to extern alias. + + + + + Looks up a localized string similar to field. + + + + + Looks up a localized string similar to label. + + + + + Looks up a localized string similar to method. + + + + + Looks up a localized string similar to namespace. + + + + + Looks up a localized string similar to property. + + + + + Looks up a localized string similar to type. + + + + + Looks up a localized string similar to type parameter. + + + + + Looks up a localized string similar to element. + + + + + Looks up a localized string similar to variable. + + + + + Looks up a localized string similar to <text>. + + + + + Looks up a localized string similar to Microsoft (R) Visual C# Compiler. + + + + + Looks up a localized string similar to using variable. + + + + + Looks up a localized string similar to 'experimental'. + + + + + Looks up a localized string similar to Include tag is invalid . + + + + + Looks up a localized string similar to Failed to insert some or all of included XML . + + + + + Looks up a localized string similar to <!-- Badly formed XML comment ignored for member "{0}" -->. + + + + + Looks up a localized string similar to Badly formed XML file "{0}" cannot be included . + + + + + Looks up a localized string similar to Missing file attribute. + + + + + Looks up a localized string similar to Missing path attribute. + + + + + Looks up a localized string similar to No matching elements were found for the following include tag . + + + + + Looks up a localized string similar to Skipping some types in analyzer assembly {0} due to a ReflectionTypeLoadException : {1}.. + + + + + Looks up a localized string similar to Skip loading types in analyzer assembly that fail due to a ReflectionTypeLoadException. + + + + + Looks up a localized string similar to Called GetDeclarationName for a declaration node that can possibly contain multiple variable declarators.. + + + + + Looks up a localized string similar to items: must be non-empty. + + + + + Looks up a localized string similar to Location must be provided in order to provide minimal type qualification.. + + + + + Looks up a localized string similar to LookupOptions has an invalid combination of options. + + + + + Looks up a localized string similar to Must call SetMethodTestData(ConcurrentDictionary) before calling SetMethodTestData(MethodSymbol, ILBuilder). + + + + + Looks up a localized string similar to Name conflict for name {0}. + + + + + Looks up a localized string similar to SearchCriteria is expected.. + + + + + Looks up a localized string similar to Not a C# symbol.. + + + + + Looks up a localized string similar to Position is not within syntax tree with full span {0}. + + + + + Looks up a localized string similar to Position must be within span of the syntax tree.. + + + + + Looks up a localized string similar to separator is expected. + + + + + Looks up a localized string similar to Syntax node to be speculated cannot belong to a syntax tree from the current compilation.. + + + + + Looks up a localized string similar to Submission can have at most one syntax tree.. + + + + + Looks up a localized string similar to Submission can only include script code.. + + + + + Looks up a localized string similar to Syntax node is not within syntax tree. + + + + + Looks up a localized string similar to Syntax tree already present. + + + + + Looks up a localized string similar to SyntaxTree '{0}' resulted from a #load directive and cannot be removed or replaced directly.. + + + + + Looks up a localized string similar to Syntax tree should be created from a submission.. + + + + + Looks up a localized string similar to SyntaxTree '{0}' not found to remove. + + + + + Looks up a localized string similar to SyntaxTreeSemanticModel must be provided in order to provide minimal type qualification.. + + + + + Looks up a localized string similar to The stream cannot be read from.. + + + + + Looks up a localized string similar to The stream cannot be written to.. + + + + + Looks up a localized string similar to This method can only be used to create tokens - {0} is not a token kind.. + + + + + Looks up a localized string similar to tree must have a root node with SyntaxKind.CompilationUnit. + + + + + Looks up a localized string similar to tree not part of compilation. + + + + + Looks up a localized string similar to Type argument cannot be null. + + + + + Looks up a localized string similar to Use Microsoft.CodeAnalysis.CSharp.SyntaxFactory.Literal to create numeric literal tokens.. + + + + + Looks up a localized string similar to Use Microsoft.CodeAnalysis.CSharp.SyntaxFactory.Literal to create character literal tokens.. + + + + + Looks up a localized string similar to Use Microsoft.CodeAnalysis.CSharp.SyntaxFactory.Identifier or Microsoft.CodeAnalysis.CSharp.SyntaxFactory.VerbatimIdentifier to create identifier tokens.. + + + + + Looks up a localized string similar to Alignment value {0} has a magnitude greater than {1} and may result in a large formatted string.. + + + + + Looks up a localized string similar to Alignment value has a magnitude that may result in a large formatted string. + + + + + Looks up a localized string similar to The result of the expression is always 'null' of type '{0}'. + + + + + Looks up a localized string similar to The result of the expression is always 'null'. + + + + + Looks up a localized string similar to Ambiguous reference in cref attribute: '{0}'. Assuming '{1}', but could have also matched other overloads including '{2}'.. + + + + + Looks up a localized string similar to Ambiguous reference in cref attribute. + + + + + Looks up a localized string similar to An instance of analyzer {0} cannot be created from {1} : {2}.. + + + + + Looks up a localized string similar to An analyzer instance cannot be created. + + + + + Looks up a localized string similar to Attribute '{0}' from module '{1}' will be ignored in favor of the instance appearing in source. + + + + + Looks up a localized string similar to Attribute will be ignored in favor of the instance appearing in source. + + + + + Looks up a localized string similar to Possibly incorrect assignment to local '{0}' which is the argument to a using or lock statement. The Dispose call or unlocking will happen on the original value of the local.. + + + + + Looks up a localized string similar to Possibly incorrect assignment to local which is the argument to a using or lock statement. + + + + + Looks up a localized string similar to Assignment made to same variable; did you mean to assign something else?. + + + + + Looks up a localized string similar to Assignment made to same variable. + + + + + Looks up a localized string similar to This async method lacks 'await' operators and will run synchronously. Consider using the 'await' operator to await non-blocking API calls, or 'await Task.Run(...)' to do CPU-bound work on a background thread.. + + + + + Looks up a localized string similar to Async method lacks 'await' operators and will run synchronously. + + + + + Looks up a localized string similar to Attribute '{0}' is ignored when public signing is specified.. + + + + + Looks up a localized string similar to Attribute is ignored when public signing is specified.. + + + + + Looks up a localized string similar to '{0}' is not a valid attribute location for this declaration. Valid attribute locations for this declaration are '{1}'. All attributes in this block will be ignored.. + + + + + Looks up a localized string similar to Not a valid attribute location for this declaration. + + + + + Looks up a localized string similar to Possible unintended reference comparison; to get a value comparison, cast the left hand side to type '{0}'. + + + + + Looks up a localized string similar to Possible unintended reference comparison; left hand side needs cast. + + + + + Looks up a localized string similar to Possible unintended reference comparison; to get a value comparison, cast the right hand side to type '{0}'. + + + + + Looks up a localized string similar to Possible unintended reference comparison; right hand side needs cast. + + + + + Looks up a localized string similar to Cannot restore warning 'CS{0}' because it was disabled globally. + + + + + Looks up a localized string similar to Cannot restore warning because it was disabled globally. + + + + + Looks up a localized string similar to The language name '{0}' is invalid.. + + + + + Looks up a localized string similar to The language name is invalid. + + + + + Looks up a localized string similar to '{0}' is not a valid warning number. + + + + + Looks up a localized string similar to A number that was passed to the #pragma warning preprocessor directive was not a valid warning number. Verify that the number represents a warning, not an error.. + + + + + Looks up a localized string similar to Not a valid warning number. + + + + + Looks up a localized string similar to XML comment has cref attribute '{0}' that could not be resolved. + + + + + Looks up a localized string similar to XML comment has cref attribute that could not be resolved. + + + + + Looks up a localized string similar to Invalid type for parameter {0} in XML comment cref attribute: '{1}'. + + + + + Looks up a localized string similar to Invalid type for parameter in XML comment cref attribute. + + + + + Looks up a localized string similar to Invalid return type in XML comment cref attribute. + + + + + Looks up a localized string similar to Invalid return type in XML comment cref attribute. + + + + + Looks up a localized string similar to XML comment has syntactically incorrect cref attribute '{0}'. + + + + + Looks up a localized string similar to XML comment has syntactically incorrect cref attribute. + + + + + Looks up a localized string similar to XML comment has cref attribute '{0}' that refers to a type parameter. + + + + + Looks up a localized string similar to XML comment has cref attribute that refers to a type parameter. + + + + + Looks up a localized string similar to Bitwise-or operator used on a sign-extended operand; consider casting to a smaller unsigned type first. + + + + + Looks up a localized string similar to The compiler implicitly widened and sign-extended a variable, and then used the resulting value in a bitwise OR operation. This can result in unexpected behavior.. + + + + + Looks up a localized string similar to Bitwise-or operator used on a sign-extended operand. + + + + + Looks up a localized string similar to Passing '{0}' as ref or out or taking its address may cause a runtime exception because it is a field of a marshal-by-reference class. + + + + + Looks up a localized string similar to Passing a field of a marshal-by-reference class as ref or out or taking its address may cause a runtime exception. + + + + + Looks up a localized string similar to Call System.IDisposable.Dispose() on allocated instance of {0} before all references to it are out of scope.. + + + + + Looks up a localized string similar to Call System.IDisposable.Dispose() on allocated instance before all references to it are out of scope. + + + + + Looks up a localized string similar to Allocated instance of {0} is not disposed along all exception paths. Call System.IDisposable.Dispose() before all references to it are out of scope.. + + + + + Looks up a localized string similar to Allocated instance is not disposed along all exception paths. + + + + + Looks up a localized string similar to Object '{0}' can be disposed more than once.. + + + + + Looks up a localized string similar to Object can be disposed more than once. + + + + + Looks up a localized string similar to The CallerFilePathAttribute applied to parameter '{0}' will have no effect because it applies to a member that is used in contexts that do not allow optional arguments. + + + + + Looks up a localized string similar to The CallerFilePathAttribute will have no effect because it applies to a member that is used in contexts that do not allow optional arguments. + + + + + Looks up a localized string similar to The CallerMemberNameAttribute applied to parameter '{0}' will have no effect. It is overridden by the CallerFilePathAttribute.. + + + + + Looks up a localized string similar to The CallerMemberNameAttribute will have no effect; it is overridden by the CallerFilePathAttribute. + + + + + Looks up a localized string similar to The CallerLineNumberAttribute applied to parameter '{0}' will have no effect because it applies to a member that is used in contexts that do not allow optional arguments. + + + + + Looks up a localized string similar to The CallerLineNumberAttribute will have no effect because it applies to a member that is used in contexts that do not allow optional arguments. + + + + + Looks up a localized string similar to The CallerFilePathAttribute applied to parameter '{0}' will have no effect. It is overridden by the CallerLineNumberAttribute.. + + + + + Looks up a localized string similar to The CallerFilePathAttribute will have no effect; it is overridden by the CallerLineNumberAttribute. + + + + + Looks up a localized string similar to The CallerMemberNameAttribute applied to parameter '{0}' will have no effect. It is overridden by the CallerLineNumberAttribute.. + + + + + Looks up a localized string similar to The CallerMemberNameAttribute will have no effect; it is overridden by the CallerLineNumberAttribute. + + + + + Looks up a localized string similar to The CallerMemberNameAttribute applied to parameter '{0}' will have no effect because it applies to a member that is used in contexts that do not allow optional arguments. + + + + + Looks up a localized string similar to The CallerMemberNameAttribute will have no effect because it applies to a member that is used in contexts that do not allow optional arguments. + + + + + Looks up a localized string similar to Accessing a member on '{0}' may cause a runtime exception because it is a field of a marshal-by-reference class. + + + + + Looks up a localized string similar to This warning occurs when you try to call a method, property, or indexer on a member of a class that derives from MarshalByRefObject, and the member is a value type. Objects that inherit from MarshalByRefObject are typically intended to be marshaled by reference across an application domain. If any code ever attempts to directly access the value-type member of such an object across an application domain, a runtime exception will occur. To resolve the warning, first copy the member into a local variable and c [rest of string was truncated]";. + + + + + Looks up a localized string similar to Accessing a member on a field of a marshal-by-reference class may cause a runtime exception. + + + + + Looks up a localized string similar to Ignoring /win32manifest for module because it only applies to assemblies. + + + + + Looks up a localized string similar to Ignoring /win32manifest for module because it only applies to assemblies. + + + + + Looks up a localized string similar to Arrays as attribute arguments is not CLS-compliant. + + + + + Looks up a localized string similar to Arrays as attribute arguments is not CLS-compliant. + + + + + Looks up a localized string similar to '{0}' cannot be marked as CLS-compliant because the assembly does not have a CLSCompliant attribute. + + + + + Looks up a localized string similar to Type or member cannot be marked as CLS-compliant because the assembly does not have a CLSCompliant attribute. + + + + + Looks up a localized string similar to '{0}' does not need a CLSCompliant attribute because the assembly does not have a CLSCompliant attribute. + + + + + Looks up a localized string similar to Type or member does not need a CLSCompliant attribute because the assembly does not have a CLSCompliant attribute. + + + + + Looks up a localized string similar to Argument type '{0}' is not CLS-compliant. + + + + + Looks up a localized string similar to Argument type is not CLS-compliant. + + + + + Looks up a localized string similar to '{0}' has no accessible constructors which use only CLS-compliant types. + + + + + Looks up a localized string similar to Type has no accessible constructors which use only CLS-compliant types. + + + + + Looks up a localized string similar to '{0}': base type '{1}' is not CLS-compliant. + + + + + Looks up a localized string similar to A base type was marked as not having to be compliant with the Common Language Specification (CLS) in an assembly that was marked as being CLS compliant. Either remove the attribute that specifies the assembly is CLS compliant or remove the attribute that indicates the type is not CLS compliant.. + + + + + Looks up a localized string similar to Base type is not CLS-compliant. + + + + + Looks up a localized string similar to Type of '{0}' is not CLS-compliant. + + + + + Looks up a localized string similar to A public, protected, or protected internal variable must be of a type that is compliant with the Common Language Specification (CLS).. + + + + + Looks up a localized string similar to Type is not CLS-compliant. + + + + + Looks up a localized string similar to Identifier '{0}' is not CLS-compliant. + + + + + Looks up a localized string similar to Identifier is not CLS-compliant. + + + + + Looks up a localized string similar to Identifier '{0}' differing only in case is not CLS-compliant. + + + + + Looks up a localized string similar to Identifier differing only in case is not CLS-compliant. + + + + + Looks up a localized string similar to '{0}' is not CLS-compliant because base interface '{1}' is not CLS-compliant. + + + + + Looks up a localized string similar to Type is not CLS-compliant because base interface is not CLS-compliant. + + + + + Looks up a localized string similar to '{0}': CLS-compliant interfaces must have only CLS-compliant members. + + + + + Looks up a localized string similar to CLS-compliant interfaces must have only CLS-compliant members. + + + + + Looks up a localized string similar to Return type of '{0}' is not CLS-compliant. + + + + + Looks up a localized string similar to Return type is not CLS-compliant. + + + + + Looks up a localized string similar to Constraint type '{0}' is not CLS-compliant. + + + + + Looks up a localized string similar to Constraint type is not CLS-compliant. + + + + + Looks up a localized string similar to '{0}' cannot be marked as CLS-compliant because it is a member of non-CLS-compliant type '{1}'. + + + + + Looks up a localized string similar to Type cannot be marked as CLS-compliant because it is a member of non-CLS-compliant type. + + + + + Looks up a localized string similar to CLSCompliant attribute has no meaning when applied to parameters. Try putting it on the method instead.. + + + + + Looks up a localized string similar to CLSCompliant attribute has no meaning when applied to parameters. + + + + + Looks up a localized string similar to CLS compliance checking will not be performed on '{0}' because it is not visible from outside this assembly. + + + + + Looks up a localized string similar to CLS compliance checking will not be performed because it is not visible from outside this assembly. + + + + + Looks up a localized string similar to CLSCompliant attribute has no meaning when applied to return types. Try putting it on the method instead.. + + + + + Looks up a localized string similar to CLSCompliant attribute has no meaning when applied to return types. + + + + + Looks up a localized string similar to Added modules must be marked with the CLSCompliant attribute to match the assembly. + + + + + Looks up a localized string similar to Added modules must be marked with the CLSCompliant attribute to match the assembly. + + + + + Looks up a localized string similar to '{0}': only CLS-compliant members can be abstract. + + + + + Looks up a localized string similar to Only CLS-compliant members can be abstract. + + + + + Looks up a localized string similar to You must specify the CLSCompliant attribute on the assembly, not the module, to enable CLS compliance checking. + + + + + Looks up a localized string similar to You must specify the CLSCompliant attribute on the assembly, not the module, to enable CLS compliance checking. + + + + + Looks up a localized string similar to You cannot specify the CLSCompliant attribute on a module that differs from the CLSCompliant attribute on the assembly. + + + + + Looks up a localized string similar to You cannot specify the CLSCompliant attribute on a module that differs from the CLSCompliant attribute on the assembly. + + + + + Looks up a localized string similar to Methods with variable arguments are not CLS-compliant. + + + + + Looks up a localized string similar to Methods with variable arguments are not CLS-compliant. + + + + + Looks up a localized string similar to Overloaded method '{0}' differing only in ref or out, or in array rank, is not CLS-compliant. + + + + + Looks up a localized string similar to Overloaded method differing only in ref or out, or in array rank, is not CLS-compliant. + + + + + Looks up a localized string similar to Overloaded method '{0}' differing only by unnamed array types is not CLS-compliant. + + + + + Looks up a localized string similar to This error occurs if you have an overloaded method that takes a jagged array and the only difference between the method signatures is the element type of the array. To avoid this error, consider using a rectangular array rather than a jagged array; use an additional parameter to disambiguate the function call; rename one or more of the overloaded methods; or, if CLS Compliance is not needed, remove the CLSCompliantAttribute attribute.. + + + + + Looks up a localized string similar to Overloaded method differing only by unnamed array types is not CLS-compliant. + + + + + Looks up a localized string similar to CLS-compliant field '{0}' cannot be volatile. + + + + + Looks up a localized string similar to CLS-compliant field cannot be volatile. + + + + + Looks up a localized string similar to Option '{0}' overrides attribute '{1}' given in a source file or added module. + + + + + Looks up a localized string similar to This warning occurs if the assembly attributes AssemblyKeyFileAttribute or AssemblyKeyNameAttribute found in source conflict with the /keyfile or /keycontainer command line option or key file name or key container specified in the Project Properties.. + + + + + Looks up a localized string similar to Option overrides attribute given in a source file or added module. + + + + + Looks up a localized string similar to Comparing with null of type '{0}' always produces 'false'. + + + + + Looks up a localized string similar to Comparing with null of struct type always produces 'false'. + + + + + Looks up a localized string similar to '{0}' interface marked with 'CoClassAttribute' not marked with 'ComImportAttribute'. + + + + + Looks up a localized string similar to Interface marked with 'CoClassAttribute' not marked with 'ComImportAttribute'. + + + + + Looks up a localized string similar to Comparison made to same variable; did you mean to compare something else?. + + + + + Looks up a localized string similar to Comparison made to same variable. + + + + + Looks up a localized string similar to Different checksum values given for '{0}'. + + + + + Looks up a localized string similar to Different #pragma checksum values given. + + + + + Looks up a localized string similar to Referenced assembly '{0}' targets a different processor.. + + + + + Looks up a localized string similar to Referenced assembly targets a different processor. + + + + + Looks up a localized string similar to The fully qualified name for '{0}' is too long for debug information. Compile without '/debug' option.. + + + + + Looks up a localized string similar to Fully qualified name is too long for debug information. + + + + + Looks up a localized string similar to The default value specified for parameter '{0}' will have no effect because it applies to a member that is used in contexts that do not allow optional arguments. + + + + + Looks up a localized string similar to The default value specified will have no effect because it applies to a member that is used in contexts that do not allow optional arguments. + + + + + Looks up a localized string similar to Invalid value for '/define'; '{0}' is not a valid identifier. + + + + + Looks up a localized string similar to Invalid value for '/define'; not a valid identifier. + + + + + Looks up a localized string similar to Delay signing was specified and requires a public key, but no public key was specified. + + + + + Looks up a localized string similar to Delay signing was specified and requires a public key, but no public key was specified. + + + + + Looks up a localized string similar to The best overloaded Add method '{0}' for the collection initializer element is obsolete.. + + + + + Looks up a localized string similar to The best overloaded Add method for the collection initializer element is obsolete. + + + + + Looks up a localized string similar to The best overloaded Add method '{0}' for the collection initializer element is obsolete. {1}. + + + + + Looks up a localized string similar to The best overloaded Add method for the collection initializer element is obsolete. + + + + + Looks up a localized string similar to '{0}' is obsolete. + + + + + Looks up a localized string similar to Type or member is obsolete. + + + + + Looks up a localized string similar to '{0}' is obsolete: '{1}'. + + + + + Looks up a localized string similar to Type or member is obsolete. + + + + + Looks up a localized string similar to Expression will always cause a System.NullReferenceException because the default value of '{0}' is null. + + + + + Looks up a localized string similar to Expression will always cause a System.NullReferenceException because the type's default value is null. + + + + + Looks up a localized string similar to XML comment has a duplicate param tag for '{0}'. + + + + + Looks up a localized string similar to XML comment has a duplicate param tag. + + + + + Looks up a localized string similar to XML comment has a duplicate typeparam tag for '{0}'. + + + + + Looks up a localized string similar to XML comment has a duplicate typeparam tag. + + + + + Looks up a localized string similar to The using directive for '{0}' appeared previously in this namespace. + + + + + Looks up a localized string similar to Using directive appeared previously in this namespace. + + + + + Looks up a localized string similar to The dynamically dispatched call to method '{0}' may fail at runtime because one or more applicable overloads are conditional methods.. + + + + + Looks up a localized string similar to Dynamically dispatched call may fail at runtime because one or more applicable overloads are conditional methods. + + + + + Looks up a localized string similar to Empty switch block. + + + + + Looks up a localized string similar to Empty switch block. + + + + + Looks up a localized string similar to Single-line comment or end-of-line expected. + + + + + Looks up a localized string similar to Single-line comment or end-of-line expected after #pragma directive. + + + + + Looks up a localized string similar to '{0}' defines operator == or operator != but does not override Object.Equals(object o). + + + + + Looks up a localized string similar to Type defines operator == or operator != but does not override Object.Equals(object o). + + + + + Looks up a localized string similar to '{0}' defines operator == or operator != but does not override Object.GetHashCode(). + + + + + Looks up a localized string similar to Type defines operator == or operator != but does not override Object.GetHashCode(). + + + + + Looks up a localized string similar to '{0}' overrides Object.Equals(object o) but does not override Object.GetHashCode(). + + + + + Looks up a localized string similar to Type overrides Object.Equals(object o) but does not override Object.GetHashCode(). + + + + + Looks up a localized string similar to {0}. See also error CS{1}.. + + + + + Looks up a localized string similar to The compiler emits this warning when it overrides an error with a warning. For information about the problem, search for the error code mentioned.. + + + + + Looks up a localized string similar to Warning is overriding an error. + + + + + Looks up a localized string similar to Explicit interface implementation '{0}' matches more than one interface member. Which interface member is actually chosen is implementation-dependent. Consider using a non-explicit implementation instead.. + + + + + Looks up a localized string similar to Explicit interface implementation matches more than one interface member. + + + + + Looks up a localized string similar to Constructor '{0}' is marked external. + + + + + Looks up a localized string similar to Constructor is marked external. + + + + + Looks up a localized string similar to Method, operator, or accessor '{0}' is marked external and has no attributes on it. Consider adding a DllImport attribute to specify the external implementation.. + + + + + Looks up a localized string similar to Method, operator, or accessor is marked external and has no attributes on it. + + + + + Looks up a localized string similar to Unable to include XML fragment '{1}' of file '{0}' -- {2}. + + + + + Looks up a localized string similar to Unable to include XML fragment. + + + + + Looks up a localized string similar to Source file '{0}' specified multiple times. + + + + + Looks up a localized string similar to Source file specified multiple times. + + + + + Looks up a localized string similar to Invalid filename specified for preprocessor directive. Filename is too long or not a valid filename.. + + + + + Looks up a localized string similar to Invalid filename specified for preprocessor directive. + + + + + Looks up a localized string similar to Filter expression is a constant, consider removing the filter. + + + + + Looks up a localized string similar to Filter expression is a constant. + + + + + Looks up a localized string similar to Introducing a 'Finalize' method can interfere with destructor invocation. Did you intend to declare a destructor?. + + + + + Looks up a localized string similar to This warning occurs when you create a class with a method whose signature is public virtual void Finalize. + + If such a class is used as a base class and if the deriving class defines a destructor, the destructor will override the base class Finalize method, not Finalize.. + + + + + Looks up a localized string similar to Introducing a 'Finalize' method can interfere with destructor invocation. + + + + + Looks up a localized string similar to Defining an alias named 'global' is ill-advised since 'global::' always references the global namespace and not an alias. + + + + + Looks up a localized string similar to Defining an alias named 'global' is ill-advised. + + + + + Looks up a localized string similar to The 'goto case' value is not implicitly convertible to type '{0}'. + + + + + Looks up a localized string similar to The 'goto case' value is not implicitly convertible to the switch type. + + + + + Looks up a localized string similar to Expected identifier or numeric literal.. + + + + + Looks up a localized string similar to Expected identifier or numeric literal. + + + + + Looks up a localized string similar to Invalid #pragma checksum syntax; should be #pragma checksum "filename" "{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}" "XXXX...". + + + + + Looks up a localized string similar to Invalid #pragma checksum syntax. + + + + + Looks up a localized string similar to Expected disable or restore. + + + + + Looks up a localized string similar to Expected disable or restore after #pragma warning. + + + + + Looks up a localized string similar to Unrecognized #pragma directive. + + + + + Looks up a localized string similar to Unrecognized #pragma directive. + + + + + Looks up a localized string similar to Assignment in conditional expression is always constant; did you mean to use == instead of = ?. + + + + + Looks up a localized string similar to Assignment in conditional expression is always constant. + + + + + Looks up a localized string similar to Assembly reference '{0}' is invalid and cannot be resolved. + + + + + Looks up a localized string similar to This warning indicates that an attribute, such as InternalsVisibleToAttribute, was not specified correctly.. + + + + + Looks up a localized string similar to Assembly reference is invalid and cannot be resolved. + + + + + Looks up a localized string similar to '{0}' is not a recognized attribute location. Valid attribute locations for this declaration are '{1}'. All attributes in this block will be ignored.. + + + + + Looks up a localized string similar to Not a recognized attribute location. + + + + + Looks up a localized string similar to Invalid XML include element -- {0}. + + + + + Looks up a localized string similar to Invalid XML include element. + + + + + Looks up a localized string similar to '{0}' has the wrong signature to be an entry point. + + + + + Looks up a localized string similar to Method has the wrong signature to be an entry point. + + + + + Looks up a localized string similar to Invalid number. + + + + + Looks up a localized string similar to Invalid number. + + + + + Looks up a localized string similar to Invalid search path '{0}' specified in '{1}' -- '{2}'. + + + + + Looks up a localized string similar to Invalid search path specified. + + + + + Looks up a localized string similar to The specified version string does not conform to the recommended format - major.minor.build.revision. + + + + + Looks up a localized string similar to The specified version string does not conform to the recommended format - major.minor.build.revision. + + + + + Looks up a localized string similar to The given expression is never of the provided ('{0}') type. + + + + + Looks up a localized string similar to 'is' expression's given expression is never of the provided type. + + + + + Looks up a localized string similar to The given expression is always of the provided ('{0}') type. + + + + + Looks up a localized string similar to 'is' expression's given expression is always of the provided type. + + + + + Looks up a localized string similar to Using '{0}' to test compatibility with '{1}' is essentially identical to testing compatibility with '{2}' and will succeed for all non-null values. + + + + + Looks up a localized string similar to Using 'is' to test compatibility with 'dynamic' is essentially identical to testing compatibility with 'Object'. + + + + + Looks up a localized string similar to The 'l' suffix is easily confused with the digit '1' -- use 'L' for clarity. + + + + + Looks up a localized string similar to The 'l' suffix is easily confused with the digit '1'. + + + + + Looks up a localized string similar to '{0}': an entry point cannot be generic or in a generic type. + + + + + Looks up a localized string similar to An entry point cannot be generic or in a generic type. + + + + + Looks up a localized string similar to The entry point of the program is global script code; ignoring '{0}' entry point.. + + + + + Looks up a localized string similar to The entry point of the program is global script code; ignoring entry point. + + + + + Looks up a localized string similar to Parameter '{0}' has no matching param tag in the XML comment for '{1}' (but other parameters do). + + + + + Looks up a localized string similar to Parameter has no matching param tag in the XML comment (but other parameters do). + + + + + Looks up a localized string similar to Type parameter '{0}' has no matching typeparam tag in the XML comment on '{1}' (but other type parameters do). + + + + + Looks up a localized string similar to Type parameter has no matching typeparam tag in the XML comment (but other type parameters do). + + + + + Looks up a localized string similar to Missing XML comment for publicly visible type or member '{0}'. + + + + + Looks up a localized string similar to The /doc compiler option was specified, but one or more constructs did not have comments.. + + + + + Looks up a localized string similar to Missing XML comment for publicly visible type or member. + + + + + Looks up a localized string similar to The predefined type '{0}' is defined in multiple assemblies in the global alias; using definition from '{1}'. + + + + + Looks up a localized string similar to This error occurs when a predefined system type such as System.Int32 is found in two assemblies. One way this can happen is if you are referencing mscorlib or System.Runtime.dll from two different places, such as trying to run two versions of the .NET Framework side-by-side.. + + + + + Looks up a localized string similar to Predefined type is defined in multiple assemblies in the global alias. + + + + + Looks up a localized string similar to Member '{0}' implements interface member '{1}' in type '{2}'. There are multiple matches for the interface member at run-time. It is implementation dependent which method will be called.. + + + + + Looks up a localized string similar to This warning can be generated when two interface methods are differentiated only by whether a particular parameter is marked with ref or with out. It is best to change your code to avoid this warning because it is not obvious or guaranteed which method is called at runtime. + + Although C# distinguishes between out and ref, the CLR sees them as the same. When deciding which method implements the interface, the CLR just picks one. + + Give the compiler some way to differentiate the methods. For example, you ca [rest of string was truncated]";. + + + + + Looks up a localized string similar to Member implements interface member with multiple matches at run-time. + + + + + Looks up a localized string similar to Member '{1}' overrides '{0}'. There are multiple override candidates at run-time. It is implementation dependent which method will be called.. + + + + + Looks up a localized string similar to Member overrides base member with multiple override candidates at run-time. + + + + + Looks up a localized string similar to Indexing an array with a negative index (array indices always start at zero). + + + + + Looks up a localized string similar to Indexing an array with a negative index. + + + + + Looks up a localized string similar to The member '{0}' does not hide an inherited member. The new keyword is not required.. + + + + + Looks up a localized string similar to Member does not hide an inherited member; new keyword is not required. + + + + + Looks up a localized string similar to '{0}' hides inherited member '{1}'. To make the current member override that implementation, add the override keyword. Otherwise add the new keyword.. + + + + + Looks up a localized string similar to Member hides inherited member; missing override keyword. + + + + + Looks up a localized string similar to '{0}' hides inherited member '{1}'. Use the new keyword if hiding was intended.. + + + + + Looks up a localized string similar to A variable was declared with the same name as a variable in a base class. However, the new keyword was not used. This warning informs you that you should use new; the variable is declared as if new had been used in the declaration.. + + + + + Looks up a localized string similar to Member hides inherited member; missing new keyword. + + + + + Looks up a localized string similar to The assembly {0} does not contain any analyzers.. + + + + + Looks up a localized string similar to Assembly does not contain any analyzers. + + + + + Looks up a localized string similar to Ignoring /noconfig option because it was specified in a response file. + + + + + Looks up a localized string similar to Ignoring /noconfig option because it was specified in a response file. + + + + + Looks up a localized string similar to Feature '{0}' is not part of the standardized ISO C# language specification, and may not be accepted by other compilers. + + + + + Looks up a localized string similar to Feature is not part of the standardized ISO C# language specification, and may not be accepted by other compilers. + + + + + Looks up a localized string similar to Member '{0}' overrides obsolete member '{1}'. Add the Obsolete attribute to '{0}'.. + + + + + Looks up a localized string similar to Member overrides obsolete member. + + + + + Looks up a localized string similar to No value for RuntimeMetadataVersion found. No assembly containing System.Object was found nor was a value for RuntimeMetadataVersion specified through options.. + + + + + Looks up a localized string similar to No value for RuntimeMetadataVersion found. + + + + + Looks up a localized string similar to No source files specified.. + + + + + Looks up a localized string similar to No source files specified. + + + + + Looks up a localized string similar to The result of the expression is always '{0}' since a value of type '{1}' is never equal to 'null' of type '{2}'. + + + + + Looks up a localized string similar to The result of the expression is always the same since a value of this type is never equal to 'null'. + + + + + Looks up a localized string similar to The result of the expression is always '{0}' since a value of type '{1}' is never equal to 'null' of type '{2}'. + + + + + Looks up a localized string similar to The result of the expression is always the same since a value of this type is never equal to 'null'. + + + + + Looks up a localized string similar to Obsolete member '{0}' overrides non-obsolete member '{1}'. + + + + + Looks up a localized string similar to Obsolete member overrides non-obsolete member. + + + + + Looks up a localized string similar to '{0}' does not implement the '{1}' pattern. '{2}' has the wrong signature.. + + + + + Looks up a localized string similar to Type does not implement the collection pattern; member has the wrong signature. + + + + + Looks up a localized string similar to '{0}' does not implement the '{1}' pattern. '{2}' is ambiguous with '{3}'.. + + + + + Looks up a localized string similar to Type does not implement the collection pattern; members are ambiguous. + + + + + Looks up a localized string similar to '{0}' does not implement the '{1}' pattern. '{2}' is either static or not public.. + + + + + Looks up a localized string similar to Type does not implement the collection pattern; member is either static or not public. + + + + + Looks up a localized string similar to Local name '{0}' is too long for PDB. Consider shortening or compiling without /debug.. + + + + + Looks up a localized string similar to Local name is too long for PDB. + + + + + Looks up a localized string similar to Possible mistaken empty statement. + + + + + Looks up a localized string similar to Possible mistaken empty statement. + + + + + Looks up a localized string similar to '{0}': new protected member declared in sealed class. + + + + + Looks up a localized string similar to New protected member declared in sealed class. + + + + + Looks up a localized string similar to Referenced assembly '{0}' has different culture setting of '{1}'.. + + + + + Looks up a localized string similar to Referenced assembly has different culture setting. + + + + + Looks up a localized string similar to Referenced assembly '{0}' does not have a strong name.. + + + + + Looks up a localized string similar to Referenced assembly does not have a strong name. + + + + + Looks up a localized string similar to A reference was created to embedded interop assembly '{0}' because of an indirect reference to that assembly created by assembly '{1}'. Consider changing the 'Embed Interop Types' property on either assembly.. + + + + + Looks up a localized string similar to You have added a reference to an assembly using /link (Embed Interop Types property set to True). This instructs the compiler to embed interop type information from that assembly. However, the compiler cannot embed interop type information from that assembly because another assembly that you have referenced also references that assembly using /reference (Embed Interop Types property set to False). + + To embed interop type information for both assemblies, use /link for references to each assembly (set the Em [rest of string was truncated]";. + + + + + Looks up a localized string similar to A reference was created to embedded interop assembly because of an indirect assembly reference. + + + + + Looks up a localized string similar to The type '{1}' in '{0}' conflicts with the imported type '{3}' in '{2}'. Using the type defined in '{0}'.. + + + + + Looks up a localized string similar to Type conflicts with imported type. + + + + + Looks up a localized string similar to The type '{1}' in '{0}' conflicts with the imported namespace '{3}' in '{2}'. Using the type defined in '{0}'.. + + + + + Looks up a localized string similar to Type conflicts with imported namespace. + + + + + Looks up a localized string similar to The namespace '{1}' in '{0}' conflicts with the imported type '{3}' in '{2}'. Using the namespace defined in '{0}'.. + + + + + Looks up a localized string similar to Namespace conflicts with imported type. + + + + + Looks up a localized string similar to There is no defined ordering between fields in multiple declarations of partial struct '{0}'. To specify an ordering, all instance fields must be in the same declaration.. + + + + + Looks up a localized string similar to There is no defined ordering between fields in multiple declarations of partial struct. + + + + + Looks up a localized string similar to Source file has exceeded the limit of 16,707,565 lines representable in the PDB; debug information will be incorrect. + + + + + Looks up a localized string similar to Source file has exceeded the limit of 16,707,565 lines representable in the PDB; debug information will be incorrect. + + + + + Looks up a localized string similar to Type parameter '{0}' has the same name as the type parameter from outer type '{1}'. + + + + + Looks up a localized string similar to Type parameter has the same name as the type parameter from outer type. + + + + + Looks up a localized string similar to Unable to load Analyzer assembly {0} : {1}. + + + + + Looks up a localized string similar to Unable to load Analyzer assembly. + + + + + Looks up a localized string similar to Field '{0}' is never assigned to, and will always have its default value {1}. + + + + + Looks up a localized string similar to Field is never assigned to, and will always have its default value. + + + + + Looks up a localized string similar to Assuming assembly reference '{0}' used by '{1}' matches identity '{2}' of '{3}', you may need to supply runtime policy. + + + + + Looks up a localized string similar to The two assemblies differ in release and/or version number. For unification to occur, you must specify directives in the application's .config file, and you must provide the correct strong name of an assembly.. + + + + + Looks up a localized string similar to Assuming assembly reference matches identity. + + + + + Looks up a localized string similar to Assuming assembly reference '{0}' used by '{1}' matches identity '{2}' of '{3}', you may need to supply runtime policy. + + + + + Looks up a localized string similar to The two assemblies differ in release and/or version number. For unification to occur, you must specify directives in the application's .config file, and you must provide the correct strong name of an assembly.. + + + + + Looks up a localized string similar to Assuming assembly reference matches identity. + + + + + Looks up a localized string similar to The command line switch '{0}' is not yet implemented and was ignored.. + + + + + Looks up a localized string similar to Command line switch is not yet implemented. + + + + + Looks up a localized string similar to XML comment on '{1}' has a paramref tag for '{0}', but there is no parameter by that name. + + + + + Looks up a localized string similar to XML comment has a paramref tag, but there is no parameter by that name. + + + + + Looks up a localized string similar to XML comment has a param tag for '{0}', but there is no parameter by that name. + + + + + Looks up a localized string similar to XML comment has a param tag, but there is no parameter by that name. + + + + + Looks up a localized string similar to XML comment on '{1}' has a typeparamref tag for '{0}', but there is no type parameter by that name. + + + + + Looks up a localized string similar to XML comment has a typeparamref tag, but there is no type parameter by that name. + + + + + Looks up a localized string similar to XML comment has a typeparam tag for '{0}', but there is no type parameter by that name. + + + + + Looks up a localized string similar to XML comment has a typeparam tag, but there is no type parameter by that name. + + + + + Looks up a localized string similar to Because this call is not awaited, execution of the current method continues before the call is completed. Consider applying the 'await' operator to the result of the call.. + + + + + Looks up a localized string similar to The current method calls an async method that returns a Task or a Task<TResult> and doesn't apply the await operator to the result. The call to the async method starts an asynchronous task. However, because no await operator is applied, the program continues without waiting for the task to complete. In most cases, that behavior isn't what you expect. Usually other aspects of the calling method depend on the results of the call or, minimally, the called method is expected to complete before you return from t [rest of string was truncated]";. + + + + + Looks up a localized string similar to Because this call is not awaited, execution of the current method continues before the call is completed. + + + + + Looks up a localized string similar to XML comment is not placed on a valid language element. + + + + + Looks up a localized string similar to XML comment is not placed on a valid language element. + + + + + Looks up a localized string similar to Within cref attributes, nested types of generic types should be qualified.. + + + + + Looks up a localized string similar to Within cref attributes, nested types of generic types should be qualified. + + + + + Looks up a localized string similar to Unreachable code detected. + + + + + Looks up a localized string similar to Unreachable code detected. + + + + + Looks up a localized string similar to A previous catch clause already catches all exceptions. All non-exceptions thrown will be wrapped in a System.Runtime.CompilerServices.RuntimeWrappedException.. + + + + + Looks up a localized string similar to This warning is caused when a catch() block has no specified exception type after a catch (System.Exception e) block. The warning advises that the catch() block will not catch any exceptions. + + A catch() block after a catch (System.Exception e) block can catch non-CLS exceptions if the RuntimeCompatibilityAttribute is set to false in the AssemblyInfo.cs file: [assembly: RuntimeCompatibilityAttribute(WrapNonExceptionThrows = false)]. If this attribute is not set explicitly to false, all thrown non-CLS excep [rest of string was truncated]";. + + + + + Looks up a localized string similar to A previous catch clause already catches all exceptions. + + + + + Looks up a localized string similar to The event '{0}' is never used. + + + + + Looks up a localized string similar to Event is never used. + + + + + Looks up a localized string similar to The field '{0}' is never used. + + + + + Looks up a localized string similar to Field is never used. + + + + + Looks up a localized string similar to The field '{0}' is assigned but its value is never used. + + + + + Looks up a localized string similar to Field is assigned but its value is never used. + + + + + Looks up a localized string similar to This label has not been referenced. + + + + + Looks up a localized string similar to This label has not been referenced. + + + + + Looks up a localized string similar to The variable '{0}' is declared but never used. + + + + + Looks up a localized string similar to Variable is declared but never used. + + + + + Looks up a localized string similar to The variable '{0}' is assigned but its value is never used. + + + + + Looks up a localized string similar to Variable is assigned but its value is never used. + + + + + Looks up a localized string similar to Comparison to integral constant is useless; the constant is outside the range of type '{0}'. + + + + + Looks up a localized string similar to Comparison to integral constant is useless; the constant is outside the range of the type. + + + + + Looks up a localized string similar to '{0}': a reference to a volatile field will not be treated as volatile. + + + + + Looks up a localized string similar to A volatile field should not normally be passed using a ref or out parameter, since it will not be treated as volatile within the scope of the function. There are exceptions to this, such as when calling an interlocked API.. + + + + + Looks up a localized string similar to A reference to a volatile field will not be treated as volatile. + + + + + Looks up a localized string similar to #warning: '{0}'. + + + + + Looks up a localized string similar to #warning directive. + + + + + Looks up a localized string similar to XML comment has badly formed XML -- '{0}'. + + + + + Looks up a localized string similar to XML comment has badly formed XML. + + + + + Looks up a localized string similar to Badly formed XML in included comments file -- '{0}'. + + + + + Looks up a localized string similar to Badly formed XML in included comments file. + + + + + Looks up a localized string similar to Wrong number of type arguments. + + + + + Looks up a localized string similar to Expected a {0} SemanticModel.. + + + + + Looks up a localized string similar to The literal string ']]>' is not allowed in element content.. + + + + + Looks up a localized string similar to Duplicate '{0}' attribute. + + + + + Looks up a localized string similar to End tag '{0}' does not match the start tag '{1}'.. + + + + + Looks up a localized string similar to Expected an end tag for element '{0}'.. + + + + + Looks up a localized string similar to End tag was not expected at this location.. + + + + + Looks up a localized string similar to Expected '>' or '/>' to close tag '{0}'.. + + + + + Looks up a localized string similar to Unexpected character at this location.. + + + + + Looks up a localized string similar to An identifier was expected.. + + + + + Looks up a localized string similar to Incorrect syntax was used in a comment.. + + + + + Looks up a localized string similar to An invalid character was found inside an entity reference.. + + + + + Looks up a localized string similar to The character(s) '{0}' cannot be used at this location.. + + + + + Looks up a localized string similar to Invalid unicode character.. + + + + + Looks up a localized string similar to Whitespace is not allowed at this location.. + + + + + Looks up a localized string similar to The character '<' cannot be used in an attribute value.. + + + + + Looks up a localized string similar to Missing equals sign between attribute and attribute value.. + + + + + Looks up a localized string similar to Reference to undefined entity '{0}'.. + + + + + Looks up a localized string similar to Missing closing quotation mark for string literal.. + + + + + Looks up a localized string similar to Non-ASCII quotations marks may not be used around string literals.. + + + + + Looks up a localized string similar to A string literal was expected, but no opening quotation mark was found.. + + + + + Looks up a localized string similar to Required white space was missing.. + + + + + A Declaration summarizes the declaration structure of a source file. Each entity declaration + in the program that is a container (specifically namespaces, classes, interfaces, structs, + and delegate declarations) is represented by a node in this tree. At the top level, the + compilation unit is treated as a declaration of the unnamed namespace. + + Special treatment is required for namespace declarations, because a single namespace + declaration can declare more than one namespace. For example, in the declaration + + namespace A.B.C {} + + we see that namespaces A and B and C are declared. This declaration is represented as three + declarations. All three of these ContainerDeclaration objects contain a reference to the + syntax tree for the declaration. + + A "single" declaration represents a specific namespace or type declaration at a point in + source code. A "root" declaration is a special single declaration which summarizes the + contents of an entire file's types and namespaces. Each source file is represented as a tree + of single declarations. + + A "merged" declaration merges together one or more declarations for the same symbol. For + example, the root namespace has multiple single declarations (one in each source file) but + there is a single merged declaration for them all. Similarly partial classes may have + multiple declarations, grouped together under the umbrella of a merged declaration. In the + common trivial case, a merged declaration for a single declaration contains only that single + declaration. The whole program, consisting of the set of all declarations in all of the + source files, is represented by a tree of merged declarations. + + + + + A declaration table is a device which keeps track of type and namespace declarations from + parse trees. It is optimized for the case where there is one set of declarations that stays + constant, and a specific root namespace declaration corresponding to the currently edited + file which is being added and removed repeatedly. It maintains a cache of information for + "merging" the root declarations into one big summary declaration; this cache is efficiently + re-used provided that the pattern of adds and removes is as we expect. + + + + + Creates a root declaration that contains a Script class declaration (possibly in a namespace) and namespace declarations. + Top-level declarations in script code are nested in Script class. + + + + + A visitor that generates the part of the documentation comment after the initial type + and colon. + + + + + Matches symbols from an assembly in one compilation to + the corresponding assembly in another. Assumes that only + one assembly has changed between the two compilations. + + + + + Match local declarations to names to generate a map from + declaration to local slot. The names are indexed by slot and the + assumption is that declarations are in the same order as slots. + + + + + Return a version of the baseline with all definitions mapped to this compilation. + Definitions from the initial generation, from metadata, are not mapped since + the initial generation is always included as metadata. That is, the symbols from + types, methods, ... in the TypesAdded, MethodsAdded, ... collections are replaced + by the corresponding symbols from the current compilation. + + + + + Represents a reference to a generic method instantiation, closed over type parameters, + e.g. MyNamespace.Class.Method{T}() + + + + + Represents a reference to a generic type instantiation that is not nested. + e.g. MyNamespace.A{int} + + + + + Represents a reference to a generic type instantiation that is nested in a non-generic type. + e.g. A.B{int} + + + + + Represents a reference to a generic type instantiation. + Subclasses represent nested and namespace types. + + + + + The behavior of the C# command-line compiler is as follows: + 1) If the /out switch is specified, then the explicit assembly name is used. + 2) Otherwise, + a) if the assembly is executable, then the assembly name is derived from + the name of the file containing the entrypoint; + b) otherwise, the assembly name is derived from the name of the first input + file. + + Since we don't know which method is the entrypoint until well after the + SourceAssemblySymbol is created, in case 2a, its name will not reflect the + name of the file containing the entrypoint. We leave it to our caller to + provide that name explicitly. + + + In cases 1 and 2b, we expect (metadataName == sourceAssembly.MetadataName). + + + + + The compiler-generated implementation type for each fixed-size buffer. + + + + + Ignore accessibility when resolving well-known type + members, in particular for generic type arguments + (e.g.: binding to internal types in the EE). + + + + + Override the dynamic operation context type for all dynamic calls in the module. + + + + + True if this module is an ENC update. + + + + + Set the underlying implementation type for a given fixed-size buffer field. + + + + + Represents a reference to a field of a generic type instantiation. + e.g. + A{int}.Field + A{int}.B{string}.C.Field + + + + + Represents a generic method of a generic type instantiation, closed over type parameters. + e.g. + A{T}.M{S}() + A.B{T}.C.M{S}() + + + + + Represents a reference to an instantiation of a generic type nested in an instantiation of another generic type. + e.g. + A{int}.B{string} + A.B{int}.C.D{string} + + + + + Represents a method of a generic type instantiation. + e.g. + A{int}.M() + A.B{int}.C.M() + + + + + Represents a reference to a type nested in an instantiation of a generic type. + e.g. + A{int}.B + A.B{int}.C.D + + + + + Used only for testing. + + + + + Returns true if the type can be embedded. If the type is defined in a linked (/l-ed) + assembly, but doesn't meet embeddable type requirements, this function returns false + and reports appropriate diagnostics. + + + + + A diagnostic, along with the location where it occurred. + + + + + Add a diagnostic to the bag. + + + + + + + + + Add a diagnostic to the bag. + + + + + + + + + + Adds diagnostics from useSiteDiagnostics into diagnostics and returns True if there were any errors. + + + + Don't call this during a parse--it loads resources + + + Don't call this during a parse--it loads resources + + + Don't call this during a parse--it loads resources + + + + When converting an anonymous function to a delegate type, there are some diagnostics + that will occur regardless of the delegate type - particularly those that do not + depend on the substituted types (e.g. name uniqueness). Even though we need to + produce a diagnostic in such cases, we do not need to abandon overload resolution - + we can choose the overload that is best without regard to such diagnostics. + + True if seeing the ErrorCode should prevent a delegate conversion + from completing successfully. + + + + WARNING: will resolve lazy diagnostics - do not call this before the member lists are completed + or you could trigger infinite recursion. + + + + + An abstract flow pass that takes some shortcuts in analyzing finally blocks, in order to enable + the analysis to take place without tracking exceptions or repeating the analysis of a finally block + for each exit from a try statement. The shortcut results in a slightly less precise + (but still conservative) analysis, but that less precise analysis is all that is required for + the language specification. The most significant shortcut is that we do not track the state + where exceptions can arise. That does not affect the soundness for most analyses, but for those + analyses whose soundness would be affected (e.g. "data flows out"), we track "unassignments" to keep + the analysis sound. + + + + + To scan the whole body, we start outside (before) the region. + + + + + A region analysis walker that computes the set of variables that are always assigned a value + in the region. A variable is "always assigned" in a region if an analysis of the region that + starts with the variable unassigned ends with the variable assigned. + + + + + This class implements the region control flow analysis operations. Region control flow + analysis provides information about statements which enter and leave a region. The analysis + is done lazily. When created, it performs no analysis, but simply caches the arguments. + Then, the first time one of the analysis results is used it computes that one result and + caches it. Each result is computed using a custom algorithm. + + + + + A collection of statements outside the region that jump into the region. + + + + + A collection of statements inside the region that jump to locations outside the region. + + + + + Returns true if and only if the endpoint of the last statement in the region is reachable or the region contains no + statements. + + + + + A collection of return (or yield break) statements found within the region that return from the enclosing method or lambda. + + + + + Returns true iff analysis was successful. Analysis can fail if the region does not properly span a single expression, + a single statement, or a contiguous series of statements within the enclosing block. + + + + + Produce a duplicate of this flow analysis state. + + + + + + Perform control flow analysis, reporting all necessary diagnostics. Returns true if the end of + the body might be reachable... + + + + + Analyze the body, reporting all necessary diagnostics. Returns true if the end of the + body might be reachable. + + + + + + This class implements the region data flow analysis operations. Region data flow analysis + provides information how data flows into and out of a region. The analysis is done lazily. + When created, it performs no analysis, but simply caches the arguments. Then, the first time + one of the analysis results is used it computes that one result and caches it. Each result + is computed using a custom algorithm. + + + + + A collection of the local variables that are declared within the region. Note that the region must be + bounded by a method's body or a field's initializer, so method parameter symbols are never included + in the result, but lambda parameters might appear in the result. + + + + + A collection of the local variables for which a value assigned outside the region may be used inside the region. + + + + + A collection of the local variables for which a value assigned inside the region may be used outside the region. + Note that every reachable assignment to a ref or out variable will be included in the results. + + + + + A collection of the local variables for which a value is always assigned inside the region. + + + + + A collection of the local variables that are read inside the region. + + + + + A collection of local variables that are written inside the region. + + + + + A collection of the local variables that are read outside the region. + + + + + A collection of local variables that are written outside the region. + + + + + A collection of the non-constant local variables and parameters that have been referenced in anonymous functions + and therefore must be moved to a field of a frame class. + + + + + A collection of the non-constant local variables and parameters that have had their address (or the address of one + of their fields) taken using the '&' operator. + + + If there are any of these in the region, then a method should not be extracted. + + + + + Returns true iff analysis was successful. Analysis can fail if the region does not properly span a single expression, + a single statement, or a contiguous series of statements within the enclosing block. + + + + + Some variables that should be considered initially assigned. Used for region analysis. + + + + + Variables that were used anywhere, in the sense required to suppress warnings about + unused variables. + + + + + Variables that were initialized or written anywhere. + + + + + Map from variables that had their addresses taken, to the location of the first corresponding + address-of expression. + + + Doesn't include fixed statement address-of operands. + + + + + Variables that were captured by anonymous functions. + + + + + The current source assembly. + + + + + A mapping from local variables to the index of their slot in a flow analysis local state. + + + + + A set of address-of expressions for which the operand is not definitely assigned. + + + + + A mapping from the local variable slot to the symbol for the local variable itself. This + is used in the implementation of region analysis (support for extract method) to compute + the set of variables "always assigned" in a region of code. + + + + + Variable slots are allocated to local variables sequentially and never reused. This is + the index of the next slot number to use. + + + + + Tracks variables for which we have already reported a definite assignment error. This + allows us to report at most one such error per variable. + + + + + Reflects the enclosing method or lambda at the current location (in the bound tree). + + + + + A cache for remember which structs are empty. + + + + + true if we should check to ensure that out parameters are assigned on every exit point. + + + + + The topmost method of this analysis. + + + + + Constructor to be used for region analysis, for which a struct type should never be considered empty. + + + + + Perform data flow analysis, reporting all necessary diagnostics. + + + + + Analyze the body, reporting all necessary diagnostics. + + + + + Check if the variable is captured and, if so, add it to this._capturedVariables. + + The variable to be checked + If variable.Kind is RangeVariable, its underlying lambda parameter. Else null. + + + + Add the variable to the captured set. For range variables we only add it if inside the region. + + + + + + This reflects the Dev10 compiler's rules for when a variable initialization is considered a "use" + for the purpose of suppressing the warning about unused variables. + + + + + Locals are given slots when their declarations are encountered. We only need give slots + to local variables, out parameters, and the "this" variable of a struct constructs. + Other variables are not given slots, and are therefore not tracked by the analysis. This + returns -1 for a variable that is not tracked, for fields of structs that have the same + assigned status as the container, and for structs that (recursively) contain no data members. + We do not need to track references to + variables that occur before the variable is declared, as those are reported in an + earlier phase as "use before declaration". That allows us to avoid giving slots to local + variables before processing their declarations. + + + + + Force a variable to have a slot. Returns -1 if the variable has an empty struct type. + + + + + Return the slot for a variable, or -1 if it is not tracked (because, for example, it is an empty struct). + + + + + + + Check that the given variable is definitely assigned. If not, produce an error. + + + + + + + Report a given variable as not definitely assigned. Once a variable has been so + reported, we suppress further reports of that variable. + + + + + + + Mark a variable as assigned (or unassigned). + + Node being assigned to. + The value being assigned. + True if target location is considered written to. + Target kind (by-ref or not). + True if target location is considered read from. + + + + Does the struct variable at the given slot have all of its instance fields assigned? + + + + + Variables declared in a using statement are always considered used, so this is just an assert. + + + + + Produce a duplicate of this flow analysis state. + + + + + + A region analysis walker that computes the set of variables whose values flow into (are used + in) the region. A variable assigned outside is used inside if an analysis that leaves the + variable unassigned on entry to the region would cause the generation of "unassigned" errors + within the region. + + + + + A region analysis walker that computes the set of variables for + which their assigned values flow out of the region. + A variable assigned inside is used outside if an analysis that + treats assignments in the region as unassigning the variable would + cause "unassigned" errors outside the region. + + + + + A small cache for remembering empty struct types for flow analysis. + + + + + When set, we ignore private reference fields of structs loaded from metadata. + + + + + Create a cache for computing whether or not a struct type is "empty". + + Enable compatibility with the native compiler, which + ignores inaccessible fields of reference type for structs loaded from metadata. + if is true, set to the compilation from + which to check accessibility. + + + + Determine if the given type is an empty struct type. + + + + + Determine if the given type is an empty struct type,. "typesWithMembersOfThisType" contains + a list of types that have members (directly or indirectly) of this type. + to remove circularity. + + + + + Get all instance fields of a struct. They are not necessarily returned in order. + + + + + Get all instance fields of a struct. They are not necessarily returned in order. + + + + + + When deciding what struct fields to drop on the floor, the native compiler looks + through arrays, and does not ignore value types or type parameters. + + + + + Is it possible that the given symbol can be accessed somewhere in the given assembly? + For the purposes of this test, we assume that code in the given assembly might derive from + any type. So protected members are considered potentially accessible. + + + + + Specialized EmptyStructTypeCache that reports all structs as not empty + + + + + A region analysis walker that records jumps into the region. Works by overriding NoteBranch, which is + invoked by a superclass when the two endpoints of a jump have been identified. + + + + + A region analysis walker that records jumps out of the region. + + + + + The flow analysis pass. This pass reports required diagnostics for unreachable + statements and uninitialized variables (through the call to FlowAnalysisWalker.Analyze), + and inserts a final return statement if the end of a void-returning method is reachable. + + the method to be analyzed + the method's body + the receiver of the reported diagnostics + indicates whether this Script had a trailing expression + the original method body is the last statement in the block + the rewritten block for the method (with a return statement possibly inserted) + + + + Produce a duplicate of this flow analysis state. + + + + + + Is the code reachable? + + + + + The compilation in which the analysis is taking place. This is needed to determine which + conditional methods will be compiled and which will be omitted. + + + + + The method whose body is being analyzed, or the field whose initializer is being analyzed. + It is used for + references to method parameters. Thus, 'member' should not be used directly, but + 'MethodParameters', 'MethodThisParameter' and 'AnalyzeOutParameters(...)' should be used + instead. + + + + + The bound node of the method or initializer being analyzed. + + + + + The flow analysis state at each label, computed by merging the state from branches to + that label with the state when we fall into the label. Entries are created when the + label is encountered. One case deserves special attention: when the destination of the + branch is a label earlier in the code, it is possible (though rarely occurs in practice) + that we are changing the state at a label that we've already analyzed. In that case we + run another pass of the analysis to allow those changes to propagate. This repeats until + no further changes to the state of these labels occurs. This can result in quadratic + performance in unlikely but possible code such as this: "int x; if (cond) goto l1; x = + 3; l5: print x; l4: goto l5; l3: goto l4; l2: goto l3; l1: goto l2;" + + + + + Set to true after an analysis scan if the analysis was incomplete due to a backward + "goto" branch changing some analysis result. In this case the caller scans again (until + this is false). Since the analysis proceeds by monotonically changing the state computed + at each label, this must terminate. + + + + + See property PendingBranches + + + + + All of the labels seen so far in this forward scan of the body + + + + + If we are tracking exceptions, then by convention the first entry in the pending branches + buffer contains a summary of the states that can arise from exceptions. + + + + + Pending escapes generated in the current scope (or more deeply nested scopes). When jump + statements (goto, break, continue, return) are processed, they are placed in the + pendingBranches buffer to be processed later by the code handling the destination + statement. As a special case, the processing of try-finally statements might modify the + contents of the pendingBranches buffer to take into account the behavior of + "intervening" finally clauses. + + + + + The definite assignment and/or reachability state at the point currently being analyzed. + + + + + Where all diagnostics are deposited. + + + + + A cache of the state at the backward branch point of each loop. This is not needed + during normal flow analysis, but is needed for DataFlowsOut region analysis. + + + + + Subclasses may override EnterRegion to perform any actions at the entry to the region. + + + + + Subclasses may override LeaveRegion to perform any action at the end of the region. + + + + + A pending branch. There are created for a return, break, continue, goto statement, + yield return, yield break, await expression, and if PreciseAbstractFlowPass.trackExceptions + is true for other + constructs that can cause an exception to be raised such as a throw statement or method + invocation. + The idea is that we don't know if the branch will eventually reach its destination + because of an intervening finally block that cannot complete normally. So we store them + up and handle them as we complete processing each construct. At the end of a block, if + there are any pending branches to a label in that block we process the branch. Otherwise + we relay it up to the enclosing construct as a pending branch of the enclosing + construct. + + + + + Perform a single pass of flow analysis. Note that after this pass, + this.backwardBranchChanged indicates if a further pass is required. + + + + + If a method is currently being analyzed returns its parameters, returns an empty array + otherwise. + + + + + If a method is currently being analyzed returns its 'this' parameter, returns null + otherwise. + + + + + Specifies whether or not method's out parameters should be analyzed. If there's more + than one location in the method being analyzed, then the method is partial and we prefer + to report an out parameter in partial method error. + + location to be used + true if the out parameters of the method should be analyzed + + + + Return the flow analysis state associated with a label. + + + + + + + Return to the caller the set of pending return statements. + + + + + + Set the current state to one that indicates that it is unreachable. + + + + + Visit a boolean condition expression. + + + + + + Visit a general expression, where we will only need to determine if variables are + assigned (or not). That is, we will not be needing AssignedWhenTrue and + AssignedWhenFalse. + + + + + + Visit a statement. + + + + + Called at the point in a loop where the backwards branch would go to. + + + + + Called at the point in a loop where the backward branch is placed. + + + + + Used to resolve break statements in each statement form that has a break statement + (loops, switch). + + + + + Used to resolve continue statements in each statement form that supports it. + + + + + Subclasses override this if they want to take special actions on processing a goto + statement, when both the jump and the label have been located. + + + + + To handle a label, we resolve all branches to that label. Returns true if the state of + the label changes as a result. + + Target label + Statement containing the target label + + + + Since branches cannot branch into constructs, only out, we save the pending branches + when visiting more nested constructs. When tracking exceptions, we store the current + state as the exception state for the following code. + + + + + We use this to restore the old set of pending branches after visiting a construct that contains nested statements. + + The old pending branches, which are to be merged with the current ones + + + + Since each language construct must be handled according to the rules of the language specification, + the default visitor reports that the construct for the node is not implemented in the compiler. + + + + + Certain (struct) types are known by the compiler to be immutable. In these cases calling a method on + the type is known (by flow analysis) not to write the receiver. + + + + + + + If the operand is definitely assigned, we may want to perform a read (in addition to + a write) so that the operand can show up as ReadInside/DataFlowsIn. + + + + + A region analysis walker that records reads and writes of all variables, both inside and outside the region. + + + + + Note that a variable is read. + + The variable + If variable.Kind is RangeVariable, its underlying lambda parameter. Else null. + + + + When we read a field from a struct, the receiver isn't seen as being read until we get to the + end of the field access expression, because we only read the relevant piece of the struct. + But we want the receiver to be considered to be read in the region in that case. + For example, if an rvalue expression is x.y.z and the region is x.y, we want x to be included + in the ReadInside set. That is implemented here. + + + + + Compute the underlying lambda parameter symbol for a range variable, if any. + + The bound node for the expansion of the range variable + + + + Represents region analysis context attributes such as compilation, region, etc... + + + + Compilation to use + + + Containing symbol if available, null otherwise + + + Bound node, not null + + + Region to be used + + + Region to be used + + + True if the input was bad, such as no first and last nodes + + + + Construct context + + + + + A region analysis walker that computes whether or not the region completes normally. It does this by determining + if the point at which the region ends is reachable. + + + + + An analysis that computes the set of variables that may be used + before being assigned anywhere within a method. + + + + + An analysis that computes the set of variables that may be used + before being assigned anywhere within a method. + + + + + A region analysis walker that records declared variables. + + + + + Specifies the language version. + + + + + C# language version 1.0. + + + + + C# language version 2.0. + + + + + C# language version 3.0. + + + Features: LINQ. + + + + + C# language version 4.0. + + + Features: dynamic. + + + + + C# language version 5.0. + + + Features: async. + + + + + C# language version 6.0. + + + Features: + + Using of a static class + Auto-property initializers + Expression-bodied methods and properties + Null-propagating operator ?. + Exception filters + + + + + + The purpose of this rewriter is to replace await-containing catch and finally handlers + with surrogate replacements that keep actual handler code in regular code blocks. + That allows these constructs to be further lowered at the async lowering pass. + + + + + Lower a block of code by performing local rewritings. + The goal is to not have exception handlers that contain awaits in them. + + 1) Await containing finally blocks: + The general strategy is to rewrite await containing handlers into synthetic handlers. + Synthetic handlers are not handlers in IL sense so it is ok to have awaits in them. + Since synthetic handlers are just blocks, we have to deal with pending exception/branch/return manually + (this is the hard part of the rewrite). + + try{ + code; + }finally{ + handler; + } + + Into ===> + + Exception ex = null; + int pendingBranch = 0; + + try{ + code; // any gotos/returns are rewritten to code that pends the necessary info and goes to finallyLabel + goto finallyLabel; + }catch (ex){ // essentially pend the currently active exception + }; + + finallyLabel: + { + handler; + if (ex != null) throw ex; // unpend the exception + unpend branches/return + } + + 2) Await containing catches: + try{ + code; + }catch (Exception ex){ + handler; + throw; + } + + + Into ===> + + Object pendingException; + int pendingCatch = 0; + + try{ + code; + }catch (Exception temp){ // essentially pend the currently active exception + pendingException = temp; + pendingCatch = 1; + }; + + switch(pendingCatch): + { + case 1: + { + Exception ex = (Exception)pendingException; + handler; + throw pendingException + } + } + + + + + Rewrites Try/Catch part of the Try/Catch/Finally + + + + + Analyzes method body for try blocks with awaits in finally blocks + Also collects labels that such blocks contain. + + + + + Returns true if a finally of the given try contains awaits + + + + + Returns true if a catch contains awaits + + + + + Returns true if body contains await in a finally block. + + + + + Labels reachable from within this frame without invoking its finally. + null if there are no such labels. + + + + + Async methods have both a return type (void, Task, or Task<T>) and a 'result' type, which is the + operand type of any return expressions in the async method. The result type is void in the case of + Task-returning and void-returning async methods, and T in the case of Task<T>-returning async + methods. + + System.Runtime.CompilerServices provides a collection of async method builders that are used in the + generated code of async methods to create and manipulate the async method's task. There are three + distinct async method builder types, one of each async return type: AsyncVoidMethodBuilder, + AsyncTaskMethodBuilder, and AsyncTaskMethodBuilder<T>. + + AsyncMethodBuilderMemberCollection provides a common mechanism for accessing the well-known members of + each async method builder type. This avoids having to inspect the return style of the current async method + to pick the right async method builder member during async rewriting. + + + + + The builder's constructed type. + + + + + The result type of the constructed task: T for Task<T>, void otherwise. + + + + + Binds an exception to the method builder. + + + + + Marks the method builder as successfully completed, and sets the result if method is Task<T>-returning. + + + + + Schedules the state machine to proceed to the next action when the specified awaiter completes. + + + + + Schedules the state machine to proceed to the next action when the specified awaiter completes. This method can be called from partially trusted code. + + + + + Begins running the builder with the associated state machine. + + + + + Associates the builder with the specified state machine. + + + + + Get the constructed task for a Task-returning or Task<T>-returning async method. + + + + + The method being rewritten. + + + + + The field of the generated async class used to store the async method builder: an instance of + , , or depending on the + return type of the async method. + + + + + A collection of well-known members for the current async method builder. + + + + + The exprReturnLabel is used to label the return handling code at the end of the async state-machine + method. Return expressions are rewritten as unconditional branches to exprReturnLabel. + + + + + The label containing a return from the method when the async method has not completed. + + + + + The field of the generated async class used in generic task returning async methods to store the value + of rewritten return expressions. The return-handling code then uses SetResult on the async method builder + to make the result available to the caller. + + + + + Generate the body for MoveNext(). + + + + + Rewrite an async method into a state machine type. + + + + + Returns true if all types and members we need are present and good + + + + + The class that represents a translated async method. + + + + + If an expression node that declares synthesized short-lived locals (currently only sequence) contains an await, these locals become long-lived since their + values may be read by code that follows the await. We promote these variables to long-lived of kind . + + + + + This pass detects and reports diagnostics that do not affect lambda convertibility. + This part of the partial class focuses on features that cannot be used in expression trees. + CAVEAT: Errors may be produced for ObsoleteAttribute, but such errors don't affect lambda convertibility. + + + This pass detects and reports diagnostics that do not affect lambda convertibility. + This part of the partial class focuses on expression and operator warnings. + + + + + This is for when we are taking the address of a field. + Distinguish from . + + + + + This is for when we are dotting into a field. + Distinguish from . + + NOTE: dev11 also calls this on string initializers in fixed statements, + but never accomplishes anything since string is a reference type. This + is probably a bug, but fixing it would be a breaking change. + + + + + Based on OutputContext::IsNonAgileField. + + + + + Returns the expression if the statement is actually an expression (ExpressionStatementSyntax with no trailing semicolon). + + + + + The constructor of the class that is the translation of an iterator method. + + + + + A synthesized Finally method containing finalization code for a resumable try statement. + Finalization code for such try may run when: + 1) control flow goes out of try scope by dropping through + 2) control flow goes out of try scope by conditionally or unconditionally branching outside of one ore more try/finally frames. + 3) enumerator is disposed by the owner. + 4) enumerator is being disposed after an exception. + + It is easier to manage partial or complete finalization when every finally is factored out as a separate method. + + NOTE: Finally is a private void nonvirtual instance method with no parameters. + It is a valid JIT inlining target as long as JIT may consider inlining profitable. + + + + + The field of the generated iterator class that underlies the Current property. + + + + + Tells us if a particular try contains yield returns + + + + + When this is more that 0, returns are emitted as "methodValue = value; goto exitLabel;" + + + + + The current iterator finally frame in the tree of finally frames. + By default there is a root finally frame. + Root frame does not have a handler, but may contain nested frames. + + + + + Finally state of the next Finally frame if such created. + Finally state is a negative decreasing number starting with -3. (-2 is used for something else). + Root frame has finally state -1. + + The Finally state is the state that we are in when "between states". + Regular states are positive and are the only states that can be resumed to. + The purpose of distinct finally states is to have enough information about + which finally handlers must run when we need to finalize iterator after a fault. + + + + + Produces a Try/Finally if frame has a handler (otherwise a regular block). + Handler goes into the Finally. + If there are nested frames, they are emitted into the try block. + This way the handler for the current frame is guaranteed to run even if + nested handlers throw exceptions. + + { + switch(state) + { + case state1: + case state2: + case state3: + case state4: + try + { + switch(state) + { + case state3: + case state4: + try + { + ... more nested state dispatches if any .... + } + finally + { + // handler for a try where state3 and state4 can be observed + handler_3_4() + } + break; + } + } + finally + { + // handler for a try where state1 and state2 can be observed + handler_1_2() + } + break; + + case state5: + ... another dispatch of nested states to their finally blocks ... + break; + } + } + + + + + + Analyzes method body for yields in try blocks and labels that they contain. + + + + + Returns true if given try or any of its nested try blocks contain yields + + + + + Returns true if body contains yield returns within try blocks. + + + + + Labels reachable from within this frame without invoking its finally. + null if there are none such labels. + + + + + Rewrite an iterator method into a state machine class. + + + + + Returns true if all types and members we need are present and good + + + + + Check that the property and its getter exist and collect any use-site errors. + + + + + The class that represents a translated iterator method. + + + + + Analyzes method body for labels. + + + + + The closure doesn't declare any variables. + Display class is a singleton and may be shared with other top-level methods. + + + + + The closure only contains a reference to the containing class instance ("this"). + We don't emit a display class, lambdas are emitted directly to the containing class as its instance methods. + + + + + General closure. + Display class may only contain lambdas defined in the same top-level method. + + + + + Visit the expression, but do so in a way that ensures that its type is precise. That means that any + sometimes-unnecessary conversions (such as an implicit reference conversion) are retained. + + + + + A field of a frame class that represents a variable that has been captured in a lambda. + + + + + The rewriter for removing lambda expressions from method bodies and introducing closure classes + as containers for captured variables along the lines of the example in section 6.5.3 of the + C# language specification. + + The entry point is the public method . It operates as follows: + + First, an analysis of the whole method body is performed that determines which variables are + captured, what their scopes are, and what the nesting relationship is between scopes that + have captured variables. The result of this analysis is left in . + + Then we make a frame, or compiler-generated class, represented by an instance of + for each scope with captured variables. The generated frames are kept + in . Each frame is given a single field for each captured + variable in the corresponding scope. These are maintained in . + + Finally, we walk and rewrite the input bound tree, keeping track of the following: + (1) The current set of active frame pointers, in + (2) The current method being processed (this changes within a lambda's body), in + (3) The "this" symbol for the current method in , and + (4) The symbol that is used to access the innermost frame pointer (it could be a local variable or "this" parameter) + + There are a few key transformations done in the rewriting. + (1) Lambda expressions are turned into delegate creation expressions, and the body of the lambda is + moved into a new, compiler-generated method of a selected frame class. + (2) On entry to a scope with captured variables, we create a frame object and store it in a local variable. + (3) References to captured variables are transformed into references to fields of a frame class. + + In addition, the rewriting deposits into a (, ) + pair for each generated method. + + produces its output in two forms. First, it returns a new bound statement + for the caller to use for the body of the original method. Second, it returns a collection of + (, ) pairs for additional methods that the lambda rewriter produced. + These additional methods contain the bodies of the lambdas moved into ordinary methods of their + respective frame classes, and the caller is responsible for processing them just as it does with + the returned bound node. For example, the caller will typically perform iterator method and + asynchronous method transformations, and emit IL instructions into an assembly. + + + + + Perform a first analysis pass in preparation for removing all lambdas from a method body. The entry point is Analyze. + The results of analysis are placed in the fields seenLambda, blockParent, variableBlock, captured, and captures. + + + + + Set to true while we are analyzing the interior of an expression lambda. + + + + + Set to true of any lambda expressions were seen in the analyzed method body. + + + + + For each scope that defines variables, identifies the nearest enclosing scope that defines variables. + + + + + For each captured variable, identifies the scope in which it will be moved to a frame class. This is + normally the node where the variable is introduced, but method parameters are moved + to a frame class within the body of the method. + + + + + The syntax nodes associated with each captured variable. + + + + + For each lambda in the code, the set of variables that it captures. + + + + + Blocks that are positioned between a block declaring some lifted variables + and a block that contains the lambda that lifts said variables. + If such block itself requires a closure, then it must lift parent frame pointer into the closure + in addition to whatever else needs to be lifted. + + NOTE: This information is computed in addition to the regular analysis of the tree and only needed for rewriting. + If someone only needs diagnostics or information about captures, this information is not necessary. + needs to be called to compute this. + + + + + Optimized locations of lambdas. + + Lambda does not need to be placed in a frame that corresponds to its lexical scope if lambda does not reference any local state in that scope. + It is advantageous to place lambdas higher in the scope tree, ideally in the innermost scope of all scopes that contain variables captured by a given lambda. + Doing so reduces indirections needed when captured locals are accessed. For example locals from the innermost scope can be accessed with no indirection at all. + + NOTE: This information is computed in addition to the regular analysis of the tree and only needed for rewriting. + If someone only needs diagnostics or information about captures, this information is not necessary. + needs to be called to compute this. + + + + + Create the optimized plan for the location of lambda methods and whether scopes need access to parent scopes + + + + + Compute the nesting depth of a given block. + Top-most block (where method locals and parameters are defined) are at the depth 0. + + + + + Rewrite the given node to eliminate lambda expressions. Also returned are the method symbols and their + bound bodies for the extracted lambda bodies. These would typically be emitted by the caller such as + MethodBodyCompiler. See this class' documentation + for a more thorough explanation of the algorithm and its use by clients. + + The bound node to be rewritten + The type of the top-most frame + The "this" parameter in the top-most frame, or null if static method + The containing method of the node to be rewritten + Index of the method symbol in its containing type member list. + Information on lambdas defined in needed for debugging. + Information on closures defined in needed for debugging. + Slot allocator. + The caller's buffer into which we produce additional methods to be emitted by the caller + Diagnostic bag for diagnostics + The rewritten tree should include assignments of the original locals to the lifted proxies + + + + Create the frame types. + + + + + Produce a bound expression representing a pointer to a frame of a particular frame type. + + The syntax to attach to the bound nodes produced + The type of frame to be returned + A bound node that computes the pointer to the required frame + + + + Produce a bound expression representing a pointer to a frame of a particular frame class. + Note that for generic frames, the frameClass parameter is the generic definition, but + the resulting expression will be constructed with the current type parameters. + + The syntax to attach to the bound nodes produced + The class type of frame to be returned + A bound node that computes the pointer to the required frame + + + + Introduce a frame around the translation of the given node. + + The node whose translation should be translated to contain a frame + The frame for the translated node + A function that computes the translation of the node. It receives lists of added statements and added symbols + The translated statement, as returned from F + + + + A class that represents the set of variables in a scope that have been + captured by lambdas within that scope. + + + + + A method that results from the translation of a single lambda expression. + + + + + Lower a block of code by performing local rewritings. + + + + + Returns true if the initializer is a field initializer which should be optimized out + + + + + Generates a lowered form of the assignment operator for the given left and right sub-expressions. + Left and right sub-expressions must be in lowered form. + + + + + Generates a lowered form of the assignment operator for the given left and right sub-expressions. + Left and right sub-expressions must be in lowered form. + + + + + Spec section 7.9: if the left operand is int or uint, mask the right operand with 0x1F; + if the left operand is long or ulong, mask the right operand with 0x3F. + + + + + This rather confusing method tries to reproduce the functionality of ExpressionBinder::bindPtrAddMul and + ExpressionBinder::bindPtrMul. The basic idea is that we have a numeric expression, x, and a pointer type, + T*, and we want to multiply x by sizeof(T). Unfortunately, we need to stick in some conversions to make + everything work. + + 1) If x is an int, then convert it to an IntPtr (i.e. a native int). Dev10 offers no explanation (ExpressionBinder::bindPtrMul). + 2) Do overload resolution based on the (possibly converted) type of X and int (the type of sizeof(T)). + 3) If the result type of the chosen multiplication operator is signed, convert the product to IntPtr; + otherwise, convert the product to UIntPtr. + + + + + Rewrites arguments of an invocation according to the receiving method or indexer. + It is assumed that each argument has already been lowered, but we may need + additional rewriting for the arguments, such as generating a params array, re-ordering + arguments based on map, inserting arguments for optional parameters, etc. + is the method used for values of any optional parameters. + For indexers, this method must be an accessor, and for methods it must be the method + itself. is needed for indexers since getter and setter + may have distinct optional parameter values. + + + + + Process tempStores and add them as side-effects to arguments where needed. The return + value tells how many temps are actually needed. For unnecessary temps the corresponding + temp store will be cleared. + + + + + Gets the default value for the . + + + A syntax node corresponding to the invocation. + + + A parameter to get the default value for. + + + Indicates if caller info is to be enabled when processing this optional parameter. + The value means the decision is to be made based on the shape of the node. + + + DELIBERATE SPEC VIOLATION: When processing an implicit invocation of an Add method generated + for an element-initializer in a collection-initializer, the parameter + is set to . It means that if the optional parameter is annotated with , + or , and there is no explicit argument corresponding to it, + we will provide caller information as a value of this parameter. + This is done to match the native compiler behavior and user requests (see http://roslyn.codeplex.com/workitem/171). This behavior + does not match the C# spec that currently requires to provide caller information only in explicit invocations and query expressions. + + + + + In the expanded form of a compound assignment (or increment/decrement), the LHS appears multiple times. + If we aren't careful, this can result in repeated side-effects. This creates (ordered) temps for all of the + subexpressions that could result in side-effects and returns a side-effect-free expression that can be used + in place of the LHS in the expanded form. + + The LHS sub-expression of the compound assignment (or increment/decrement). + Populated with a list of assignment expressions that initialize the temporary locals. + Populated with a list of temporary local symbols. + True if the compound assignment is a dynamic operation. + + A side-effect-free expression representing the LHS. + The returned node needs to be lowered but its children are already lowered. + + + + + Variables local to current frame do not need temps when re-read multiple times + as long as there is no code that may write to locals in between accesses and they + are not captured. + + Example: + l += foo(ref l); + + even though l is a local, we must access it via a temp since "foo(ref l)" may change it + on between accesses. + + + + + If the condition has a constant value, then just use the selected branch. + e.g. "true ? x : y" becomes "x". + + + + + Helper method to generate a lowered conversion. + + + + + Helper method to generate a lowered conversion from the given to the given . + + + If we're converting a default parameter value to the parameter type, then the conversion can actually fail + (e.g. if the default value was specified by an attribute and was, therefore, not checked by the compiler). + Set acceptFailingConversion if you want to see default(rewrittenType) in such cases. + The error will be suppressed only for conversions from or . + + + + + Helper method to generate a lowered conversion from the given to the given . + + + If we're converting a default parameter value to the parameter type, then the conversion can actually fail + (e.g. if the default value was specified by an attribute and was, therefore, not checked by the compiler). + Set acceptFailingConversion if you want to see default(rewrittenType) in such cases. + The error will be suppressed only for conversions from or . + + + + + Helper method to generate a lowered conversion from the given rewrittenOperand to the given rewrittenType with the given conversion kind. + + + Conversion kind must not be a user defined conversion, use the other overload which takes a 'Conversion' parameter for generating synthesized user defined conversions. + + + + + If we have a WinRT type event, we need to encapsulate the adder call + (which returns an EventRegistrationToken) with a call to + WindowsRuntimeMarshal.AddEventHandler or RemoveEventHandler, but these + require us to create a new Func representing the adder and another + Action representing the Remover. + + The rewritten call looks something like: + + WindowsRuntimeMarshal.AddEventHandler<EventHandler> + (new Func<EventHandler, EventRegistrationToken>(@object.add), + new Action<EventRegistrationToken>(@object.remove), handler); + + Where @object is a compiler-generated local temp if needed. + + + TODO: use or delete isDynamic. + + + + + Basically, what we need to know is, if an exception occurred within the fixed statement, would + additional code in the current method be executed before its stack frame was popped? + + + + + If two (or more) fixed statements are nested, then we want to avoid having the outer + fixed statement re-traverse the lowered bound tree of the inner one. We accomplish + this by having each fixed statement cache a set of unmatched gotos that can be + reused by any containing fixed statements. + + + + + Look for gotos without corresponding labels in the lowered body of a fixed statement. + + + Assumes continue, break, etc have already been rewritten to gotos. + + + + + This is the entry point for foreach-loop lowering. It delegates to + RewriteEnumeratorForEachStatement + RewriteSingleDimensionalArrayForEachStatement + RewriteMultiDimensionalArrayForEachStatement + RewriteStringForEachStatement + + + We are diverging from the C# 4 spec (and Dev10) to follow the C# 5 spec. + The iteration variable will be declared *inside* each loop iteration, + rather than outside the loop. + + + + + Lower a foreach loop that will enumerate a collection using an enumerator. + + E e = ((C)(x)).GetEnumerator() + try { + while (e.MoveNext()) { + V v = (V)(T)e.Current; + // body + } + } + finally { + // clean up e + } + + + + + Synthesize a no-argument call to a given method, possibly applying a conversion to the receiver. + + If the receiver is of struct type and the method is an interface method, then skip the conversion + and just call the interface method directly - the code generator will detect this and generate a + constrained virtual call. + + A syntax node to attach to the synthesized bound node. + Receiver of method call. + Method to invoke. + Conversion to be applied to the receiver if not calling an interface method on a struct. + Type of the receiver after applying the conversion. + A BoundExpression representing the call. + + + + Lower a foreach loop that will enumerate the characters of a string. + + string s = x; + for (int p = 0; p < s.Length; p = p + 1) { + V v = (V)s.Chars[p]; + // body + } + + + We will follow Dev10 in diverging from the C# 4 spec by ignoring string's + implementation of IEnumerable and just indexing into its characters. + + NOTE: We're assuming that sequence points have already been generated. + Otherwise, lowering to for-loops would generated spurious ones. + + + + + Lower a foreach loop that will enumerate a single-dimensional array. + + A[] a = x; + for (int p = 0; p < a.Length; p = p + 1) { + V v = (V)a[p]; + // body + } + + + We will follow Dev10 in diverging from the C# 4 spec by ignoring Array's + implementation of IEnumerable and just indexing into its elements. + + NOTE: We're assuming that sequence points have already been generated. + Otherwise, lowering to for-loops would generated spurious ones. + + + + + Lower a foreach loop that will enumerate a multi-dimensional array. + + A[...] a = x; + int q_0 = a.GetUpperBound(0), q_1 = a.GetUpperBound(1), ...; + for (int p_0 = a.GetLowerBound(0); p_0 <= q_0; p_0 = p_0 + 1) + for (int p_1 = a.GetLowerBound(1); p_1 <= q_1; p_1 = p_1 + 1) + ... + { V v = (V)a[p_0, p_1, ...]; /* body */ } + + + We will follow Dev10 in diverging from the C# 4 spec by ignoring Array's + implementation of IEnumerable and just indexing into its elements. + + NOTE: We're assuming that sequence points have already been generated. + Otherwise, lowering to nested for-loops would generated spurious ones. + + + + + So that the binding info can return an appropriate SemanticInfo.Converted type for the collection + expression of a foreach node, it is wrapped in a BoundConversion to the collection type in the + initial bound tree. However, we may be able to optimize away (or entirely disregard) the conversion + so we pull out the bound node for the underlying expression. + + + + + Add sequence point |here|: + + foreach (Type var in |expr|) { } + + + Hit once, before looping begins. + + + + + Add sequence point |here|: + + foreach (|Type var| in expr) { } + + + Hit every iteration. + + + + + Add sequence point |here|: + + |foreach| (Type var in expr) { } + + + Hit once, before looping begins. + + + + + Lowers a lock statement to a try-finally block that calls Monitor.Enter and Monitor.Exit + before and after the body, respectively. + + + + + The strategy of this rewrite is to do rewrite "locally". + We analyze arguments of the concat in a shallow fashion assuming that + lowering and optimizations (including this one) is already done for the arguments. + Based on the arguments we select the most appropriate pattern for the current node. + + NOTE: it is not guaranteed that the node that we chose will be the most optimal since we have only + local information - i.e. we look at the arguments, but we do not know about siblings. + When we move to the parent, the node may be rewritten by this or some another optimization. + + Example: + result = ( "abc" + "def" + null ?? expr1 + "moo" + "baz" ) + expr2 + + Will rewrite into: + result = Concat("abcdef", expr2) + + However there will be transient nodes like Concat(expr1 + "moo") that will not be present in the + resulting tree. + + + + + + digs into known concat operators and unwraps their arguments + otherwise returns the expression as-is + + Generally we only need to recognize same node patterns that we create as a result of concatenation rewrite. + + + + + folds two concat operands into one expression if possible + otherwise returns null + + + + + folds two concat constants into one if possible + otherwise returns null. + It is generally always possible to concat constants, unless resulting string would be too large. + + + + + Strangely enough there is such a thing as unary concatenation and it must be rewritten. + + + + + Most of the above optimizations are not applicable in expression trees as the operator + must stay a binary operator. We cannot do much beyond constant folding which is done in binder. + + + + + Checks whether the expression represents a boxing conversion of a special value type. + If it does, it tries to return a string-based representation instead in order + to avoid allocations. If it can't, the original expression is returned. + + + + + Gets whether the type of an argument used in string concatenation can + be optimized by first calling ToString on it before passing the argument + to the String.Concat function. + + The type symbol of the argument. + + true if ToString may be used; false if using ToString could lead to observable differences in behavior. + + + + + Is there any code to execute in the given statement that could have side-effects, + such as throwing an exception? This implementation is conservative, in the sense + that it may return true when the statement actually may have no side effects. + + + + + This rewriter lowers pre-/post- increment/decrement operations (initially represented as + unary operators). We use BoundSequenceExpressions because we need to capture the RHS of the + assignment in a temp variable. + + + This rewriter assumes that it will be run before decimal rewriting (so that it does not have + to lower decimal constants and operations) and call rewriting (so that it does not have to + lower property accesses). + + + + + The rewrites are as follows: suppose the operand x is a variable of type X. The + chosen increment/decrement operator is modelled as a static method on a type T, + which takes a value of type T and returns the result of incrementing or decrementing + that value. + + x++ + X temp = x + x = (X)(T.Increment((T)temp)) + return temp + x-- + X temp = x + x = (X)(T.Decrement((T)temp)) + return temp + ++x + X temp = (X)(T.Increment((T)x)) + x = temp + return temp + --x + X temp = (X)(T.Decrement((T)x)) + x = temp + return temp + + Note: + Dev11 implements dynamic prefix operators incorrectly. + + result = ++x.P is emitted as result = SetMember{"P"}(t, UnaryOperation{Inc}(GetMember{"P"}(x))) + + The difference is that Dev11 relies on SetMember returning the same value as it was given as an argument. + Failing to do so changes the semantics of ++/-- operator which is undesirable. We emit the same pattern for + both dynamic and static operators. + + For example, we might have a class X with user-defined implicit conversions + to and from short, but no user-defined increment or decrement operators. We + would bind x++ as "X temp = x; x = (X)(short)((int)(short)temp + 1); return temp;" + + The unary operator expression representing the increment/decrement. + A bound sequence that uses a temp to achieve the correct side effects and return value. + + + + Transform an expression from a form suitable as an lvalue to a form suitable as an rvalue. + + The children of this node must already be lowered. + Fully lowered node. + + + + Rewrite a using statement into a try finally statement. Two forms are possible: + 1) using (expr) stmt + 2) using (C c = expr) stmt + + The former is handled by RewriteExpressionUsingStatement and the latter is handled by + RewriteDeclarationUsingStatement (called in a loop, once for each local declared). + + + It would be more in line with our usual pattern to rewrite using to try-finally + in the ControlFlowRewriter, but if we don't do it here the BoundMultipleLocalDeclarations + will be rewritten into a form that makes them harder to separate. + + + + + Lower "using (expression) statement" to a try-finally block. + + + + + Lower "using (ResourceType resource = expression) statement" to a try-finally block. + + + Assumes that the local symbol will be declared (i.e. in the LocalsOpt array) of an enclosing block. + Assumes that using statements with multiple locals have already been split up into multiple using statements. + + + + + The dynamic operation factories below return this struct so that the caller + have the option of separating the call-site initialization from its invocation. + + Most callers just call to get the combo but some (object and array initializers) + hoist all call-site initialization code and emit multiple invocations of the same site. + + + + + Corresponds to . + + + + + Corresponds to . + + + + + Rewrite the replacement expression for the hoisted local so all synthesized field are accessed as members + of the appropriate frame. + + + + + A walker that computes the set of local variables of an iterator/async + method that must be hoisted to the state machine. + + + Data flow analysis is used to calculate the locals. At yield/await we mark all variables as "unassigned". + When a read from an unassigned variables is reported we add the variable to the captured set. + "this" parameter is captured if a reference to "this", "base" or an instance field is encountered. + Variables used in finally also need to be captured if there is a yield in the corresponding try block. + + + + + True if we need to generate the code to do the bookkeeping so we can "finalize" the state machine + by executing code from its current state through the enclosing finally blocks. This is true for + iterators and false for async. + + + + + Generate return statements from the state machine method body. + + + + + The "state" of the state machine that is the translation of the iterator method. + + + + + Cached "state" of the state machine within the MoveNext method. We work with a copy of + the state to avoid shared mutable state between threads. (Two threads can be executing + in a Task's MoveNext method because an awaited task may complete after the awaiter has + tested whether the subtask is complete but before the awaiter has returned) + + + + + For each distinct label, the set of states that need to be dispatched to that label. + Note that there is a dispatch occurring at every try-finally statement, so this + variable takes on a new set of values inside each try block. + + + + + A mapping from each state of the state machine to the new state that will be used to execute + finally blocks in case the state machine is disposed. The Dispose method computes the new state + and then runs MoveNext. Not used if !this.useFinalizerBookkeeping. + + + + + A try block might have no state (transitions) within it, in which case it does not need + to have a state to represent finalization. This flag tells us whether the current try + block that we are within has a finalizer state. Initially true as we have the (trivial) + finalizer state of -1 at the top level. Not used if !this.useFinalizerBookkeeping. + + + + + If hasFinalizerState is true, this is the state for finalization from anywhere in this + try block. Initially set to -1, representing the no-op finalization required at the top + level. Not used if !this.useFinalizerBookkeeping. + + + + + A pool of fields used to hoist locals. They appear in this set when not in scope, + so that members of this set may be allocated to locals when the locals come into scope. + + + + + Fields allocated for temporary variables are given unique names distinguished by a number at the end. + This counter ensures they are unique within a given translated method. + + + + + Used to enumerate the instance fields of a struct. + + + + + The set of local variables and parameters that were hoisted and need a proxy. + + + + + Translate a statement that declares a given set of locals. Also allocates and frees hoisted temps as + required for the translation. + + The set of locals declared in the original version of this statement + A delegate to return the translation of the body of this statement + + + + Must remain in sync with . + + + + + Must remain in sync with . + + + + + Might the given type be, or contain, managed references? This is used to determine which + fields allocated to temporaries should be cleared when the underlying variable goes out of scope, so + that they do not cause unnecessary object retention. + + + + + The try statement is the most complex part of the state machine transformation. + Since the CLR will not allow a 'goto' into the scope of a try statement, we must + generate the dispatch to the state's label stepwise. That is done by translating + the try statements from the inside to the outside. Within a try statement, we + start with an empty dispatch table (representing the mapping from state numbers + to labels). During translation of the try statement's body, the dispatch table + will be filled in with the data necessary to dispatch once we're inside the try + block. We generate that at the head of the translated try statement. Then, we + copy all of the states from that table into the table for the enclosing construct, + but associate them with a label just before the translated try block. That way + the enclosing construct will generate the code necessary to get control into the + try block for all of those states. + + + + + Represents a synthesized state machine field. + + + + + True if the initial values of locals in the rewritten method need to be preserved. (e.g. enumerable iterator methods) + + + + + Add fields to the state machine class that control the state machine. + + + + + Initialize the state machine class. + + + + + Generate implementation-specific state machine initialization for the kickoff method body. + + + + + Generate implementation-specific state machine member method implementations. + + + + + State machine interface method implementation. + + + + + Represents a state machine MoveNext method. + Handles special behavior around inheriting some attributes from the original async/iterator method. + + + + + Represents a state machine method other than a MoveNext method. + All such methods are considered debugger hidden. + + + + + Tracks synthesized fields that are needed in a submission being compiled. + + + For every other submission referenced by this submission we add a field, so that we can access members of the target submission. + A field is also needed for the host object, if provided. + + + + + A helper class for synthesizing quantities of code. + + + + + Thrown by the bound node factory when there is a failure to synthesize code. + An appropriate diagnostic is included that should be reported. Currently + the only diagnostic handled through this mechanism is a missing special/well-known + member. + + + + + A binder suitable for performing overload resolution to synthesize a call to a helper method. + + + + + A binder used only for performing overload resolution of runtime helper methods. + + + + + Create a bound node factory. Note that the use of the factory to get special or well-known members + that do not exist will result in an exception of type being thrown. + + The top-level method that will contain the code + The syntax node to which generated code should be attributed + The state of compilation of the enclosing type + A bag where any diagnostics should be output + + + The top-level method that will contain the code + The enclosing class + The syntax node to which generated code should be attributed + The state of compilation of the enclosing type + A bag where any diagnostics should be output + + + + Get the symbol for a well-known member. The use of this method to get a well-known member + that does not exist will result in an exception of type MissingPredefinedMember being thrown + containing an appropriate diagnostic for the caller to report. + + The desired well-known member + If true, the method may return null for a missing member without an exception + A symbol for the well-known member, or null if it is missing and isOptions == true + + + + Get the symbol for a special member. The use of this method to get a special member + that does not exist will result in an exception of type MissingPredefinedMember being thrown + containing an appropriate diagnostic for the caller to report. + + The desired special member + A symbol for the special member. + + + + Check for (and assert that there are no) duplicate case labels in the switch. + + + + + + Helper that will use Array.Empty if available and elements have 0 length + NOTE: it is valid only if we know that the API that is being called will not + retain or use the array argument for any purpose (like locking or key in a hash table) + Typical example of valid use is Linq.Expressions factories - they do not make any + assumptions about array arguments and do not keep them or rely on their identity. + + + + + Takes an expression and returns the bound local expression "temp" + and the bound assignment expression "temp = expr". + + + + + Compiles a list of all labels that are targeted by gotos within a + node, but are not declared within the node. + + + + + newPosition represents the position we are in the final SourceText. As we consume and reuse + nodes from the old tree we will update our position in the new text accordingly. + Likewise, when we must lex tokens out of the new tree we will update as well. + + NOTE(cyrusn): We do not need an oldPosition because it is redundant given the + oldTreeCursor. The oldPosition is implicitly defined by the position of the cursor. + + + + + Affected range of a change is the range within which nodes can be affected by a change + and cannot be reused. Because of lookahead effective range of a change is larger than + the change itself. + + + + + THe cursor represents a location in the tree that we can move around to indicate where + we are in the original tree as we're incrementally parsing. When it is at a node or + token, it can either move forward to that entity's next sibling. It can also move down + to a node's first child or first token. + + Once the cursor hits the end of file, it's done. Note: the cursor will skip any other + zero length nodes in the tree. + + + + + An error/warning directive tells the compiler to indicate a syntactic error/warning + at the current location. + + Format: #error Error message string + Resulting message: from the first non-whitespace character after the directive + keyword until the end of the directive (aka EOD) at the line break or EOF. + Resulting span: [first non-whitespace char, EOD) + + Examples (pipes indicate span): + #error |foo| + #error |foo| + #error |foo | + #error |foo baz| + #error |//foo| + #error |/*foo*/| + #error |/*foo| + + The '#' token. + The 'error' or 'warning' token. + True if the error/warning should be recorded. + An ErrorDirective or WarningDirective node. + + + + These aren't acceptable in place of ASCII quotation marks in XML, + but we want to consume them (and produce an appropriate error) if + they occur in a place where a quotation mark is legal. + + + + + ACASEY: This grammar is derived from the behavior and sources of the native compiler. + Tokens start with underscores (I've cheated for _PredefinedTypeToken, which is not actually a + SyntaxKind), "*" indicates "0 or more", "?" indicates "0 or 1", and parentheses are for grouping. + + Cref = CrefType _DotToken CrefMember + | CrefType + | CrefMember + | CrefFirstType _OpenParenToken CrefParameterList? _CloseParenToken + CrefName = _IdentifierToken (_LessThanToken _IdentifierToken (_CommaToken _IdentifierToken)* _GreaterThanToken)? + CrefFirstType = ((_IdentifierToken _ColonColonToken)? CrefName) + | _PredefinedTypeToken + CrefType = CrefFirstType (_DotToken CrefName)* + CrefMember = CrefName (_OpenParenToken CrefParameterList? _CloseParenToken)? + | _ThisKeyword (_OpenBracketToken CrefParameterList _CloseBracketToken)? + | _OperatorKeyword _OperatorToken (_OpenParenToken CrefParameterList? _CloseParenToken)? + | (_ImplicitKeyword | _ExplicitKeyword) _OperatorKeyword CrefParameterType (_OpenParenToken CrefParameterList? _CloseParenToken)? + CrefParameterList = CrefParameter (_CommaToken CrefParameter)* + CrefParameter = (_RefKeyword | _OutKeyword)? CrefParameterType + CrefParameterType = CrefParameterType2 _QuestionToken? _AsteriskToken* (_OpenBracketToken _CommaToken* _CloseBracketToken)* + CrefParameterType2 = (((_IdentifierToken _ColonColonToken)? CrefParameterType3) | _PredefinedTypeToken) (_DotToken CrefParameterType3)* + CrefParameterType3 = _IdentifierToken (_LessThanToken CrefParameterType (_CommaToken CrefParameterType)* _GreaterThanToken)? + + NOTE: type parameters, not type arguments + NOTE: the first production of Cref is preferred to the other two + NOTE: pointer, array, and nullable types only work in parameters + NOTE: CrefParameterType2 and CrefParameterType3 correspond to CrefType and CrefName, respectively. + Since the only difference is that they accept non-identifier type arguments, this is accomplished + using parameters on the parsing methods (rather than whole new methods). + + + + + Parse the custom cref syntax for a named member (method, property, etc), + an indexer, an overloadable operator, or a user-defined conversion. + + + + + Parse a named member (method, property, etc), with optional type + parameters and regular parameters. + + + + + Parse an indexer member, with optional parameters. + + + + + Parse an overloadable operator, with optional parameters. + + + + + Parse a user-defined conversion, with optional parameters. + + + + + Parse a parenthesized parameter list. + + + + + Parse a bracketed parameter list. + + + + + Parse the parameter list (if any) of a cref member (name, indexer, operator, or conversion). + + + + + True if the current token could be the beginning of a cref parameter. + + + + + Parse an element of a cref parameter list. + + + "ref" and "out" work, but "params", "this", and "__arglist" don't. + + + + + Parse an identifier, optionally followed by an angle-bracketed list of type parameters. + + True to give an error when a non-identifier + type argument is seen, false to accept. No change in the shape of the tree. + + + + Parse a type. May include an alias, a predefined type, and/or a qualified name. + + + Pointer, nullable, or array types are only allowed if is false. + Leaves a dot and a name unconsumed if the name is not followed by another dot + and checkForMember is true. + + True to give an error when a non-identifier + type argument is seen, false to accept. No change in the shape of the tree. + True means that the last name should not be consumed + if it is followed by a parameter list. + + + + Parse a type. May include an alias, a predefined type, and/or a qualified name. + + + No pointer, nullable, or array types. + Leaves a dot and a name unconsumed if the name is not followed by another dot + and checkForMember is true. + + True to give an error when a non-identifier + type argument is seen, false to accept. No change in the shape of the tree. + True means that the last name should not be consumed + if it is followed by a parameter list. + + + + Once the name part of a type (including type parameter/argument lists) is parsed, + we need to consume ?, *, and rank specifiers. + + + + + Ends at appropriate quotation mark, EOF, or EndOfDocumentationComment. + + + + + Convenience method for checking the mode. + + + + + Ends at appropriate quotation mark, EOF, or EndOfDocumentationComment. + + + + + Set of well-known SyntaxTokens commonly found within XML doc comments. + + + + + Look up a well known SyntaxToken for a given XML element tag or attribute. + This is a performance optimization to avoid creating duplicate tokens for the same content. + + The text of the tag or attribute. + The leading trivia of the token. + The SyntaxToken representing the well-known tag or attribute or null if it's not well-known. + + + + Returns true if the lookahead tokens compose extern alias directive. + + + + + Parses any block or expression bodies that are present. Also parses + the trailing semicolon if one is present. + + + + + WARNING: it is possible that "list" is really the underlying builder of a SeparateSyntaxListBuilder, + so it is important that we not add anything to the list. + + + + + True if current identifier token is not really some contextual keyword + + + + + + Definitely not a type name. + + + + + Definitely a type name: either a predefined type (int, string, etc.) or an array type name (ending with a bracket). + + + + + Might be a generic (qualified) type name or a method name. + + + + + Might be a generic (qualified) type name or an expression or a method name. + + + + + Might be a non-generic (qualified) type name or an expression. + + + + + A type name with alias prefix (Alias::Name) + + + + + Nullable type (ending with ?). + + + + + Might be a pointer type or a multiplication. + + + + + Parses any statement but a declaration statement. Returns null if the lookahead looks like a declaration. + + + Variable declarations in global code are parsed as field declarations so we need to fallback if we encounter a declaration statement. + + + + + true if the current token can be the first token of a typed identifier (a type name followed by an identifier), + false if it definitely can't be, + null if we need to scan further to find out. + + + + + "Safe" substring using start and end positions rather than start and length. + If things are out of bounds just returns the empty string. That should only + be used by clients to assist in error recovery. + original string + index of first character to be included + index of last character to be included + + + + + Take the given text and treat it as the contents of a string literal, returning a token for that. + + The text for the full string literal, including the quotes and contents + The text for the string literal's contents, excluding surrounding quotes + True if the string contents should be scanned using the rules for verbatim strings + The token kind to be assigned to the resulting token + + + + This method is essentially the same as ScanIdentifier_SlowPath, + except that it can handle XML entities. Since ScanIdentifier + is hot code and since this method does extra work, it seem + worthwhile to separate it from the common case. + + + + + + + Scans a new-line sequence (either a single new-line character or a CR-LF combo). + + A trivia node with the new-line text + + + + Scans all of the whitespace (not new-lines) into a trivia node until it runs out. + + A trivia node with the whitespace text + + + + Lexer entry point for LexMode.XmlDocComment + + + + + Lexer entry point for LexMode.XmlElementTag + + + + + Determines whether this Unicode character can start a XMLName. + + The Unicode character. + + + + Determines if this Unicode character can be part of an XML Name. + + The Unicode character. + + + + Lexer entry point for LexMode.XmlAttributeText + + + + + Lexer entry point for LexerMode.XmlCharacter. + + + + + Scan a single XML character (or entity). Assumes that leading trivia has already + been consumed. + + + + + Lexer entry point for LexerMode.XmlCrefQuote, LexerMode.XmlCrefDoubleQuote, + LexerMode.XmlNameQuote, and LexerMode.XmlNameDoubleQuote. + + + + + Scan a single cref attribute token. Assumes that leading trivia has already + been consumed. + + + Within this method, characters that are not XML meta-characters can be seamlessly + replaced with the corresponding XML entities. + + + + + Given a character, advance the input if either the character or the + corresponding XML entity appears next in the text window. + + + + + + + Convenience property for determining whether we are currently lexing the + value of a cref or name attribute. + + + + + Convenience property for determining whether we are currently lexing the + value of a name attribute. + + + + + Diagnostics that occur within cref attributes need to be + wrapped with ErrorCode.WRN_ErrorOverride. + + + + + Diagnostics that occur within cref attributes need to be + wrapped with ErrorCode.WRN_ErrorOverride. + + + + + Lexer entry point for LexMode.XmlCDataSectionText + + + + + Lexer entry point for LexMode.XmlCommentText + + + + + Lexer entry point for LexMode.XmlProcessingInstructionText + + + + + Collects XML doc comment exterior trivia, and therefore is a no op unless we are in the Start or Exterior of an XML doc comment. + + List in which to collect the trivia + + + + Collects whitespace and new line trivia for XML doc comments. Does not see XML doc comment exterior trivia, and is a no op unless we are in the interior. + + List in which to collect the trivia + + + + Turn a (parsed) interpolated string nonterminal into an interpolated string token. + + + + + + Scan past the hole inside an interpolated string literal, leaving the current character on the '}' (if any) + + + + + Keeps a sliding buffer over the SourceText of a file for the lexer. Also + provides the lexer with the ability to keep track of a current "lexeme" + by leaving a marker and advancing ahead the offset. The lexer can then + decide to "keep" the lexeme by erasing the marker, or abandon the current + lexeme by moving the offset back to the marker. + + + + + In many cases, e.g. PeekChar, we need the ability to indicate that there are + no characters left and we have reached the end of the stream, or some other + invalid or not present character was asked for. Due to perf concerns, things + like nullable or out variables are not viable. Instead we need to choose a + char value which can never be legal. + + In .NET, all characters are represented in 16 bits using the UTF-16 encoding. + Fortunately for us, there are a variety of different bit patterns which + are *not* legal UTF-16 characters. 0xffff (char.MaxValue) is one of these + characters -- a legal Unicode code point, but not a legal UTF-16 bit pattern. + + + + + The current absolute position in the text file. + + + + + The current offset inside the window (relative to the window start). + + + + + The buffer backing the current window. + + + + + Returns the start of the current lexeme relative to the window start. + + + + + Number of characters in the character window. + + + + + The absolute position of the start of the current lexeme in the given + SourceText. + + + + + The number of characters in the current lexeme. + + + + + Start parsing a new lexeme. + + + + + After reading , a consumer can determine + if the InvalidCharacter was in the user's source or a sentinel. + + Comments and string literals are allowed to contain any Unicode character. + + + + + + Advance the current position by one. No guarantee that this + position is valid. + + + + + Advance the current position by n. No guarantee that this position + is valid. + + + + + Grab the next character and advance the position. + + + The next character, if there were no characters + remaining. + + + + + Gets the next character if there are any characters in the + SourceText. May advance the window if we are at the end. + + + The next character if any are available. InvalidCharacter otherwise. + + + + + Gets the character at the given offset to the current position if + the position is valid within the SourceText. + + + The next character if any are available. InvalidCharacter otherwise. + + + + + Given that the next character is an ampersand ('&'), attempt to interpret the + following characters as an XML entity. On success, populate the out parameters + with the low and high UTF-16 surrogates for the character represented by the + entity. + + e.g. '<' for &lt;. + e.g. '\uDC00' for &#x10000; (ch == '\uD800'). + True if a valid XML entity was consumed. + + NOTE: Always advances, even on failure. + + + + + If the next characters in the window match the given string, + then advance past those characters. Otherwise, do nothing. + + + + + Because syntax nodes need to be constructed with context information - to allow us to + determine whether or not they can be reused during incremental parsing - the syntax + factory needs a view of some internal parser state. + + + Read-only outside SyntaxParser (not enforced for perf reasons). + Reference type so that the factory stays up-to-date. + + + + + If a method goes from async to non-async, or vice versa, then every occurrence of "await" + within the method (but not within a lambda) needs to be reinterpreted, to determine whether + it is a keyword or an identifier. + + + + + If the end of a query expression statement is commented out, then the following statement may + appear to be part of the query. When this occurs, identifiers within the following statement + may need to be reinterpreted as query keywords. + + + + + Converts skippedSyntax node into tokens and adds these as trivia on the target token. + Also adds the first error (in depth-first preorder) found in the skipped syntax tree to the target token. + + + + + This function searches for the given location node within the subtree rooted at root node. + If it finds it, the function computes the offset span of that child node within the root and returns true, + otherwise it returns false. + + Root node + Node to search in the subtree rooted at root node + Offset of the location node within the subtree rooted at child + + + + + NOTE: we are specifically diverging from dev11 to improve the user experience. + Since treating the "async" keyword as an identifier in older language + versions can never result in a correct program, we instead accept it as a + keyword regardless of the language version and produce an error if the version + is insufficient. + + + + Class which represents an expression that has a binary operator. + + + ExpressionSyntax node representing the expression on the left of the binary operator. + + + SyntaxToken representing the operator of the binary expression. + + + ExpressionSyntax node representing the expression on the right of the binary operator. + + + Class which represents the syntax node for identifier name. + + + SyntaxToken representing the keyword for the kind of the identifier name. + + + + Gets the separator at the given index in this list. + + The index. + + + + + WARN WARN WARN: This should be used with extreme caution - the underlying builder does + not give any indication that it is from a separated syntax list but the constraints + (node, token, node, token, ...) should still be maintained. + + + In order to avoid creating a separate pool of SeparatedSyntaxListBuilders, we expose + our underlying SyntaxListBuilder to SyntaxListPool. + + + + + Find the slot that contains the given offset. + + The target offset. Must be between 0 and . + The slot index of the slot containing the given offset. + + This implementation uses a binary search to find the first slot that contains + the given offset. + + + + + Enumerates all nodes of the tree rooted by this node (including this node). + + + + + Should only be called during construction. + + + This should probably be an extra constructor parameter, but we don't need more constructor overloads. + + + + + Gets the syntax node represented the structure of this trivia, if any. The HasStructure property can be used to + determine if this trivia has structure. + + + A CSharpSyntaxNode derived from StructuredTriviaSyntax, with the structured view of this trivia node. + If this trivia node does not have structure, returns null. + + + Some types of trivia have structure that can be accessed as additional syntax nodes. + These forms of trivia include: + directives, where the structure describes the structure of the directive. + documentation comments, where the structure describes the XML structure of the comment. + skipped tokens, where the structure describes the tokens that were skipped by the parser. + + + + + Provides caching functionality for green nonterminals with up to 3 children. + Example: + When constructing a node with given kind, flags, child1 and child2, we can look up + in the cache whether we already have a node that contains same kind, flags, + child1 and child2 and use that. + + For the purpose of children comparison, reference equality is used as a much cheaper + alternative to the structural/recursive equality. This implies that in order to de-duplicate + a node to a cache node, the children of two nodes must be already de-duplicated. + When adding a node to the cache we verify that cache does contain node's children, + since otherwise there is no reason for the node to be used. + Tokens/nulls are for this purpose considered deduplicated. Indeed most of the tokens + are deduplicated via quick-scanner caching, so we just assume they all are. + + As a result of above, "fat" nodes with 4 or more children or their recursive parents + will never be in the cache. This naturally limits the typical single cache item to be + a relatively simple expression. We do not want the cache to be completely unbounded + on the item size. + While it still may be possible to store a gigantic nested binary expression, + it should be a rare occurrence. + + We only consider "normal" nodes to be cacheable. + Nodes with diagnostics/annotations/directives/skipped, etc... have more complicated identity + and are not likely to be repetitive. + + + + + + Returns the string representation of this token, not including its leading and trailing trivia. + + The string representation of this token, not including its leading and trailing trivia. + The length of the returned string is always the same as Span.Length + + + Provides the base class from which the classes that represent name syntax nodes are derived. This is an abstract class. + + + Provides the base class from which the classes that represent simple name syntax nodes are derived. This is an abstract class. + + + SyntaxToken representing the identifier of the simple name. + + + Class which represents the syntax node for qualified name. + + + NameSyntax node representing the name on the left side of the dot token of the qualified name. + + + SyntaxToken representing the dot. + + + SimpleNameSyntax node representing the name on the right side of the dot token of the qualified name. + + + Class which represents the syntax node for generic name. + + + SyntaxToken representing the name of the identifier of the generic name. + + + TypeArgumentListSyntax node representing the list of type arguments of the generic name. + + + Class which represents the syntax node for type argument list. + + + SyntaxToken representing less than. + + + SeparatedSyntaxList of TypeSyntax node representing the type arguments. + + + SyntaxToken representing greater than. + + + Class which represents the syntax node for alias qualified name. + + + IdentifierNameSyntax node representing the name of the alias + + + SyntaxToken representing colon colon. + + + SimpleNameSyntax node representing the name that is being alias qualified. + + + Provides the base class from which the classes that represent type syntax nodes are derived. This is an abstract class. + + + Class which represents the syntax node for predefined types. + + + SyntaxToken which represents the keyword corresponding to the predefined type. + + + Class which represents the syntax node for the array type. + + + TypeSyntax node representing the type of the element of the array. + + + SyntaxList of ArrayRankSpecifierSyntax nodes representing the list of rank specifiers for the array. + + + Class which represents the syntax node for pointer type. + + + TypeSyntax node that represents the element type of the pointer. + + + SyntaxToken representing the asterisk. + + + Class which represents the syntax node for a nullable type. + + + TypeSyntax node representing the type of the element. + + + SyntaxToken representing the question mark. + + + Class which represents a placeholder in the type argument list of an unbound generic type. + + + SyntaxToken representing the omitted type argument. + + + Provides the base class from which the classes that represent expression syntax nodes are derived. This is an abstract class. + + + Class which represents the syntax node for parenthesized expression. + + + SyntaxToken representing the open parenthesis. + + + ExpressionSyntax node representing the expression enclosed within the parenthesis. + + + SyntaxToken representing the close parenthesis. + + + Class which represents the syntax node for prefix unary expression. + + + SyntaxToken representing the kind of the operator of the prefix unary expression. + + + ExpressionSyntax representing the operand of the prefix unary expression. + + + Class which represents the syntax node for an "await" expression. + + + SyntaxToken representing the kind "await" keyword. + + + ExpressionSyntax representing the operand of the "await" operator. + + + Class which represents the syntax node for postfix unary expression. + + + ExpressionSyntax representing the operand of the postfix unary expression. + + + SyntaxToken representing the kind of the operator of the postfix unary expression. + + + Class which represents the syntax node for member access expression. + + + ExpressionSyntax node representing the object that the member belongs to. + + + SyntaxToken representing the kind of the operator in the member access expression. + + + SimpleNameSyntax node representing the member being accessed. + + + Class which represents the syntax node for conditional access expression. + + + ExpressionSyntax node representing the object conditionally accessed. + + + SyntaxToken representing the question mark. + + + ExpressionSyntax node representing the access expression to be executed when the object is not null. + + + Class which represents the syntax node for member binding expression. + + + SyntaxToken representing dot. + + + SimpleNameSyntax node representing the member being bound to. + + + Class which represents the syntax node for element binding expression. + + + BracketedArgumentListSyntax node representing the list of arguments of the element binding expression. + + + Class which represents the syntax node for implicit element access expression. + + + BracketedArgumentListSyntax node representing the list of arguments of the implicit element access expression. + + + Class which represents an expression that has an assignment operator. + + + ExpressionSyntax node representing the expression on the left of the assignment operator. + + + SyntaxToken representing the operator of the assignment expression. + + + ExpressionSyntax node representing the expression on the right of the assignment operator. + + + Class which represents the syntax node for conditional expression. + + + ExpressionSyntax node representing the condition of the conditional expression. + + + SyntaxToken representing the question mark. + + + ExpressionSyntax node representing the expression to be executed when the condition is true. + + + SyntaxToken representing the colon. + + + ExpressionSyntax node representing the expression to be executed when the condition is false. + + + Provides the base class from which the classes that represent instance expression syntax nodes are derived. This is an abstract class. + + + Class which represents the syntax node for a this expression. + + + SyntaxToken representing the this keyword. + + + Class which represents the syntax node for a base expression. + + + SyntaxToken representing the base keyword. + + + Class which represents the syntax node for a literal expression. + + + SyntaxToken representing the keyword corresponding to the kind of the literal expression. + + + Class which represents the syntax node for MakeRef expression. + + + SyntaxToken representing the MakeRefKeyword. + + + SyntaxToken representing open parenthesis. + + + Argument of the primary function. + + + SyntaxToken representing close parenthesis. + + + Class which represents the syntax node for RefType expression. + + + SyntaxToken representing the RefTypeKeyword. + + + SyntaxToken representing open parenthesis. + + + Argument of the primary function. + + + SyntaxToken representing close parenthesis. + + + Class which represents the syntax node for RefValue expression. + + + SyntaxToken representing the RefValueKeyword. + + + SyntaxToken representing open parenthesis. + + + Typed reference expression. + + + Comma separating the arguments. + + + The type of the value. + + + SyntaxToken representing close parenthesis. + + + Class which represents the syntax node for Checked or Unchecked expression. + + + SyntaxToken representing the checked or unchecked keyword. + + + SyntaxToken representing open parenthesis. + + + Argument of the primary function. + + + SyntaxToken representing close parenthesis. + + + Class which represents the syntax node for Default expression. + + + SyntaxToken representing the DefaultKeyword. + + + SyntaxToken representing open parenthesis. + + + Argument of the primary function. + + + SyntaxToken representing close parenthesis. + + + Class which represents the syntax node for TypeOf expression. + + + SyntaxToken representing the TypeOfKeyword. + + + SyntaxToken representing open parenthesis. + + + The expression to return type of. + + + SyntaxToken representing close parenthesis. + + + Class which represents the syntax node for SizeOf expression. + + + SyntaxToken representing the SizeOfKeyword. + + + SyntaxToken representing open parenthesis. + + + Argument of the primary function. + + + SyntaxToken representing close parenthesis. + + + Class which represents the syntax node for invocation expression. + + + ExpressionSyntax node representing the expression part of the invocation. + + + ArgumentListSyntax node representing the list of arguments of the invocation expression. + + + Class which represents the syntax node for element access expression. + + + ExpressionSyntax node representing the expression which is accessing the element. + + + BracketedArgumentListSyntax node representing the list of arguments of the element access expression. + + + Provides the base class from which the classes that represent argument list syntax nodes are derived. This is an abstract class. + + + SeparatedSyntaxList of ArgumentSyntax nodes representing the list of arguments. + + + Class which represents the syntax node for the list of arguments. + + + SyntaxToken representing open parenthesis. + + + SeparatedSyntaxList of ArgumentSyntax representing the list of arguments. + + + SyntaxToken representing close parenthesis. + + + Class which represents the syntax node for bracketed argument list. + + + SyntaxToken representing open bracket. + + + SeparatedSyntaxList of ArgumentSyntax representing the list of arguments. + + + SyntaxToken representing close bracket. + + + Class which represents the syntax node for argument. + + + NameColonSyntax node representing the optional name arguments. + + + SyntaxToken representing the optional ref or out keyword. + + + ExpressionSyntax node representing the argument. + + + Class which represents the syntax node for name colon syntax. + + + IdentifierNameSyntax representing the identifier name. + + + SyntaxToken representing colon. + + + Class which represents the syntax node for cast expression. + + + SyntaxToken representing the open parenthesis. + + + TypeSyntax node representing the type the expression is being casted to. + + + SyntaxToken representing the close parenthesis. + + + ExpressionSyntax node representing the expression that is being casted. + + + Provides the base class from which the classes that represent anonymous function expressions are derived. + + + Gets the "async" token. + + + ExpressionSyntax or BlockSyntax representing the body of the lambda expression. + + + Class which represents the syntax node for anonymous method expression. + + + Gets the "async" token. + + + SyntaxToken representing the delegate keyword. + + + List of parameters of the anonymous method expression, or null if there no parameters are specified. + + + BlockSyntax node representing the body of the anonymous method. + + + Provides the base class from which the classes that represent lambda expressions are derived. + + + SyntaxToken representing equals greater than. + + + Class which represents the syntax node for a simple lambda expression. + + + Gets the "async" token. + + + ParameterSyntax node representing the parameter of the lambda expression. + + + SyntaxToken representing equals greater than. + + + SyntaxNode representing the body of the lambda expression. + + + Class which represents the syntax node for parenthesized lambda expression. + + + Gets the "async" token. + + + ParameterListSyntax node representing the list of parameters for the lambda expression. + + + SyntaxToken representing equals greater than. + + + SyntaxNode representing the body of the lambda expression. + + + Class which represents the syntax node for initializer expression. + + + SyntaxToken representing the open brace. + + + SeparatedSyntaxList of ExpressionSyntax representing the list of expressions in the initializer expression. + + + SyntaxToken representing the close brace. + + + Class which represents the syntax node for object creation expression. + + + SyntaxToken representing the new keyword. + + + TypeSyntax representing the type of the object being created. + + + ArgumentListSyntax representing the list of arguments passed as part of the object creation expression. + + + InitializerExpressionSyntax representing the initializer expression for the object being created. + + + NameEqualsSyntax representing the optional name of the member being initialized. + + + ExpressionSyntax representing the value the member is initialized with. + + + Class which represents the syntax node for anonymous object creation expression. + + + SyntaxToken representing the new keyword. + + + SyntaxToken representing the open brace. + + + SeparatedSyntaxList of AnonymousObjectMemberDeclaratorSyntax representing the list of object member initializers. + + + SyntaxToken representing the close brace. + + + Class which represents the syntax node for array creation expression. + + + SyntaxToken representing the new keyword. + + + ArrayTypeSyntax node representing the type of the array. + + + InitializerExpressionSyntax node representing the initializer of the array creation expression. + + + Class which represents the syntax node for implicit array creation expression. + + + SyntaxToken representing the new keyword. + + + SyntaxToken representing the open bracket. + + + SyntaxList of SyntaxToken representing the commas in the implicit array creation expression. + + + SyntaxToken representing the close bracket. + + + InitializerExpressionSyntax representing the initializer expression of the implicit array creation expression. + + + Class which represents the syntax node for stackalloc array creation expression. + + + SyntaxToken representing the stackalloc keyword. + + + TypeSyntax node representing the type of the stackalloc array. + + + Gets the identifier. + + + Gets the identifier. + + + Gets the identifier. + + + Gets the identifier. + + + Gets the identifier. + + + Class which represents a placeholder in an array size list. + + + SyntaxToken representing the omitted array size expression. + + + The first part of an interpolated string, $" or $@" + + + List of parts of the interpolated string, each one is either a literal part or an interpolation. + + + The closing quote of the interpolated string. + + + The text contents of a part of the interpolated string. + + + The text contents of the format specifier for an interpolation. + + + Represents the base class for all statements syntax classes. + + + Gets the modifier list. + + + Gets the identifier. + + + Represents a labeled statement syntax. + + + Gets the identifier. + + + Gets a SyntaxToken that represents the colon succeeding the statement's label. + + + + Represents a goto statement syntax + + + + + Gets a SyntaxToken that represents the goto keyword. + + + + + Gets a SyntaxToken that represents the case or default keywords if any exists. + + + + + Gets a constant expression for a goto case statement. + + + + + Gets a SyntaxToken that represents the semi-colon at the end of the statement. + + + + Gets the identifier. + + + + Represents an if statement syntax. + + + + + Gets a SyntaxToken that represents the if keyword. + + + + + Gets a SyntaxToken that represents the open parenthesis before the if statement's condition expression. + + + + + Gets an ExpressionSyntax that represents the condition of the if statement. + + + + + Gets a SyntaxToken that represents the close parenthesis after the if statement's condition expression. + + + + + Gets a StatementSyntax the represents the statement to be executed when the condition is true. + + + + + Gets an ElseClauseSyntax that represents the statement to be executed when the condition is false if such statement exists. + + + + Represents an else statement syntax. + + + + Gets a syntax token + + + + Represents a switch statement syntax. + + + + Gets a SyntaxToken that represents the switch keyword. + + + + + Gets a SyntaxToken that represents the open parenthesis preceding the switch expression. + + + + + Gets an ExpressionSyntax representing the expression of the switch statement. + + + + + Gets a SyntaxToken that represents the close parenthesis succeeding the switch expression. + + + + + Gets a SyntaxToken that represents the open braces preceding the switch sections. + + + + + Gets a SyntaxList of SwitchSectionSyntax's that represents the switch sections of the switch statement. + + + + + Gets a SyntaxToken that represents the open braces succeeding the switch sections. + + + + Represents a switch section syntax of a switch statement. + + + + Gets a SyntaxList of SwitchLabelSyntax's the represents the possible labels that control can transfer to within the section. + + + + + Gets a SyntaxList of StatementSyntax's the represents the statements to be executed when control transfer to a label the belongs to the section. + + + + Represents a switch label within a switch statement. + + + + Gets a SyntaxToken that represents a case or default keywords that belongs to a switch label. + + + + + Gets a SyntaxToken that represents the colon that terminates the switch label. + + + + Represents a case label within a switch statement. + + + Gets the case keyword token. + + + + Gets an ExpressionSyntax that represents the constant expression that gets matched for the case label. + + + + Represents a default label within a switch statement. + + + Gets the default keyword token. + + + Gets the attribute declaration list. + + + + Represents an ExternAlias directive syntax, e.g. "extern alias MyAlias;" with specifying "/r:MyAlias=SomeAssembly.dll " on the compiler command line. + + + + SyntaxToken representing the extern keyword. + + + SyntaxToken representing the alias keyword. + + + Gets the identifier. + + + SyntaxToken representing the semicolon token. + + + Member declaration syntax. + + + Gets the optional semicolon token. + + + Class representing one or more attributes applied to a language construct. + + + Gets the open bracket token. + + + Gets the optional construct targeted by the attribute. + + + Gets the attribute declaration list. + + + Gets the close bracket token. + + + Class representing what language construct an attribute targets. + + + Gets the identifier. + + + Gets the colon token. + + + Attribute syntax. + + + Gets the name. + + + Attribute argument list syntax. + + + Gets the open paren token. + + + Gets the arguments syntax list. + + + Gets the close paren token. + + + Attribute argument syntax. + + + Gets the expression. + + + Class representing an identifier name followed by an equals token. + + + Gets the identifier name. + + + Type parameter list syntax. + + + Gets the < token. + + + Gets the parameter list. + + + Gets the > token. + + + Type parameter syntax. + + + Gets the attribute declaration list. + + + Gets the identifier. + + + Base class for type declaration syntax. + + + Gets the attribute declaration list. + + + Gets the modifier list. + + + Gets the identifier. + + + Gets the base type list. + + + Gets the open brace token. + + + Gets the close brace token. + + + Gets the optional semicolon token. + + + Base class for type declaration syntax (class, struct, interface). + + + Gets the type keyword token ("class", "struct", "interface"). + + + Gets the type constraint list. + + + Gets the member declarations. + + + Class type declaration syntax. + + + Gets the class keyword token. + + + Struct type declaration syntax. + + + Gets the struct keyword token. + + + Interface type declaration syntax. + + + Gets the interface keyword token. + + + Enum type declaration syntax. + + + Gets the enum keyword token. + + + Gets the members declaration list. + + + Gets the optional semicolon token. + + + Delegate declaration syntax. + + + Gets the attribute declaration list. + + + Gets the modifier list. + + + Gets the "delegate" keyword. + + + Gets the return type. + + + Gets the identifier. + + + Gets the parameter list. + + + Gets the constraint clause list. + + + Gets the semicolon token. + + + Gets the attribute declaration list. + + + Gets the identifier. + + + Base list syntax. + + + Gets the colon token. + + + Gets the base type references. + + + Provides the base class from which the classes that represent base type syntax nodes are derived. This is an abstract class. + + + Type parameter constraint clause. + + + Gets the identifier. + + + Gets the colon token. + + + Gets the constraints list. + + + Base type for type parameter constraint syntax. + + + Constructor constraint syntax. + + + Gets the "new" keyword. + + + Gets the open paren keyword. + + + Gets the close paren keyword. + + + Base type for class or struct constraint syntax. + + + Gets the constraint keyword ("class" or "struct"). + + + Type constraint syntax. + + + Gets the type syntax. + + + Gets the attribute declaration list. + + + Gets the modifier list. + + + Gets the attribute declaration list. + + + Gets the modifier list. + + + Gets the attribute declaration list. + + + Gets the modifier list. + + + Base type for method declaration syntax. + + + Gets the attribute declaration list. + + + Gets the modifier list. + + + Gets the parameter list. + + + Gets the optional semicolon token. + + + Method declaration syntax. + + + Gets the return type syntax. + + + Gets the identifier. + + + Gets the constraint clause list. + + + Gets the optional semicolon token. + + + Operator declaration syntax. + + + Gets the return type. + + + Gets the "operator" keyword. + + + Gets the operator token. + + + Conversion operator declaration syntax. + + + Gets the "implicit" or "explicit" token. + + + Gets the "operator" token. + + + Gets the type. + + + Gets the optional semicolon token. + + + Constructor declaration syntax. + + + Gets the identifier. + + + Gets the optional semicolon token. + + + Constructor initializer syntax. + + + Gets the colon token. + + + Gets the "this" or "base" keyword. + + + Destructor declaration syntax. + + + Gets the tilde token. + + + Gets the identifier. + + + Gets the optional semicolon token. + + + Base type for property declaration syntax. + + + Gets the attribute declaration list. + + + Gets the modifier list. + + + Gets the type syntax. + + + Gets the optional explicit interface specifier. + + + Gets the identifier. + + + The syntax for the expression body of an expression-bodied member. + + + Gets the identifier. + + + Gets the parameter list. + + + Gets the attribute declaration list. + + + Gets the modifier list. + + + Gets the keyword token, or identifier if an erroneous accessor declaration. + + + Gets the optional body block which may be empty, but it is null if there are no braces. + + + Gets the optional semicolon token. + + + Base type for parameter list syntax. + + + Gets the parameter list. + + + Parameter list syntax. + + + Gets the open paren token. + + + Gets the close paren token. + + + Parameter list syntax with surrounding brackets. + + + Gets the open bracket token. + + + Gets the close bracket token. + + + Parameter syntax. + + + Gets the attribute declaration list. + + + Gets the modifier list. + + + Gets the identifier. + + + Gets the attribute declaration list. + + + Gets the modifier list. + + + + A symbol referenced by a cref attribute (e.g. in a <see> or <seealso> documentation comment tag). + For example, the M in <see cref="M" />. + + + + + A symbol reference that definitely refers to a type. + For example, "int", "A::B", "A.B", "A<T>", but not "M()" (has parameter list) or "this" (indexer). + NOTE: TypeCrefSyntax, QualifiedCrefSyntax, and MemberCrefSyntax overlap. The syntax in a TypeCrefSyntax + will always be bound as type, so it's safer to use QualifiedCrefSyntax or MemberCrefSyntax if the symbol + might be a non-type member. + + + + + A symbol reference to a type or non-type member that is qualified by an enclosing type or namespace. + For example, cref="System.String.ToString()". + NOTE: TypeCrefSyntax, QualifiedCrefSyntax, and MemberCrefSyntax overlap. The syntax in a TypeCrefSyntax + will always be bound as type, so it's safer to use QualifiedCrefSyntax or MemberCrefSyntax if the symbol + might be a non-type member. + + + + + The unqualified part of a CrefSyntax. + For example, "ToString()" in "object.ToString()". + NOTE: TypeCrefSyntax, QualifiedCrefSyntax, and MemberCrefSyntax overlap. The syntax in a TypeCrefSyntax + will always be bound as type, so it's safer to use QualifiedCrefSyntax or MemberCrefSyntax if the symbol + might be a non-type member. + + + + + A MemberCrefSyntax specified by a name (an identifier, predefined type keyword, or an alias-qualified name, + with an optional type parameter list) and an optional parameter list. + For example, "M", "M<T>" or "M(int)". + Also, "A::B()" or "string()". + + + + + A MemberCrefSyntax specified by a this keyword and an optional parameter list. + For example, "this" or "this[int]". + + + + + A MemberCrefSyntax specified by an operator keyword, an operator symbol and an optional parameter list. + For example, "operator +" or "operator -[int]". + NOTE: the operator must be overloadable. + + + + Gets the operator token. + + + + A MemberCrefSyntax specified by an implicit or explicit keyword, an operator keyword, a destination type, and an optional parameter list. + For example, "implicit operator int" or "explicit operator MyType(int)". + + + + + A list of cref parameters with surrounding punctuation. + Unlike regular parameters, cref parameters do not have names. + + + + Gets the parameter list. + + + + A parenthesized list of cref parameters. + + + + Gets the open paren token. + + + Gets the close paren token. + + + + A bracketed list of cref parameters. + + + + Gets the open bracket token. + + + Gets the close bracket token. + + + + An element of a BaseCrefParameterListSyntax. + Unlike a regular parameter, a cref parameter has only an optional ref or out keyword and a type - + there is no name and there are no attributes or other modifiers. + + + + Class which represents the syntax node for alias qualified name. + + + IdentifierNameSyntax node representing the name of the alias + + + SyntaxToken representing colon colon. + + + SimpleNameSyntax node representing the name that is being alias qualified. + + + Attribute syntax. + + + + Return the name used in syntax for the attribute. This is typically the class + name without the "Attribute" suffix. (For certain diagnostics, the native + compiler uses the attribute name from syntax rather than the class name.) + + + + Gets the name. + + + Class representing what language construct an attribute targets. + + + Gets the identifier. + + + Gets the colon token. + + + + Returns #r directives specified in the compilation. + + + + + Returns #load directives specified in the compilation. + + + + Gets the attribute declaration list. + + + + Adds C# specific parts to the line directive map. + + + + Gets the modifier list. + + + Delegate declaration syntax. + + + Gets the attribute declaration list. + + + Gets the modifier list. + + + Gets the "delegate" keyword. + + + Gets the return type. + + + Gets the identifier. + + + Gets the parameter list. + + + Gets the constraint clause list. + + + Gets the semicolon token. + + + + Returns true if the property is allowed by the rules of the + language to be an arbitrary expression, not just a statement expression. + + + True if, for example, this expression statement represents the last expression statement + of the interactive top-level code. + + + + Class which represents the syntax node for generic name. + + + SyntaxToken representing the name of the identifier of the generic name. + + + TypeArgumentListSyntax node representing the list of type arguments of the generic name. + + + Class which represents the syntax node for identifier name. + + + SyntaxToken representing the keyword for the kind of the identifier name. + + + Gets the identifier. + + + Class which represents the syntax node for anonymous method expression. + + + Gets the "async" token. + + + SyntaxToken representing the delegate keyword. + + + List of parameters of the anonymous method expression, or null if there no parameters are specified. + + + BlockSyntax node representing the body of the anonymous method. + + + + This class contains a variety of helper methods for determining whether a + position is within the scope (and not just the span) of a node. In general, + general, the scope extends from the first token up to, but not including, + the last token. For example, the open brace of a block is within the scope + of the block, but the close brace is not. + + + + + A position is considered to be inside a block if it is on or after + the open brace and strictly before the close brace. + + + + + A position is inside a property body only if it is inside an expression body. + All block bodies for properties are part of the accessor declaration (a type + of BaseMethodDeclaration), not the property declaration. + + + + + A position is inside a property body only if it is inside an expression body. + All block bodies for properties are part of the accessor declaration (a type + of BaseMethodDeclaration), not the property declaration. + + + + + A position is inside a body if it is inside the block or expression + body. + + A position is considered to be inside a block if it is on or after + the open brace and strictly before the close brace. A position is + considered to be inside an expression body if it is on or after + the '=>' and strictly before the semicolon. + + + + + Returns true if position is within the given node and before the first excluded token. + + + + + Used to determine whether it would be appropriate to use the binder for the statement (if any). + Not used to determine whether the position is syntactically within the statement. + + + + + Used to determine whether it would be appropriate to use the binder for the statement (if any). + Not used to determine whether the position is syntactically within the statement. + + + + + Used to determine whether it would be appropriate to use the binder for the statement (if any). + Not used to determine whether the position is syntactically within the statement. + + + + Gets the parameter list. + + + Method declaration syntax. + + + Gets the return type syntax. + + + Gets the identifier. + + + Gets the constraint clause list. + + + Gets the optional semicolon token. + + + Gets the optional semicolon token. + + + Provides the base class from which the classes that represent name syntax nodes are derived. This is an abstract class. + + + + Returns the unqualified (right-most) part of a qualified or alias-qualified name, or the name itself if already unqualified. + + The unqualified (right-most) part of a qualified or alias-qualified name, or the name itself if already unqualified. + If called on an instance of returns the value of the property. + If called on an instance of returns the value of the property. + If called on an instance of returns the instance itself. + + + + + Return the name in string form, without trivia or generic arguments, for use in diagnostics. + + + + + This inspection is entirely syntactic. We are not trying to find the alias corresponding to the assembly symbol + containing the explicitly implemented interface symbol - there may be more than one. We just want to know + how the name was qualified in source so that we can make a similar qualification (for uniqueness purposes). + + + + Parameter list syntax. + + + Gets the open paren token. + + + Gets the close paren token. + + + Parameter syntax. + + + Gets the attribute declaration list. + + + Gets the modifier list. + + + Gets the identifier. + + + Class which represents the syntax node for qualified name. + + + NameSyntax node representing the name on the left side of the dot token of the qualified name. + + + SyntaxToken representing the dot. + + + SimpleNameSyntax node representing the name on the right side of the dot token of the qualified name. + + + Provides the base class from which the classes that represent simple name syntax nodes are derived. This is an abstract class. + + + SyntaxToken representing the identifier of the simple name. + + + + It's a non terminal Trivia CSharpSyntaxNode that has a tree underneath it. + + + + + Get parent trivia. + + + + + Returns whether the specified token is also the end of the line. This will + be true for , , + and all preprocessor directives. + + + + Base class for type declaration syntax (class, struct, interface). + + + Gets the type keyword token ("class", "struct", "interface"). + + + Gets the type constraint list. + + + Gets the member declarations. + + + Provides the base class from which the classes that represent type syntax nodes are derived. This is an abstract class. + + + Class which represents the syntax node for type argument list. + + + SyntaxToken representing less than. + + + SeparatedSyntaxList of TypeSyntax node representing the type arguments. + + + SyntaxToken representing greater than. + + + Class which represents the syntax node for predefined types. + + + SyntaxToken which represents the keyword corresponding to the predefined type. + + + Class which represents the syntax node for the array type. + + + TypeSyntax node representing the type of the element of the array. + + + SyntaxList of ArrayRankSpecifierSyntax nodes representing the list of rank specifiers for the array. + + + Class which represents the syntax node for pointer type. + + + TypeSyntax node that represents the element type of the pointer. + + + SyntaxToken representing the asterisk. + + + Class which represents the syntax node for a nullable type. + + + TypeSyntax node representing the type of the element. + + + SyntaxToken representing the question mark. + + + Class which represents a placeholder in the type argument list of an unbound generic type. + + + SyntaxToken representing the omitted type argument. + + + Provides the base class from which the classes that represent expression syntax nodes are derived. This is an abstract class. + + + Class which represents the syntax node for parenthesized expression. + + + SyntaxToken representing the open parenthesis. + + + ExpressionSyntax node representing the expression enclosed within the parenthesis. + + + SyntaxToken representing the close parenthesis. + + + Class which represents the syntax node for prefix unary expression. + + + SyntaxToken representing the kind of the operator of the prefix unary expression. + + + ExpressionSyntax representing the operand of the prefix unary expression. + + + Class which represents the syntax node for an "await" expression. + + + SyntaxToken representing the kind "await" keyword. + + + ExpressionSyntax representing the operand of the "await" operator. + + + Class which represents the syntax node for postfix unary expression. + + + ExpressionSyntax representing the operand of the postfix unary expression. + + + SyntaxToken representing the kind of the operator of the postfix unary expression. + + + Class which represents the syntax node for member access expression. + + + ExpressionSyntax node representing the object that the member belongs to. + + + SyntaxToken representing the kind of the operator in the member access expression. + + + SimpleNameSyntax node representing the member being accessed. + + + Class which represents the syntax node for conditional access expression. + + + ExpressionSyntax node representing the object conditionally accessed. + + + SyntaxToken representing the question mark. + + + ExpressionSyntax node representing the access expression to be executed when the object is not null. + + + Class which represents the syntax node for member binding expression. + + + SyntaxToken representing dot. + + + SimpleNameSyntax node representing the member being bound to. + + + Class which represents the syntax node for element binding expression. + + + BracketedArgumentListSyntax node representing the list of arguments of the element binding expression. + + + Class which represents the syntax node for implicit element access expression. + + + BracketedArgumentListSyntax node representing the list of arguments of the implicit element access expression. + + + Class which represents an expression that has a binary operator. + + + ExpressionSyntax node representing the expression on the left of the binary operator. + + + SyntaxToken representing the operator of the binary expression. + + + ExpressionSyntax node representing the expression on the right of the binary operator. + + + Class which represents an expression that has an assignment operator. + + + ExpressionSyntax node representing the expression on the left of the assignment operator. + + + SyntaxToken representing the operator of the assignment expression. + + + ExpressionSyntax node representing the expression on the right of the assignment operator. + + + Class which represents the syntax node for conditional expression. + + + ExpressionSyntax node representing the condition of the conditional expression. + + + SyntaxToken representing the question mark. + + + ExpressionSyntax node representing the expression to be executed when the condition is true. + + + SyntaxToken representing the colon. + + + ExpressionSyntax node representing the expression to be executed when the condition is false. + + + Provides the base class from which the classes that represent instance expression syntax nodes are derived. This is an abstract class. + + + Class which represents the syntax node for a this expression. + + + SyntaxToken representing the this keyword. + + + Class which represents the syntax node for a base expression. + + + SyntaxToken representing the base keyword. + + + Class which represents the syntax node for a literal expression. + + + SyntaxToken representing the keyword corresponding to the kind of the literal expression. + + + Class which represents the syntax node for MakeRef expression. + + + SyntaxToken representing the MakeRefKeyword. + + + SyntaxToken representing open parenthesis. + + + Argument of the primary function. + + + SyntaxToken representing close parenthesis. + + + Class which represents the syntax node for RefType expression. + + + SyntaxToken representing the RefTypeKeyword. + + + SyntaxToken representing open parenthesis. + + + Argument of the primary function. + + + SyntaxToken representing close parenthesis. + + + Class which represents the syntax node for RefValue expression. + + + SyntaxToken representing the RefValueKeyword. + + + SyntaxToken representing open parenthesis. + + + Typed reference expression. + + + Comma separating the arguments. + + + The type of the value. + + + SyntaxToken representing close parenthesis. + + + Class which represents the syntax node for Checked or Unchecked expression. + + + SyntaxToken representing the checked or unchecked keyword. + + + SyntaxToken representing open parenthesis. + + + Argument of the primary function. + + + SyntaxToken representing close parenthesis. + + + Class which represents the syntax node for Default expression. + + + SyntaxToken representing the DefaultKeyword. + + + SyntaxToken representing open parenthesis. + + + Argument of the primary function. + + + SyntaxToken representing close parenthesis. + + + Class which represents the syntax node for TypeOf expression. + + + SyntaxToken representing the TypeOfKeyword. + + + SyntaxToken representing open parenthesis. + + + The expression to return type of. + + + SyntaxToken representing close parenthesis. + + + Class which represents the syntax node for SizeOf expression. + + + SyntaxToken representing the SizeOfKeyword. + + + SyntaxToken representing open parenthesis. + + + Argument of the primary function. + + + SyntaxToken representing close parenthesis. + + + Class which represents the syntax node for invocation expression. + + + ExpressionSyntax node representing the expression part of the invocation. + + + ArgumentListSyntax node representing the list of arguments of the invocation expression. + + + Class which represents the syntax node for element access expression. + + + ExpressionSyntax node representing the expression which is accessing the element. + + + BracketedArgumentListSyntax node representing the list of arguments of the element access expression. + + + Provides the base class from which the classes that represent argument list syntax nodes are derived. This is an abstract class. + + + SeparatedSyntaxList of ArgumentSyntax nodes representing the list of arguments. + + + Class which represents the syntax node for the list of arguments. + + + SyntaxToken representing open parenthesis. + + + SeparatedSyntaxList of ArgumentSyntax representing the list of arguments. + + + SyntaxToken representing close parenthesis. + + + Class which represents the syntax node for bracketed argument list. + + + SyntaxToken representing open bracket. + + + SeparatedSyntaxList of ArgumentSyntax representing the list of arguments. + + + SyntaxToken representing close bracket. + + + Class which represents the syntax node for argument. + + + NameColonSyntax node representing the optional name arguments. + + + SyntaxToken representing the optional ref or out keyword. + + + ExpressionSyntax node representing the argument. + + + Class which represents the syntax node for name colon syntax. + + + IdentifierNameSyntax representing the identifier name. + + + SyntaxToken representing colon. + + + Class which represents the syntax node for cast expression. + + + SyntaxToken representing the open parenthesis. + + + TypeSyntax node representing the type the expression is being casted to. + + + SyntaxToken representing the close parenthesis. + + + ExpressionSyntax node representing the expression that is being casted. + + + Provides the base class from which the classes that represent anonymous function expressions are derived. + + + Gets the "async" token. + + + ExpressionSyntax or BlockSyntax representing the body of the lambda expression. + + + Provides the base class from which the classes that represent lambda expressions are derived. + + + SyntaxToken representing equals greater than. + + + Class which represents the syntax node for a simple lambda expression. + + + Gets the "async" token. + + + ParameterSyntax node representing the parameter of the lambda expression. + + + SyntaxToken representing equals greater than. + + + SyntaxNode representing the body of the lambda expression. + + + Class which represents the syntax node for parenthesized lambda expression. + + + Gets the "async" token. + + + ParameterListSyntax node representing the list of parameters for the lambda expression. + + + SyntaxToken representing equals greater than. + + + SyntaxNode representing the body of the lambda expression. + + + Class which represents the syntax node for initializer expression. + + + SyntaxToken representing the open brace. + + + SeparatedSyntaxList of ExpressionSyntax representing the list of expressions in the initializer expression. + + + SyntaxToken representing the close brace. + + + Class which represents the syntax node for object creation expression. + + + SyntaxToken representing the new keyword. + + + TypeSyntax representing the type of the object being created. + + + ArgumentListSyntax representing the list of arguments passed as part of the object creation expression. + + + InitializerExpressionSyntax representing the initializer expression for the object being created. + + + NameEqualsSyntax representing the optional name of the member being initialized. + + + ExpressionSyntax representing the value the member is initialized with. + + + Class which represents the syntax node for anonymous object creation expression. + + + SyntaxToken representing the new keyword. + + + SyntaxToken representing the open brace. + + + SeparatedSyntaxList of AnonymousObjectMemberDeclaratorSyntax representing the list of object member initializers. + + + SyntaxToken representing the close brace. + + + Class which represents the syntax node for array creation expression. + + + SyntaxToken representing the new keyword. + + + ArrayTypeSyntax node representing the type of the array. + + + InitializerExpressionSyntax node representing the initializer of the array creation expression. + + + Class which represents the syntax node for implicit array creation expression. + + + SyntaxToken representing the new keyword. + + + SyntaxToken representing the open bracket. + + + SyntaxList of SyntaxToken representing the commas in the implicit array creation expression. + + + SyntaxToken representing the close bracket. + + + InitializerExpressionSyntax representing the initializer expression of the implicit array creation expression. + + + Class which represents the syntax node for stackalloc array creation expression. + + + SyntaxToken representing the stackalloc keyword. + + + TypeSyntax node representing the type of the stackalloc array. + + + Gets the identifier. + + + Gets the identifier. + + + Gets the identifier. + + + Gets the identifier. + + + Gets the identifier. + + + Class which represents a placeholder in an array size list. + + + SyntaxToken representing the omitted array size expression. + + + The first part of an interpolated string, $" or $@" + + + List of parts of the interpolated string, each one is either a literal part or an interpolation. + + + The closing quote of the interpolated string. + + + The text contents of a part of the interpolated string. + + + The text contents of the format specifier for an interpolation. + + + Represents the base class for all statements syntax classes. + + + Gets the identifier. + + + Represents a labeled statement syntax. + + + Gets the identifier. + + + Gets a SyntaxToken that represents the colon succeeding the statement's label. + + + + Represents a goto statement syntax + + + + + Gets a SyntaxToken that represents the goto keyword. + + + + + Gets a SyntaxToken that represents the case or default keywords if any exists. + + + + + Gets a constant expression for a goto case statement. + + + + + Gets a SyntaxToken that represents the semi-colon at the end of the statement. + + + + Gets the identifier. + + + + Represents an if statement syntax. + + + + + Gets a SyntaxToken that represents the if keyword. + + + + + Gets a SyntaxToken that represents the open parenthesis before the if statement's condition expression. + + + + + Gets an ExpressionSyntax that represents the condition of the if statement. + + + + + Gets a SyntaxToken that represents the close parenthesis after the if statement's condition expression. + + + + + Gets a StatementSyntax the represents the statement to be executed when the condition is true. + + + + + Gets an ElseClauseSyntax that represents the statement to be executed when the condition is false if such statement exists. + + + + Represents an else statement syntax. + + + + Gets a syntax token + + + + Represents a switch statement syntax. + + + + Gets a SyntaxToken that represents the switch keyword. + + + + + Gets a SyntaxToken that represents the open parenthesis preceding the switch expression. + + + + + Gets an ExpressionSyntax representing the expression of the switch statement. + + + + + Gets a SyntaxToken that represents the close parenthesis succeeding the switch expression. + + + + + Gets a SyntaxToken that represents the open braces preceding the switch sections. + + + + + Gets a SyntaxList of SwitchSectionSyntax's that represents the switch sections of the switch statement. + + + + + Gets a SyntaxToken that represents the open braces succeeding the switch sections. + + + + Represents a switch section syntax of a switch statement. + + + + Gets a SyntaxList of SwitchLabelSyntax's the represents the possible labels that control can transfer to within the section. + + + + + Gets a SyntaxList of StatementSyntax's the represents the statements to be executed when control transfer to a label the belongs to the section. + + + + Represents a switch label within a switch statement. + + + + Gets a SyntaxToken that represents a case or default keywords that belongs to a switch label. + + + + + Gets a SyntaxToken that represents the colon that terminates the switch label. + + + + Represents a case label within a switch statement. + + + Gets the case keyword token. + + + + Gets an ExpressionSyntax that represents the constant expression that gets matched for the case label. + + + + Represents a default label within a switch statement. + + + Gets the default keyword token. + + + + Represents an ExternAlias directive syntax, e.g. "extern alias MyAlias;" with specifying "/r:MyAlias=SomeAssembly.dll " on the compiler command line. + + + + SyntaxToken representing the extern keyword. + + + SyntaxToken representing the alias keyword. + + + Gets the identifier. + + + SyntaxToken representing the semicolon token. + + + Member declaration syntax. + + + Class representing one or more attributes applied to a language construct. + + + Gets the open bracket token. + + + Gets the optional construct targeted by the attribute. + + + Gets the attribute declaration list. + + + Gets the close bracket token. + + + Attribute argument list syntax. + + + Gets the open paren token. + + + Gets the arguments syntax list. + + + Gets the close paren token. + + + Attribute argument syntax. + + + Gets the expression. + + + Class representing an identifier name followed by an equals token. + + + Gets the identifier name. + + + Type parameter list syntax. + + + Gets the < token. + + + Gets the parameter list. + + + Gets the > token. + + + Type parameter syntax. + + + Gets the attribute declaration list. + + + Gets the identifier. + + + Base class for type declaration syntax. + + + Gets the attribute declaration list. + + + Gets the modifier list. + + + Gets the identifier. + + + Gets the base type list. + + + Gets the open brace token. + + + Gets the close brace token. + + + Gets the optional semicolon token. + + + Class type declaration syntax. + + + Gets the class keyword token. + + + Struct type declaration syntax. + + + Gets the struct keyword token. + + + Interface type declaration syntax. + + + Gets the interface keyword token. + + + Enum type declaration syntax. + + + Gets the enum keyword token. + + + Gets the members declaration list. + + + Gets the optional semicolon token. + + + Gets the attribute declaration list. + + + Gets the identifier. + + + Base list syntax. + + + Gets the colon token. + + + Gets the base type references. + + + Provides the base class from which the classes that represent base type syntax nodes are derived. This is an abstract class. + + + Type parameter constraint clause. + + + Gets the identifier. + + + Gets the colon token. + + + Gets the constraints list. + + + Base type for type parameter constraint syntax. + + + Constructor constraint syntax. + + + Gets the "new" keyword. + + + Gets the open paren keyword. + + + Gets the close paren keyword. + + + Base type for class or struct constraint syntax. + + + Gets the constraint keyword ("class" or "struct"). + + + Type constraint syntax. + + + Gets the type syntax. + + + Gets the attribute declaration list. + + + Gets the modifier list. + + + Gets the attribute declaration list. + + + Gets the modifier list. + + + Gets the attribute declaration list. + + + Gets the modifier list. + + + Base type for method declaration syntax. + + + Gets the attribute declaration list. + + + Gets the modifier list. + + + Gets the parameter list. + + + Gets the optional semicolon token. + + + Operator declaration syntax. + + + Gets the return type. + + + Gets the "operator" keyword. + + + Gets the operator token. + + + Conversion operator declaration syntax. + + + Gets the "implicit" or "explicit" token. + + + Gets the "operator" token. + + + Gets the type. + + + Gets the optional semicolon token. + + + Constructor declaration syntax. + + + Gets the identifier. + + + Gets the optional semicolon token. + + + Constructor initializer syntax. + + + Gets the colon token. + + + Gets the "this" or "base" keyword. + + + Destructor declaration syntax. + + + Gets the tilde token. + + + Gets the identifier. + + + Gets the optional semicolon token. + + + Base type for property declaration syntax. + + + Gets the attribute declaration list. + + + Gets the modifier list. + + + Gets the type syntax. + + + Gets the optional explicit interface specifier. + + + The syntax for the expression body of an expression-bodied member. + + + Gets the identifier. + + + Gets the attribute declaration list. + + + Gets the modifier list. + + + Gets the keyword token, or identifier if an erroneous accessor declaration. + + + Gets the optional body block which may be empty, but it is null if there are no braces. + + + Gets the optional semicolon token. + + + Base type for parameter list syntax. + + + Gets the parameter list. + + + Parameter list syntax with surrounding brackets. + + + Gets the open bracket token. + + + Gets the close bracket token. + + + Gets the attribute declaration list. + + + Gets the modifier list. + + + + A symbol referenced by a cref attribute (e.g. in a <see> or <seealso> documentation comment tag). + For example, the M in <see cref="M" />. + + + + + A symbol reference that definitely refers to a type. + For example, "int", "A::B", "A.B", "A<T>", but not "M()" (has parameter list) or "this" (indexer). + NOTE: TypeCrefSyntax, QualifiedCrefSyntax, and MemberCrefSyntax overlap. The syntax in a TypeCrefSyntax + will always be bound as type, so it's safer to use QualifiedCrefSyntax or MemberCrefSyntax if the symbol + might be a non-type member. + + + + + A symbol reference to a type or non-type member that is qualified by an enclosing type or namespace. + For example, cref="System.String.ToString()". + NOTE: TypeCrefSyntax, QualifiedCrefSyntax, and MemberCrefSyntax overlap. The syntax in a TypeCrefSyntax + will always be bound as type, so it's safer to use QualifiedCrefSyntax or MemberCrefSyntax if the symbol + might be a non-type member. + + + + + The unqualified part of a CrefSyntax. + For example, "ToString()" in "object.ToString()". + NOTE: TypeCrefSyntax, QualifiedCrefSyntax, and MemberCrefSyntax overlap. The syntax in a TypeCrefSyntax + will always be bound as type, so it's safer to use QualifiedCrefSyntax or MemberCrefSyntax if the symbol + might be a non-type member. + + + + + A MemberCrefSyntax specified by a name (an identifier, predefined type keyword, or an alias-qualified name, + with an optional type parameter list) and an optional parameter list. + For example, "M", "M<T>" or "M(int)". + Also, "A::B()" or "string()". + + + + + A MemberCrefSyntax specified by a this keyword and an optional parameter list. + For example, "this" or "this[int]". + + + + + A MemberCrefSyntax specified by an operator keyword, an operator symbol and an optional parameter list. + For example, "operator +" or "operator -[int]". + NOTE: the operator must be overloadable. + + + + Gets the operator token. + + + + A MemberCrefSyntax specified by an implicit or explicit keyword, an operator keyword, a destination type, and an optional parameter list. + For example, "implicit operator int" or "explicit operator MyType(int)". + + + + + A list of cref parameters with surrounding punctuation. + Unlike regular parameters, cref parameters do not have names. + + + + Gets the parameter list. + + + + A parenthesized list of cref parameters. + + + + Gets the open paren token. + + + Gets the close paren token. + + + + A bracketed list of cref parameters. + + + + Gets the open bracket token. + + + Gets the close bracket token. + + + + An element of a BaseCrefParameterListSyntax. + Unlike a regular parameter, a cref parameter has only an optional ref or out keyword and a type - + there is no name and there are no attributes or other modifiers. + + + + + Defines a set of methods to determine how Unicode characters are treated by the C# compiler. + + + + + Returns true if the Unicode character is a hexadecimal digit. + + The Unicode character. + true if the character is a hexadecimal digit 0-9, A-F, a-f. + + + + Returns true if the Unicode character is a decimal digit. + + The Unicode character. + true if the Unicode character is a decimal digit. + + + + Returns the value of a hexadecimal Unicode character. + + The Unicode character. + + + + Returns the value of a decimal Unicode character. + + The Unicode character. + + + + Returns true if the Unicode character represents a whitespace. + + The Unicode character. + + + + Returns true if the Unicode character is a newline character. + + The Unicode character. + + + + Returns true if the Unicode character can be the starting character of a C# identifier. + + The Unicode character. + + + + Returns true if the Unicode character can be a part of a C# identifier. + + The Unicode character. + + + + Check that the name is a valid identifier. + + + + + Spec section 2.4.2 says that identifiers are compared without regard + to leading "@" characters or unicode formatting characters. As in dev10, + this is actually accomplished by dropping such characters during parsing. + Unfortunately, metadata names can still contain these characters and will + not be referenceable from source if they do (lookup will fail since the + characters will have been dropped from the search string). + See DevDiv #14432 for more. + + + + + A custom equality comparer for + + + PERF: The framework specializes EqualityComparer for enums, but only if the underlying type is System.Int32 + Since SyntaxKind's underlying type is System.UInt16, ObjectEqualityComparer will be chosen instead. + + + + + Some preprocessor keywords are only keywords when they appear after a + hash sign (#). For these keywords, the lexer will produce tokens with + Kind = SyntaxKind.IdentifierToken and ContextualKind set to the keyword + SyntaxKind. + + + This wrinkle is specifically not publicly exposed. + + + + + Member declarations that can appear in global code (other than type declarations). + + + + + Returns true if the node is the alias of an AliasQualifiedNameSyntax + + + + + Returns true if the node is the object of an invocation expression. + + + + + Returns true if the node is the object of an element access expression. + + + + + Returns true if the node is in a tree location that is expected to be a type + + + + + + + Returns true if a node is in a tree location that is expected to be either a namespace or type + + + + + + + Is the node the name of a named argument of an invocation, object creation expression, + constructor initializer, or element access, but not an attribute. + + + + + Is the expression the initializer in a fixed statement? + + + + + Displays a value in the C# style. + + + Separate from because we want to link this functionality into + the Formatter project and we don't want it to be public there. + + + + + + Returns a string representation of an object of primitive type. + + A value to display as a string. + Options used to customize formatting of an object value. + A string representation of an object of primitive type (or null if the type is not supported). + + Handles , , , + , , , , , + , , , , , + and null. + + + + + Returns true if the character should be replaced and sets + to the replacement text if the + character is replaced with text other than the Unicode escape sequence. + + + + + Returns a C# string literal with the given value. + + The value that the resulting string literal should have. + Options used to customize formatting of an object value. + A string literal with the given value. + + Optionally escapes non-printable characters. + + + + + Returns a C# character literal with the given value. + + The value that the resulting character literal should have. + Options used to customize formatting of an object value. + A character literal with the given value. + + + + Displays a symbol in the C# style. + + + + + + Displays a symbol in the C# style, based on a . + + The symbol to be displayed. + The formatting options to apply. If null is passed, will be used. + A formatted string that can be displayed to the user. + + The return value is not expected to be syntactically valid C#. + + + + + Displays a symbol in the C# style, based on a . + Based on the context, qualify type and member names as little as possible without + introducing ambiguities. + + The symbol to be displayed. + Semantic information about the context in which the symbol is being displayed. + A position within the or . + The formatting options to apply. If null is passed, will be used. + A formatted string that can be displayed to the user. + + The return value is not expected to be syntactically valid C#. + + + + + Convert a symbol to an array of string parts, each of which has a kind. Useful for + colorizing the display string. + + The symbol to be displayed. + The formatting options to apply. If null is passed, will be used. + A list of display parts. + + Parts are not localized until they are converted to strings. + + + + + Convert a symbol to an array of string parts, each of which has a kind. Useful for + colorizing the display string. + + The symbol to be displayed. + Semantic information about the context in which the symbol is being displayed. + A position within the or . + The formatting options to apply. If null is passed, will be used. + A list of display parts. + + Parts are not localized until they are converted to strings. + + + + + Returns a string representation of an object of primitive type. + + A value to display as a string. + Whether or not to quote string literals. + Whether or not to display integral literals in hexadecimal. + A string representation of an object of primitive type (or null if the type is not supported). + + Handles , , , + , , , , , + , , , , , + and null. + + + + + Returns a C# string literal with the given value. + + The value that the resulting string literal should have. + True to put (double) quotes around the string literal. + A string literal with the given value. + + Escapes non-printable characters. + + + + + Returns a C# character literal with the given value. + + The value that the resulting character literal should have. + True to put (single) quotes around the character literal. + A character literal with the given value. + + Escapes non-printable characters. + + + + + Some error messages are particularly confusing if multiple placeholders are substituted + with the same string. For example, "cannot convert from 'Foo' to 'Foo'". Usually, this + occurs because there are two types in different contexts with the same qualified name. + The solution is to provide additional qualification on each symbol - either a source + location, an assembly path, or an assembly identity. + + + Performs the same function as ErrArgFlags::Unique in the native compiler. + + + + + Virtual dispatch based on a symbol's particular class. + + Additional argument type + Result type + + + + Call the correct VisitXXX method in this class based on the particular type of symbol that is passed in. + Return default(TResult) if symbol is null + + + + + The default Visit method called when visiting any and + if visiting specific symbol method VisitXXX is not overridden + + The visited symbol + Additional argument + + + + + Called when visiting an ; Override this method with + specific implementation; Calling default if it's not + overridden + + The visited symbol + Additional argument + + + + + Called when visiting a ; Override this method with specific + implementation; Calling default if it's not overridden + + The visited symbol + Additional argument + + + + + Called when visiting a ; Should override this method if + want to visit members of the namespace; Calling + and loop over each member; calling on it Or override this with + specific implementation; Calling if it's not + overridden + + The visited symbol + Additional argument + + + + + Called when visiting a ; Override this with specific + implementation; Calling if it's not overridden + + The visited symbol + Additional argument + + + + + Called when visiting an ; Override this with specific + implementation; Calling if it's not overridden + + The visited symbol + Additional argument + + + + + Called when visiting a ; Override this with specific + implementation; Calling if it's not overridden + + The visited symbol + Additional argument + + + + + Called when visiting an + Error symbol is created when there is compiler error; Override this with specific + implementation; Calling if it's not overridden + + The visited symbol + Additional argument + + + + + Called when visiting a ; Override this with specific + implementation; Calling if it's not overridden + + The visited symbol + Additional argument + + + + + Called when visiting a ; Override this with specific + implementation; Calling if it's not overridden + + The visited symbol + Additional argument + + + + + Called when visiting a ; Override this with specific + implementation; Calling default if it's not overridden + + The visited symbol + Additional argument + + + + + Called when visiting a ; Override this with specific + implementation; Calling default if it's not overridden + + The visited symbol + Additional argument + + + + + Called when visiting a ; Override this with specific + implementation; Calling default if it's not overridden + + The visited symbol + Additional argument + + + + + Called when visiting an ; Override this with specific + implementation; Calling default if it's not overridden + + The visited symbol + Additional argument + + + + + Called when visiting a ; Override this with specific + implementation; Calling default if it's not overridden + + The visited symbol + Additional argument + + + + + Called when visiting a ; Override this with specific + implementation; Calling default if it's not overridden + + The visited symbol + Additional argument + + + + + Called when visiting a ; Override this with specific + implementation; Calling default if it's not overridden + + The visited symbol + Additional argument + + + + + Called when visiting an ; Override this with specific + implementation; Calling default if it's not overridden + + The visited symbol + Additional argument + + + + + Called when visiting a ; Override this with specific + implementation; Calling default if it's not overridden + + The visited symbol + Additional argument + + + + + Returns the System.String that represents the current TypedConstant. + + A System.String that represents the current TypedConstant. + + + + Determine whether there is any substitution of type parameters that will + make two types identical. + + + + + Determine whether there is any substitution of type parameters that will + make two types identical. + + LHS + RHS + + Substitutions performed so far (or null for none). + Keys are type parameters, values are types (possibly type parameters). + Will be updated with new substitutions by the callee. + Should be ignored when false is returned. + + True if there exists a type map such that Map(LHS) == Map(RHS). + + Derived from Dev10's BSYMMGR::UnifyTypes. + Two types will not unify if they have different custom modifiers. + + + + + Return true if the given type contains the specified type parameter. + + + + + Represents a non-terminal node in the syntax tree. + + + + + Used by structured trivia which has "parent == null", and therefore must know its + SyntaxTree explicitly when created. + + + + + Creates a clone of a red node that can be used as a root of given syntaxTree. + New node has no parents, position == 0, and syntaxTree as specified. + + + + + Returns a non-null that owns this node. + If this node was created with an explicit non-null , returns that tree. + Otherwise, if this node has a non-null parent, then returns the parent's . + Otherwise, returns a newly created rooted at this node, preserving this node's reference identity. + + + + + The node that contains this node in its Children collection. + + + + + Returns the of the node. + + + + + The language name that this node is syntax of. + + + + + The list of trivia that appears before this node in the source code. + + + + + The list of trivia that appears after this node in the source code. + + + + + Returns the string representation of this node, not including its leading and trailing trivia. + + The string representation of this node, not including its leading and trailing trivia. + The length of the returned string is always the same as Span.Length + + + + Returns full string representation of this node including its leading and trailing trivia. + + The full string representation of this node including its leading and trailing trivia. + The length of the returned string is always the same as FullSpan.Length + + + + Writes the full text of this node to the specified TextWriter. + + + + + Serialize the syntax node into a byte stream. + + + + + Deserialize a syntax node from the byte stream. + + + + + Determines whether this node is structurally equivalent to another. + + + + + Gets a for this node. + + + + + Gets a SyntaxReference for this syntax node. SyntaxReferences can be used to + regain access to a syntax node without keeping the entire tree and source text in + memory. + + + + + Gets a list of all the diagnostics in the sub tree that has this node as its root. + This method does not filter diagnostics based on #pragmas and compiler options + like nowarn, warnaserror etc. + + + + + Gets the first directive of the tree rooted by this node. + + + + + Gets the last directive of the tree rooted by this node. + + + + + Returns child node or token that contains given position. + + + + + Gets the first token of the tree rooted by this node. + + True if zero width tokens should be included, false by + default. + True if skipped tokens should be included, false by default. + True if directives should be included, false by default. + True if documentation comments should be + included, false by default. + + + + + Gets the first token of the tree rooted by this node. + + Only tokens for which this predicate returns true are included. Pass null to include + all tokens. + Steps into trivia if this is not null. Only trivia for which this delegate returns + true are included. + + + + + Gets the last non-zero-width token of the tree rooted by this node. + + True if zero width tokens should be included, false by + default. + True if skipped tokens should be included, false by default. + True if directives should be included, false by default. + True if documentation comments should be + included, false by default. + + + + + Finds a token according to the following rules: + 1) If position matches the End of the node/s FullSpan and the node is CompilationUnit, + then EoF is returned. + + 2) If node.FullSpan.Contains(position) then the token that contains given position is + returned. + + 3) Otherwise an ArgumentOutOfRangeException is thrown + + + + + Finds a token according to the following rules: + 1) If position matches the End of the node/s FullSpan and the node is CompilationUnit, + then EoF is returned. + + 2) If node.FullSpan.Contains(position) then the token that contains given position is + returned. + + 3) Otherwise an ArgumentOutOfRangeException is thrown + + + + + Finds a descendant trivia of this node at the specified position, where the position is + within the span of the node. + + The character position of the trivia relative to the beginning of + the file. + Specifies a function that determines per trivia node, whether to + descend into structured trivia of that node. + + + + + Finds a descendant trivia of this node whose span includes the supplied position. + + The character position of the trivia relative to the beginning of + the file. + Whether to search inside structured trivia. + + + + Determine if this node is structurally equivalent to another. + + + + + + + Represents a which descends an entire graph and + may replace or remove visited SyntaxNodes in depth-first order. + + + + + The parsed representation of a C# source document. + + + + + The options used by the parser to produce the syntax tree. + + + + + Produces a clone of a which will have current syntax tree as its parent. + + Caller must guarantee that if the same instance of makes multiple calls + to this function, only one result is observable. + + Type of the syntax node. + The original syntax node. + A clone of the original syntax node that has current as its parent. + + + + Gets the root node of the syntax tree. + + + + + Gets the root node of the syntax tree if it is already available. + + + + + Gets the root node of the syntax tree asynchronously. + + + By default, the work associated with this method will be executed immediately on the current thread. + Implementations that wish to schedule this work differently should override . + + + + + Gets the root of the syntax tree statically typed as . + + + Ensure that is true for this tree prior to invoking this method. + + Throws this exception if is false. + + + + Determines if two trees are the same, disregarding trivia differences. + + The tree to compare against. + + If true then the trees are equivalent if the contained nodes and tokens declaring metadata visible symbolic information are equivalent, + ignoring any differences of nodes inside method bodies or initializer expressions, otherwise all nodes and tokens must be equivalent. + + + + + Stores positions where preprocessor state changes. Sorted by position. + The updated state can be found in array at the same index. + + + + + Preprocessor states corresponding to positions in . + + + + + Creates a new syntax tree from a syntax node. + + + + + Creates a new syntax tree from a syntax node with text that should correspond to the syntax node. + + This is used by the ExpressionEvaluator. + + + + + Internal helper for class to create a new syntax tree rooted at the given root node. + This method does not create a clone of the given root, but instead preserves it's reference identity. + + NOTE: This method is only intended to be used from property. + NOTE: Do not use this method elsewhere, instead use method for creating a syntax tree. + + + + + Produces a syntax tree by parsing the source text. + + + + + Produces a syntax tree by parsing the source text. + + + + + Creates a new syntax based off this tree using a new source text. + + + If the new source text is a minor change from the current source text an incremental parse will occur + reusing most of the current syntax tree internal data. Otherwise, a full parse will occur using the new + source text. + + + + + Produces a pessimistic list of spans that denote the regions of text in this tree that + are changed from the text of the old tree. + + The old tree. Cannot be null. + The list is pessimistic because it may claim more or larger regions than actually changed. + + + + Gets a list of text changes that when applied to the old tree produce this tree. + + The old tree. Cannot be null. + The list of changes may be different than the original changes that produced this tree. + + + + Gets the location in terms of path, line and column for a given span. + + Span within the tree. + Cancellation token. + + that contains path, line and column information. + + The values are not affected by line mapping directives (#line). + + + + Gets the location in terms of path, line and column after applying source line mapping directives (#line). + + Span within the tree. + Cancellation token. + + A valid that contains path, line and column information. + + If the location path is mapped the resulting path is the path specified in the corresponding #line, + otherwise it's . + + + A location path is considered mapped if the first #line directive that precedes it and that + either specifies an explicit file path or is #line default exists and specifies an explicit path. + + + + + + Gets a for a . FileLinePositionSpans are used + primarily for diagnostics and source locations. + + The source to convert. + When the method returns, contains a boolean value indicating whether this span is considered hidden or not. + A resulting . + + + + Gets a boolean value indicating whether there are any hidden regions in the tree. + + True if there is at least one hidden region. + + + + Given the error code and the source location, get the warning state based on #pragma warning directives. + + Error code. + Source location. + + + + Gets a for the specified text . + + + + + Gets a list of all the diagnostics in the sub tree that has the specified node as its root. + + + This method does not filter diagnostics based on #pragmas and compiler options + like /nowarn, /warnaserror etc. + + + + + Gets a list of all the diagnostics associated with the token and any related trivia. + + + This method does not filter diagnostics based on #pragmas and compiler options + like /nowarn, /warnaserror etc. + + + + + Gets a list of all the diagnostics associated with the trivia. + + + This method does not filter diagnostics based on #pragmas and compiler options + like /nowarn, /warnaserror etc. + + + + + Gets a list of all the diagnostics in either the sub tree that has the specified node as its root or + associated with the token and its related trivia. + + + This method does not filter diagnostics based on #pragmas and compiler options + like /nowarn, /warnaserror etc. + + + + + Gets a list of all the diagnostics in the syntax tree. + + + This method does not filter diagnostics based on #pragmas and compiler options + like /nowarn, /warnaserror etc. + + + + + Represents a visitor that visits only the single CSharpSyntaxNode + passed into its Visit method and produces + a value of the type specified by the parameter. + + + The type of the return value this visitor's Visit method. + + + + Called when the visitor visits a IdentifierNameSyntax node. + + + Called when the visitor visits a QualifiedNameSyntax node. + + + Called when the visitor visits a GenericNameSyntax node. + + + Called when the visitor visits a TypeArgumentListSyntax node. + + + Called when the visitor visits a AliasQualifiedNameSyntax node. + + + Called when the visitor visits a PredefinedTypeSyntax node. + + + Called when the visitor visits a ArrayTypeSyntax node. + + + Called when the visitor visits a ArrayRankSpecifierSyntax node. + + + Called when the visitor visits a PointerTypeSyntax node. + + + Called when the visitor visits a NullableTypeSyntax node. + + + Called when the visitor visits a OmittedTypeArgumentSyntax node. + + + Called when the visitor visits a ParenthesizedExpressionSyntax node. + + + Called when the visitor visits a PrefixUnaryExpressionSyntax node. + + + Called when the visitor visits a AwaitExpressionSyntax node. + + + Called when the visitor visits a PostfixUnaryExpressionSyntax node. + + + Called when the visitor visits a MemberAccessExpressionSyntax node. + + + Called when the visitor visits a ConditionalAccessExpressionSyntax node. + + + Called when the visitor visits a MemberBindingExpressionSyntax node. + + + Called when the visitor visits a ElementBindingExpressionSyntax node. + + + Called when the visitor visits a ImplicitElementAccessSyntax node. + + + Called when the visitor visits a BinaryExpressionSyntax node. + + + Called when the visitor visits a AssignmentExpressionSyntax node. + + + Called when the visitor visits a ConditionalExpressionSyntax node. + + + Called when the visitor visits a ThisExpressionSyntax node. + + + Called when the visitor visits a BaseExpressionSyntax node. + + + Called when the visitor visits a LiteralExpressionSyntax node. + + + Called when the visitor visits a MakeRefExpressionSyntax node. + + + Called when the visitor visits a RefTypeExpressionSyntax node. + + + Called when the visitor visits a RefValueExpressionSyntax node. + + + Called when the visitor visits a CheckedExpressionSyntax node. + + + Called when the visitor visits a DefaultExpressionSyntax node. + + + Called when the visitor visits a TypeOfExpressionSyntax node. + + + Called when the visitor visits a SizeOfExpressionSyntax node. + + + Called when the visitor visits a InvocationExpressionSyntax node. + + + Called when the visitor visits a ElementAccessExpressionSyntax node. + + + Called when the visitor visits a ArgumentListSyntax node. + + + Called when the visitor visits a BracketedArgumentListSyntax node. + + + Called when the visitor visits a ArgumentSyntax node. + + + Called when the visitor visits a NameColonSyntax node. + + + Called when the visitor visits a CastExpressionSyntax node. + + + Called when the visitor visits a AnonymousMethodExpressionSyntax node. + + + Called when the visitor visits a SimpleLambdaExpressionSyntax node. + + + Called when the visitor visits a ParenthesizedLambdaExpressionSyntax node. + + + Called when the visitor visits a InitializerExpressionSyntax node. + + + Called when the visitor visits a ObjectCreationExpressionSyntax node. + + + Called when the visitor visits a AnonymousObjectMemberDeclaratorSyntax node. + + + Called when the visitor visits a AnonymousObjectCreationExpressionSyntax node. + + + Called when the visitor visits a ArrayCreationExpressionSyntax node. + + + Called when the visitor visits a ImplicitArrayCreationExpressionSyntax node. + + + Called when the visitor visits a StackAllocArrayCreationExpressionSyntax node. + + + Called when the visitor visits a QueryExpressionSyntax node. + + + Called when the visitor visits a QueryBodySyntax node. + + + Called when the visitor visits a FromClauseSyntax node. + + + Called when the visitor visits a LetClauseSyntax node. + + + Called when the visitor visits a JoinClauseSyntax node. + + + Called when the visitor visits a JoinIntoClauseSyntax node. + + + Called when the visitor visits a WhereClauseSyntax node. + + + Called when the visitor visits a OrderByClauseSyntax node. + + + Called when the visitor visits a OrderingSyntax node. + + + Called when the visitor visits a SelectClauseSyntax node. + + + Called when the visitor visits a GroupClauseSyntax node. + + + Called when the visitor visits a QueryContinuationSyntax node. + + + Called when the visitor visits a OmittedArraySizeExpressionSyntax node. + + + Called when the visitor visits a InterpolatedStringExpressionSyntax node. + + + Called when the visitor visits a InterpolatedStringTextSyntax node. + + + Called when the visitor visits a InterpolationSyntax node. + + + Called when the visitor visits a InterpolationAlignmentClauseSyntax node. + + + Called when the visitor visits a InterpolationFormatClauseSyntax node. + + + Called when the visitor visits a GlobalStatementSyntax node. + + + Called when the visitor visits a BlockSyntax node. + + + Called when the visitor visits a LocalDeclarationStatementSyntax node. + + + Called when the visitor visits a VariableDeclarationSyntax node. + + + Called when the visitor visits a VariableDeclaratorSyntax node. + + + Called when the visitor visits a EqualsValueClauseSyntax node. + + + Called when the visitor visits a ExpressionStatementSyntax node. + + + Called when the visitor visits a EmptyStatementSyntax node. + + + Called when the visitor visits a LabeledStatementSyntax node. + + + Called when the visitor visits a GotoStatementSyntax node. + + + Called when the visitor visits a BreakStatementSyntax node. + + + Called when the visitor visits a ContinueStatementSyntax node. + + + Called when the visitor visits a ReturnStatementSyntax node. + + + Called when the visitor visits a ThrowStatementSyntax node. + + + Called when the visitor visits a YieldStatementSyntax node. + + + Called when the visitor visits a WhileStatementSyntax node. + + + Called when the visitor visits a DoStatementSyntax node. + + + Called when the visitor visits a ForStatementSyntax node. + + + Called when the visitor visits a ForEachStatementSyntax node. + + + Called when the visitor visits a UsingStatementSyntax node. + + + Called when the visitor visits a FixedStatementSyntax node. + + + Called when the visitor visits a CheckedStatementSyntax node. + + + Called when the visitor visits a UnsafeStatementSyntax node. + + + Called when the visitor visits a LockStatementSyntax node. + + + Called when the visitor visits a IfStatementSyntax node. + + + Called when the visitor visits a ElseClauseSyntax node. + + + Called when the visitor visits a SwitchStatementSyntax node. + + + Called when the visitor visits a SwitchSectionSyntax node. + + + Called when the visitor visits a CaseSwitchLabelSyntax node. + + + Called when the visitor visits a DefaultSwitchLabelSyntax node. + + + Called when the visitor visits a TryStatementSyntax node. + + + Called when the visitor visits a CatchClauseSyntax node. + + + Called when the visitor visits a CatchDeclarationSyntax node. + + + Called when the visitor visits a CatchFilterClauseSyntax node. + + + Called when the visitor visits a FinallyClauseSyntax node. + + + Called when the visitor visits a CompilationUnitSyntax node. + + + Called when the visitor visits a ExternAliasDirectiveSyntax node. + + + Called when the visitor visits a UsingDirectiveSyntax node. + + + Called when the visitor visits a NamespaceDeclarationSyntax node. + + + Called when the visitor visits a AttributeListSyntax node. + + + Called when the visitor visits a AttributeTargetSpecifierSyntax node. + + + Called when the visitor visits a AttributeSyntax node. + + + Called when the visitor visits a AttributeArgumentListSyntax node. + + + Called when the visitor visits a AttributeArgumentSyntax node. + + + Called when the visitor visits a NameEqualsSyntax node. + + + Called when the visitor visits a TypeParameterListSyntax node. + + + Called when the visitor visits a TypeParameterSyntax node. + + + Called when the visitor visits a ClassDeclarationSyntax node. + + + Called when the visitor visits a StructDeclarationSyntax node. + + + Called when the visitor visits a InterfaceDeclarationSyntax node. + + + Called when the visitor visits a EnumDeclarationSyntax node. + + + Called when the visitor visits a DelegateDeclarationSyntax node. + + + Called when the visitor visits a EnumMemberDeclarationSyntax node. + + + Called when the visitor visits a BaseListSyntax node. + + + Called when the visitor visits a SimpleBaseTypeSyntax node. + + + Called when the visitor visits a TypeParameterConstraintClauseSyntax node. + + + Called when the visitor visits a ConstructorConstraintSyntax node. + + + Called when the visitor visits a ClassOrStructConstraintSyntax node. + + + Called when the visitor visits a TypeConstraintSyntax node. + + + Called when the visitor visits a FieldDeclarationSyntax node. + + + Called when the visitor visits a EventFieldDeclarationSyntax node. + + + Called when the visitor visits a ExplicitInterfaceSpecifierSyntax node. + + + Called when the visitor visits a MethodDeclarationSyntax node. + + + Called when the visitor visits a OperatorDeclarationSyntax node. + + + Called when the visitor visits a ConversionOperatorDeclarationSyntax node. + + + Called when the visitor visits a ConstructorDeclarationSyntax node. + + + Called when the visitor visits a ConstructorInitializerSyntax node. + + + Called when the visitor visits a DestructorDeclarationSyntax node. + + + Called when the visitor visits a PropertyDeclarationSyntax node. + + + Called when the visitor visits a ArrowExpressionClauseSyntax node. + + + Called when the visitor visits a EventDeclarationSyntax node. + + + Called when the visitor visits a IndexerDeclarationSyntax node. + + + Called when the visitor visits a AccessorListSyntax node. + + + Called when the visitor visits a AccessorDeclarationSyntax node. + + + Called when the visitor visits a ParameterListSyntax node. + + + Called when the visitor visits a BracketedParameterListSyntax node. + + + Called when the visitor visits a ParameterSyntax node. + + + Called when the visitor visits a IncompleteMemberSyntax node. + + + Called when the visitor visits a SkippedTokensTriviaSyntax node. + + + Called when the visitor visits a DocumentationCommentTriviaSyntax node. + + + Called when the visitor visits a TypeCrefSyntax node. + + + Called when the visitor visits a QualifiedCrefSyntax node. + + + Called when the visitor visits a NameMemberCrefSyntax node. + + + Called when the visitor visits a IndexerMemberCrefSyntax node. + + + Called when the visitor visits a OperatorMemberCrefSyntax node. + + + Called when the visitor visits a ConversionOperatorMemberCrefSyntax node. + + + Called when the visitor visits a CrefParameterListSyntax node. + + + Called when the visitor visits a CrefBracketedParameterListSyntax node. + + + Called when the visitor visits a CrefParameterSyntax node. + + + Called when the visitor visits a XmlElementSyntax node. + + + Called when the visitor visits a XmlElementStartTagSyntax node. + + + Called when the visitor visits a XmlElementEndTagSyntax node. + + + Called when the visitor visits a XmlEmptyElementSyntax node. + + + Called when the visitor visits a XmlNameSyntax node. + + + Called when the visitor visits a XmlPrefixSyntax node. + + + Called when the visitor visits a XmlTextAttributeSyntax node. + + + Called when the visitor visits a XmlCrefAttributeSyntax node. + + + Called when the visitor visits a XmlNameAttributeSyntax node. + + + Called when the visitor visits a XmlTextSyntax node. + + + Called when the visitor visits a XmlCDataSectionSyntax node. + + + Called when the visitor visits a XmlProcessingInstructionSyntax node. + + + Called when the visitor visits a XmlCommentSyntax node. + + + Called when the visitor visits a IfDirectiveTriviaSyntax node. + + + Called when the visitor visits a ElifDirectiveTriviaSyntax node. + + + Called when the visitor visits a ElseDirectiveTriviaSyntax node. + + + Called when the visitor visits a EndIfDirectiveTriviaSyntax node. + + + Called when the visitor visits a RegionDirectiveTriviaSyntax node. + + + Called when the visitor visits a EndRegionDirectiveTriviaSyntax node. + + + Called when the visitor visits a ErrorDirectiveTriviaSyntax node. + + + Called when the visitor visits a WarningDirectiveTriviaSyntax node. + + + Called when the visitor visits a BadDirectiveTriviaSyntax node. + + + Called when the visitor visits a DefineDirectiveTriviaSyntax node. + + + Called when the visitor visits a UndefDirectiveTriviaSyntax node. + + + Called when the visitor visits a LineDirectiveTriviaSyntax node. + + + Called when the visitor visits a PragmaWarningDirectiveTriviaSyntax node. + + + Called when the visitor visits a PragmaChecksumDirectiveTriviaSyntax node. + + + Called when the visitor visits a ReferenceDirectiveTriviaSyntax node. + + + Called when the visitor visits a LoadDirectiveTriviaSyntax node. + + + Called when the visitor visits a ShebangDirectiveTriviaSyntax node. + + + + Represents a visitor that visits only the single CSharpSyntaxNode + passed into its Visit method. + + + + Called when the visitor visits a IdentifierNameSyntax node. + + + Called when the visitor visits a QualifiedNameSyntax node. + + + Called when the visitor visits a GenericNameSyntax node. + + + Called when the visitor visits a TypeArgumentListSyntax node. + + + Called when the visitor visits a AliasQualifiedNameSyntax node. + + + Called when the visitor visits a PredefinedTypeSyntax node. + + + Called when the visitor visits a ArrayTypeSyntax node. + + + Called when the visitor visits a ArrayRankSpecifierSyntax node. + + + Called when the visitor visits a PointerTypeSyntax node. + + + Called when the visitor visits a NullableTypeSyntax node. + + + Called when the visitor visits a OmittedTypeArgumentSyntax node. + + + Called when the visitor visits a ParenthesizedExpressionSyntax node. + + + Called when the visitor visits a PrefixUnaryExpressionSyntax node. + + + Called when the visitor visits a AwaitExpressionSyntax node. + + + Called when the visitor visits a PostfixUnaryExpressionSyntax node. + + + Called when the visitor visits a MemberAccessExpressionSyntax node. + + + Called when the visitor visits a ConditionalAccessExpressionSyntax node. + + + Called when the visitor visits a MemberBindingExpressionSyntax node. + + + Called when the visitor visits a ElementBindingExpressionSyntax node. + + + Called when the visitor visits a ImplicitElementAccessSyntax node. + + + Called when the visitor visits a BinaryExpressionSyntax node. + + + Called when the visitor visits a AssignmentExpressionSyntax node. + + + Called when the visitor visits a ConditionalExpressionSyntax node. + + + Called when the visitor visits a ThisExpressionSyntax node. + + + Called when the visitor visits a BaseExpressionSyntax node. + + + Called when the visitor visits a LiteralExpressionSyntax node. + + + Called when the visitor visits a MakeRefExpressionSyntax node. + + + Called when the visitor visits a RefTypeExpressionSyntax node. + + + Called when the visitor visits a RefValueExpressionSyntax node. + + + Called when the visitor visits a CheckedExpressionSyntax node. + + + Called when the visitor visits a DefaultExpressionSyntax node. + + + Called when the visitor visits a TypeOfExpressionSyntax node. + + + Called when the visitor visits a SizeOfExpressionSyntax node. + + + Called when the visitor visits a InvocationExpressionSyntax node. + + + Called when the visitor visits a ElementAccessExpressionSyntax node. + + + Called when the visitor visits a ArgumentListSyntax node. + + + Called when the visitor visits a BracketedArgumentListSyntax node. + + + Called when the visitor visits a ArgumentSyntax node. + + + Called when the visitor visits a NameColonSyntax node. + + + Called when the visitor visits a CastExpressionSyntax node. + + + Called when the visitor visits a AnonymousMethodExpressionSyntax node. + + + Called when the visitor visits a SimpleLambdaExpressionSyntax node. + + + Called when the visitor visits a ParenthesizedLambdaExpressionSyntax node. + + + Called when the visitor visits a InitializerExpressionSyntax node. + + + Called when the visitor visits a ObjectCreationExpressionSyntax node. + + + Called when the visitor visits a AnonymousObjectMemberDeclaratorSyntax node. + + + Called when the visitor visits a AnonymousObjectCreationExpressionSyntax node. + + + Called when the visitor visits a ArrayCreationExpressionSyntax node. + + + Called when the visitor visits a ImplicitArrayCreationExpressionSyntax node. + + + Called when the visitor visits a StackAllocArrayCreationExpressionSyntax node. + + + Called when the visitor visits a QueryExpressionSyntax node. + + + Called when the visitor visits a QueryBodySyntax node. + + + Called when the visitor visits a FromClauseSyntax node. + + + Called when the visitor visits a LetClauseSyntax node. + + + Called when the visitor visits a JoinClauseSyntax node. + + + Called when the visitor visits a JoinIntoClauseSyntax node. + + + Called when the visitor visits a WhereClauseSyntax node. + + + Called when the visitor visits a OrderByClauseSyntax node. + + + Called when the visitor visits a OrderingSyntax node. + + + Called when the visitor visits a SelectClauseSyntax node. + + + Called when the visitor visits a GroupClauseSyntax node. + + + Called when the visitor visits a QueryContinuationSyntax node. + + + Called when the visitor visits a OmittedArraySizeExpressionSyntax node. + + + Called when the visitor visits a InterpolatedStringExpressionSyntax node. + + + Called when the visitor visits a InterpolatedStringTextSyntax node. + + + Called when the visitor visits a InterpolationSyntax node. + + + Called when the visitor visits a InterpolationAlignmentClauseSyntax node. + + + Called when the visitor visits a InterpolationFormatClauseSyntax node. + + + Called when the visitor visits a GlobalStatementSyntax node. + + + Called when the visitor visits a BlockSyntax node. + + + Called when the visitor visits a LocalDeclarationStatementSyntax node. + + + Called when the visitor visits a VariableDeclarationSyntax node. + + + Called when the visitor visits a VariableDeclaratorSyntax node. + + + Called when the visitor visits a EqualsValueClauseSyntax node. + + + Called when the visitor visits a ExpressionStatementSyntax node. + + + Called when the visitor visits a EmptyStatementSyntax node. + + + Called when the visitor visits a LabeledStatementSyntax node. + + + Called when the visitor visits a GotoStatementSyntax node. + + + Called when the visitor visits a BreakStatementSyntax node. + + + Called when the visitor visits a ContinueStatementSyntax node. + + + Called when the visitor visits a ReturnStatementSyntax node. + + + Called when the visitor visits a ThrowStatementSyntax node. + + + Called when the visitor visits a YieldStatementSyntax node. + + + Called when the visitor visits a WhileStatementSyntax node. + + + Called when the visitor visits a DoStatementSyntax node. + + + Called when the visitor visits a ForStatementSyntax node. + + + Called when the visitor visits a ForEachStatementSyntax node. + + + Called when the visitor visits a UsingStatementSyntax node. + + + Called when the visitor visits a FixedStatementSyntax node. + + + Called when the visitor visits a CheckedStatementSyntax node. + + + Called when the visitor visits a UnsafeStatementSyntax node. + + + Called when the visitor visits a LockStatementSyntax node. + + + Called when the visitor visits a IfStatementSyntax node. + + + Called when the visitor visits a ElseClauseSyntax node. + + + Called when the visitor visits a SwitchStatementSyntax node. + + + Called when the visitor visits a SwitchSectionSyntax node. + + + Called when the visitor visits a CaseSwitchLabelSyntax node. + + + Called when the visitor visits a DefaultSwitchLabelSyntax node. + + + Called when the visitor visits a TryStatementSyntax node. + + + Called when the visitor visits a CatchClauseSyntax node. + + + Called when the visitor visits a CatchDeclarationSyntax node. + + + Called when the visitor visits a CatchFilterClauseSyntax node. + + + Called when the visitor visits a FinallyClauseSyntax node. + + + Called when the visitor visits a CompilationUnitSyntax node. + + + Called when the visitor visits a ExternAliasDirectiveSyntax node. + + + Called when the visitor visits a UsingDirectiveSyntax node. + + + Called when the visitor visits a NamespaceDeclarationSyntax node. + + + Called when the visitor visits a AttributeListSyntax node. + + + Called when the visitor visits a AttributeTargetSpecifierSyntax node. + + + Called when the visitor visits a AttributeSyntax node. + + + Called when the visitor visits a AttributeArgumentListSyntax node. + + + Called when the visitor visits a AttributeArgumentSyntax node. + + + Called when the visitor visits a NameEqualsSyntax node. + + + Called when the visitor visits a TypeParameterListSyntax node. + + + Called when the visitor visits a TypeParameterSyntax node. + + + Called when the visitor visits a ClassDeclarationSyntax node. + + + Called when the visitor visits a StructDeclarationSyntax node. + + + Called when the visitor visits a InterfaceDeclarationSyntax node. + + + Called when the visitor visits a EnumDeclarationSyntax node. + + + Called when the visitor visits a DelegateDeclarationSyntax node. + + + Called when the visitor visits a EnumMemberDeclarationSyntax node. + + + Called when the visitor visits a BaseListSyntax node. + + + Called when the visitor visits a SimpleBaseTypeSyntax node. + + + Called when the visitor visits a TypeParameterConstraintClauseSyntax node. + + + Called when the visitor visits a ConstructorConstraintSyntax node. + + + Called when the visitor visits a ClassOrStructConstraintSyntax node. + + + Called when the visitor visits a TypeConstraintSyntax node. + + + Called when the visitor visits a FieldDeclarationSyntax node. + + + Called when the visitor visits a EventFieldDeclarationSyntax node. + + + Called when the visitor visits a ExplicitInterfaceSpecifierSyntax node. + + + Called when the visitor visits a MethodDeclarationSyntax node. + + + Called when the visitor visits a OperatorDeclarationSyntax node. + + + Called when the visitor visits a ConversionOperatorDeclarationSyntax node. + + + Called when the visitor visits a ConstructorDeclarationSyntax node. + + + Called when the visitor visits a ConstructorInitializerSyntax node. + + + Called when the visitor visits a DestructorDeclarationSyntax node. + + + Called when the visitor visits a PropertyDeclarationSyntax node. + + + Called when the visitor visits a ArrowExpressionClauseSyntax node. + + + Called when the visitor visits a EventDeclarationSyntax node. + + + Called when the visitor visits a IndexerDeclarationSyntax node. + + + Called when the visitor visits a AccessorListSyntax node. + + + Called when the visitor visits a AccessorDeclarationSyntax node. + + + Called when the visitor visits a ParameterListSyntax node. + + + Called when the visitor visits a BracketedParameterListSyntax node. + + + Called when the visitor visits a ParameterSyntax node. + + + Called when the visitor visits a IncompleteMemberSyntax node. + + + Called when the visitor visits a SkippedTokensTriviaSyntax node. + + + Called when the visitor visits a DocumentationCommentTriviaSyntax node. + + + Called when the visitor visits a TypeCrefSyntax node. + + + Called when the visitor visits a QualifiedCrefSyntax node. + + + Called when the visitor visits a NameMemberCrefSyntax node. + + + Called when the visitor visits a IndexerMemberCrefSyntax node. + + + Called when the visitor visits a OperatorMemberCrefSyntax node. + + + Called when the visitor visits a ConversionOperatorMemberCrefSyntax node. + + + Called when the visitor visits a CrefParameterListSyntax node. + + + Called when the visitor visits a CrefBracketedParameterListSyntax node. + + + Called when the visitor visits a CrefParameterSyntax node. + + + Called when the visitor visits a XmlElementSyntax node. + + + Called when the visitor visits a XmlElementStartTagSyntax node. + + + Called when the visitor visits a XmlElementEndTagSyntax node. + + + Called when the visitor visits a XmlEmptyElementSyntax node. + + + Called when the visitor visits a XmlNameSyntax node. + + + Called when the visitor visits a XmlPrefixSyntax node. + + + Called when the visitor visits a XmlTextAttributeSyntax node. + + + Called when the visitor visits a XmlCrefAttributeSyntax node. + + + Called when the visitor visits a XmlNameAttributeSyntax node. + + + Called when the visitor visits a XmlTextSyntax node. + + + Called when the visitor visits a XmlCDataSectionSyntax node. + + + Called when the visitor visits a XmlProcessingInstructionSyntax node. + + + Called when the visitor visits a XmlCommentSyntax node. + + + Called when the visitor visits a IfDirectiveTriviaSyntax node. + + + Called when the visitor visits a ElifDirectiveTriviaSyntax node. + + + Called when the visitor visits a ElseDirectiveTriviaSyntax node. + + + Called when the visitor visits a EndIfDirectiveTriviaSyntax node. + + + Called when the visitor visits a RegionDirectiveTriviaSyntax node. + + + Called when the visitor visits a EndRegionDirectiveTriviaSyntax node. + + + Called when the visitor visits a ErrorDirectiveTriviaSyntax node. + + + Called when the visitor visits a WarningDirectiveTriviaSyntax node. + + + Called when the visitor visits a BadDirectiveTriviaSyntax node. + + + Called when the visitor visits a DefineDirectiveTriviaSyntax node. + + + Called when the visitor visits a UndefDirectiveTriviaSyntax node. + + + Called when the visitor visits a LineDirectiveTriviaSyntax node. + + + Called when the visitor visits a PragmaWarningDirectiveTriviaSyntax node. + + + Called when the visitor visits a PragmaChecksumDirectiveTriviaSyntax node. + + + Called when the visitor visits a ReferenceDirectiveTriviaSyntax node. + + + Called when the visitor visits a LoadDirectiveTriviaSyntax node. + + + Called when the visitor visits a ShebangDirectiveTriviaSyntax node. + + + + Represents a that descends an entire graph + visiting each CSharpSyntaxNode and its child SyntaxNodes and s in depth-first order. + + + + + A class containing factory methods for constructing syntax nodes, tokens and trivia. + + + + Creates a new AnonymousMethodExpressionSyntax instance. + + + + A trivia with kind EndOfLineTrivia containing both the carriage return and line feed characters. + + + + + A trivia with kind EndOfLineTrivia containing a single line feed character. + + + + + A trivia with kind EndOfLineTrivia containing a single carriage return character. + + + + + A trivia with kind WhitespaceTrivia containing a single space character. + + + + + A trivia with kind WhitespaceTrivia containing a single tab character. + + + + + An elastic trivia with kind EndOfLineTrivia containing both the carriage return and line feed characters. + Elastic trivia are used to denote trivia that was not produced by parsing source text, and are usually not + preserved during formatting. + + + + + An elastic trivia with kind EndOfLineTrivia containing a single line feed character. Elastic trivia are used + to denote trivia that was not produced by parsing source text, and are usually not preserved during + formatting. + + + + + An elastic trivia with kind EndOfLineTrivia containing a single carriage return character. Elastic trivia + are used to denote trivia that was not produced by parsing source text, and are usually not preserved during + formatting. + + + + + An elastic trivia with kind WhitespaceTrivia containing a single space character. Elastic trivia are used to + denote trivia that was not produced by parsing source text, and are usually not preserved during formatting. + + + + + An elastic trivia with kind WhitespaceTrivia containing a single tab character. Elastic trivia are used to + denote trivia that was not produced by parsing source text, and are usually not preserved during formatting. + + + + + An elastic trivia with kind WhitespaceTrivia containing no characters. Elastic marker trivia are included + automatically by factory methods when trivia is not specified. Syntax formatting will replace elastic + markers with appropriate trivia. + + + + + Creates a trivia with kind EndOfLineTrivia containing the specified text. + + The text of the end of line. Any text can be specified here, however only carriage return and + line feed characters are recognized by the parser as end of line. + + + + Creates a trivia with kind EndOfLineTrivia containing the specified text. Elastic trivia are used to + denote trivia that was not produced by parsing source text, and are usually not preserved during formatting. + + The text of the end of line. Any text can be specified here, however only carriage return and + line feed characters are recognized by the parser as end of line. + + + + Creates a trivia with kind WhitespaceTrivia containing the specified text. + + The text of the whitespace. Any text can be specified here, however only specific + whitespace characters are recognized by the parser. + + + + Creates a trivia with kind WhitespaceTrivia containing the specified text. Elastic trivia are used to + denote trivia that was not produced by parsing source text, and are usually not preserved during formatting. + + The text of the whitespace. Any text can be specified here, however only specific + whitespace characters are recognized by the parser. + + + + Creates a trivia with kind either SingleLineCommentTrivia or MultiLineCommentTrivia containing the specified + text. + + The entire text of the comment including the leading '//' token for single line comments + or stop or start tokens for multiline comments. + + + + Creates a trivia with kind DisabledTextTrivia. Disabled text corresponds to any text between directives that + is not considered active. + + + + + Creates a trivia with kind PreprocessingMessageTrivia. + + + + + Trivia nodes represent parts of the program text that are not parts of the + syntactic grammar, such as spaces, newlines, comments, preprocessor + directives, and disabled code. + + + A representing the specific kind of . One of + , , + , , + , + + + The actual text of this token. + + + + + Creates a token corresponding to a syntax kind. This method can be used for token syntax kinds whose text + can be inferred by the kind alone. + + A syntax kind value for a token. These have the suffix Token or Keyword. + + + + + Creates a token corresponding to syntax kind. This method can be used for token syntax kinds whose text can + be inferred by the kind alone. + + A list of trivia immediately preceding the token. + A syntax kind value for a token. These have the suffix Token or Keyword. + A list of trivia immediately following the token. + + + + Creates a token corresponding to syntax kind. This method gives control over token Text and ValueText. + + For example, consider the text '<see cref="operator &#43;"/>'. To create a token for the value of + the operator symbol (&#43;), one would call + Token(default(SyntaxTriviaList), SyntaxKind.PlusToken, "&#43;", "+", default(SyntaxTriviaList)). + + A list of trivia immediately preceding the token. + A syntax kind value for a token. These have the suffix Token or Keyword. + The text from which this token was created (e.g. lexed). + How C# should interpret the text of this token. + A list of trivia immediately following the token. + + + + Creates a missing token corresponding to syntax kind. A missing token is produced by the parser when an + expected token is not found. A missing token has no text and normally has associated diagnostics. + + A syntax kind value for a token. These have the suffix Token or Keyword. + + + + Creates a missing token corresponding to syntax kind. A missing token is produced by the parser when an + expected token is not found. A missing token has no text and normally has associated diagnostics. + + A list of trivia immediately preceding the token. + A syntax kind value for a token. These have the suffix Token or Keyword. + A list of trivia immediately following the token. + + + + Creates a token with kind IdentifierToken containing the specified text. + The raw text of the identifier name, including any escapes or leading '@' + character. + + + + + Creates a token with kind IdentifierToken containing the specified text. + + A list of trivia immediately preceding the token. + The raw text of the identifier name, including any escapes or leading '@' + character. + A list of trivia immediately following the token. + + + + Creates a verbatim token with kind IdentifierToken containing the specified text. + + A list of trivia immediately preceding the token. + The raw text of the identifier name, including any escapes or leading '@' + character as it is in source. + The canonical value of the token's text. + A list of trivia immediately following the token. + + + + Creates a token with kind IdentifierToken containing the specified text. + + A list of trivia immediately preceding the token. + An alternative SyntaxKind that can be inferred for this token in special + contexts. These are usually keywords. + The raw text of the identifier name, including any escapes or leading '@' + character. + The text of the identifier name without escapes or leading '@' character. + A list of trivia immediately following the token. + + + + + Creates a token with kind NumericLiteralToken from a 4-byte signed integer value. + + The 4-byte signed integer value to be represented by the returned token. + + + + Creates a token with kind NumericLiteralToken from the text and corresponding 4-byte signed integer value. + + The raw text of the literal. + The 4-byte signed integer value to be represented by the returned token. + + + + Creates a token with kind NumericLiteralToken from the text and corresponding 4-byte signed integer value. + + A list of trivia immediately preceding the token. + The raw text of the literal. + The 4-byte signed integer value to be represented by the returned token. + A list of trivia immediately following the token. + + + + Creates a token with kind NumericLiteralToken from a 4-byte unsigned integer value. + + The 4-byte unsigned integer value to be represented by the returned token. + + + + Creates a token with kind NumericLiteralToken from the text and corresponding 4-byte unsigned integer value. + + The raw text of the literal. + The 4-byte unsigned integer value to be represented by the returned token. + + + + Creates a token with kind NumericLiteralToken from the text and corresponding 4-byte unsigned integer value. + + A list of trivia immediately preceding the token. + The raw text of the literal. + The 4-byte unsigned integer value to be represented by the returned token. + A list of trivia immediately following the token. + + + + Creates a token with kind NumericLiteralToken from an 8-byte signed integer value. + + The 8-byte signed integer value to be represented by the returned token. + + + + Creates a token with kind NumericLiteralToken from the text and corresponding 8-byte signed integer value. + + The raw text of the literal. + The 8-byte signed integer value to be represented by the returned token. + + + + Creates a token with kind NumericLiteralToken from the text and corresponding 8-byte signed integer value. + + A list of trivia immediately preceding the token. + The raw text of the literal. + The 8-byte signed integer value to be represented by the returned token. + A list of trivia immediately following the token. + + + + Creates a token with kind NumericLiteralToken from an 8-byte unsigned integer value. + + The 8-byte unsigned integer value to be represented by the returned token. + + + + Creates a token with kind NumericLiteralToken from the text and corresponding 8-byte unsigned integer value. + + The raw text of the literal. + The 8-byte unsigned integer value to be represented by the returned token. + + + + Creates a token with kind NumericLiteralToken from the text and corresponding 8-byte unsigned integer value. + + A list of trivia immediately preceding the token. + The raw text of the literal. + The 8-byte unsigned integer value to be represented by the returned token. + A list of trivia immediately following the token. + + + + Creates a token with kind NumericLiteralToken from a 4-byte floating point value. + + The 4-byte floating point value to be represented by the returned token. + + + + Creates a token with kind NumericLiteralToken from the text and corresponding 4-byte floating point value. + + The raw text of the literal. + The 4-byte floating point value to be represented by the returned token. + + + + Creates a token with kind NumericLiteralToken from the text and corresponding 4-byte floating point value. + + A list of trivia immediately preceding the token. + The raw text of the literal. + The 4-byte floating point value to be represented by the returned token. + A list of trivia immediately following the token. + + + + Creates a token with kind NumericLiteralToken from an 8-byte floating point value. + + The 8-byte floating point value to be represented by the returned token. + + + + Creates a token with kind NumericLiteralToken from the text and corresponding 8-byte floating point value. + + The raw text of the literal. + The 8-byte floating point value to be represented by the returned token. + + + + Creates a token with kind NumericLiteralToken from the text and corresponding 8-byte floating point value. + + A list of trivia immediately preceding the token. + The raw text of the literal. + The 8-byte floating point value to be represented by the returned token. + A list of trivia immediately following the token. + + + + Creates a token with kind NumericLiteralToken from a decimal value. + + The decimal value to be represented by the returned token. + + + + Creates a token with kind NumericLiteralToken from the text and corresponding decimal value. + + The raw text of the literal. + The decimal value to be represented by the returned token. + + + + Creates a token with kind NumericLiteralToken from the text and corresponding decimal value. + + A list of trivia immediately preceding the token. + The raw text of the literal. + The decimal value to be represented by the returned token. + A list of trivia immediately following the token. + + + + Creates a token with kind StringLiteralToken from a string value. + + The string value to be represented by the returned token. + + + + Creates a token with kind StringLiteralToken from the text and corresponding string value. + + The raw text of the literal, including quotes and escape sequences. + The string value to be represented by the returned token. + + + + Creates a token with kind StringLiteralToken from the text and corresponding string value. + + A list of trivia immediately preceding the token. + The raw text of the literal, including quotes and escape sequences. + The string value to be represented by the returned token. + A list of trivia immediately following the token. + + + + Creates a token with kind CharacterLiteralToken from a character value. + + The character value to be represented by the returned token. + + + + Creates a token with kind CharacterLiteralToken from the text and corresponding character value. + + The raw text of the literal, including quotes and escape sequences. + The character value to be represented by the returned token. + + + + Creates a token with kind CharacterLiteralToken from the text and corresponding character value. + + A list of trivia immediately preceding the token. + The raw text of the literal, including quotes and escape sequences. + The character value to be represented by the returned token. + A list of trivia immediately following the token. + + + + Creates a token with kind BadToken. + + A list of trivia immediately preceding the token. + The raw text of the bad token. + A list of trivia immediately following the token. + + + + Creates a token with kind XmlTextLiteralToken. + + A list of trivia immediately preceding the token. + The raw text of the literal. + The xml text value. + A list of trivia immediately following the token. + + + + Creates a token with kind XmlEntityLiteralToken. + + A list of trivia immediately preceding the token. + The raw text of the literal. + The xml entity value. + A list of trivia immediately following the token. + + + + Creates an xml documentation comment that abstracts xml syntax creation. + + + A list of xml node syntax that will be the content within the xml documentation comment + (e.g. a summary element, a returns element, exception element and so on). + + + + + Creates a summary element within an xml documentation comment. + + A list of xml node syntax that will be the content within the summary element. + + + + Creates a summary element within an xml documentation comment. + + A list of xml node syntax that will be the content within the summary element. + + + + Creates a see element within an xml documentation comment. + + A cref syntax node that points to the referenced item (e.g. a class, struct). + + + + Creates a seealso element within an xml documentation comment. + + A cref syntax node that points to the referenced item (e.g. a class, struct). + + + + Creates a seealso element within an xml documentation comment. + + The uri of the referenced item. + A list of xml node syntax that will be used as the link text for the referenced item. + + + + Creates a threadsafty element within an xml documentation comment. + + + + + Creates a threadsafety element within an xml documentation comment. + + Indicates whether static member of this type are safe for multi-threaded operations. + Indicates whether instance members of this type are safe for multi-threaded operations. + + + + Creates a syntax node for a name attribute in a xml element within a xml documentation comment. + + The value of the name attribute. + + + + Creates a syntax node for a priliminary element within a xml documentation comment. + + + + + Creates a syntax node for a cref attribute within a xml documentation comment. + + The used for the xml cref attribute syntax. + + + + Creates a syntax node for a cref attribute within a xml documentation comment. + + The used for the xml cref attribute syntax. + The kind of the quote for the referenced item in the cref attribute. + + + + Creates a remarks element within an xml documentation comment. + + A list of xml node syntax that will be the content within the remarks element. + + + + Creates a remarks element within an xml documentation comment. + + A list of xml node syntax that will be the content within the remarks element. + + + + Creates a returns element within an xml documentation comment. + + A list of xml node syntax that will be the content within the returns element. + + + + Creates a returns element within an xml documentation comment. + + A list of xml node syntax that will be the content within the returns element. + + + + Creates the the syntax representation of an xml value element (e.g. for xml documentation comments). + + A list of xml syntax nodes that represents the content of the value element. + + + + Creates the the syntax representation of an xml value element (e.g. for xml documentation comments). + + A list of xml syntax nodes that represents the content of the value element. + + + + Creates the syntax representation of an exception element within xml documentation comments. + + Syntax representation of the reference to the exception type. + A list of syntax nodes that represents the content of the exception element. + + + + Creates the syntax representation of an exception element within xml documentation comments. + + Syntax representation of the reference to the exception type. + A list of syntax nodes that represents the content of the exception element. + + + + Creates the syntax representation of a permission element within xml documentation comments. + + Syntax representation of the reference to the permission type. + A list of syntax nodes that represents the content of the permission element. + + + + Creates the syntax representation of a permission element within xml documentation comments. + + Syntax representation of the reference to the permission type. + A list of syntax nodes that represents the content of the permission element. + + + + Creates the syntax representation of an example element within xml documentation comments. + + A list of syntax nodes that represents the content of the example element. + + + + Creates the syntax representation of an example element within xml documentation comments. + + A list of syntax nodes that represents the content of the example element. + + + + Creates the syntax representation of a para element within xml documentation comments. + + A list of syntax nodes that represents the content of the para element. + + + + Creates the syntax representation of a para element within xml documentation comments. + + A list of syntax nodes that represents the content of the para element. + + + + Creates the syntax representation of a param element within xml documentation comments (e.g. for + documentation of method parameters). + + The name of the parameter. + A list of syntax nodes that represents the content of the param element (e.g. + the description and meaning of the parameter). + + + + Creates the syntax representation of a param element within xml documentation comments (e.g. for + documentation of method parameters). + + The name of the parameter. + A list of syntax nodes that represents the content of the param element (e.g. + the description and meaning of the parameter). + + + + Creates the syntax representation of a paramref element within xml documentation comments (e.g. for + referencing particular parameters of a method). + + The name of the referenced parameter. + + + + Creates the syntax representation of a see element within xml documentation comments, + that points to the 'null' language keyword. + + + + + Creates the syntax representation of a see element within xml documentation comments, + that points to a language keyword. + + The language keyword to which the see element points to. + + + + Creates the syntax representation of a placeholder element within xml documentation comments. + + A list of syntax nodes that represents the content of the placeholder element. + + + + Creates the syntax representation of a placeholder element within xml documentation comments. + + A list of syntax nodes that represents the content of the placeholder element. + + + + Creates the syntax representation of a named empty xml element within xml documentation comments. + + The name of the empty xml element. + + + + Creates the syntax representation of a named xml element within xml documentation comments. + + The name of the empty xml element. + A list of syntax nodes that represents the content of the xml element. + + + + Creates the syntax representation of a named xml element within xml documentation comments. + + The name of the empty xml element. + A list of syntax nodes that represents the content of the xml element. + + + + Creates the syntax representation of an xml text attribute. + + The name of the xml text attribute. + The value of the xml text attribute. + + + + Creates the syntax representation of an xml text attribute. + + The name of the xml text attribute. + A list of tokens used for the value of the xml text attribute. + + + + Creates the syntax representation of an xml text attribute. + + The name of the xml text attribute. + The kind of the quote token to be used to quote the value (e.g. " or '). + A list of tokens used for the value of the xml text attribute. + + + + Creates the syntax representation of an xml text attribute. + + The name of the xml text attribute. + The kind of the quote token to be used to quote the value (e.g. " or '). + A list of tokens used for the value of the xml text attribute. + + + + Creates the syntax representation of an xml element that spans multiple text lines. + + The name of the xml element. + A list of syntax nodes that represents the content of the xml multi line element. + + + + Creates the syntax representation of an xml element that spans multiple text lines. + + The name of the xml element. + A list of syntax nodes that represents the content of the xml multi line element. + + + + Creates the syntax representation of an xml text that contains a newline token with a documentation comment + exterior trivia at the end (continued documentation comment). + + The raw text within the new line. + + + + Creates the syntax representation of an xml newline token with a documentation comment exterior trivia at + the end (continued documentation comment). + + The raw text within the new line. + + + + Creates a token with kind XmlTextLiteralNewLineToken. + + A list of trivia immediately preceding the token. + The raw text of the literal. + The xml text new line value. + A list of trivia immediately following the token. + + + + Creates the syntax representation of an xml newline token for xml documentation comments. + + The raw text within the new line. + + If set to true, a documentation comment exterior token will be added to the trailing trivia + of the new token. + + + + Generates the syntax representation of a xml text node (e.g. for xml documentation comments). + + The string literal used as the text of the xml text node. + + + + Generates the syntax representation of a xml text node (e.g. for xml documentation comments). + + A list of text tokens used as the text of the xml text node. + + + + Generates the syntax representation of an xml text literal. + + The text used within the xml text literal. + + + + Generates the syntax representation of an xml text literal. + + The raw text of the literal. + The text used within the xml text literal. + + + + Helper method that replaces less-than and greater-than characters with brackets. + + The original token that is to be replaced. + The new rewritten token. + Returns the new rewritten token with replaced characters. + + + + Creates a trivia with kind DocumentationCommentExteriorTrivia. + + The raw text of the literal. + + + + Creates an empty list of syntax nodes. + + The specific type of the element nodes. + + + + Creates a singleton list of syntax nodes. + + The specific type of the element nodes. + The single element node. + + + + + Creates a list of syntax nodes. + + The specific type of the element nodes. + A sequence of element nodes. + + + + Creates an empty list of tokens. + + + + + Creates a singleton list of tokens. + + The single token. + + + + Creates a list of tokens. + + An array of tokens. + + + + Creates a list of tokens. + + + + + + + Creates a trivia from a StructuredTriviaSyntax node. + + + + + Creates an empty list of trivia. + + + + + Creates a singleton list of trivia. + + A single trivia. + + + + Creates a list of trivia. + + An array of trivia. + + + + Creates a list of trivia. + + A sequence of trivia. + + + + Creates an empty separated list. + + The specific type of the element nodes. + + + + Creates a singleton separated list. + + The specific type of the element nodes. + A single node. + + + + Creates a separated list of nodes from a sequence of nodes, synthesizing comma separators in between. + + The specific type of the element nodes. + A sequence of syntax nodes. + + + + Creates a separated list of nodes from a sequence of nodes and a sequence of separator tokens. + + The specific type of the element nodes. + A sequence of syntax nodes. + A sequence of token to be interleaved between the nodes. The number of tokens must + be one less than the number of nodes. + + + + Creates a separated list from a sequence of nodes and tokens, starting with a node and alternating between additional nodes and separator tokens. + + The specific type of the element nodes. + A sequence of nodes or tokens, alternating between nodes and separator tokens. + + + + Creates a separated list from a , where the list elements start with a node and then alternate between + additional nodes and separator tokens. + + The specific type of the element nodes. + The list of nodes and tokens. + + + + Creates an empty . + + + + + Create a from a sequence of . + + The sequence of nodes and tokens + + + + Create a from one or more . + + The nodes and tokens + + + + Creates an IdentifierNameSyntax node. + + The identifier name. + + + + Create a new syntax tree from a syntax node. + + + + + Produces a syntax tree by parsing the source text. + + + + + Produces a syntax tree by parsing the source text. + + + + + Parse a list of trivia rules for leading trivia. + + + + + Parse a list of trivia rules for leading trivia. + + + + + Parse a list of trivia using the parsing rules for trailing trivia. + + + + + Parse a C# language token. + + The text of the token including leading and trailing trivia. + Optional offset into text. + + + + Parse a sequence of C# language tokens. + + The text of all the tokens. + An integer to use as the starting position of the first token. + Optional offset into text. + Parse options. + + + + Parse a NameSyntax node using the grammar rule for names. + + + + + Parse a TypeNameSyntax node using the grammar rule for type names. + + + + + Parse an ExpressionSyntax node using the lowest precedence grammar rule for expressions. + + The text of the expression. + Optional offset into text. + The optional parse options to use. If no options are specified default options are + used. + True if extra tokens in the input should be treated as an error + + + + Parse a StatementSyntaxNode using grammar rule for statements. + + The text of the statement. + Optional offset into text. + The optional parse options to use. If no options are specified default options are + used. + True if extra tokens in the input should be treated as an error + + + + Parse a CompilationUnitSyntax using the grammar rule for an entire compilation unit (file). To produce a + SyntaxTree instance, use CSharpSyntaxTree.ParseText instead. + + The text of the compilation unit. + Optional offset into text. + The optional parse options to use. If no options are specified default options are + used. + + + + Parse a ParameterListSyntax node. + + The text of the parenthesized parameter list. + Optional offset into text. + The optional parse options to use. If no options are specified default options are + used. + True if extra tokens in the input should be treated as an error + + + + Parse a BracketedParameterListSyntax node. + + The text of the bracketed parameter list. + Optional offset into text. + The optional parse options to use. If no options are specified default options are + used. + True if extra tokens in the input should be treated as an error + + + + Parse an ArgumentListSyntax node. + + The text of the parenthesized argument list. + Optional offset into text. + The optional parse options to use. If no options are specified default options are + used. + True if extra tokens in the input should be treated as an error + + + + Parse a BracketedArgumentListSyntax node. + + The text of the bracketed argument list. + Optional offset into text. + The optional parse options to use. If no options are specified default options are + used. + True if extra tokens in the input should be treated as an error + + + + Parse an AttributeArgumentListSyntax node. + + The text of the attribute argument list. + Optional offset into text. + The optional parse options to use. If no options are specified default options are + used. + True if extra tokens in the input should be treated as an error + + + + Helper method for wrapping a string in an SourceText. + + + + + Determines if two trees are the same, disregarding trivia differences. + + The original tree. + The new tree. + + If true then the trees are equivalent if the contained nodes and tokens declaring + metadata visible symbolic information are equivalent, ignoring any differences of nodes inside method bodies + or initializer expressions, otherwise all nodes and tokens must be equivalent. + + + + + Determines if two syntax nodes are the same, disregarding trivia differences. + + The old node. + The new node. + + If true then the nodes are equivalent if the contained nodes and tokens declaring + metadata visible symbolic information are equivalent, ignoring any differences of nodes inside method bodies + or initializer expressions, otherwise all nodes and tokens must be equivalent. + + + + + Determines if two syntax nodes are the same, disregarding trivia differences. + + The old node. + The new node. + + If specified called for every child syntax node (not token) that is visited during the comparison. + If it returns true the child is recursively visited, otherwise the child and its subtree is disregarded. + + + + + Determines if two syntax tokens are the same, disregarding trivia differences. + + The old token. + The new token. + + + + Determines if two lists of tokens are the same, disregarding trivia differences. + + The old token list. + The new token list. + + + + Determines if two lists of syntax nodes are the same, disregarding trivia differences. + + The old list. + The new list. + + If true then the nodes are equivalent if the contained nodes and tokens declaring + metadata visible symbolic information are equivalent, ignoring any differences of nodes inside method bodies + or initializer expressions, otherwise all nodes and tokens must be equivalent. + + + + + Determines if two lists of syntax nodes are the same, disregarding trivia differences. + + The old list. + The new list. + + If specified called for every child syntax node (not token) that is visited during the comparison. + If it returns true the child is recursively visited, otherwise the child and its subtree is disregarded. + + + + + Determines if two lists of syntax nodes are the same, disregarding trivia differences. + + The old list. + The new list. + + If true then the nodes are equivalent if the contained nodes and tokens declaring + metadata visible symbolic information are equivalent, ignoring any differences of nodes inside method bodies + or initializer expressions, otherwise all nodes and tokens must be equivalent. + + + + + Determines if two lists of syntax nodes are the same, disregarding trivia differences. + + The old list. + The new list. + + If specified called for every child syntax node (not token) that is visited during the comparison. + If it returns true the child is recursively visited, otherwise the child and its subtree is disregarded. + + + + + Gets the containing expression that is actually a language expression and not just typed + as an ExpressionSyntax for convenience. For example, NameSyntax nodes on the right side + of qualified names and member access expressions are not language expressions, yet the + containing qualified names or member access expressions are indeed expressions. + + + + + Gets the containing expression that is actually a language expression and not just typed + as an ExpressionSyntax for convenience. For example, NameSyntax nodes on the right side + of qualified names and member access expressions are not language expressions, yet the + containing qualified names or member access expressions are indeed expressions. + Similarly, if the input node is a cref part that is not independently meaningful, then + the result will be the full cref. + + + + + Given a conditional binding expression, find corresponding conditional access node. + + + + + Converts a generic name expression into one without the generic arguments. + + + + + + + Determines whether the given text is considered a syntactically complete submission. + Throws if the tree was not compiled as an interactive submission. + + + + Creates a new CaseSwitchLabelSyntax instance. + + + Creates a new DefaultSwitchLabelSyntax instance. + + + Creates a new BlockSyntax instance. + + + Creates a new BlockSyntax instance. + + + Creates a new UsingDirectiveSyntax instance. + + + Creates a new IdentifierNameSyntax instance. + + + Creates a new QualifiedNameSyntax instance. + + + Creates a new QualifiedNameSyntax instance. + + + Creates a new GenericNameSyntax instance. + + + Creates a new GenericNameSyntax instance. + + + Creates a new GenericNameSyntax instance. + + + Creates a new TypeArgumentListSyntax instance. + + + Creates a new TypeArgumentListSyntax instance. + + + Creates a new AliasQualifiedNameSyntax instance. + + + Creates a new AliasQualifiedNameSyntax instance. + + + Creates a new AliasQualifiedNameSyntax instance. + + + Creates a new PredefinedTypeSyntax instance. + + + Creates a new ArrayTypeSyntax instance. + + + Creates a new ArrayTypeSyntax instance. + + + Creates a new ArrayRankSpecifierSyntax instance. + + + Creates a new ArrayRankSpecifierSyntax instance. + + + Creates a new PointerTypeSyntax instance. + + + Creates a new PointerTypeSyntax instance. + + + Creates a new NullableTypeSyntax instance. + + + Creates a new NullableTypeSyntax instance. + + + Creates a new OmittedTypeArgumentSyntax instance. + + + Creates a new OmittedTypeArgumentSyntax instance. + + + Creates a new ParenthesizedExpressionSyntax instance. + + + Creates a new ParenthesizedExpressionSyntax instance. + + + Creates a new PrefixUnaryExpressionSyntax instance. + + + Creates a new PrefixUnaryExpressionSyntax instance. + + + Creates a new AwaitExpressionSyntax instance. + + + Creates a new AwaitExpressionSyntax instance. + + + Creates a new PostfixUnaryExpressionSyntax instance. + + + Creates a new PostfixUnaryExpressionSyntax instance. + + + Creates a new MemberAccessExpressionSyntax instance. + + + Creates a new MemberAccessExpressionSyntax instance. + + + Creates a new ConditionalAccessExpressionSyntax instance. + + + Creates a new ConditionalAccessExpressionSyntax instance. + + + Creates a new MemberBindingExpressionSyntax instance. + + + Creates a new MemberBindingExpressionSyntax instance. + + + Creates a new ElementBindingExpressionSyntax instance. + + + Creates a new ElementBindingExpressionSyntax instance. + + + Creates a new ImplicitElementAccessSyntax instance. + + + Creates a new ImplicitElementAccessSyntax instance. + + + Creates a new BinaryExpressionSyntax instance. + + + Creates a new BinaryExpressionSyntax instance. + + + Creates a new AssignmentExpressionSyntax instance. + + + Creates a new AssignmentExpressionSyntax instance. + + + Creates a new ConditionalExpressionSyntax instance. + + + Creates a new ConditionalExpressionSyntax instance. + + + Creates a new ThisExpressionSyntax instance. + + + Creates a new ThisExpressionSyntax instance. + + + Creates a new BaseExpressionSyntax instance. + + + Creates a new BaseExpressionSyntax instance. + + + Creates a new LiteralExpressionSyntax instance. + + + Creates a new LiteralExpressionSyntax instance. + + + Creates a new MakeRefExpressionSyntax instance. + + + Creates a new MakeRefExpressionSyntax instance. + + + Creates a new RefTypeExpressionSyntax instance. + + + Creates a new RefTypeExpressionSyntax instance. + + + Creates a new RefValueExpressionSyntax instance. + + + Creates a new RefValueExpressionSyntax instance. + + + Creates a new CheckedExpressionSyntax instance. + + + Creates a new CheckedExpressionSyntax instance. + + + Creates a new DefaultExpressionSyntax instance. + + + Creates a new DefaultExpressionSyntax instance. + + + Creates a new TypeOfExpressionSyntax instance. + + + Creates a new TypeOfExpressionSyntax instance. + + + Creates a new SizeOfExpressionSyntax instance. + + + Creates a new SizeOfExpressionSyntax instance. + + + Creates a new InvocationExpressionSyntax instance. + + + Creates a new InvocationExpressionSyntax instance. + + + Creates a new ElementAccessExpressionSyntax instance. + + + Creates a new ElementAccessExpressionSyntax instance. + + + Creates a new ArgumentListSyntax instance. + + + Creates a new ArgumentListSyntax instance. + + + Creates a new BracketedArgumentListSyntax instance. + + + Creates a new BracketedArgumentListSyntax instance. + + + Creates a new ArgumentSyntax instance. + + + Creates a new ArgumentSyntax instance. + + + Creates a new NameColonSyntax instance. + + + Creates a new NameColonSyntax instance. + + + Creates a new NameColonSyntax instance. + + + Creates a new CastExpressionSyntax instance. + + + Creates a new CastExpressionSyntax instance. + + + Creates a new AnonymousMethodExpressionSyntax instance. + + + Creates a new AnonymousMethodExpressionSyntax instance. + + + Creates a new AnonymousMethodExpressionSyntax instance. + + + Creates a new SimpleLambdaExpressionSyntax instance. + + + Creates a new SimpleLambdaExpressionSyntax instance. + + + Creates a new ParenthesizedLambdaExpressionSyntax instance. + + + Creates a new ParenthesizedLambdaExpressionSyntax instance. + + + Creates a new ParenthesizedLambdaExpressionSyntax instance. + + + Creates a new InitializerExpressionSyntax instance. + + + Creates a new InitializerExpressionSyntax instance. + + + Creates a new ObjectCreationExpressionSyntax instance. + + + Creates a new ObjectCreationExpressionSyntax instance. + + + Creates a new ObjectCreationExpressionSyntax instance. + + + Creates a new AnonymousObjectMemberDeclaratorSyntax instance. + + + Creates a new AnonymousObjectMemberDeclaratorSyntax instance. + + + Creates a new AnonymousObjectCreationExpressionSyntax instance. + + + Creates a new AnonymousObjectCreationExpressionSyntax instance. + + + Creates a new ArrayCreationExpressionSyntax instance. + + + Creates a new ArrayCreationExpressionSyntax instance. + + + Creates a new ArrayCreationExpressionSyntax instance. + + + Creates a new ImplicitArrayCreationExpressionSyntax instance. + + + Creates a new ImplicitArrayCreationExpressionSyntax instance. + + + Creates a new ImplicitArrayCreationExpressionSyntax instance. + + + Creates a new StackAllocArrayCreationExpressionSyntax instance. + + + Creates a new StackAllocArrayCreationExpressionSyntax instance. + + + Creates a new QueryExpressionSyntax instance. + + + Creates a new QueryBodySyntax instance. + + + Creates a new QueryBodySyntax instance. + + + Creates a new FromClauseSyntax instance. + + + Creates a new FromClauseSyntax instance. + + + Creates a new FromClauseSyntax instance. + + + Creates a new FromClauseSyntax instance. + + + Creates a new LetClauseSyntax instance. + + + Creates a new LetClauseSyntax instance. + + + Creates a new LetClauseSyntax instance. + + + Creates a new JoinClauseSyntax instance. + + + Creates a new JoinClauseSyntax instance. + + + Creates a new JoinClauseSyntax instance. + + + Creates a new JoinClauseSyntax instance. + + + Creates a new JoinIntoClauseSyntax instance. + + + Creates a new JoinIntoClauseSyntax instance. + + + Creates a new JoinIntoClauseSyntax instance. + + + Creates a new WhereClauseSyntax instance. + + + Creates a new WhereClauseSyntax instance. + + + Creates a new OrderByClauseSyntax instance. + + + Creates a new OrderByClauseSyntax instance. + + + Creates a new OrderingSyntax instance. + + + Creates a new OrderingSyntax instance. + + + Creates a new SelectClauseSyntax instance. + + + Creates a new SelectClauseSyntax instance. + + + Creates a new GroupClauseSyntax instance. + + + Creates a new GroupClauseSyntax instance. + + + Creates a new QueryContinuationSyntax instance. + + + Creates a new QueryContinuationSyntax instance. + + + Creates a new QueryContinuationSyntax instance. + + + Creates a new OmittedArraySizeExpressionSyntax instance. + + + Creates a new OmittedArraySizeExpressionSyntax instance. + + + Creates a new InterpolatedStringExpressionSyntax instance. + + + Creates a new InterpolatedStringExpressionSyntax instance. + + + Creates a new InterpolatedStringExpressionSyntax instance. + + + Creates a new InterpolatedStringTextSyntax instance. + + + Creates a new InterpolatedStringTextSyntax instance. + + + Creates a new InterpolationSyntax instance. + + + Creates a new InterpolationSyntax instance. + + + Creates a new InterpolationSyntax instance. + + + Creates a new InterpolationAlignmentClauseSyntax instance. + + + Creates a new InterpolationFormatClauseSyntax instance. + + + Creates a new InterpolationFormatClauseSyntax instance. + + + Creates a new GlobalStatementSyntax instance. + + + Creates a new BlockSyntax instance. + + + Creates a new BlockSyntax instance. + + + Creates a new LocalDeclarationStatementSyntax instance. + + + Creates a new LocalDeclarationStatementSyntax instance. + + + Creates a new LocalDeclarationStatementSyntax instance. + + + Creates a new VariableDeclarationSyntax instance. + + + Creates a new VariableDeclarationSyntax instance. + + + Creates a new VariableDeclaratorSyntax instance. + + + Creates a new VariableDeclaratorSyntax instance. + + + Creates a new VariableDeclaratorSyntax instance. + + + Creates a new EqualsValueClauseSyntax instance. + + + Creates a new EqualsValueClauseSyntax instance. + + + Creates a new ExpressionStatementSyntax instance. + + + Creates a new ExpressionStatementSyntax instance. + + + Creates a new EmptyStatementSyntax instance. + + + Creates a new EmptyStatementSyntax instance. + + + Creates a new LabeledStatementSyntax instance. + + + Creates a new LabeledStatementSyntax instance. + + + Creates a new LabeledStatementSyntax instance. + + + Creates a new GotoStatementSyntax instance. + + + Creates a new GotoStatementSyntax instance. + + + Creates a new GotoStatementSyntax instance. + + + Creates a new BreakStatementSyntax instance. + + + Creates a new BreakStatementSyntax instance. + + + Creates a new ContinueStatementSyntax instance. + + + Creates a new ContinueStatementSyntax instance. + + + Creates a new ReturnStatementSyntax instance. + + + Creates a new ReturnStatementSyntax instance. + + + Creates a new ThrowStatementSyntax instance. + + + Creates a new ThrowStatementSyntax instance. + + + Creates a new YieldStatementSyntax instance. + + + Creates a new YieldStatementSyntax instance. + + + Creates a new WhileStatementSyntax instance. + + + Creates a new WhileStatementSyntax instance. + + + Creates a new DoStatementSyntax instance. + + + Creates a new DoStatementSyntax instance. + + + Creates a new ForStatementSyntax instance. + + + Creates a new ForStatementSyntax instance. + + + Creates a new ForStatementSyntax instance. + + + Creates a new ForEachStatementSyntax instance. + + + Creates a new ForEachStatementSyntax instance. + + + Creates a new ForEachStatementSyntax instance. + + + Creates a new UsingStatementSyntax instance. + + + Creates a new UsingStatementSyntax instance. + + + Creates a new UsingStatementSyntax instance. + + + Creates a new FixedStatementSyntax instance. + + + Creates a new FixedStatementSyntax instance. + + + Creates a new CheckedStatementSyntax instance. + + + Creates a new CheckedStatementSyntax instance. + + + Creates a new UnsafeStatementSyntax instance. + + + Creates a new UnsafeStatementSyntax instance. + + + Creates a new LockStatementSyntax instance. + + + Creates a new LockStatementSyntax instance. + + + Creates a new IfStatementSyntax instance. + + + Creates a new IfStatementSyntax instance. + + + Creates a new IfStatementSyntax instance. + + + Creates a new ElseClauseSyntax instance. + + + Creates a new ElseClauseSyntax instance. + + + Creates a new SwitchStatementSyntax instance. + + + Creates a new SwitchStatementSyntax instance. + + + Creates a new SwitchStatementSyntax instance. + + + Creates a new SwitchSectionSyntax instance. + + + Creates a new SwitchSectionSyntax instance. + + + Creates a new CaseSwitchLabelSyntax instance. + + + Creates a new CaseSwitchLabelSyntax instance. + + + Creates a new DefaultSwitchLabelSyntax instance. + + + Creates a new DefaultSwitchLabelSyntax instance. + + + Creates a new TryStatementSyntax instance. + + + Creates a new TryStatementSyntax instance. + + + Creates a new TryStatementSyntax instance. + + + Creates a new CatchClauseSyntax instance. + + + Creates a new CatchClauseSyntax instance. + + + Creates a new CatchClauseSyntax instance. + + + Creates a new CatchDeclarationSyntax instance. + + + Creates a new CatchDeclarationSyntax instance. + + + Creates a new CatchDeclarationSyntax instance. + + + Creates a new CatchFilterClauseSyntax instance. + + + Creates a new CatchFilterClauseSyntax instance. + + + Creates a new FinallyClauseSyntax instance. + + + Creates a new FinallyClauseSyntax instance. + + + Creates a new CompilationUnitSyntax instance. + + + Creates a new CompilationUnitSyntax instance. + + + Creates a new CompilationUnitSyntax instance. + + + Creates a new ExternAliasDirectiveSyntax instance. + + + Creates a new ExternAliasDirectiveSyntax instance. + + + Creates a new ExternAliasDirectiveSyntax instance. + + + Creates a new UsingDirectiveSyntax instance. + + + Creates a new UsingDirectiveSyntax instance. + + + Creates a new UsingDirectiveSyntax instance. + + + Creates a new NamespaceDeclarationSyntax instance. + + + Creates a new NamespaceDeclarationSyntax instance. + + + Creates a new NamespaceDeclarationSyntax instance. + + + Creates a new AttributeListSyntax instance. + + + Creates a new AttributeListSyntax instance. + + + Creates a new AttributeListSyntax instance. + + + Creates a new AttributeTargetSpecifierSyntax instance. + + + Creates a new AttributeTargetSpecifierSyntax instance. + + + Creates a new AttributeSyntax instance. + + + Creates a new AttributeSyntax instance. + + + Creates a new AttributeArgumentListSyntax instance. + + + Creates a new AttributeArgumentListSyntax instance. + + + Creates a new AttributeArgumentSyntax instance. + + + Creates a new AttributeArgumentSyntax instance. + + + Creates a new NameEqualsSyntax instance. + + + Creates a new NameEqualsSyntax instance. + + + Creates a new NameEqualsSyntax instance. + + + Creates a new TypeParameterListSyntax instance. + + + Creates a new TypeParameterListSyntax instance. + + + Creates a new TypeParameterSyntax instance. + + + Creates a new TypeParameterSyntax instance. + + + Creates a new TypeParameterSyntax instance. + + + Creates a new ClassDeclarationSyntax instance. + + + Creates a new ClassDeclarationSyntax instance. + + + Creates a new ClassDeclarationSyntax instance. + + + Creates a new ClassDeclarationSyntax instance. + + + Creates a new StructDeclarationSyntax instance. + + + Creates a new StructDeclarationSyntax instance. + + + Creates a new StructDeclarationSyntax instance. + + + Creates a new StructDeclarationSyntax instance. + + + Creates a new InterfaceDeclarationSyntax instance. + + + Creates a new InterfaceDeclarationSyntax instance. + + + Creates a new InterfaceDeclarationSyntax instance. + + + Creates a new InterfaceDeclarationSyntax instance. + + + Creates a new EnumDeclarationSyntax instance. + + + Creates a new EnumDeclarationSyntax instance. + + + Creates a new EnumDeclarationSyntax instance. + + + Creates a new EnumDeclarationSyntax instance. + + + Creates a new DelegateDeclarationSyntax instance. + + + Creates a new DelegateDeclarationSyntax instance. + + + Creates a new DelegateDeclarationSyntax instance. + + + Creates a new DelegateDeclarationSyntax instance. + + + Creates a new EnumMemberDeclarationSyntax instance. + + + Creates a new EnumMemberDeclarationSyntax instance. + + + Creates a new EnumMemberDeclarationSyntax instance. + + + Creates a new BaseListSyntax instance. + + + Creates a new BaseListSyntax instance. + + + Creates a new SimpleBaseTypeSyntax instance. + + + Creates a new TypeParameterConstraintClauseSyntax instance. + + + Creates a new TypeParameterConstraintClauseSyntax instance. + + + Creates a new TypeParameterConstraintClauseSyntax instance. + + + Creates a new TypeParameterConstraintClauseSyntax instance. + + + Creates a new ConstructorConstraintSyntax instance. + + + Creates a new ConstructorConstraintSyntax instance. + + + Creates a new ClassOrStructConstraintSyntax instance. + + + Creates a new ClassOrStructConstraintSyntax instance. + + + Creates a new TypeConstraintSyntax instance. + + + Creates a new FieldDeclarationSyntax instance. + + + Creates a new FieldDeclarationSyntax instance. + + + Creates a new FieldDeclarationSyntax instance. + + + Creates a new EventFieldDeclarationSyntax instance. + + + Creates a new EventFieldDeclarationSyntax instance. + + + Creates a new EventFieldDeclarationSyntax instance. + + + Creates a new ExplicitInterfaceSpecifierSyntax instance. + + + Creates a new ExplicitInterfaceSpecifierSyntax instance. + + + Creates a new MethodDeclarationSyntax instance. + + + Creates a new MethodDeclarationSyntax instance. + + + Creates a new MethodDeclarationSyntax instance. + + + Creates a new MethodDeclarationSyntax instance. + + + Creates a new OperatorDeclarationSyntax instance. + + + Creates a new OperatorDeclarationSyntax instance. + + + Creates a new OperatorDeclarationSyntax instance. + + + Creates a new ConversionOperatorDeclarationSyntax instance. + + + Creates a new ConversionOperatorDeclarationSyntax instance. + + + Creates a new ConversionOperatorDeclarationSyntax instance. + + + Creates a new ConstructorDeclarationSyntax instance. + + + Creates a new ConstructorDeclarationSyntax instance. + + + Creates a new ConstructorDeclarationSyntax instance. + + + Creates a new ConstructorDeclarationSyntax instance. + + + Creates a new ConstructorInitializerSyntax instance. + + + Creates a new ConstructorInitializerSyntax instance. + + + Creates a new DestructorDeclarationSyntax instance. + + + Creates a new DestructorDeclarationSyntax instance. + + + Creates a new DestructorDeclarationSyntax instance. + + + Creates a new DestructorDeclarationSyntax instance. + + + Creates a new PropertyDeclarationSyntax instance. + + + Creates a new PropertyDeclarationSyntax instance. + + + Creates a new PropertyDeclarationSyntax instance. + + + Creates a new PropertyDeclarationSyntax instance. + + + Creates a new ArrowExpressionClauseSyntax instance. + + + Creates a new ArrowExpressionClauseSyntax instance. + + + Creates a new EventDeclarationSyntax instance. + + + Creates a new EventDeclarationSyntax instance. + + + Creates a new EventDeclarationSyntax instance. + + + Creates a new EventDeclarationSyntax instance. + + + Creates a new IndexerDeclarationSyntax instance. + + + Creates a new IndexerDeclarationSyntax instance. + + + Creates a new IndexerDeclarationSyntax instance. + + + Creates a new AccessorListSyntax instance. + + + Creates a new AccessorListSyntax instance. + + + Creates a new AccessorDeclarationSyntax instance. + + + Creates a new AccessorDeclarationSyntax instance. + + + Creates a new AccessorDeclarationSyntax instance. + + + Creates a new ParameterListSyntax instance. + + + Creates a new ParameterListSyntax instance. + + + Creates a new BracketedParameterListSyntax instance. + + + Creates a new BracketedParameterListSyntax instance. + + + Creates a new ParameterSyntax instance. + + + Creates a new ParameterSyntax instance. + + + Creates a new IncompleteMemberSyntax instance. + + + Creates a new IncompleteMemberSyntax instance. + + + Creates a new SkippedTokensTriviaSyntax instance. + + + Creates a new SkippedTokensTriviaSyntax instance. + + + Creates a new DocumentationCommentTriviaSyntax instance. + + + Creates a new DocumentationCommentTriviaSyntax instance. + + + Creates a new TypeCrefSyntax instance. + + + Creates a new QualifiedCrefSyntax instance. + + + Creates a new QualifiedCrefSyntax instance. + + + Creates a new NameMemberCrefSyntax instance. + + + Creates a new NameMemberCrefSyntax instance. + + + Creates a new IndexerMemberCrefSyntax instance. + + + Creates a new IndexerMemberCrefSyntax instance. + + + Creates a new OperatorMemberCrefSyntax instance. + + + Creates a new OperatorMemberCrefSyntax instance. + + + Creates a new OperatorMemberCrefSyntax instance. + + + Creates a new ConversionOperatorMemberCrefSyntax instance. + + + Creates a new ConversionOperatorMemberCrefSyntax instance. + + + Creates a new ConversionOperatorMemberCrefSyntax instance. + + + Creates a new CrefParameterListSyntax instance. + + + Creates a new CrefParameterListSyntax instance. + + + Creates a new CrefBracketedParameterListSyntax instance. + + + Creates a new CrefBracketedParameterListSyntax instance. + + + Creates a new CrefParameterSyntax instance. + + + Creates a new CrefParameterSyntax instance. + + + Creates a new XmlElementSyntax instance. + + + Creates a new XmlElementSyntax instance. + + + Creates a new XmlElementStartTagSyntax instance. + + + Creates a new XmlElementStartTagSyntax instance. + + + Creates a new XmlElementStartTagSyntax instance. + + + Creates a new XmlElementEndTagSyntax instance. + + + Creates a new XmlElementEndTagSyntax instance. + + + Creates a new XmlEmptyElementSyntax instance. + + + Creates a new XmlEmptyElementSyntax instance. + + + Creates a new XmlEmptyElementSyntax instance. + + + Creates a new XmlNameSyntax instance. + + + Creates a new XmlNameSyntax instance. + + + Creates a new XmlNameSyntax instance. + + + Creates a new XmlPrefixSyntax instance. + + + Creates a new XmlPrefixSyntax instance. + + + Creates a new XmlPrefixSyntax instance. + + + Creates a new XmlTextAttributeSyntax instance. + + + Creates a new XmlTextAttributeSyntax instance. + + + Creates a new XmlTextAttributeSyntax instance. + + + Creates a new XmlCrefAttributeSyntax instance. + + + Creates a new XmlCrefAttributeSyntax instance. + + + Creates a new XmlNameAttributeSyntax instance. + + + Creates a new XmlNameAttributeSyntax instance. + + + Creates a new XmlNameAttributeSyntax instance. + + + Creates a new XmlTextSyntax instance. + + + Creates a new XmlTextSyntax instance. + + + Creates a new XmlCDataSectionSyntax instance. + + + Creates a new XmlCDataSectionSyntax instance. + + + Creates a new XmlProcessingInstructionSyntax instance. + + + Creates a new XmlProcessingInstructionSyntax instance. + + + Creates a new XmlProcessingInstructionSyntax instance. + + + Creates a new XmlCommentSyntax instance. + + + Creates a new XmlCommentSyntax instance. + + + Creates a new IfDirectiveTriviaSyntax instance. + + + Creates a new IfDirectiveTriviaSyntax instance. + + + Creates a new ElifDirectiveTriviaSyntax instance. + + + Creates a new ElifDirectiveTriviaSyntax instance. + + + Creates a new ElseDirectiveTriviaSyntax instance. + + + Creates a new ElseDirectiveTriviaSyntax instance. + + + Creates a new EndIfDirectiveTriviaSyntax instance. + + + Creates a new EndIfDirectiveTriviaSyntax instance. + + + Creates a new RegionDirectiveTriviaSyntax instance. + + + Creates a new RegionDirectiveTriviaSyntax instance. + + + Creates a new EndRegionDirectiveTriviaSyntax instance. + + + Creates a new EndRegionDirectiveTriviaSyntax instance. + + + Creates a new ErrorDirectiveTriviaSyntax instance. + + + Creates a new ErrorDirectiveTriviaSyntax instance. + + + Creates a new WarningDirectiveTriviaSyntax instance. + + + Creates a new WarningDirectiveTriviaSyntax instance. + + + Creates a new BadDirectiveTriviaSyntax instance. + + + Creates a new BadDirectiveTriviaSyntax instance. + + + Creates a new DefineDirectiveTriviaSyntax instance. + + + Creates a new DefineDirectiveTriviaSyntax instance. + + + Creates a new DefineDirectiveTriviaSyntax instance. + + + Creates a new UndefDirectiveTriviaSyntax instance. + + + Creates a new UndefDirectiveTriviaSyntax instance. + + + Creates a new UndefDirectiveTriviaSyntax instance. + + + Creates a new LineDirectiveTriviaSyntax instance. + + + Creates a new LineDirectiveTriviaSyntax instance. + + + Creates a new LineDirectiveTriviaSyntax instance. + + + Creates a new PragmaWarningDirectiveTriviaSyntax instance. + + + Creates a new PragmaWarningDirectiveTriviaSyntax instance. + + + Creates a new PragmaWarningDirectiveTriviaSyntax instance. + + + Creates a new PragmaChecksumDirectiveTriviaSyntax instance. + + + Creates a new PragmaChecksumDirectiveTriviaSyntax instance. + + + Creates a new ReferenceDirectiveTriviaSyntax instance. + + + Creates a new ReferenceDirectiveTriviaSyntax instance. + + + Creates a new LoadDirectiveTriviaSyntax instance. + + + Creates a new LoadDirectiveTriviaSyntax instance. + + + Creates a new ShebangDirectiveTriviaSyntax instance. + + + Creates a new ShebangDirectiveTriviaSyntax instance. + + + + A SyntaxReference implementation that lazily translates the result (CSharpSyntaxNode) of the + original syntax reference to a syntax reference for its NamespaceDeclarationSyntax. + + + + + this is a basic do-nothing implementation of a syntax reference + + + + + Gets the expression-body syntax from an expression-bodied member. The + given syntax must be for a member which could contain an expression-body. + + + + + Creates a new syntax token with all whitespace and end of line trivia replaced with + regularly formatted trivia. + + The token to normalize. + A sequence of whitespace characters that defines a single level of indentation. + If true the replaced trivia is elastic trivia. + + + + Creates a new syntax token with all whitespace and end of line trivia replaced with + regularly formatted trivia. + + The token to normalize. + An optional sequence of whitespace characters that defines a + single level of indentation. + An optional sequence of whitespace characters used for end of line. + If true the replaced trivia is elastic trivia. + + + + Creates a new syntax trivia list with all whitespace and end of line trivia replaced with + regularly formatted trivia. + + The trivia list to normalize. + A sequence of whitespace characters that defines a single level of indentation. + If true the replaced trivia is elastic trivia. + + + + Creates a new syntax trivia list with all whitespace and end of line trivia replaced with + regularly formatted trivia. + + The trivia list to normalize. + An optional sequence of whitespace characters that defines a + single level of indentation. + An optional sequence of whitespace characters used for end of line. + If true the replaced trivia is elastic trivia. + + + + Updates the given SimpleNameSyntax node with the given identifier token. + This function is a wrapper that calls WithIdentifier on derived syntax nodes. + + + + The given simple name updated with the given identifier. + + + + Returns true if the specified node represents a lambda. + + + + + Given a node that represents a lambda body returns a node that represents the lambda. + + + + + See SyntaxNode.GetCorrespondingLambdaBody. + + + + + Returns true if the specified represents a body of a lambda. + + + + + When queries are translated into expressions select and group-by expressions such that + 1) select/group-by expression is the same identifier as the "source" identifier and + 2) at least one Where or OrderBy clause but no other clause is present in the contained query body or + the expression in question is a group-by expression and the body has no clause + + do not translate into lambdas. + By "source" identifier we mean the identifier specified in the from clause that initiates the query or the query continuation that includes the body. + + The above condition can be derived from the language specification (chapter 7.16.2) as follows: + - In order for 7.16.2.5 "Select clauses" to be applicable the following conditions must hold: + - There has to be at least one clause in the body, otherwise the query is reduced into a final form by 7.16.2.3 "Degenerate query expressions". + - Only where and order-by clauses may be present in the query body, otherwise a transformation in 7.16.2.4 "From, let, where, join and orderby clauses" + produces pattern that doesn't match the requirements of 7.16.2.5. + + - In order for 7.16.2.6 "Groupby clauses" to be applicable the following conditions must hold: + - Only where and order-by clauses may be present in the query body, otherwise a transformation in 7.16.2.4 "From, let, where, join and orderby clauses" + produces pattern that doesn't match the requirements of 7.16.2.5. + + + + + In C# lambda bodies are expressions or block statements. In both cases it's a single node. + In VB a lambda body might be a sequence of nodes (statements). + We define this function to minimize differences between C# and VB implementation. + + + + + If the specified node represents a lambda returns a node (or nodes) that represent its body (bodies). + + + + + Compares content of two nodes ignoring lambda bodies and trivia. + + + + + "Pair lambda" is a synthesized lambda that creates an instance of an anonymous type representing a pair of values. + + + + + Returns true if the specified node can represent a closure scope -- that is a scope of a captured variable. + Doesn't validate whether or not the node actually declares any captured variable. + + + + + This method is used to keep the code that generates binders in sync + with the code that searches for binders. We don't want the searcher + to skip over any nodes that could have associated binders, especially + if changes are made later. + + "Local binder" is a vague term that refers to binders that represent + scopes for names (e.g. BlockBinders) rather than binders that tweak + default behaviors (e.g. FieldInitializerBinders). Local binders are + created by LocalBinderFactory. + + + + + Given an initializer expression infer the name of anonymous property. + Returns default(SyntaxToken) if unsuccessful + + + + + An enumerator for diagnostic lists. + + + + + Moves the enumerator to the next diagnostic instance in the diagnostic list. + + Returns true if enumerator moved to the next diagnostic, false if the + enumerator was at the end of the diagnostic list. + + + + The current diagnostic that the enumerator is pointing at. + + + + + Gets the expression-body syntax from an expression-bodied member. The + given syntax must be for a member which could contain an expression-body. + + + + + DiagnosticAnalyzer for C# compiler's syntax/semantic/compilation diagnostics. + + + + + Returns the index of the first node of a specified kind in the node list. + + Node list. + The to find. + Returns non-negative index if the list contains a node which matches , -1 otherwise. + + + + True if the list has at least one node of the specified kind. + + + + + Returns the index of the first node of a specified kind in the node list. + + Node list. + The to find. + Returns non-negative index if the list contains a node which matches , -1 otherwise. + + + + True if the list has at least one node of the specified kind. + + + + + Returns the index of the first trivia of a specified kind in the trivia list. + + Trivia list. + The to find. + Returns non-negative index if the list contains a trivia which matches , -1 otherwise. + + + + True if the list has at least one trivia of the specified kind. + + + + + Returns the index of the first token of a specified kind in the token list. + + Token list. + The to find. + Returns non-negative index if the list contains a token which matches , -1 otherwise. + + + + Tests whether a list contains a token of a particular kind. + + + The to test for. + Returns true if the list contains a token which matches + +
+
diff --git a/packages/Microsoft.CodeAnalysis.Common.1.1.1/Microsoft.CodeAnalysis.Common.1.1.1.nupkg b/packages/Microsoft.CodeAnalysis.Common.1.1.1/Microsoft.CodeAnalysis.Common.1.1.1.nupkg deleted file mode 100644 index 1b0b8a5..0000000 Binary files a/packages/Microsoft.CodeAnalysis.Common.1.1.1/Microsoft.CodeAnalysis.Common.1.1.1.nupkg and /dev/null differ diff --git a/packages/Microsoft.CodeAnalysis.Common.1.1.1/lib/net45/Microsoft.CodeAnalysis.dll b/packages/Microsoft.CodeAnalysis.Common.1.1.1/lib/net45/Microsoft.CodeAnalysis.dll deleted file mode 100644 index 67ca7bb..0000000 Binary files a/packages/Microsoft.CodeAnalysis.Common.1.1.1/lib/net45/Microsoft.CodeAnalysis.dll and /dev/null differ diff --git a/packages/Microsoft.CodeAnalysis.Common.1.1.1/lib/portable-net45+win8/Microsoft.CodeAnalysis.dll b/packages/Microsoft.CodeAnalysis.Common.1.1.1/lib/portable-net45+win8/Microsoft.CodeAnalysis.dll deleted file mode 100644 index 67ca7bb..0000000 Binary files a/packages/Microsoft.CodeAnalysis.Common.1.1.1/lib/portable-net45+win8/Microsoft.CodeAnalysis.dll and /dev/null differ diff --git a/packages/Microsoft.CodeAnalysis.Common.1.3.2/Microsoft.CodeAnalysis.Common.1.3.2.nupkg b/packages/Microsoft.CodeAnalysis.Common.1.3.2/Microsoft.CodeAnalysis.Common.1.3.2.nupkg new file mode 100644 index 0000000..940ab9a Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.Common.1.3.2/Microsoft.CodeAnalysis.Common.1.3.2.nupkg differ diff --git a/packages/Microsoft.CodeAnalysis.Common.1.1.1/ThirdPartyNotices.rtf b/packages/Microsoft.CodeAnalysis.Common.1.3.2/ThirdPartyNotices.rtf similarity index 100% rename from packages/Microsoft.CodeAnalysis.Common.1.1.1/ThirdPartyNotices.rtf rename to packages/Microsoft.CodeAnalysis.Common.1.3.2/ThirdPartyNotices.rtf diff --git a/packages/Microsoft.CodeAnalysis.Common.1.3.2/lib/net45/Microsoft.CodeAnalysis.dll b/packages/Microsoft.CodeAnalysis.Common.1.3.2/lib/net45/Microsoft.CodeAnalysis.dll new file mode 100644 index 0000000..c7d4fb8 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.Common.1.3.2/lib/net45/Microsoft.CodeAnalysis.dll differ diff --git a/packages/Microsoft.CodeAnalysis.Common.1.1.1/lib/net45/Microsoft.CodeAnalysis.xml b/packages/Microsoft.CodeAnalysis.Common.1.3.2/lib/net45/Microsoft.CodeAnalysis.xml similarity index 89% rename from packages/Microsoft.CodeAnalysis.Common.1.1.1/lib/net45/Microsoft.CodeAnalysis.xml rename to packages/Microsoft.CodeAnalysis.Common.1.3.2/lib/net45/Microsoft.CodeAnalysis.xml index 6db9e66..0fab3ea 100644 --- a/packages/Microsoft.CodeAnalysis.Common.1.1.1/lib/net45/Microsoft.CodeAnalysis.xml +++ b/packages/Microsoft.CodeAnalysis.Common.1.3.2/lib/net45/Microsoft.CodeAnalysis.xml @@ -1,24709 +1,27492 @@ - - - - Microsoft.CodeAnalysis - - - - - This is a bridge for APIs that are only available on CoreCLR or .NET 4.6 - and NOT on .NET 4.5. The compiler currently targets .NET 4.5 and CoreCLR - so this shim is necessary for switching on the dependent behavior. - - - - - Given a path to an assembly, identifies files in the same directory - that could satisfy the assembly's dependencies. May throw. - - - Dependencies are identified by simply checking the name of an assembly - reference against a file name; if they match the file is considered a - dependency. Other factors, such as version, culture, public key, etc., - are not considered, and so the returned collection may include items that - cannot in fact satisfy the original assembly's dependencies. - - If the file at does not exist or cannot be accessed. - If the file is not an assembly or is somehow corrupted. - - - - Given a path to an assembly, returns its MVID (Module Version ID). - May throw. - - If the file at does not exist or cannot be accessed. - If the file is not an assembly or is somehow corrupted. - - - - Given a path to an assembly, finds the paths to all of its satellite - assemblies. - - If the file at does not exist or cannot be accessed. - If the file is not an assembly or is somehow corrupted. - - - - Given a path to an assembly and a set of paths to possible dependencies, - identifies which of the assembly's references are missing. May throw. - - If the files does not exist or cannot be accessed. - If one of the files is not an assembly or is somehow corrupted. - - - - Given a path to an assembly, returns the for the assembly. - May throw. - - If the file at does not exist or cannot be accessed. - If the file is not an assembly or is somehow corrupted. - - - - Attempts to read all of the requested bytes from the stream into the buffer - - - The number of bytes read. Less than will - only be returned if the end of stream is reached before all bytes can be read. - - - Unlike it is not guaranteed that - the stream position or the output buffer will be unchanged if an exception is - returned. - - - - - Parse the value provided to an MSBuild Feature option into a list of entries. This will - leave name=value in their raw form. - - - - - Find a instance by first probing the contract name and then the name as it - would exist in mscorlib. This helps satisfy both the CoreCLR and Desktop scenarios. - - - - - This type contains the light up scenarios for various platform and runtimes. Any function - in this type can, and is expected to, fail on various platforms. These are light up scenarios - only. - - - - - Full case-insensitive path. - - - - - Last write time (UTC). - - - - - Constructor. - - Full path. - Last write time (UTC). - - - - - - - Initialize the value referenced by in a thread-safe manner. - The value is changed to only if the current value is null. - - Type of value. - Reference to the target location. - The value to use if the target is currently null. - The new value referenced by . Note that this is - nearly always more useful than the usual return from - because it saves another read to . - - - - Initialize the value referenced by in a thread-safe manner. - The value is changed to only if the current value - is . - - Type of value. - Reference to the target location. - The value to use if the target is currently uninitialized. - The uninitialized value. - The new value referenced by . Note that this is - nearly always more useful than the usual return from - because it saves another read to . - - - - Initialize the immutable array referenced by in a thread-safe manner. - - Elemental type of the array. - Reference to the target location. - The value to use if the target is currently uninitialized (default). - The new value referenced by . Note that this is - nearly always more useful than the usual return from - because it saves another read to . - - - - Search a sorted integer array for the target value in O(log N) time. - - The array of integers which must be sorted in ascending order. - The target value. - An index in the array pointing to the position where should be - inserted in order to maintain the sorted order. All values to the right of this position will be - strictly greater than . Note that this may return a position off the end - of the array if all elements are less than or equal to . - - - - The actual number of bytes read can be fewer than the number of bytes requested - if an error occurs or if the end of the stream is reached during the read operation. - - - - - NOTE!!! adding duplicates will result in exceptions. - Being concurrent only allows accessing the dictionary without taking locks. - Duplicate keys are still not allowed in the hashtable. - If unsure about adding unique items use APIs such as TryAdd, GetOrAdd, etc... - - - - - A concurrent, simplified HashSet. - - - - - The default concurrency level is 2. That means the collection can cope with up to two - threads making simultaneous modifications without blocking. - Note ConcurrentDictionary's default concurrency level is dynamic, scaling according to - the number of processors. - - - - - Taken from ConcurrentDictionary.DEFAULT_CAPACITY - - - - - The backing dictionary. The values are never used; just the keys. - - - - - Construct a concurrent set with the default concurrency level. - - - - - Construct a concurrent set using the specified equality comparer. - - The equality comparer for values in the set. - - - - Obtain the number of elements in the set. - - The number of elements in the set. - - - - Determine whether the set is empty. - true if the set is empty; otherwise, false. - - - - Determine whether the given value is in the set. - - The value to test. - true if the set contains the specified value; otherwise, false. - - - - Attempts to add a value to the set. - - The value to add. - true if the value was added to the set. If the value already exists, this method returns false. - - - - Attempts to remove a value from the set. - - The value to remove. - true if the value was removed successfully; otherwise false. - - - - Clear the set - - - - - Obtain an enumerator that iterates through the elements in the set. - - An enumerator for the set. - - - - a simple Lisp-like immutable list. Good to use when lists are always accessed from the head. - - - - - Names of well-known XML attributes and elements. - - - - - This method is necessary to avoid an ambiguity between and . - - - - - This method is necessary to avoid an ambiguity between and . - - - - - Convert a boxed primitive (generally of the backing type of an enum) into a ulong. - - - - - - - Implements a few file name utilities that are needed by the compiler. - In general the compiler is not supposed to understand the format of the paths. - In rare cases it needs to check if a string is a valid file name or change the extension - (embedded resources, netmodules, output name). - The APIs are intentionally limited to cover just these rare cases. Do not add more APIs. - - - - - Returns true if the string represents an unqualified file name. - The name may contain any characters but directory and volume separators. - - Path. - - True if is a simple file name, false if it is null or includes a directory specification. - - - - - Returns the offset in where the dot that starts an extension is, or -1 if the path doesn't have an extension. - - - Returns 0 for path ".foo". - Returns -1 for path "foo.". - - - - - Returns an extension of the specified path string. - - - The same functionality as but doesn't throw an exception - if there are invalid characters in the path. - - - - - Removes extension from path. - - - Returns "foo" for path "foo.". - Returns "foo.." for path "foo...". - - - - - Returns path with the extension changed to . - - - Equivalent of - - If is null, returns null. - If path does not end with an extension, the new extension is appended to the path. - If extension is null, equivalent to . - - - - - Returns the position in given path where the file name starts. - - -1 if path is null. - - - - Get file name from path. - - Unlike doesn't check for invalid path characters. - - - - Invoke the underlying HashAlgorithm's TransformBlock operation on the provided data. - - - - - This is how VB Anonymous Types combine hash values for fields. - - - - - This is how VB Anonymous Types combine hash values for fields. - PERF: Do not use with enum types because that involves multiple - unnecessary boxing operations. Unfortunately, we can't constrain - T to "non-enum", so we'll use a more restrictive constraint. - - - - - The offset bias value used in the FNV-1a algorithm - See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function - - - - - The generative factor used in the FNV-1a algorithm - See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function - - - - - Compute the FNV-1a hash of a sequence of bytes - See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function - - The sequence of bytes - The FNV-1a hash of - - - - Compute the FNV-1a hash of a sequence of bytes and determines if the byte - sequence is valid ASCII and hence the hash code matches a char sequence - encoding the same text. - See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function - - The sequence of bytes that are likely to be ASCII text. - The length of the sequence. - True if the sequence contains only characters in the ASCII range. - The FNV-1a hash of - - - - Compute the FNV-1a hash of a sequence of bytes - See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function - - The sequence of bytes - The FNV-1a hash of - - - - Compute the hashcode of a sub-string using FNV-1a - See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function - Note: FNV-1a was developed and tuned for 8-bit sequences. We're using it here - for 16-bit Unicode chars on the understanding that the majority of chars will - fit into 8-bits and, therefore, the algorithm will retain its desirable traits - for generating hash codes. - - The input string - The start index of the first character to hash - The number of characters, beginning with to hash - The FNV-1a hash code of the substring beginning at and ending after characters. - - - - Compute the hashcode of a sub-string using FNV-1a - See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function - - The input string - The start index of the first character to hash - The FNV-1a hash code of the substring beginning at and ending at the end of the string. - - - - Compute the hashcode of a string using FNV-1a - See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function - - The input string - The FNV-1a hash code of - - - - Compute the hashcode of a string using FNV-1a - See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function - - The input string - The FNV-1a hash code of - - - - Compute the hashcode of a sub string using FNV-1a - See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function - - The input string as a char array - The start index of the first character to hash - The number of characters, beginning with to hash - The FNV-1a hash code of the substring beginning at and ending after characters. - - - - Compute the hashcode of a single character using the FNV-1a algorithm - See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function - Note: In general, this isn't any more useful than "char.GetHashCode". However, - it may be needed if you need to generate the same hash code as a string or - substring with just a single character. - - The character to hash - The FNV-1a hash code of the character. - - - - Combine a string with an existing FNV-1a hash code - See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function - - The accumulated hash code - The string to combine - The result of combining with using the FNV-1a algorithm - - - - Combine a char with an existing FNV-1a hash code - See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function - - The accumulated hash code - The new character to combine - The result of combining with using the FNV-1a algorithm - - - - Represents a single item or many items. - - - Used when a collection usually contains a single item but sometimes might contain multiple. - - - - - Compares objects based upon their reference identity. - - - - - Checks if the given name is a sequence of valid CLR names separated by a dot. - - - - - Remove one set of leading and trailing double quote characters, if both are present. - - - - - This is basically a lossy cache of strings that is searchable by - strings, string sub ranges, character array ranges or string-builder. - - - - - Represents an ordered sequence of weak references. - - - - - Copies all live references from to . - Assumes that all references prior are alive. - - - - - Returns the number of weak references in this list. - Note that some of them might not point to live objects anymore. - - - - - A COM IStream implementation over memory. Supports just enough for DiaSymReader's PDB writing. - Also tuned for performance: - 1. SetSize (and Seek beyond the length) is very fast and doesn't re-allocate the underlying memory. - 2. Read and Write are optimized to avoid copying (see ) - 3. Allocates in chunks instead of a contiguous buffer to avoid re-alloc and copy costs when growing. - - - - - This is a re-definition of COM's IStream interface. The important change is that - the Read and Write methods take an instead of a byte[] to avoid the - allocation cost when called from native code. - - - - - Null or empty. - - - - - "file" - - - - - ".\file" - - - - - "..\file" - - - - - "\dir\file" - - - - - "C:dir\file" - - - - - "C:\file" or "\\machine" (UNC). - - - - - Get directory name from path. - - - Unlike it - doesn't check for invalid path characters, - doesn't strip any trailing directory separators (TODO: tomat), - doesn't recognize UNC structure \\computer-name\share\directory-name\file-name (TODO: tomat). - - Prefix of path that represents a directory. - - - - Returns true if given path is absolute and starts with a drive specification ("C:\"). - - - - - Get a prefix of given path which is the root of the path. - - - Root of an absolute path or null if the path isn't absolute or has invalid format (e.g. "\\"). - It may or may not end with a directory separator (e.g. "C:\", "C:\foo", "\\machine\share", etc.) . - - - - - Calculates the length of root of an UNC path. - - - "\\server\share" is root of UNC path "\\server\share\dir1\dir2\file". - - - - - Combines an absolute path with a relative. - - Absolute root path. - Relative path. - - An absolute combined path, or null if is - absolute (e.g. "C:\abc", "\\machine\share\abc"), - relative to the current root (e.g. "\abc"), - or relative to a drive directory (e.g. "C:abc\def"). - - - - - - Combine two paths, the first of which may be absolute. - - First path: absolute, relative, or null. - Second path: relative and non-null. - null, if is null; a combined path, otherwise. - - - - - Determines whether an assembly reference is considered an assembly file path or an assembly name. - used, for example, on values of /r and #r. - - - - - Resolves relative path and returns absolute path. - The method depends only on values of its parameters and their implementation (for fileExists). - It doesn't itself depend on the state of the current process (namely on the current drive directories) or - the state of file system. - - - Path to resolve. - - - Base file path to resolve CWD-relative paths against. Null if not available. - - - Base directory to resolve CWD-relative paths against if isn't specified. - Must be absolute path. - Null if not available. - - - Sequence of paths used to search for unqualified relative paths. - - - Method that tests existence of a file. - - - The resolved path or null if the path can't be resolved or does not exist. - - - - - Normalizes an absolute path. - - Path to normalize. - - Normalized path. - - - - Used to create a file given a path specified by the user. - paramName - Provided by the Public surface APIs to have a clearer message. Internal API just rethrow the exception - - - - - - - - The 4.5 portable API surface area does not contain many of the APIs Roslyn needs to function. In - particular it lacks APIs to access the file system. The Roslyn project though is constrained - from moving to the 4.6 framework until post VS 2015. - - This puts us in a difficult position. These APIs are necessary for us to have our public API set - in the DLLS we prefer (non Desktop variants) but we can't use them directly when targeting - the 4.5 framework. Putting the APIs into the Desktop variants would create instant legacy for - the Roslyn project that we'd have to maintain forever (even if it was just as assemblies with - only type forward entries). This is not a place we'd like to be in. - - As a compromise we've decided to grab these APIs via reflection for the time being. This is a - *very* unfortunate path to be on but it's a short term solution that sets us up for long term - success. - - This is an unfortunate situation but it will all be removed fairly quickly after RTM and converted - to the proper 4.6 portable contracts. - - Note: Only portable APIs should be present here. - - - - - APIs contained here are proposed for CoreFX but not yet finalized. Their contracts are - subject to change. - - - - - A binder that gathers type/reader mappings during object writing - - - - - A binder that used a predetermine list of types and reader functions. - - - - - A class that reads both primitive values and non-cyclical object graphs from a stream that was constructed using - the ObjectWriter class. - - - - - Read a Boolean value from the stream. This value must have been written using . - - - - - Read a Byte value from the stream. This value must have been written using . - - - - - Read a Char value from the stream. This value must have been written using . - - - - - Read a Decimal value from the stream. This value must have been written using . - - - - - Read a Double value from the stream. This value must have been written using . - - - - - Read a Single value from the stream. This value must have been written using . - - - - - Read a Int32 value from the stream. This value must have been written using . - - - - - Read a Int64 value from the stream. This value must have been written using . - - - - - Read a SByte value from the stream. This value must have been written using . - - - - - Read a Int16 value from the stream. This value must have been written using . - - - - - Read a UInt32 value from the stream. This value must have been written using . - - - - - Read a UInt64 value from the stream. This value must have been written using . - - - - - Read a UInt16 value from the stream. This value must have been written using . - - - - - Read a DateTime value from the stream. This value must have been written using the . - - - - - Read a compressed 30-bit integer value from the stream. This value must have been written using . - - - - - Read a value from the stream. The value must have been written using ObjectWriter.WriteValue. - - - - - Read a String value from the stream. This value must have been written using ObjectWriter.WriteString. - - - - - A class that writes both primitive values and non-cyclical object graphs to a stream that may be - later read back using the ObjectReader class. - - - - - Writes a Boolean value to the stream. - - - - - Writes a Byte value to the stream. - - - - - Writes a Char value to the stream. - - - - - Writes a Decimal value to the stream. - - - - - Writes a Double value to the stream. - - - - - Writes a Single value to the stream. - - - - - Writes a Int32 value to the stream. - - - - - Writes a Int64 value to the stream. - - - - - Writes a SByte value to the stream. - - - - - Writes a Int16 value to the stream. - - - - - Writes a UInt32 value to the stream. - - - - - Writes a UInt64 value to the stream. - - - - - Writes a UInt16 value to the stream. - - - - - Writes a DateTime value to the stream. - - - - - Writes a compressed 30 bit integer to the stream. (not 32 bit) - - - - - Writes a String value to the stream. - - - - - Writes any value (primitive or object graph) to the stream. - - - - - A binder that gathers type/reader mappings during object writing - - - - - A binder that gathers type/reader mappings during object writing - - - - - Generic implementation of object pooling pattern with predefined pool size limit. The main - purpose is that limited number of frequently used objects can be kept in the pool for - further recycling. - - Notes: - 1) it is not the goal to keep all returned objects. Pool is not meant for storage. If there - is no space in the pool, extra returned objects will be dropped. - - 2) it is implied that if object was obtained from a pool, the caller will return it back in - a relatively short time. Keeping checked out objects for long durations is ok, but - reduces usefulness of pooling. Just new up your own. - - Not returning objects to the pool in not detrimental to the pool's work, but is a bad practice. - Rationale: - If there is no intent for reusing the object, do not use pool - just use "new". - - - - - Not using System.Func{T} because this file is linked into the (debugger) Formatter, - which does not have that type (since it compiles against .NET 2.0). - - - - - Produces an instance. - - - Search strategy is a simple linear probing which is chosen for it cache-friendliness. - Note that Free will try to store recycled objects close to the start thus statistically - reducing how far we will typically search. - - - - - Returns objects to the pool. - - - Search strategy is a simple linear probing which is chosen for it cache-friendliness. - Note that Free will try to store recycled objects close to the start thus statistically - reducing how far we will typically search in Allocate. - - - - - Removes an object from leak tracking. - - This is called when an object is returned to the pool. It may also be explicitly - called if an object allocated from the pool is intentionally not being returned - to the pool. This can be of use with pooled arrays if the consumer wants to - return a larger array to the pool than was originally allocated. - - - - - Represents a non source code file. - - - - - Path to the file. - - - - - Returns a with the contents of this file, or null if - there were errors reading the file. - - - - - Errors encountered when trying to read the additional file. Always empty if - has not been called. - - - - - If is set, then will be null. - The only arity in that case will be encoded in the symbol. - - - - - - - - - Case-insensitive operations (mostly comparison) on unicode strings. - - - - - ToLower implements the Unicode lowercase mapping - as described in ftp://ftp.unicode.org/Public/UNIDATA/UnicodeData.txt. - VB uses these mappings for case-insensitive comparison. - - - If is upper case, then this returns its Unicode lower case equivalent. Otherwise, is returned unmodified. - - - - This class seeks to perform the lowercase Unicode case mapping. - - - - - Returns a StringComparer that compares strings according the VB identifier comparison rules. - - - - - Returns a StringComparer that compares strings according the VB identifier comparison rules. - - - - - Determines if two VB identifiers are equal according to the VB identifier comparison rules. - - First identifier to compare - Second identifier to compare - true if the identifiers should be considered the same. - - - - Determines if the string 'value' end with string 'possibleEnd'. - - - - - - - - Compares two VB identifiers according to the VB identifier comparison rules. - - First identifier to compare - Second identifier to compare - -1 if < , 1 if > , 0 if they are equal. - - - - Gets a case-insensitive hash code for VB identifiers. - - identifier to get the hash code for - The hash code for the given identifier - - - - Convert a string to lower case per Unicode - - - - - - - In-place convert string in StringBuilder to lower case per Unicode rules - - - - - - Constructs and caches already created pseudo-methods. - Every compiled module is supposed to have one of this, created lazily - (multidimensional arrays are not common). - - - - - Acquires an array constructor for a given array type - - - - - Acquires an element getter method for a given array type - - - - - Acquires an element setter method for a given array type - - - - - Acquires an element referencer method for a given array type - - - - - Maps {array type, method kind} tuples to implementing pseudo-methods. - - - - - lazily fetches or creates a new array method. - - - - - "newobj ArrayConstructor" is equivalent of "newarr ElementType" - when working with multidimensional arrays - - - - - "call ArrayGet" is equivalent of "ldelem ElementType" - when working with multidimensional arrays - - - - - "call ArrayAddress" is equivalent of "ldelema ElementType" - when working with multidimensional arrays - - - - - "call ArraySet" is equivalent of "stelem ElementType" - when working with multidimensional arrays - - - - - Represents a parameter in an array pseudo-method. - - NOTE: It appears that only number of indices is used for verification, - types just have to be Int32. - Even though actual arguments can be native ints. - - - - - Represents the "value" parameter of the Set pseudo-method. - - NOTE: unlike index parameters, type of the value parameter must match - the actual element type. - - - - - Base of all array methods. They have a lot in common. - - - - - Block is not reachable or reachability analysis - has not been performed. - - - - - Block can be reached either falling through - from previous block or from branch. - - - - - Block is reachable from try or catch but - finally prevents falling through. - - - - - Returns true if this block has a branch label - and is not a "nop" branch. - - - - - Instructions that are not branches. - - - - - The block contains only the final branch or nothing at all - - - - - Updates position of the current block to account for shorter sizes of previous blocks. - - - - - - If possible, changes the branch code of the current block to the short version and - updates the delta correspondingly. - - Position delta created by previous block size reductions. - - - - replaces branches with more compact code if possible. - * same branch as in the next ===> nop - * branch to the next block ===> nop - * branch to ret block ===> ret - * cond branch over uncond branch ===> flip condition, skip next block - * cond branch to equivalent ===> pop args + nop - - - - - Blocks are identical if: - 1) have same regular instructions - 2) lead to unconditional control transfer (no fall through) - 3) branch with the same instruction to the same label - - - - - Returns reversed branch operation for the current block. - If no reverse opcode can be obtained Nop is returned. - - - - - Abstract Execution state. - If we know something interesting about IL stream we put it here. - - - - - Eval stack's high watermark. - - - - - Current evaluation stack depth. - - - - - Record effects of that currently emitted instruction on the eval stack. - - - - - In some cases we have to get a final IL offset during emit phase, for example for - proper emitting sequence points. The problem is that before the builder is realized we - don't know the actual IL offset, but only {block/offset-in-the-block} pair. - - Thus, whenever we need to mark some IL position we allocate a new marker id, store it - in allocatedILMarkers and reference this IL marker in the entity requiring the IL offset. - - IL markers will be 'materialized' when the builder is realized; the resulting offsets - will be put into allocatedILMarkers array. Note that only markers from reachable blocks - are materialized, the rest will have offset -1. - - - - - Realizes method body. - No more data can be added to the builder after this call. - - - - - Gets all scopes that contain variables. - - - - - Gets all scopes that contain variables. - - - - - IL opcodes emitted by this builder. - This includes branch instructions that end blocks except if they are fall-through NOPs. - - This count allows compilers to see if emitting a particular statement/expression - actually produced any instructions. - - Example: a label will not result in any code so when emitting debugging information - an extra NOP may be needed if we want to decorate the label with sequence point. - - - - - Marks blocks that are reachable. - - - - - Marks blocks that are recursively reachable from the given block. - - - - - If a label points to a block that does nothing other than passing to block X, - replaces target label's block with block X. - - - - - - Drops blocks that are not reachable - Returns true if any blocks were dropped - - - - - Marks all blocks unreachable. - - - - - Rewrite any block marked as BlockedByFinally as an "infinite loop". - - - Matches the code generated by the native compiler in - ILGENREC::AdjustBlockedLeaveTargets. - - - - - Returns true if the block has the signature of the special - labeled block that follows a complete try/catch or try/finally. - - - - - Returns true if any branches were optimized (that does not include shortening) - We need this because optimizing a branch may result in unreachable code that needs to be eliminated. - - === Example: - - x = 1; - - if (blah) - { - global = 1; - } - else - { - throw null; - } - - return x; - - === rewrites into - - push 1; - - if (blah) - { - global = 1; - ret; - } - else - { - throw null; - } - - // this ret unreachable now! - // even worse - empty stack is assumed thus the ret is illegal. - ret; - - - - - - Define a sequence point with the given syntax tree and span within it. - - - - - Defines a hidden sequence point. - The effect of this is that debugger will not associate following code - with any source (until it sees a lexically following sequence point). - - This is used for synthetic code that is reachable through labels. - - If such code is not separated from previous sequence point by the means of a hidden sequence point - It looks as a part of the statement that previous sequence point specifies. - As a result, when user steps through the code and goes through a jump to such label, - it will appear as if the jump landed at the beginning of the previous statement. - - NOTE: Also inserted as the first statement of a method that would not otherwise have a leading - sequence point so that step-into will find the method body. - - - - - Define a hidden sequence point at the first statement of - the method so that step-into will find the method body. - - - - - This is called when starting emitting a method for which there is some source. - It is done in case the first sequence point is a hidden point. - Even though hidden points do not have syntax, they need to associate with some document. - - - - - Marks the end of filter condition and start of the actual filter handler. - - - - - Puts local variable into current scope. - - - - - Puts local constant into current scope. - - - - - Mark current IL position with a label - - - - - Primary method for emitting string switch jump table - - switch case labels - fall through label for the jump table - Local holding the value to switch on. - This value has already been loaded onto the execution stack. - - Local holding the hash value of the key for emitting - hash table switch. Hash value has already been computed and loaded into keyHash. - This parameter is null if emitting non hash table switch. - - - Delegate to emit string compare call and conditional branch based on the compare result. - - - Delegate to compute string hash consistent with value of keyHash. - - - - - Primary method for emitting integer switch jump table. - - switch case labels - fall through label for the jump table. - Local or parameter holding the value to switch on. - This value has already been loaded onto the execution stack. - - Primitive type code of switch key. - - - - Finishes filter condition (and starts actual handler portion of the handler). - Returns the last block of the condition. - - - - - Generates code that creates an instance of multidimensional array - - - - - Generates code that loads an element of a multidimensional array - - - - - Generates code that loads an address of an element of a multidimensional array. - - - - - Generates code that stores an element of a multidimensional array. - - - - - Contains information about a label. - - - - - Sometimes we need to know if a label is targeted by conditional branches. - For example optimizer can do optimizations of branches into outer try scopes only - if they are unconditional (because there are no conditional Leave opcodes) - - - - - Used when we see a branch, but label is not yet marked. - - - - - Used when label is marked to the code. - - - - - Gets all scopes that contain variables. - - - - - Returns an ExceptionHandlerRegion for each exception handler clause - beneath the root scope. Each ExceptionHandlerRegion indicates the type - of clause (catch or finally) and the bounds of the try block and clause block. - - - - - Base class for IL scopes where a scope contains IL blocks and other nested - scopes. A scope may represent a scope for variable declarations, an exception - handler clause, or an entire exception handler (multiple clauses). - - - - - Recursively calculates the start and end of the given scope. - Only scopes with locals are actually dumped to the list. - - - - - Recursively calculates the start and end of the given scope. - Only scopes with locals are actually dumped to the list. - - - - - Free any basic blocks owned by this scope or sub-scopes. - - - - - Class that collects content of the scope (blocks, nested scopes, variables etc). - There is one for every opened scope. - - - - - A scope for a single try, catch, or finally clause. If the clause - is a catch clause, ExceptionType will be set. - - - - - A scope for an entire exception handler (a try block with either several - catches or a finally block). Unlike other scopes, this scope contains - nested scopes only, no IL blocks (although nested ExceptionHandlerScopes - for the clauses will contain IL blocks). - - - - - Compares scopes by their start (ascending) and then size (descending). - - - - - These opcodes represent control transfer. - They should not appear inside basic blocks. - - - - - Opcodes that represents a branch to a label. - - - - - Opcodes that represents a branch to a label. - - - - - Debug information maintained for each lambda. - - - The information is emitted to PDB in Custom Debug Information record for a method containing the lambda. - - - - - The syntax offset of the syntax node declaring the lambda (lambda expression) or its body (lambda in a query). - - - - - The ordinal of the closure frame the lambda belongs to, or - if the lambda is static, or - if the lambda is closed over "this" pointer only. - - - - - We need a CCI representation for local constants because they are emitted as locals in - PDB scopes to improve the debugging experience (see LocalScopeProvider.GetConstantsInScope). - - - - . - - - - Creates a new LocalDefinition. - - Local symbol, used by edit and continue only, null otherwise. - Name associated with the slot. - Type associated with the slot. - Slot position in the signature. - Contains the synthesized dynamic attributes of the local - Local kind. - Local id. - Value to emit in the attributes field in the PDB. - Specifies whether slot type should have pinned modifier and whether slot should have byref constraint. - Specifies if the type is Dynamic. - - - - At this level there are two kinds of local variables: - - - Locals - have identities by which consuming code refers to them. - Typical use is a local variable or a compiler generated temp that can be accessed in multiple operations. - Any object can be used as identity. Reference equality is used. - - - Temps - do not have identity. They are borrowed and returned to the free list. - Typical use is a scratch temporary or spilling storage. - - - - - - - Structure that represents a local signature (as in ECMA-335, Partition I, §8.6.1.3 Local signatures). - - - - - Retrieve a local slot by its symbol. - - - - - Release a local slot by its symbol. - Slot is not associated with symbol after this. - - - - - Gets a local slot. - - - - - Frees a local slot. - - - - - An expression that creates an array instance in metadata. Only for use in custom attributes. - - - - - The element type of the array. - - - - - The initial values of the array elements. May be empty. - - - - - An expression that represents a (name, value) pair and that is typically used in method calls, custom attributes and object initializers. - - - - - The name of the parameter or property or field that corresponds to the argument. - - - - - The value of the argument. - - - - - True if the named argument provides the value of a field. - - - - - An expression that results in a System.Type instance. - - - - - The type that will be represented by the System.Type instance. - - - - - Holds on to the method body data. - - - - - This is a list of the using directives that were in scope for this method body. - - - - - Unique identification of an emitted entity (method, lambda, closure) used for debugging purposes (EnC). - - - When used for a synthesized method the ordinal and generation numbers are included its name. - For user defined methods the ordinal is included in Custom Debug Information record attached to the method. - - - - - The index of the method in member list of the containing type, or if undefined. - - - - - The EnC generation the method was defined in (0 is the baseline build). - - - - - This class represents the PermissionSetAttribute specified in source which needs fixup during codegen. - - - PermissionSetAttribute needs fixup when it contains an assignment to the 'File' property as a single named attribute argument. - Fixup performed is ported from SecurityAttributes::FixUpPermissionSetAttribute at ndp\clr\src\vm\securityattributes.cpp. - It involves following steps: - 1) Verifying that the specified file name resolves to a valid path: This is done during binding. - 2) Reading the contents of the file into a byte array. - 3) Convert each byte in the file content into two bytes containing hexadecimal characters (see method ). - 4) Replacing the 'File = fileName' named argument with 'Hex = hexFileContent' argument, where hexFileContent is the converted output from step 3) above. - - - - - Zero or more positional arguments for the attribute constructor. - - - - - A reference to the constructor that will be used to instantiate this custom attribute during execution (if the attribute is inspected via Reflection). - - - - - Zero or more named arguments that specify values for fields and properties of the attribute. - - - - - The number of positional arguments. - - - - - The number of named arguments. - - - - - The type of the attribute. For example System.AttributeUsageAttribute. - - - - - Exception class to enable generating ERR_PermissionSetAttributeFileReadError while reading the file for PermissionSetAttribute fixup. - - - - - TypeDefinition that represents <PrivateImplementationDetails> class. - The main purpose of this class so far is to contain mapped fields and their types. - - - - - Simple struct type with explicit size and no members. - - - - - Definition of a simple field mapped to a metadata block - - - - - Just a default implementation of a type definition. - - - - - Represents a sequence point before translation by #line/ExternalSource directives. - - - - - Some features of the compiler (such as anonymous types, pay-as-you-go, NoPIA, ...) - rely on all referenced symbols to go through translate mechanism. Because by default - symbol translator does not translate some of indirectly referenced symbols, such as - type argument, we have to force translation here - - This class provides unified implementation for this functionality. - - - - - Scope of user-defined variable hoisted to state machine. - - - - - Maintains a list of sequence points in a space efficient way. Most of the time sequence points - occur in the same syntax tree, so optimize for that case. Store a sequence point as an offset, and - position in a syntax tree, then translate to CCI format only on demand. - - Use a ArrayBuilder{RawSequencePoint} to create. - - - - - Create a SequencePointList with the raw sequence points from an ArrayBuilder. - A linked list of instances for each syntax tree is created (almost always of length one). - - - - - Get all the sequence points, possibly mapping them using #line/ExternalSource directives, and mapping - file names to debug documents with the given mapping function. - - Function that maps file paths to CCI debug documents - - - - Represents the combination of an IL offset and a source text span. - - - - - Handles storage of strings referenced via tokens in metadata. When items are stored - they are uniquely "associated" with fake token, which is basically a sequential number. - IL gen will use these fake tokens during codegen and later, when actual token values - are known the method bodies will be patched. - To support these two scenarios we need two maps - Item-->uint, and uint-->Item. (the second is really just a list). - - - - - Class for emitting the switch jump table for switch statements with integral governing type - - - - - Switch key for the jump table - - - - - Primitive type of the switch key - - - - - Fall through label for the jump table - - - - - Integral case labels sorted and indexed by their ConstantValue - - - - - Try to merge with the nextBucket. - If merge results in a better bucket than two original ones, merge and return true. - Else don't merge and return false. - - - - - Switch key for the jump table - - - - - Switch case labels - - - - - Fall through label for the jump table - - - - - Delegate to emit string compare call and conditional branch based on the compare result. - - Key to compare - Case constant to compare the key against - Target label to branch to if key = stringConstant - - - - Delegate to compute string hash code. - This piece is language-specific because VB treats "" and null as equal while C# does not. - - - - - Delegate to emit string compare call - - - - - Delegate to emit string hash - - - - - Local storing the key hash value, used for emitting hash table based string switch. - - - - - Dispenser of unique ordinals for synthesized variable names that have the same kind and syntax offset. - - - - - Handles storage of items referenced via tokens in metadata (strings or Symbols). - When items are stored they are uniquely "associated" with fake token, which is basically - a sequential number. - IL gen will use these fake tokens during codegen and later, when actual token values are known - the method bodies will be patched. - To support these two scenarios we need two maps - Item-->uint, and uint-->Item. (the second is really just a list). - - - - - - Returns an index of a slot that stores specified hoisted local variable in the previous generation. - - - - - Number of slots reserved for hoisted local variables. - - - Some of the slots might not be used anymore (a variable might have been deleted or its type changed). - Still, new hoisted variables are assigned slots starting with . - - - - - Returns true and an index of a slot that stores an awaiter of a specified type in the previous generation, if any. - - - - - Number of slots reserved for awaiters. - - - Some of the slots might not be used anymore (the type of an awaiter might have changed). - Still, new awaiters are assigned slots starting with . - - - - - The id of the method, or null if the method wasn't assigned one. - - - - - Finds a closure in the previous generation that corresponds to the specified syntax. - - - See LambdaFrame.AssertIsLambdaScopeSyntax for kinds of syntax nodes that represent closures. - - - - - Finds a lambda in the previous generation that corresponds to the specified syntax. - The is either a lambda syntax ( is false), - or lambda body syntax ( is true). - - - - - A local whose type is represented by a metadata signature instead of a type symbol. - - - Used when emitting a new version of a method during EnC for variables that are no longer used. - - - - - This temp is not interesting to the expression compiler. However, it - may be replaced by an interesting local in a later stage. - - - - - Id that associates an emitted user-defined or long-lived synthesized local variable - with a syntax node that defined it. If a syntax node defines multiple variables it - provides information necessary to identify which one of these variables is it. - - - - - We calculate a "syntax offset" for each user-defined and long-lived synthesized variable. - Every such variable symbol has to be associated with a syntax node (its declarator). - In usual cases this is the textual distance of the declarator from the start of the method body. - It gets a bit complicated when the containing method body is not contiguous (constructors). - If the variable is in the body of the constructor the definition of syntax offset is the same. - If the variable is defined in a constructor initializer or in a member initializer - (this is only possible when declaration expressions or closures in primary constructors are involved) - then the distance is a negative sum of the widths of all the initializers that succeed the declarator - of the variable in the emitted constructor body plus the relative offset of the declarator from - the start of the containing initializer. - - - - - If a single node is a declarator for multiple variables of the same synthesized kind (it can only happen for synthesized variables) - we calculate additional number "ordinal" for such variable. We assign the ordinals to the synthesized variables with the same kind - and syntax offset in the order as they appear in the lowered bound tree. It is important that a valid EnC edit can't change - the ordinal of a synthesized variable. If it could it would need to be assigned a different kind or associated with a different declarator node. - - - - - Driver to execute diagnostic analyzers for a given compilation. - It uses a of s to drive its analysis. - - - - - Cached semantic model for the compilation trees. - PERF: This cache enables us to re-use semantic model's bound node cache across analyzer execution and diagnostic queries. - - - - - Cached syntax references for a symbol for the lifetime of symbol declared event. - PERF: This cache reduces allocations for computing declaring syntax references for a symbol. - - - - - GetSyntax() for the given SyntaxReference. - - - - - Topmost declaration node for analysis. - - - - - All member declarations within the declaration. - - - - - All descendant nodes for syntax node actions. - - - - - Flag indicating if this is a partial analysis. - - - - - Driver task which initializes all analyzers. - This task is initialized and executed only once at start of analysis. - - - - - Flag to indicate if the was successfully started. - - - - - Primary driver task which processes all events, runs analyzer actions and signals completion of at the end. - - - - - Number of worker tasks processing compilation events and executing analyzer actions. - - - - - Events queue for analyzer execution. - - - - - that is fed the diagnostics as they are computed. - - - - - Create an analyzer driver. - - The set of analyzers to include in the analysis - AnalyzerManager to manage analyzers for analyzer host's lifetime. - - - - Initializes the and related actions maps for the analyzer driver. - It kicks off the task for initialization. - Note: This method must be invoked exactly once on the driver. - - - - - Attaches a pre-populated event queue to the driver and processes all events in the queue. - - Compilation events to analyze. - Scope of analysis. - An optional object to track partial analysis state. - Cancellation token to abort analysis. - Driver must be initialized before invoking this method, i.e. method must have been invoked and must be non-null. - - - - Attaches event queue to the driver and start processing all events pertaining to the given analysis scope. - - Compilation events to analyze. - Scope of analysis. - Cancellation token to abort analysis. - Driver must be initialized before invoking this method, i.e. method must have been invoked and must be non-null. - - - - Create an and attach it to the given compilation. - - The compilation to which the new driver should be attached. - The set of analyzers to include in the analysis. - Options that are passed to analyzers. - AnalyzerManager to manage analyzers for the lifetime of analyzer host. - Delegate to add diagnostics generated for exceptions from third party analyzers. - Report additional information related to analyzers, such as analyzer execution time. - The new compilation with the analyzer driver attached. - A cancellation token that can be used to abort analysis. - A newly created analyzer driver - - Note that since a compilation is immutable, the act of creating a driver and attaching it produces - a new compilation. Any further actions on the compilation should use the new compilation. - - - - - Returns all diagnostics computed by the analyzers since the last time this was invoked. - If has been completed with all compilation events, then it waits for - task for the driver to finish processing all events and generate remaining analyzer diagnostics. - - - - - Return a task that completes when the driver is initialized. - - - - - Return a task that completes when the driver is done producing diagnostics. - - - - - Returns true if all the diagnostics that can be produced by this analyzer are suppressed through options. - - - - - Contains information about the source of diagnostic suppression. - - - - - of the suppressed diagnostic. - - - - - If the diagnostic was suppressed by an attribute, then returns that attribute. - Otherwise, returns null. - - - - - Stores the results of analyzer execution: - 1. Local and non-local diagnostics, per-analyzer. - 2. Analyzer execution times, if requested. - - - - - Scope for analyzer execution. - This scope could either be the entire compilation for all analyzers (command line build) or - could be scoped to a specific tree/span and/or a subset of analyzers (CompilationWithAnalyzers). - - - - - Syntax trees on which we need to perform syntax analysis. - - - - - True if we need to categorize diagnostics into local and non-local diagnostics and track the analyzer reporting each diagnostic. - - - - - True if we need to perform only syntax analysis for a single tree. - - - - - True if we need to perform analysis for a single tree. - - - - - Stores the partial analysis state for analyzers executed on a specific compilation. - - - Stores the current partial analysis state for an analyzer. - - - - - Stores the partial analysis state for a specific event/symbol/tree for a specific analyzer. - - - - - Current state of analysis. - - - - - Set of completed actions. - - - - - Resets the from to . - This method must be invoked after successful analysis completion AND on analysis cancellation. - - - - - Per-analyzer analysis state map. - The integer value points to the index within the array. - - - - - Per-analyzer analysis state. - - - - - Compilation events corresponding to source tree, that are not completely processed for all analyzers. - Events are dropped as and when they are fully processed by all analyzers. - - - - - Compilation events corresponding to the compilation (compilation start and completed events), that are not completely processed for all analyzers. - - - - - Action counts per-analyzer. - - - - - Cached semantic model for the compilation trees. - PERF: This cache enables us to re-use semantic model's bound node cache across analyzer execution and diagnostic queries. - - - - - Invoke this method at completion of event processing for the given analysis scope. - It updates the analysis state of this event for each analyzer and if the event has been fully processed for all analyzers, then removes it from our event cache. - - - - - Gets pending events for given set of analyzers for the given syntax tree. - - - - - Gets pending events for given set of analyzers for the given syntax tree. - - - - - Gets all pending events for given set of analyzers. - - - Indicates if source events (symbol declared, compilation unit completed event) should be included. - Indicates if compilation wide events (compilation started and completed event) should be included. - - - - Returns true if we have any pending syntax analysis for given analysis scope. - - - - - Returns true if we have any pending symbol analysis for given analysis scope. - - - - - Attempts to start processing a compilation event for the given analyzer. - - - Returns false if the event has already been processed for the analyzer OR is currently being processed by another task. - If true, then it returns a non-null representing partial analysis state for the given event for the given analyzer. - - - - - Marks the given event as fully analyzed for the given analyzer. - - - - - Attempts to start processing a symbol for the given analyzer's symbol actions. - - - Returns false if the symbol has already been processed for the analyzer OR is currently being processed by another task. - If true, then it returns a non-null representing partial analysis state for the given symbol for the given analyzer. - - - - - Marks the given symbol as fully analyzed for the given analyzer. - - - - - Attempts to start processing a symbol declaration for the given analyzer's syntax node and code block actions. - - - Returns false if the declaration has already been processed for the analyzer OR is currently being processed by another task. - If true, then it returns a non-null representing partial analysis state for the given declaration for the given analyzer. - - - - - True if the given symbol declaration is fully analyzed. - - - - - Marks the given symbol declaration as fully analyzed for the given analyzer. - - - - - Marks all the symbol declarations for the given symbol as fully analyzed for all the given analyzers. - - - - - Attempts to start processing a syntax tree for the given analyzer's syntax tree actions. - - - Returns false if the tree has already been processed for the analyzer OR is currently being processed by another task. - If true, then it returns a non-null representing partial syntax analysis state for the given tree for the given analyzer. - - - - - Marks the given tree as fully syntactically analyzed for the given analyzer. - - - - - State kind of per-analyzer tracking an analyzer's partial analysis state. - An analysis state object can be in one of the following states: - 1. Completely unprocessed: - 2. Currently being processed: - 3. Partially processed by one or more older requests that was either completed or cancelled: - 4. Fully processed: We don't need a state kind to represent fully processed state as the analysis state object is discarded once fully processed. - - - - - Ready for processing. - Indicates it is either completely unprocessed or partially processed by one or more older requests that was either completed or cancelled. - - - - - Currently being processed. - - - - - Stores the partial analysis state for a specific symbol declaration for a specific analyzer. - - - - - Partial analysis state for code block actions executed on the declaration. - - - - - Stores the partial analysis state for syntax node actions executed on the declaration. - - - - - Stores the partial analysis state for code block actions executed on the declaration. - - - - - Contains telemetry info for a specific analyzer, such as count of registered actions, the total execution time, etc. - - - - - Count of registered compilation start actions. - - - - - Count of registered compilation end actions. - - - - - Count of registered compilation actions. - - - - - Count of registered syntax tree actions. - - - - - Count of registered semantic model actions. - - - - - Count of registered symbol actions. - - - - - Count of registered syntax node actions. - - - - - Count of registered code block start actions. - - - - - Count of registered code block end actions. - - - - - Count of registered code block actions. - - - - - Total execution time. - - - - - Contains the counts of registered actions for an analyzer. - - - - - Count of registered compilation start actions. - - - - - Count of registered compilation end actions. - - - - - Count of registered compilation actions. - - - - - Count of registered syntax tree actions. - - - - - Count of registered semantic model actions. - - - - - Count of registered symbol actions. - - - - - Count of registered syntax node actions. - - - - - Count of code block start actions. - - - - - Count of code block end actions. - - - - - Count of code block actions. - - - - - Contains the core execution logic for callbacks into analyzers. - - - - - Creates to execute analyzer actions with given arguments - - Compilation to be used in the analysis. - Analyzer options. - Delegate to add analyzer diagnostics. - - Optional delegate which is invoked when an analyzer throws an exception. - Delegate can do custom tasks such as report the given analyzer exception diagnostic, report a non-fatal watson for the exception, etc. - - Delegate to determine if the given analyzer is compiler analyzer. - We need to special case the compiler analyzer at few places for performance reasons. - Analyzer manager to fetch supported diagnostics. - - Delegate to fetch the gate object to guard all callbacks into the analyzer. - It should return a unique gate object for the given analyzer instance for non-concurrent analyzers, and null otherwise. - All analyzer callbacks for non-concurrent analyzers will be guarded with a lock on the gate. - - Flag indicating whether we need to log analyzer execution time. - Optional delegate to add local analyzer diagnostics. - Optional delegate to add non-local analyzer diagnostics. - Cancellation token. - - - - Creates to fetch . - - - Optional delegate which is invoked when an analyzer throws an exception. - Delegate can do custom tasks such as report the given analyzer exception diagnostic, report a non-fatal watson for the exception, etc. - - Analyzer manager to fetch supported diagnostics. - Flag indicating whether we need to log analyzer execution time. - Cancellation token. - - - - Executes the for the given analyzer. - - Analyzer to get session wide analyzer actions. - Session scope to store register session wide analyzer actions. - - Note that this API doesn't execute any registered by the Initialize invocation. - Use API - to get execute these actions to get the per-compilation analyzer actions. - - - - - Executes the compilation start actions. - - whose compilation start actions are to be executed. - Compilation scope to store the analyzer actions. - - - - Executes compilation actions or compilation end actions. - - Compilation actions to be executed. - Analyzer whose actions are to be executed. - Compilation event. - Scope for analyzer execution. - An optional object to track analysis state. - - - - Executes the symbol actions on the given symbol. - - Symbol actions to be executed. - Analyzer whose actions are to be executed. - Symbol to be analyzed. - Delegate to get topmost declaration node for a symbol declaration reference. - Scope for analyzer execution. - An optional object to track analysis state. - - - - Executes the semantic model actions on the given semantic model. - - Semantic model actions to be executed. - Analyzer whose actions are to be executed. - Semantic model to analyze. - Compilation event for semantic model analysis. - Scope for analyzer execution. - An optional object to track analysis state. - - - - Executes the syntax tree actions on the given syntax tree. - - Syntax tree actions to be executed. - Analyzer whose actions are to be executed. - Syntax tree to analyze. - Scope for analyzer execution. - An optional object to track analysis state. - - - - Manages properties of analyzers (such as registered actions, supported diagnostics) for analyzer host's lifetime - and executes the callbacks into the analyzers. - - It ensures the following for the lifetime of analyzer host: - 1) is invoked only once per-analyzer. - 2) is invoked only once per-analyzer. - 3) registered during Initialize are invoked only once per-compilation per- - - - TODO: Consider moving and relevant APIs - out of the AnalyzerManager and into analyzer drivers. - - - - - Gets the default instance of the AnalyzerManager for the lifetime of the analyzer host process. - - - - - Cache descriptors for each diagnostic analyzer. We do this since is - a property rather than metadata. We expect it to be cheap and immutable, but we can't force them to be so, we cache them - and ask only once. - - - - - Get all the analyzer actions to execute for the given analyzer against a given compilation. - The returned actions include the actions registered during method as well as - the actions registered during for the given compilation. - - - - - Return of given . - - - - - This method should be invoked when the analyzer host is disposing off the analyzers. - It unregisters the exception handler hooked up to the descriptors' LocalizableString fields and subsequently removes the cached descriptors for the analyzers. - - - - - Returns true if all the diagnostics that can be produced by this analyzer are suppressed through options. - - - - - The last event placed into a compilation's event queue. - - - - - Flush any cached data in this to minimize space usage (at the possible expense of time later). - The principal effect of this is to free cached information on events that have a . - - - - - The first event placed into a compilation's event queue. - - - - - Options to configure analyzer execution within . - - - - - Options passed to s. - - - - - An optional delegate to be invoked when an analyzer throws an exception. - - - - - Flag indicating whether analysis can be performed concurrently on multiple threads. - - - - - Flag indicating whether analyzer execution time should be logged. - - - - - Flag indicating whether analyzer diagnostics with should be reported. - - - - - Creates a new . - - Options that are passed to analyzers. - Action to invoke if an analyzer throws an exception. - Flag indicating whether analysis can be performed concurrently on multiple threads. - Flag indicating whether analyzer execution time should be logged. - - - - Creates a new . - - Options that are passed to analyzers. - Action to invoke if an analyzer throws an exception. - Flag indicating whether analysis can be performed concurrently on multiple threads. - Flag indicating whether analyzer execution time should be logged. - Flag indicating whether analyzer diagnostics with should be reported. - - - - Queue to store analyzer diagnostics on the . - - - - - Simple diagnostics queue: maintains all diagnostics reported by all analyzers in a single queue. - - - - - Categorized diagnostics queue: maintains separate set of simple diagnostic queues for local semantic, local syntax and non-local diagnostics for every analyzer. - - - - - Scope for setting up analyzers for an entire session, automatically associating actions with analyzers. - - - - - Scope for setting up analyzers for a compilation, automatically associating actions with analyzers. - - - - - Scope for setting up analyzers for a code block, automatically associating actions with analyzers. - - - - - Scope for setting up analyzers for an entire session, capable of retrieving the actions. - - - - - Scope for setting up analyzers for a compilation, capable of retrieving the actions. - - - - - Scope for setting up analyzers for a code block, capable of retrieving the actions. - - - - - Actions registered by a particular analyzer. - - - - - Append analyzer actions from to actions from this instance. - - Analyzer actions to append. - - - - An event for each declaration in the program (namespace, type, method, field, parameter, etc). - Note that some symbols may have multiple declarations (namespaces, partial types) and may therefore - have multiple events. - - - - - Lockable object only instance is knowledgeable about. - - - - - Represents analyzers stored in an analyzer assembly file. - - - Analyzer are read from the file, owned by the reference, and doesn't change - since the reference is accessed until the reference object is garbage collected. - - If you need to manage the lifetime of the analyzer reference (and the file stream) explicitly use . - - - - - Creates an AnalyzerFileReference with the given and . - - Full path of the analyzer assembly. - Loader for obtaining the from the - - - - Adds the of of - for all languages defined in this assembly reference. - - - - - Adds the of defined in this assembly reference of given . - - - - - Opens the analyzer dll with the metadata reader and builds a map of language -> analyzer type names. - - The PE image format is invalid. - IO error reading the metadata. - - - - If a specific analyzer failed to load the namespace-qualified name of its type, null otherwise. - - - - - Error message. - - - - - Error code. - - - - - Exception that was thrown while loading the analyzer. May be null. - - - - - DiagnosticAnalyzer for compiler's syntax/semantic/compilation diagnostics. - - - - - Per-compilation DiagnosticAnalyzer for compiler's syntax/semantic/compilation diagnostics. - - - - - Driver to execute diagnostic analyzers for a given compilation. - It uses a of s to drive its analysis. - - - - - Create an analyzer driver. - - The set of analyzers to include in the analysis - A delegate that returns the language-specific kind for a given syntax node - AnalyzerManager to manage analyzers for the lifetime of analyzer host. - - - - Represents an in-memory analyzer reference image. - - - - - Options passed to . - - - - - A set of additional non-code text files that can be used by analyzers. - - - - - Creates analyzer options to be passed to . - - A set of additional non-code text files that can be used by analyzers. - - - - Returns analyzer options with the given . - - - - - Represents an analyzer assembly reference that contains diagnostic analyzers. - - - Represents a logical location of the analyzer reference, not the content of the reference. - The content might change in time. A snapshot is taken when the compiler queries the reference for its analyzers. - - - - - Full path describing the location of the analyzer reference, or null if the reference has no location. - - - - - Path or name used in error messages to identity the reference. - - - Should not be null. - - - - - A unique identifier for this analyzer reference. - - - Should not be null. - Note that this and serve different purposes. An analyzer reference may not - have a path, but it always has an ID. Further, two analyzer references with different paths may - represent two copies of the same analyzer, in which case the IDs should also be the same. - - - - - Gets all the diagnostic analyzers defined in this assembly reference, irrespective of the language supported by the analyzer. - Use this method only if you need all the analyzers defined in the assembly, without a language context. - In most instances, either the analyzer reference is associated with a project or is being queried for analyzers in a particular language context. - If so, use method. - - - - - Gets all the diagnostic analyzers defined in this assembly reference for the given . - - Language name. - - - - Pool of s used for analyzer execution. - - - - - Contains the partial analysis state per-analyzer. It tracks: - 1. Global set of pending compilation events. This is used to populate the event queue for analyzer execution. - 2. Per-analyzer set of pending compilation events, symbols, declarations, etc. Each of these pending entities has a state object to track partial analysis. - - - - - Cache of the current analysis results: - 1. Local and non-local diagnostics. - 2. Analyzer execution times, if is true. - - - - - Set of exception diagnostics reported for exceptions thrown by the analyzers. - - - - - Lock to track the set of active tasks computing tree diagnostics and task computing compilation diagnostics. - - - - - Used to generate a unique token for each tree diagnostics request. - The token is used to determine the priority of each request. - Each new tree diagnostic request gets an incremented token value and has higher priority over other requests for the same tree. - Compilation diagnostics requests always have the lowest priority. - - - - - Map from active tasks computing tree diagnostics to their token number. - - - - - Pool of event queues to serve each diagnostics request. - - - - - Underlying with a non-null , used to drive analyzer execution. - - - - - Analyzers to execute on the compilation. - - - - - Options to configure analyzer execution. - - - - - An optional cancellation token which can be used to cancel analysis. - Note: This token is only used if the API invoked to get diagnostics doesn't provide a cancellation token. - - - - - Creates a new compilation by attaching diagnostic analyzers to an existing compilation. - - The original compilation. - The set of analyzers to include in future analyses. - Options that are passed to analyzers. - A cancellation token that can be used to abort analysis. - - - - Creates a new compilation by attaching diagnostic analyzers to an existing compilation. - - The original compilation. - The set of analyzers to include in future analyses. - Options to configure analyzer execution. - - - - Returns diagnostics produced by all . - - - - - Returns diagnostics produced by all . - - - - - Returns diagnostics produced by given . - - Analyzers whose diagnostics are required. All the given analyzers must be from the analyzers passed into the constructor of . - Cancellation token. - - - - Returns all diagnostics produced by compilation and by all . - - - - - Returns all diagnostics produced by compilation and by all . - - - - - Returns diagnostics produced by compilation actions of all . - - - - - Returns diagnostics produced by compilation actions of given . - - Analyzers whose diagnostics are required. All the given analyzers must be from the analyzers passed into the constructor of . - Cancellation token. - - - - Returns syntax diagnostics produced by all from analyzing the given . - Depending on analyzers' behavior, returned diagnostics can have locations outside the tree, - and some diagnostics that would be reported for the tree by an analysis of the complete compilation - can be absent. - - Syntax tree to analyze. - Cancellation token. - - - - Returns syntax diagnostics produced by given from analyzing the given . - Depending on analyzers' behavior, returned diagnostics can have locations outside the tree, - and some diagnostics that would be reported for the tree by an analysis of the complete compilation - can be absent. - - Syntax tree to analyze. - Analyzers whose diagnostics are required. All the given analyzers must be from the analyzers passed into the constructor of . - Cancellation token. - - - - Returns semantic diagnostics produced by all from analyzing the given , optionally scoped to a . - Depending on analyzers' behavior, returned diagnostics can have locations outside the tree, - and some diagnostics that would be reported for the tree by an analysis of the complete compilation - can be absent. - - Semantic model representing the syntax tree to analyze. - An optional span within the tree to scope analysis. - Cancellation token. - - - - Returns semantic diagnostics produced by all from analyzing the given , optionally scoped to a . - Depending on analyzers' behavior, returned diagnostics can have locations outside the tree, - and some diagnostics that would be reported for the tree by an analysis of the complete compilation - can be absent. - - Semantic model representing the syntax tree to analyze. - An optional span within the tree to scope analysis. - Analyzers whose diagnostics are required. All the given analyzers must be from the analyzers passed into the constructor of . - Cancellation token. - - - - Core method for executing analyzers. - - - - - Given a set of compiler or generated , returns the effective diagnostics after applying the below filters: - 1) specified for the given . - 2) specified for the given . - 3) Diagnostic suppression through applied . - 4) Pragma directives for the given . - - - - - Returns true if all the diagnostics that can be produced by this analyzer are suppressed through options. - Analyzer to be checked for suppression. - Compilation options. - - Optional delegate which is invoked when an analyzer throws an exception. - Delegate can do custom tasks such as report the given analyzer exception diagnostic, report a non-fatal watson for the exception, etc. - - - - - - This method should be invoked when the analyzer host is disposing off the given . - It clears the cached internal state (supported descriptors, registered actions, exception handlers, etc.) for analyzers. - - Analyzers whose state needs to be cleared. - - - - Gets telemetry info for the given analyzer, such as count of registered actions, the total execution time (if is true), etc. - - - - - Gets the count of registered actions for the analyzer. - - - - - Gets the execution time for the given analyzer. - - - - - Returns a new compilation with attached diagnostic analyzers. - - Compilation to which analyzers are to be added. - The set of analyzers to include in future analyses. - Options that are passed to analyzers. - A cancellation token that can be used to abort analysis. - - - - Returns a new compilation with attached diagnostic analyzers. - - Compilation to which analyzers are to be added. - The set of analyzers to include in future analyses. - Options to configure analyzer execution within . - - - - Represents an analyzer reference that can't be resolved. - - - For error reporting only, can't be used to reference an analyzer assembly. - - - - - Context for initializing an analyzer. - Analyzer initialization can use an to register actions to be executed at any of: - - - compilation start, - - - compilation end, - - - completion of parsing a code document, - - - completion of semantic analysis of a code document, - - - completion of semantic analysis of a symbol, - - - start of semantic analysis of a method body or an expression appearing outside a method body, - - - completion of semantic analysis of a method body or an expression appearing outside a method body, or - - - completion of semantic analysis of a syntax node. - - - - - - - Register an action to be executed at compilation start. - A compilation start action can register other actions and/or collect state information to be used in diagnostic analysis, - but cannot itself report any s. - - Action to be executed at compilation start. - - - - Register an action to be executed for a complete compilation. - A compilation action reports s about the . - - Action to be executed at compilation end. - - - - Register an action to be executed at completion of semantic analysis of a document, - which will operate on the of the document. A semantic model action - reports s about the model. - - Action to be executed for a document's . - - - - Register an action to be executed at completion of semantic analysis of an with an appropriate Kind.> - A symbol action reports s about s. - - Action to be executed for an . - Action will be executed only if an 's Kind matches one of the values. - - - - Register an action to be executed at completion of semantic analysis of an with an appropriate Kind.> - A symbol action reports s about s. - - Action to be executed for an . - Action will be executed only if an 's Kind matches one of the values. - - - - Register an action to be executed at the start of semantic analysis of a method body or an expression appearing outside a method body. - A code block start action can register other actions and/or collect state information to be used in diagnostic analysis, - but cannot itself report any s. - - Enum type giving the syntax node kinds of the source language for which the action applies. - Action to be executed at the start of semantic analysis of a code block. - - - - Register an action to be executed after semantic analysis of a method body or an expression appearing outside a method body. - A code block action reports s about code blocks. - - Action to be executed for a code block. - - - - Register an action to be executed at completion of parsing of a code document. - A syntax tree action reports s about the of a document. - - Action to be executed at completion of parsing of a document. - - - - Register an action to be executed at completion of semantic analysis of a with an appropriate Kind. - A syntax node action can report s about s, and can also collect - state information to be used by other syntax node actions or code block end actions. - - Enum type giving the syntax node kinds of the source language for which the action applies. - Action to be executed at completion of semantic analysis of a . - Action will be executed only if a 's Kind matches one of the syntax kind values. - - - - Register an action to be executed at completion of semantic analysis of a with an appropriate Kind. - A syntax node action can report s about s, and can also collect - state information to be used by other syntax node actions or code block end actions. - - Enum type giving the syntax node kinds of the source language for which the action applies. - Action to be executed at completion of semantic analysis of a . - Action will be executed only if a 's Kind matches one of the syntax kind values. - - - - Context for a compilation start action. - A compilation start action can use a to register actions to be executed at any of: - - - compilation end, - - - completion of parsing a code document, - - - completion of semantic analysis of a code document, - - - completion of semantic analysis of a symbol, - - - start of semantic analysis of a method body or an expression appearing outside a method body, - - - completion of semantic analysis of a method body or an expression appearing outside a method body, or - - - completion of semantic analysis of a syntax node. - - - - - - - that is the subject of the analysis. - - - - - Options specified for the analysis. - - - - - Token to check for requested cancellation of the analysis. - - - - - Register an action to be executed at compilation end. - A compilation end action reports s about the . - - Action to be executed at compilation end. - - - - Register an action to be executed at completion of semantic analysis of a document, - which will operate on the of the document. A semantic model action - reports s about the model. - - Action to be executed for a document's . - - - - Register an action to be executed at completion of semantic analysis of an with an appropriate Kind.> - A symbol action reports s about s. - - Action to be executed for an . - Action will be executed only if an 's Kind matches one of the values. - - - - Register an action to be executed at completion of semantic analysis of an with an appropriate Kind.> - A symbol action reports s about s. - - Action to be executed for an . - Action will be executed only if an 's Kind matches one of the values. - - - - Register an action to be executed at the start of semantic analysis of a method body or an expression appearing outside a method body. - A code block start action can register other actions and/or collect state information to be used in diagnostic analysis, - but cannot itself report any s. - - Enum type giving the syntax node kinds of the source language for which the action applies. - Action to be executed at the start of semantic analysis of a code block. - - - - Register an action to be executed at the end of semantic analysis of a method body or an expression appearing outside a method body. - A code block action reports s about code blocks. - - Action to be executed for a code block. - - - - Register an action to be executed at completion of parsing of a code document. - A syntax tree action reports s about the of a document. - - Action to be executed at completion of parsing of a document. - - - - Register an action to be executed at completion of semantic analysis of a with an appropriate Kind. - A syntax node action can report s about s, and can also collect - state information to be used by other syntax node actions or code block end actions. - - Enum type giving the syntax node kinds of the source language for which the action applies. - Action to be executed at completion of semantic analysis of a . - Action will be executed only if a 's Kind matches one of the syntax kind values. - - - - Register an action to be executed at completion of semantic analysis of a with an appropriate Kind. - A syntax node action can report s about s, and can also collect - state information to be used by other syntax node actions or code block end actions. - - Enum type giving the syntax node kinds of the source language for which the action applies. - Action to be executed at completion of semantic analysis of a . - Action will be executed only if a 's Kind matches one of the syntax kind values. - - - - Context for a compilation action or compilation end action. - A compilation action or compilation end action can use a to report s about a . - - - - - that is the subject of the analysis. - - - - - Options specified for the analysis. - - - - - Token to check for requested cancellation of the analysis. - - - - - Report a about a . - - to be reported. - - - - Context for a semantic model action. - A semantic model action operates on the of a code document, and can use a to report s about the model. - - - - - that is the subject of the analysis. - - - - - Options specified for the analysis. - - - - - Token to check for requested cancellation of the analysis. - - - - - Report a about a . - - to be reported. - - - - Context for a symbol action. - A symbol action can use a to report s about an . - - - - - that is the subject of the analysis. - - - - - containing the . - - - - - Options specified for the analysis. - - - - - Token to check for requested cancellation of the analysis. - - - - - Report a about an . - - to be reported. - - - - Context for a code block start action. - A code block start action can use a to register actions to be executed - at any of: - - - completion of semantic analysis of a method body or an expression appearing outside a method body, or - - - completion of semantic analysis of a syntax node. - - - - - - - Method body or expression subject to analysis. - - - - - for which the code block provides a definition or value. - - - - - that can provide semantic information about the s in the code block. - - - - - Options specified for the analysis. - - - - - Token to check for requested cancellation of the analysis. - - - - - Register an action to be executed at the end of semantic analysis of a method body or an expression appearing outside a method body. - A code block end action reports s about code blocks. - - Action to be executed at the end of semantic analysis of a code block. - - - - Register an action to be executed at completion of semantic analysis of a with an appropriate Kind. - A syntax node action can report s about s, and can also collect - state information to be used by other syntax node actions or code block end actions. - - Action to be executed at completion of semantic analysis of a . - Action will be executed only if a 's Kind matches one of the syntax kind values. - - - - Register an action to be executed at completion of semantic analysis of a with an appropriate Kind. - A syntax node action can report s about s, and can also collect - state information to be used by other syntax node actions or code block end actions. - - Action to be executed at completion of semantic analysis of a . - Action will be executed only if a 's Kind matches one of the syntax kind values. - - - - Context for a code block action or code block end action. - A code block action or code block end action can use a to report s about a code block. - - - - - Code block that is the subject of the analysis. - - - - - for which the code block provides a definition or value. - - - - - that can provide semantic information about the s in the code block. - - - - - Options specified for the analysis. - - - - - Token to check for requested cancellation of the analysis. - - - - - Report a about a code block. - - to be reported. - - - - Context for a syntax tree action. - A syntax tree action can use a to report s about a for a code document. - - - - - that is the subject of the analysis. - - - - - Options specified for the analysis. - - - - - Token to check for requested cancellation of the analysis. - - - - - Report a about a . - - to be reported. - - - - Context for a syntax node action. - A syntax node action can use a to report s for a . - - - - - that is the subject of the analysis. - - - - - that can provide semantic information about the . - - - - - Options specified for the analysis. - - - - - Token to check for requested cancellation of the analysis. - - - - - Report a about a . - - to be reported. - - - - The base type for diagnostic analyzers. - - - - - Returns a set of descriptors for the diagnostics that this analyzer is capable of producing. - - - - - Called once at session start to register actions in the analysis context. - - - - - - A queue whose enqueue and dequeue operations can be performed in parallel. - - The type of values kept by the queue. - - - - The number of unconsumed elements in the queue. - - - - - Adds an element to the tail of the queue. This method will throw if the queue - is completed. - - The queue is already completed. - The value to add. - - - - Tries to add an element to the tail of the queue. This method will return false if the queue - is completed. - - The value to add. - - - - Attempts to dequeue an existing item and return whether or not it was available. - - - - - Gets a value indicating whether the queue has completed. - - - - - Signals that no further elements will be enqueued. All outstanding and future - Dequeue Task will be cancelled. - - The queue is already completed. - - - - Same operation as except it will not - throw if the queue is already completed. - - Whether or not the operation succeeded. - - - - Gets a task that transitions to a completed state when or - is called. This transition will not happen synchronously. - - This Task will not complete until it has completed all existing values returned - from . - - - - - Gets a task whose result is the element at the head of the queue. If the queue - is empty, the returned task waits for an element to be enqueued. If - is called before an element becomes available, the returned task is cancelled. - - - - - - Note: The early cancellation behavior is intentional. - - - - - Place this attribute onto a type to cause it to be considered a diagnostic analyzer. - - - - - The source languages to which this analyzer applies. See . - - - - - Attribute constructor used to specify automatic application of a diagnostic analyzer. - - One language to which the analyzer applies. - Additional languages to which the analyzer applies. See . - - - - A set of utilities for converting from a decimal floating-point literal string to its IEEE float - or double representation, which coniders all digits signficant and correctly rounds according to - the IEEE round-to-nearest-ties-to-even mode. This code does not support a leading sign character, - as that is not part of the C# or VB floating-point literal lexical syntax. - - If you change this code, please run the set of long-running random tests in the solution - RandomRealParserTests.sln. That solution is not included in Roslyn.sln as it is Windows-specific. - - - - - Try parsing a correctly-formatted double floating-point literal into the nearest representable double - using IEEE round-to-nearest-ties-to-even rounding mode. Behavior is not defined for inputs that are - not valid C# floating-point literals. - - The decimal floating-point constant's string - The nearest double value, if conversion succeeds - True of the input was converted; false if there was an overflow - - - - Try parsing a correctly-formatted float floating-point literal into the nearest representable float - using IEEE round-to-nearest-ties-to-even rounding mode. Behavior is not defined for inputs that are - not valid C# floating-point literals. - - The float floating-point constant's string - The nearest float value, if conversion succeeds - True of the input was converted; false if there was an overflow - - - - Properties of an IEEE floating-point representation. - - - - - Converts the floating point value 0.mantissa * 2^exponent into the - correct form for the FloatingPointType and stores the bits of the resulting value - into the result object. - The caller must ensure that the mantissa and exponent are correctly computed - such that either [1] the most significant bit of the mantissa is in the - correct position for the FloatingType, or [2] the exponent has been correctly - adjusted to account for the shift of the mantissa that will be required. - - This function correctly handles range errors and stores a zero or infinity in - the result object on underflow and overflow errors, respectively. This - function correctly forms denormal numbers when required. - - If the provided mantissa has more bits of precision than can be stored in the - result object, the mantissa is rounded to the available precision. Thus, if - possible, the caller should provide a mantissa with at least one more bit of - precision than is required, to ensure that the mantissa is correctly rounded. - (The caller should not round the mantissa before calling this function.) - - The bits of the mantissa - The exponent - Whether there are any nonzero bits past the supplied mantissa - Where the bits of the floating-point number are stored - A status indicating whether the conversion succeeded and why - - - - Properties of a C# float. - - - - - Properties of a C# double. - - - - - This type is used to hold a partially-parsed string representation of a - floating point number. The number is stored in the following form: -
-                0.Mantissa * 10^Exponent
-             
- The Mantissa buffer stores the mantissa digits as characters in a string. - The MantissaCount gives the number of digits present in the Mantissa buffer. - There shall be neither leading nor trailing zero digits in the Mantissa. - Note that this represents only nonnegative floating-point literals; the - negative sign in C# and VB is actually a separate unary negation operator. -
-
- - - Create a DecimalFloatingPointString from a string representing a floating-point literal. - - The text of the floating-point literal - - - - Convert a DecimalFloatingPointString to the bits of the given floating-point type. - - - - - This function is part of the fast track for integer floating point strings. - It takes an integer stored as an array of bytes (lsb first) and converts the value into its FloatingType - representation, storing the bits into "result". If the value is not - representable, +/-infinity is stored and overflow is reported (since this - function only deals with integers, underflow is impossible). - - the bits of the integer, least significant bits first - the number of bits of precision in integerValueAsBytes - whether there are nonzero digits after the decimal - the kind of real number to build - the result - An indicator of the kind of result - - - - Parse a sequence of digits into a BigInteger. - - The DecimalFloatingPointString containing the digits in its Mantissa - The index of the first digit to convert - The index just past the last digit to convert - The BigInteger result - - - - Return the number of significant bits set. - - - - - Return the number of significant bits set. - - - - - Return the number of significant bits set. - - - - - Return the number of significant bits set. - - - - - Computes value / 2^shift, then rounds the result according to the current - rounding mode. By the time we call this function, we will already have - discarded most digits. The caller must pass true for has_zero_tail if - all discarded bits were zeroes. - - The value to shift - The amount of shift - Whether there are any less significant nonzero bits in the value - - - - - Determines whether a mantissa should be rounded up in the - round-to-nearest-ties-to-even mode given [1] the value of the least - significant bit of the mantissa, [2] the value of the next bit after - the least significant bit (the "round" bit) and [3] whether any - trailing bits after the round bit are set. - - The mantissa is treated as an unsigned integer magnitude. - - For this function, "round up" is defined as "increase the magnitude" of the - mantissa. - - the least-significant bit of the representable value - the bit following the least-significant bit - true if there are any (less significant) bits set following roundBit - - - - - Multiply a BigInteger by the given power of two. - - The BigInteger to multiply by a power of two and replace with the product - The power of two to multiply it by - - - - Multiply a BigInteger by the given power of ten. - - The BigInteger to multiply by a power of ten and replace with the product - The power of ten to multiply it by - - - - Convert a float value to the bits of its representation - - - - - Convert the bits of its representation to a float - - - - - A union used to convert between a float and the bits of its representation - - - - - Adds aliases of a specified reference to the merged set of aliases. - Consider the following special cases: - - o {} + {} = {} - If neither reference has any aliases then the result has no aliases. - - o {A} + {} = {A, global} - {} + {A} = {A, global} - - If one and only one of the references has aliases we add the global alias since the - referenced declarations should now be accessible both via existing aliases - as well as unqualified. - - o {A, A} + {A, B, B} = {A, A, B, B} - We preserve dups in each alias array, but avoid making more dups when merging. - - - - - Defines a set of helper methods to classify Unicode characters. - - - - - Returns true if the Unicode character can be a part of an identifier. - - The Unicode character. - - - - Check that the name is a valid Unicode identifier. - - - - - Returns true if the Unicode character is a formatting character (Unicode class Cf). - - The Unicode character. - - - - Returns true if the Unicode character is a formatting character (Unicode class Cf). - - The Unicode character. - - - - A strongly-typed resource class, for looking up localized strings, etc. - - - - - Returns the cached ResourceManager instance used by this class. - - - - - Overrides the current thread's CurrentUICulture property for all - resource lookups using this strongly typed resource class. - - - - - Looks up a localized string similar to Absolute path expected.. - - - - - Looks up a localized string similar to Analyzer Driver Failure. - - - - - Looks up a localized string similar to Analyzer driver threw an exception of type '{0}' with message '{1}'.. - - - - - Looks up a localized string similar to Analyzer driver threw the following exception: - '{0}'.. - - - - - Looks up a localized string similar to Time (s). - - - - - Looks up a localized string similar to Analyzer. - - - - - Looks up a localized string similar to Total analyzer execution time: {0} seconds.. - - - - - Looks up a localized string similar to Argument cannot be empty.. - - - - - Looks up a localized string similar to Argument cannot have a null element.. - - - - - Looks up a localized string similar to Arrays with more than one dimension cannot be serialized.. - - - - - Looks up a localized string similar to assembly. - - - - - Looks up a localized string similar to Assembly file not found. - - - - - Looks up a localized string similar to Assembly must have at least one module.. - - - - - Looks up a localized string similar to Assembly signing not supported.. - - - - - Looks up a localized string similar to Can't alias a module.. - - - - - Looks up a localized string similar to Can't create a reference to a module.. - - - - - Looks up a localized string similar to Can't create a reference to a submission.. - - - - - Looks up a localized string similar to Can't embed interop types from module.. - - - - - Looks up a localized string similar to Can't create a module reference to an assembly.. - - - - - Looks up a localized string similar to Can't create a metadata reference to an assembly without location.. - - - - - Looks up a localized string similar to Can't create a metadata reference to a dynamic assembly.. - - - - - Looks up a localized string similar to The changes must be ordered and not overlapping.. - - - - - Looks up a localized string similar to class. - - - - - Looks up a localized string similar to Win32 resources, assumed to be in COFF object format, have one or more invalid relocation header values.. - - - - - Looks up a localized string similar to Win32 resources, assumed to be in COFF object format, have an invalid section size.. - - - - - Looks up a localized string similar to Win32 resources, assumed to be in COFF object format, have one or more invalid symbol values.. - - - - - Looks up a localized string similar to Win32 resources, assumed to be in COFF object format, are missing one or both of sections '.rsrc$01' and '.rsrc$02'. - - - - - Looks up a localized string similar to Compilation options must not have errors.. - - - - - Looks up a localized string similar to Analyzer Failure. - - - - - Looks up a localized string similar to Analyzer '{0}' threw an exception of type '{1}' with message '{2}'.. - - - - - Looks up a localized string similar to Analyzer '{0}' threw the following exception: - '{1}'.. - - - - - Looks up a localized string similar to constructor. - - - - - Looks up a localized string similar to delegate. - - - - - Looks up a localized string similar to A DiagnosticDescriptor must have an Id that is neither null nor an empty string nor a string that only contains white space.. - - - - - Looks up a localized string similar to Argument contains duplicate analyzer instances.. - - - - - Looks up a localized string similar to A key in the pathMap is empty.. - - - - - Looks up a localized string similar to Empty or invalid file name. - - - - - Looks up a localized string similar to Empty or invalid resource name. - - - - - Looks up a localized string similar to A value in the pathMap is empty.. - - - - - Looks up a localized string similar to 'end' must not be less than 'start'. - - - - - Looks up a localized string similar to enum. - - - - - Looks up a localized string similar to event. - - - - - Looks up a localized string similar to Expected non-empty public key. - - - - - Looks up a localized string similar to Could not locate the rule set file '{0}'.. - - - - - Looks up a localized string similar to field. - - - - - Looks up a localized string similar to File not found.. - - - - - Looks up a localized string similar to File size exceeds maximum allowed size of a valid metadata file.. - - - - - Looks up a localized string similar to {0}.GetMetadata() must return an instance of {1}.. - - - - - Looks up a localized string similar to Icon stream is not in the expected format.. - - - - - Looks up a localized string similar to Inconsistent language versions. - - - - - Looks up a localized string similar to <in-memory assembly>. - - - - - Looks up a localized string similar to <in-memory module>. - - - - - Looks up a localized string similar to interface. - - - - - Looks up a localized string similar to Invalid alias.. - - - - - Looks up a localized string similar to Invalid assembly name: '{0}'. - - - - - Looks up a localized string similar to Invalid characters in assembly culture name. - - - - - Looks up a localized string similar to Invalid characters in assembly name. - - - - - Looks up a localized string similar to Invalid compilation options -- submission can't be signed.. - - - - - Looks up a localized string similar to Invalid content type. - - - - - Looks up a localized string similar to Invalid culture name: '{0}'. - - - - - Looks up a localized string similar to Invalid data at offset {0}: {1}{2}*{3}{4}. - - - - - Looks up a localized string similar to Reported diagnostic has an ID '{0}', which is not a valid identifier.. - - - - - Looks up a localized string similar to Invalid hash.. - - - - - Looks up a localized string similar to Invalid module name specified in metadata module '{0}': '{1}'. - - - - - Looks up a localized string similar to Node to track is not a descendant of the root.. - - - - - Looks up a localized string similar to Invalid output kind for submission. DynamicallyLinkedLibrary expected.. - - - - - Looks up a localized string similar to Invalid public key.. - - - - - Looks up a localized string similar to Invalid public key token.. - - - - - Looks up a localized string similar to An error occurred while loading the included rule set file {0} - {1}. - - - - - Looks up a localized string similar to Invalid size of public key token.. - - - - - Looks up a localized string similar to Syntax tree doesn't belong to the underlying 'Compilation'.. - - - - - Looks up a localized string similar to Argument to '/keepalive' option is not a 32-bit integer.. - - - - - Looks up a localized string similar to Arguments to '/keepalive' option below -1 are invalid.. - - - - - Looks up a localized string similar to '/keepalive' option is only valid with '/shared' option.. - - - - - Looks up a localized string similar to A key in the pathMap ends with a path separator.. - - - - - Looks up a localized string similar to method. - - - - - Looks up a localized string similar to Roslyn compiler server reports different protocol version than build task.. - - - - - Looks up a localized string similar to Missing argument for '/keepalive' option.. - - - - - Looks up a localized string similar to The item specified is not the element of a list.. - - - - - Looks up a localized string similar to module. - - - - - Looks up a localized string similar to Module copy can't be used to create an assembly metadata.. - - - - - Looks up a localized string similar to NOTE: Elapsed time may be less than analyzer execution time because analyzers can run concurrently.. - - - - - Looks up a localized string similar to Name cannot be empty.. - - - - - Looks up a localized string similar to Name cannot start with whitespace.. - - - - - Looks up a localized string similar to Name contains invalid characters.. - - - - - Looks up a localized string similar to No analyzers found. - - - - - Looks up a localized string similar to Cannot deserialize type '{0}', no binder supplied.. - - - - - Looks up a localized string similar to A node or token is out of sequence.. - - - - - Looks up a localized string similar to Cannot deserialize type '{0}', it has no deserialization reader.. - - - - - Looks up a localized string similar to The type '{0}' cannot be written, it does not implement IObjectWritable. - - - - - Looks up a localized string similar to Output kind not supported.. - - - - - Looks up a localized string similar to parameter. - - - - - Looks up a localized string similar to Path returned by {0}.ResolveMetadataFile must be absolute: '{1}'. - - - - - Looks up a localized string similar to Path returned by {0}.ResolveStrongNameKeyFile must be absolute: '{1}'. - - - - - Looks up a localized string similar to PE image doesn't contain managed metadata.. - - - - - Looks up a localized string similar to PE image not available.. - - - - - Looks up a localized string similar to Previous submission has errors.. - - - - - Looks up a localized string similar to property, indexer. - - - - - Looks up a localized string similar to Reference resolver should return readable non-null stream.. - - - - - Looks up a localized string similar to Resource data provider should return non-null stream. - - - - - Looks up a localized string similar to Resource stream ended at {0} bytes, expected {1} bytes.. - - - - - Looks up a localized string similar to Resource stream provider should return non-null stream.. - - - - - Looks up a localized string similar to return. - - - - - Looks up a localized string similar to Return type can't be a value type, pointer, by-ref or open generic type. - - - - - Looks up a localized string similar to Return type can't be void, by-ref or open generic type. - - - - - Looks up a localized string similar to The attribute {0} has an invalid value of {1}.. - - - - - Looks up a localized string similar to The rule set file has duplicate rules for '{0}' with differing actions '{1}' and '{2}'.. - - - - - Looks up a localized string similar to The element {0} is missing an attribute named {1}.. - - - - - Looks up a localized string similar to Size has to be positive.. - - - - - Looks up a localized string similar to Then span does not include the end of a line.. - - - - - Looks up a localized string similar to The span does not include the start of a line.. - - - - - Looks up a localized string similar to 'start' must not be negative. - - - - - Looks up a localized string similar to Stream must support read and seek operations.. - - - - - Looks up a localized string similar to Stream must be writable.. - - - - - Looks up a localized string similar to struct. - - - - - Looks up a localized string similar to SymWriter doesn't support deterministic compilation. - - - - - Looks up a localized string similar to type must be a subclass of SyntaxAnnotation.. - - - - - Looks up a localized string similar to Type must be same as host object type of previous submission.. - - - - - Looks up a localized string similar to type parameter. - - - - - Looks up a localized string similar to A node in the list is not of the expected type.. - - - - - Looks up a localized string similar to Unresolved: . - - - - - Looks up a localized string similar to Argument contains an analyzer instance that does not belong to the 'Analyzers' for this CompilationWithAnalyzers instance.. - - - - - Looks up a localized string similar to Reported diagnostic with ID '{0}' is not supported by the analyzer.. - - - - - Looks up a localized string similar to Unsupported hash algorithm.. - - - - - Looks up a localized string similar to Value too large to be represented as a 30 bit unsigned integer.. - - - - - Looks up a localized string similar to WindowsRuntime identity can't be retargetable. - - - - - Looks up a localized string similar to References to XML documents are not supported.. - - - - - Maps an array builder to immutable array. - - - - The array to map - The mapping delegate - If the items's length is 0, this will return an empty immutable array - - - - Maps an array builder to immutable array. - - - - - The sequence to map - The mapping delegate - The extra input used by mapping delegate - If the items's length is 0, this will return an empty immutable array. - - - - Create BitArray with at least the specified number of bits. - - - - - return a bit array with all bits set from index 0 through bitCount-1 - - - - - - - Make a copy of a bit array. - - - - - - Is the given bit array null? - - - - - Modify this bit vector by bitwise AND-ing each element with the other bit vector. - For the purposes of the intersection, any bits beyond the current length will be treated as zeroes. - Return true if any changes were made to the bits of this bit vector. - - - - - Modify this bit vector by '|'ing each element with the other bit vector. - - - - - - The CachingLookup class provides a convenient representation of an ILookup that is based - upon a potentially slow lookup, and caches lookup results so that subsequent lookups are - fast. Internally a ConcurrentDictionary is used to cache lookup results. The client provides - two delegates to perform lookups: One that maps a key to a IEnumerable of values, and one - that provides all keys. - - The client must provide an IEqualityComparer used for comparing keys. Failed lookups are - cached, but that has the disadvantage that every different failed lookup will consume a - small amount of extra memory. However, that memory can be reclaimed by forcing a full - population of the cache. - - Thread safe. - - - - - Create a CachingLookup. - - A function that takes a key, and returns an IEnumerable of values that - correspond to that key. If no values correspond, the function may either return null or an empty - IEnumerable. - A function that returns an IEnumerable of all keys that have associated values. - A IEqualityComparer used to compare keys. - - - - Does this key have one or more associated values? - - - - - Get the values associated with a key. - - Key to look up. - All values associated with key. Returns an empty IEnumerable if - no values are associated. Never returns null. - - - - Get the number of distinct keys. - Forces a full population of the cache. - - - - - Enumerate all the keys. - Forces a full population of the cache. - - - - - Add the values from all keys to a flat array. - Forces a full population of the cache. - - - - - - Create an instance of the concurrent dictionary. - - The concurrent dictionary - - - - Create a dictionary instance suitable for use as the fully populated map. - - A new, empty dictionary, suitable for use as the fully populated map. - - - - Use the underlying (possibly slow) functions to get the values associated with a key. - - - - - Add a new value with the given key to the given concurrent map. - - The concurrent map to augment. - The key of the new entry. - The added entry. If there was a race, and another thread beat this one, then this returns the previously added entry. - - - - Determines if the given map is fully populated. - - The map to test. - true if the map is fully populated. - - - - Create the fully populated map from an existing map and the key generator. - - The existing map which may be null or a ConcurrentDictionary. - - - - - Fully populate the underlying dictionary. Once this returns, the dictionary is guaranteed - to have every key in it. - - - - - A MultiDictionary that allows only adding, and - preserves the order of values added to the dictionary. - Thread-safe for reading, but not for adding. - - - Always uses the default comparer. - - - - - Each value is either a single V or an . - Null when the dictionary is empty. - Don't access the field directly. - - - - - Add a value to the dictionary. - - - - - Add multiple values to the dictionary. - - - - - Get the number of values associated with a key. - - - - - Returns true if one or more items with given key have been added. - - - - - Get all values associated with K, in the order they were added. - Returns empty read-only array if no values were present. - - - - - Get a collection of all the keys. - - - - - The usage is: - var inst = PooledStringBuilder.GetInstance(); - var sb = inst.builder; - ... Do Stuff... - ... sb.ToString() ... - inst.Free(); - - - - - A set of ints that is small, thread-safe and lock free. - Several assumptions have been made that allow it to be small and fast: - 1. Deletes never happen. - 2. The size is small. In dogfooding experiments, 89% had 4 or fewer elements and - 98% had 8 or fewer elements. The largest size was 17. - 3. As a result of assumption 2, linear look-up is good enough. - 4. One value, in this case int.MinValue, is used as a sentinel and may never appear in the set. - - - - - Determine if the given integer appears in the set. - - The value to look up. - true if appears in the set. false otherwise. - - - - Insert the given value into the set. - - The value to insert - true if was added. false if it was already present. - - - - If the given slot is unoccupied, then try to replace it with a new value. - - The slot to examine. - The new value to insert if the slot is unoccupied. - An out param indicating whether the slot was successfully updated. - true if the value in the slot either now contains, or already contained . false otherwise. - - - - Extension methods associated with ConsList. - - - - - Returns the only element of specified sequence if it has exactly one, and default(TSource) otherwise. - Unlike doesn't throw if there is more than one element in the sequence. - - - - - A simple class to implement IGrouping. - - - - - A dictionary that maps strings to all known spellings of that string. Can be used to - efficiently store the set of known type names for a module for both VB and C# while also - answering questions like "do you have a type called Foo" in either a case sensitive or - insensitive manner. - - - - - The collection of extension methods for the type - - - - - Converts a sequence to an immutable array. - - Elemental type of the sequence. - The sequence to convert. - An immutable copy of the contents of the sequence. - If items is null (default) - If the sequence is null, this will throw - - - - Converts a sequence to an immutable array. - - Elemental type of the sequence. - The sequence to convert. - An immutable copy of the contents of the sequence. - If the sequence is null, this will return an empty array. - - - - Converts a sequence to an immutable array. - - Elemental type of the sequence. - The sequence to convert. - An immutable copy of the contents of the sequence. - If the sequence is null, this will return the default (null) array. - - - - Converts an array to an immutable array. The array must not be null. - - - The sequence to convert - - - - - Converts a array to an immutable array. - - - The sequence to convert - - If the sequence is null, this will return the default (null) array. - - - - Converts an array to an immutable array. - - - The sequence to convert - If the array is null, this will return an empty immutable array. - - - - Reads bytes from specified . - - The stream. - Read-only content of the stream. - - - - Maps an immutable array to another immutable array. - - - - The array to map - The mapping delegate - If the items's length is 0, this will return an empty immutable array - - - - Maps an immutable array to another immutable array. - - - - - The sequence to map - The mapping delegate - The extra input used by mapping delegate - If the items's length is 0, this will return an empty immutable array. - - - - Maps an immutable array to another immutable array. - - - - - The sequence to map - The mapping delegate - The extra input used by mapping delegate - If the items's length is 0, this will return an empty immutable array. - - - - Creates a new immutable array based on filtered elements by the predicate. The array must not be null. - - - The array to process - The delegate that defines the conditions of the element to search for. - - - - - Casts the immutable array of a Type to an immutable array of its base type. - - - - - Determines whether this instance and another immutable array are equal. - - - - - The comparer to determine if the two arrays are equal. - True if the two arrays are equal - - - - Returns an empty array if the input array is null (default) - - - - - Returns an array of distinct elements, preserving the order in the original array. - If the array has no duplicates, the original array is returned. The original array must not be null. - - - - - Describes a command line analyzer assembly specification. - - - - - Assembly file path. - - - - - Describes a command line metadata reference (assembly or netmodule) specification. - - - - - Metadata file path or an assembly display name. - - - - - Metadata reference properties. - - - - - Describes a source file specification stored on command line arguments. - - - - - Resolved absolute path of the source file (does not contain wildcards). - - - Although this path is absolute it may not be normalized. That is, it may contain ".." and "." in the middle. - - - - - True if the file should be treated as a script file. - - - - - The base class for representing command line arguments to a - . - - - - - Drop to an interactive loop. If a script is specified in executes the script first. - - - - - Directory used to resolve relative paths stored in the arguments. - - - Except for paths stored in , all - paths stored in the properties of this class are resolved and - absolute. This is the directory that relative paths specified on - command line were resolved against. - - - - - A list of pairs of paths. This stores the value of the command-line compiler - option /pathMap:X1=Y1;X2=Y2... which causes a prefix of X1 followed by a path - separator to be replaced by Y1 followed by a path separator, and so on for each following pair. - - - This option is used to help get build-to-build determinism even when the build - directory is different from one build to the next. The prefix matching is case sensitive. - - - - - Sequence of absolute paths used to search for references. - - - - - Sequence of absolute paths used to search for sources specified as #load directives. - - - - - Sequence of absolute paths used to search for key files. - - - - - If true, use UTF8 for output. - - - - - Compilation name or null if not specified. - - - - - Gets the emit options. - - - - - Name of the output file or null if not specified. - - - - - Path of the PDB file or null if same as output binary path with .pdb extension. - - - - - True to emit PDB file. - - - - - Absolute path of the output directory. - - - - - Absolute path of the documentation comment XML file or null if not specified. - - - - - Absolute path of the error log file or null if not specified. - - - - - An absolute path of the App.config file or null if not specified. - - - - - Errors while parsing the command line arguments. - - - - - References to metadata supplied on the command line. - Includes assemblies specified via /r and netmodules specified via /addmodule. - - - - - References to analyzers supplied on the command line. - - - - - A set of additional non-code text files that can be used by analyzers. - - - - - Report additional information related to analyzers, such as analyzer execution time. - - - - - If true, prepend the command line header logo during - . - - - - - If true, append the command line help during - - - - - - The path to a Win32 resource. - - - - - The path to a .ico icon file. - - - - - The path to a Win32 manifest file to embed - into the output portable executable (PE) file. - - - - - If true, do not embed any Win32 manifest, including - one specified by or any - default manifest. - - - - - Resources specified as arguments to the compilation. - - - - - Encoding to be used for source files or 'null' for autodetect/default. - - - - - Hash algorithm to use to calculate source file debug checksums. - - - - - Arguments following a script file or separator "--". Null if the command line parser is not interactive. - - - - - Source file paths. - - - Includes files specified directly on command line as well as files matching patterns specified - on command line using '*' and '?' wildcards or /recurse option. - - - - - Full path of a log of file paths accessed by the compiler, or null if file logging should be suppressed. - - - Two log files will be created: - One with path and extension ".read" logging the files read, - and second with path and extension ".write" logging the files written to during compilation. - - - - - If true, prints the full path of the file containing errors or - warnings in diagnostics. - - - - - Options to the . - - - - - - Options to the . - - - - - Specify the preferred output language name. - - - - - Resolves metadata references stored in using given file resolver and metadata provider. - - to use for assembly name and relative path resolution. - Yields resolved metadata references or . - is null. - - - - Resolves metadata references stored in using given file resolver and metadata provider. - If a non-null diagnostic bag is provided, it catches exceptions that may be generated while reading the metadata file and - reports appropriate diagnostics. - Otherwise, if is null, the exceptions are unhandled. - - - called by CommonCompiler with diagnostics and message provider - - - - - Resolves analyzer references stored in using given file resolver. - - Load an assembly from a file path - Yields resolved or . - - - - Enumerates files in the specified directory and subdirectories whose name matches the given pattern. - - Full path of the directory to enumerate. - File name pattern. May contain wildcards '*' (matches zero or more characters) and '?' (matches any character). - Specifies whether to search the specified only, or all its subdirectories as well. - Sequence of file paths. - - - - Parses a command line. - - A collection of strings representing the command line arguments. - The base directory used for qualifying file locations. - The directory to search for mscorlib, or null if not available. - A string representing additional reference paths. - a object representing the parsed command line. - - - - Trims all '.' and whitespace from the end of the path - - - - - Returns false if any of the client arguments are invalid and true otherwise. - - - The original args to the client. - - - The original args minus the client args, if no errors were encountered. - - - Only defined if no errors were encountered. - True if '/shared' was an argument, false otherwise. - - - Only defined if no errors were encountered. - The value to the '/keepalive' argument if one was specified, null otherwise. - - - Only defined if errors were encountered. - The error message for the encountered error. - - - - - Parse a response file into a set of arguments. Errors opening the response file are output into "errors". - - - - - Take a string of lines from a response file, remove comments, - and split into a set of command line arguments. - - - - - Split a command line by the same rules as Main would get the commands except the original - state of backslashes and quotes are preserved. For example in normal Windows command line - parsing the following command lines would produce equivalent Main arguments: - - - /r:a,b - - /r:"a,b" - - This method will differ as the latter will have the quotes preserved. The only case where - quotes are removed is when the entire argument is surrounded by quotes without any inner - quotes. - - - Rules for command line parsing, according to MSDN: - - Arguments are delimited by white space, which is either a space or a tab. - - A string surrounded by double quotation marks ("string") is interpreted - as a single argument, regardless of white space contained within. - A quoted string can be embedded in an argument. - - A double quotation mark preceded by a backslash (\") is interpreted as a - literal double quotation mark character ("). - - Backslashes are interpreted literally, unless they immediately precede a - double quotation mark. - - If an even number of backslashes is followed by a double quotation mark, - one backslash is placed in the argv array for every pair of backslashes, - and the double quotation mark is interpreted as a string delimiter. - - If an odd number of backslashes is followed by a double quotation mark, - one backslash is placed in the argv array for every pair of backslashes, - and the double quotation mark is "escaped" by the remaining backslash, - causing a literal double quotation mark (") to be placed in argv. - - - - - Remove the extraneous quotes and slashes from the argument. This function is designed to have - compat behavior with the native compiler. - - - Mimics the function RemoveQuotes from the native C# compiler. The native VB equivalent of this - function is called RemoveQuotesAndSlashes. It has virtually the same behavior except for a few - quirks in error cases. - - - - - Mimic behavior of the native function by the same name. - - - - - Split a string, based on whether "splitHere" returned true on each character. - - - - - Split a string by a set of separators, taking quotes into account. - - - - - Tries to parse a UInt64 from string in either decimal, octal or hex format. - - The string value. - The result if parsing was successful. - true if parsing was successful, otherwise false. - - - - Tries to parse a UInt16 from string in either decimal, octal or hex format. - - The string value. - The result if parsing was successful. - true if parsing was successful, otherwise false. - - - - Base class for csc.exe, csi.exe, vbc.exe and vbi.exe implementations. - - - - - This implementation of will delay the creation - of the PE / PDB file until the compiler determines the compilation has succeeded. This prevents - the compiler from deleting output from the previous compilation when a new compilation - fails. - - - - - Resolves metadata references stored in command line arguments and reports errors for those that can't be resolved. - - - - - Reads content of a source file. - - Source file information. - Storage for diagnostics. - File content or null on failure. - - - - Reads content of a source file. - - Source file information. - Storage for diagnostics. - If given opens successfully, set to normalized absolute path of the file, null otherwise. - File content or null on failure. - - - - csc.exe and vbc.exe entry point. - - - - - Given a compilation and a destination directory, determine three names: - 1) The name with which the assembly should be output (default = null, which indicates that the compilation output name should be used). - 2) The path of the assembly/module file (default = destination directory + compilation output name). - 3) The path of the pdb file (default = assembly/module path with ".pdb" extension). - - - C# has a special implementation that implements idiosyncratic behavior of csc. - - - - - Test hook for intercepting File.Open. - - - - - When overridden by a derived class, this property can override the current thread's - CurrentUICulture property for diagnostic message resource lookups. - - - - - Looks for metadata references among the assembly file references given to the compilation when constructed. - When scripts are included into a project we don't want #r's to reference other assemblies than those - specified explicitly in the project references. - - - - - Used for logging all compiler diagnostics into a given . - This logger is responsible for closing the given stream on . - - - - - Represents an issue to be logged into the error log. - This could be corresponding to a or a reported by the . - - - - - Represents a value for a key-value pair to be emitted into the error log file. - This could be a simple string or an integer OR could be a list of identical values OR a group of heterogeneous key-value pairs. - - - - - Contains well known property strings for error log file. - - - - - Used for logging all the paths which are "touched" (used) in any way - in the process of compilation. - - - - - Adds a fully-qualified path to the Logger for a read file. - Semantics are undefined after a call to . - - - - - Adds a fully-qualified path to the Logger for a written file. - Semantics are undefined after a call to . - - - - - Adds a fully-qualified path to the Logger for a read and written - file. Semantics are undefined after a call to - . - - - - - Writes all of the paths the TouchedFileLogger to the given - TextWriter in upper case. After calling this method the - logger is in an undefined state. - - - - - Writes all of the paths the TouchedFileLogger to the given - TextWriter in upper case. After calling this method the - logger is in an undefined state. - - - - - The compilation object is an immutable representation of a single invocation of the - compiler. Although immutable, a compilation is also on-demand, and will realize and cache - data as necessary. A compilation can produce a new compilation from existing compilation - with the application of small deltas. In many cases, it is more efficient than creating a - new compilation from scratch, as the new compilation can reuse information from the old - compilation. - - - The compilation object is an immutable representation of a single invocation of the - compiler. Although immutable, a compilation is also on-demand, and will realize and cache - data as necessary. A compilation can produce a new compilation from existing compilation - with the application of small deltas. In many cases, it is more efficient than creating a - new compilation from scratch, as the new compilation can reuse information from the old - compilation. - - - - - Abstraction that allows the caller to delay the creation of the values - until they are actually needed. - - - - - Returns an existing open stream or null if no stream has been open. - - - - - This method will be called once during Emit at the time the Compilation needs - to create a stream for writing. It will not be called in the case of - user errors in code. Shall not be called when returns non-null. - - - - - Returns true if this is a case sensitive compilation, false otherwise. Case sensitivity - affects compilation features such as name lookup as well as choosing what names to emit - when there are multiple different choices (for example between a virtual method and an - override). - - - - - Used for test purposes only to emulate missing members. - - - - - Used for test purposes only to emulate missing members. - - - - - Gets the source language ("C#" or "Visual Basic"). - - - - - Checks options passed to submission compilation constructor. - Throws an exception if the options are not applicable to submissions. - - - - - Creates a new compilation equivalent to this one with different symbol instances. - - - - - Returns a new compilation with a given event queue. - - - - - Gets a new for the specified syntax tree. - - The specified syntax tree. - - True if the SemanticModel should ignore accessibility rules when answering semantic questions. - - - - - Returns a new INamedTypeSymbol representing an error type with the given name and arity - in the given optional container. - - - - - Simple assembly name, or null if not specified. - - - The name is used for determining internals-visible-to relationship with referenced assemblies. - - If the compilation represents an assembly the value of is its simple name. - - Unless specifies otherwise the module name - written to metadata is with an extension based upon . - - - - - Creates a compilation with the specified assembly name. - - The new assembly name. - A new compilation. - - - - Gets the options the compilation was created with. - - - - - Creates a new compilation with the specified compilation options. - - The new options. - A new compilation. - - - - True if the compilation represents an interactive submission. - - - - - Gets or allocates a runtime submission slot index for this compilation. - - Non-negative integer if this is a submission and it or a previous submission contains code, negative integer otherwise. - - - - The type object that represents the type of submission result the host requested. - - - - - The type of the globals object or null if not specified for this compilation. - - - - - Gets the syntax trees (parsed from source code) that this compilation was created with. - - - - - Creates a new compilation with additional syntax trees. - - The new syntax trees. - A new compilation. - - - - Creates a new compilation with additional syntax trees. - - The new syntax trees. - A new compilation. - - - - Creates a new compilation without the specified syntax trees. Preserves metadata info for use with trees - added later. - - The new syntax trees. - A new compilation. - - - - Creates a new compilation without the specified syntax trees. Preserves metadata info for use with trees - added later. - - The new syntax trees. - A new compilation. - - - - Creates a new compilation without any syntax trees. Preserves metadata info for use with - trees added later. - - - - - Creates a new compilation with an old syntax tree replaced with a new syntax tree. - Reuses metadata from old compilation object. - - The new tree. - The old tree. - A new compilation. - - - - Returns true if this compilation contains the specified tree. False otherwise. - - A syntax tree. - - - - The event queue that this compilation was created with. - - - - - Metadata references passed to the compilation constructor. - - - - - Unique metadata references specified via #r directive in the source code of this compilation. - - - - - All reference directives used in this compilation. - - - - - Maps values of #r references to resolved metadata references. - - - - - All metadata references -- references passed to the compilation - constructor as well as references specified via #r directives. - - - - - Creates a metadata reference for this compilation. - - - Optional aliases that can be used to refer to the compilation root namespace via extern alias directive. - - - Embed the COM types from the reference so that the compiled - application no longer requires a primary interop assembly (PIA). - - - - - Creates a new compilation with the specified references. - - - The new references. - - A new compilation. - - - - Creates a new compilation with the specified references. - - The new references. - A new compilation. - - - - Creates a new compilation with the specified references. - - - - - Creates a new compilation with additional metadata references. - - The new references. - A new compilation. - - - - Creates a new compilation with additional metadata references. - - The new references. - A new compilation. - - - - Creates a new compilation without the specified metadata references. - - The new references. - A new compilation. - - - - Creates a new compilation without the specified metadata references. - - The new references. - A new compilation. - - - - Creates a new compilation without any metadata references. - - - - - Creates a new compilation with an old metadata reference replaced with a new metadata - reference. - - The new reference. - The old reference. - A new compilation. - - - - Gets the or for a metadata reference used to create this - compilation. - - The target reference. - - Assembly or module symbol corresponding to the given reference or null if there is none. - - - - - Gets the that corresponds to the assembly symbol. - - The target symbol. - - - - Assembly identities of all assemblies directly referenced by this compilation. - - - Includes identities of references passed in the compilation constructor - as well as those specified via directives in source code. - - - - - The that represents the assembly being created. - - - - - Gets the for the module being created by compiling all of - the source code. - - - - - The root namespace that contains all namespaces and types defined in source code or in - referenced metadata, merged into a single namespace hierarchy. - - - - - Gets the corresponding compilation namespace for the specified module or assembly namespace. - - - - - Returns the Main method that will serves as the entry point of the assembly, if it is - executable (and not a script). - - - - - Get the symbol for the predefined type from the Cor Library referenced by this - compilation. - - - - - Returns true if the type is System.Type. - - - - - Returns true if the specified type is equal to or derives from System.Attribute well-known type. - - - - - The INamedTypeSymbol for the .NET System.Object type, which could have a TypeKind of - Error if there was no COR Library in this Compilation. - - - - - The TypeSymbol for the type 'dynamic' in this Compilation. - - - - - A symbol representing the implicit Script class. This is null if the class is not - defined in the compilation. - - - - - Returns a new ArrayTypeSymbol representing an array type tied to the base types of the - COR Library in this Compilation. - - - - - Returns a new PointerTypeSymbol representing a pointer type tied to a type in this - Compilation. - - - - - Gets the type within the compilation's assembly and all referenced assemblies (other than - those that can only be referenced via an extern alias) using its canonical CLR metadata name. - - Null if the type can't be found. - - Since VB does not have the concept of extern aliases, it considers all referenced assemblies. - - - - - Gets the diagnostics produced during the parsing stage. - - - - - Gets the diagnostics produced during symbol declaration. - - - - - Gets the diagnostics produced during the analysis of method bodies and field initializers. - - - - - Gets all the diagnostics for the compilation, including syntax, declaration, and - binding. Does not include any diagnostics that might be produced during emit, see - . - - - - Bag to which filtered diagnostics will be added. - Diagnostics to be filtered. - True if there were no errors or warnings-as-errors. - - - - Create a stream filled with default win32 resources. - - - - - Constructs the module serialization properties out of the compilation options of this compilation. - - - - - The value is not used by Windows loader, but the OS appcompat infrastructure uses it to identify apps. - It is useful for us to have a mechanism to identify the compiler that produced the binary. - This is the appropriate value to use for that. That is what it was invented for. - We don't want to have the high bit set for this in case some users perform a signed comparison to - determine if the value is less than some version. The C++ linker is at 0x0B. - We'll start our numbering at 0x30 for C#, 0x50 for VB. - - - - - Return true if the compilation contains any code or types. - - - - - Emit the IL for the compiled source code into the specified stream. - - Stream to which the compilation will be written. - Stream to which the compilation's debug info will be written. Null to forego PDB generation. - Stream to which the compilation's XML documentation will be written. Null to forego XML generation. - Stream from which the compilation's Win32 resources will be read (in RES format). - Null to indicate that there are none. The RES format begins with a null resource entry. - List of the compilation's managed resources. Null to indicate that there are none. - Emit options. - To cancel the emit process. - - - - Emit the IL for the compiled source code into the specified stream. - - Stream to which the compilation will be written. - Stream to which the compilation's debug info will be written. Null to forego PDB generation. - Stream to which the compilation's XML documentation will be written. Null to forego XML generation. - Stream from which the compilation's Win32 resources will be read (in RES format). - Null to indicate that there are none. The RES format begins with a null resource entry. - List of the compilation's managed resources. Null to indicate that there are none. - Emit options. - - Debug entry-point of the assembly. The method token is stored in the generated PDB stream. - - When a program launches with a debugger attached the debugger places the first breakpoint to the start of the debug entry-point method. - The CLR starts executing the static Main method of type. When the first breakpoint is hit - the debugger steps thru the code statement by statement until user code is reached, skipping methods marked by , - and taking other debugging attributes into consideration. - - By default both entry points in an executable program (, , ) - are the same method (Main). A non-executable program has no entry point. Runtimes that implement a custom loader may specify debug entry-point - to force the debugger to skip over complex custom loader logic executing at the beginning of the .exe and thus improve debugging experience. - - Unlike ordinary entry-point which is limited to a non-generic static method of specific signature, there are no restrictions on the - method other than having a method body (extern, interface, or abstract methods are not allowed). - - To cancel the emit process. - - - - This overload is only intended to be directly called by tests that want to pass . - The map is used for storing a list of methods and their associated IL. - - True if emit succeeded. - - - - Emit the differences between the compilation and the previous generation - for Edit and Continue. The differences are expressed as added and changed - symbols, and are emitted as metadata, IL, and PDB deltas. A representation - of the current compilation is returned as an EmitBaseline for use in a - subsequent Edit and Continue. - - - - - Emit the differences between the compilation and the previous generation - for Edit and Continue. The differences are expressed as added and changed - symbols, and are emitted as metadata, IL, and PDB deltas. A representation - of the current compilation is returned as an EmitBaseline for use in a - subsequent Edit and Continue. - - - - - This overload is only intended to be directly called by tests that want to pass . - The map is used for storing a list of methods and their associated IL. - - True if emit succeeded. - - - - The compiler needs to define an ordering among different partial class in different syntax trees - in some cases, because emit order for fields in structures, for example, is semantically important. - This function defines an ordering among syntax trees in this compilation. - - - - - Compare two source locations, using their containing trees, and then by Span.First within a tree. - Can be used to get a total ordering on declarations, for example. - - - - - Return the lexically first of two locations. - - - - - Return the lexically first of multiple locations. - - - - - Return true if there is a source declaration symbol name that meets given predicate. - - - - - Return source declaration symbols whose name meets given predicate. - - - - - The list of RetargetingAssemblySymbol objects created for this Compilation. - RetargetingAssemblySymbols are created when some other compilation references this one, - but the other references provided are incompatible with it. For example, compilation C1 - references v1 of Lib.dll and compilation C2 references C1 and v2 of Lib.dll. In this - case, in context of C2, all types from v1 of Lib.dll leaking through C1 (through method - signatures, etc.) must be retargeted to the types from v2 of Lib.dll. This is what - RetargetingAssemblySymbol is responsible for. In the example above, modules in C2 do not - reference C1.AssemblySymbol, but reference a special RetargetingAssemblySymbol created - for C1 by ReferenceManager. - - WeakReference is used to allow RetargetingAssemblySymbol to be collected when they become unused. - - Guarded by . - - - - - Adds given retargeting assembly for this compilation into the cache. - must be locked while calling this method. - - - - - Adds cached retargeting symbols into the given list. - must be locked while calling this method. - - - - - Indicate what kinds of declaration symbols will be included - - - - - None - - - - - include namespace symbols - - - - - include type symbols - - - - - include member symbols such as method, event, property, field - - - - - include type and member - - - - - include all namespace, type and member - - - - - Policy to be used when matching assembly reference to an assembly definition across platforms. - - - - - Converts to . - - Major, minor, build or revision number are less than 0 or greater than 0xFFFF. - - - Assembly portability policy, usually provided through an app.config file. - - - - Loads information from XML with App.config schema. - - The stream doesn't contain a well formed XML. - is null. - - Tries to find supportPortability elements in the given XML: - - - - - - - - - ]]> - - Keeps the stream open. - - - - - Returns true if the identity is a Framework 4.5 or lower assembly. - - - - - Provides strong name and signs source assemblies. - - - - - Creates an instance of . - - - An ordered set of fully qualified paths which are searched when locating a cryptographic key file. - - - - - Resolves assembly strong name key file path. - Internal for testing. - - Normalized key file path or null if not found. - - - - - - - - - - - - - - - - Handles loading analyzer assemblies and their dependencies. - - Before an analyzer assembly is loaded with , - its location and the location of all of its dependencies must first be specified - by calls to . - - - To the extent possible, implementations should remain consistent in the face - of exceptions and allow the caller to handle them. This allows the caller to - decide how to surface issues to the user and whether or not they are fatal. For - example, if asked to load an a non-existent or inaccessible file a command line - tool may wish to exit immediately, while an IDE may wish to keep going and give - the user a chance to correct the issue. - - - - - Given the full path to an assembly on disk, loads and returns the - corresponding object. - - - Multiple calls with the same path should return the same - instance. - - - - - Adds a file to consider when loading an analyzer or its dependencies. - - - - - A localizable resource string that may possibly be formatted differently depending on culture. - - - - - Creates a localizable resource string with no formatting arguments. - - nameof the resource that needs to be localized. - for the calling assembly. - Type handling assembly's resource management. Typically, this is the static class generated for the resources file from which resources are accessed. - - - - Creates a localizable resource string that may possibly be formatted differently depending on culture. - - nameof the resource that needs to be localized. - for the calling assembly. - Type handling assembly's resource management. Typically, this is the static class generated for the resources file from which resources are accessed. - Optional arguments for formatting the localizable resource string. - - - - A string that may possibly be formatted differently depending on culture. - NOTE: Types implementing must be serializable. - - - - - FixedLocalizableString representing an empty string. - - - - - Fired when an exception is raised by any of the public methods of . - If the exception handler itself throws an exception, that exception is ignored. - - - - - Formats the value of the current instance using the optionally specified format. - - - - - Formats the value of the current instance using the optionally specified format. - Provides the implementation of ToString. ToString will provide a default value - if this method throws an exception. - - - - - Provides the implementation of GetHashCode. GetHashCode will provide a default value - if this method throws an exception. - - - - - - Provides the implementation of Equals. Equals will provide a default value - if this method throws an exception. - - - - - - Represents compilation emit options. - - - - - True to emit an assembly excluding executable code such as method bodies. - - - - - Tolerate errors, producing a PE stream and a success result even in the presence of (some) errors. - - - - - Unless set (private) members that don't affect the language semantics of the resulting assembly will be excluded - when emitting with on. - - - Has no effect when is false. - - - - - Subsystem version - - - - - Specifies the size of sections in the output file. - - - Valid values are 0, 512, 1024, 2048, 4096 and 8192. - If the value is 0 the file alignment is determined based upon the value of . - - - - - True to enable high entropy virtual address space for the output binary. - - - - - Specifies the preferred base address at which to load the output DLL. - - - - - Debug information format. - - - - - Assembly name override - file name and extension. If not specified the compilation name is used. - - - By default the name of the output assembly is . Only in rare cases it is necessary - to override the name. - - CAUTION: If this is set to a (non-null) value other than the existing compilation output name, then internals-visible-to - and assembly references may not work as expected. In particular, things that were visible at bind time, based on the - name of the compilation, may not be visible at runtime and vice-versa. - - - - - The name of the PDB file to be embedded in the PE image, or null to use the default. - - - If not specified the file name of the source module with an extension changed to "pdb" is used. - - - - - Runtime metadata version. - - - - - Sets the byte alignment for portable executable file sections. - - Can be one of the following values: 0, 512, 1024, 2048, 4096, 8192 - - - - No change. - - - - - Node value was updated. - - - - - Node was inserted. - - - - - Node was deleted. - - - - - Debugging information associated with the specified method that is emitted by the compiler to support Edit and Continue. - - - - - Deserializes Edit and Continue method debug information from specified blobs. - - Local variable slot map. - Lambda and closure map. - Invalid data. - - - Invalid data. - - - - Merges synthesized members generated during lowering of the current compilation with aggregate synthesized members - from all previous source generations (gen >= 1). - - - Suppose {S -> {A, B, D}, T -> {E, F}} are all synthesized members in previous generations, - and {S' -> {A', B', C}, U -> {G, H}} members are generated in the current compilation. - - Where X matches X' via this matcher, i.e. X' is from the new compilation and - represents the same metadata entity as X in the previous compilation. - - Then the resulting collection shall have the following entries: - {S' -> {A', B', C, D}, U -> {G, H}, T -> {E, F}} - - - - - The result of the Compilation.Emit method. - - - - - True if the compilation successfully produced an executable. - If false then the diagnostics should include at least one error diagnostic - indicating the cause of the failure. - - - - - A list of all the diagnostics associated with compilations. This include parse errors, declaration errors, - compilation errors, and emitting errors. - - - - - Name of the anonymous type field. - - - - - True if the anonymous type field was marked as 'Key' in VB. - - - - - is case insensitive. - - - - - Return tokens for all modified debuggable methods. - - - - - Add an item from a previous generation - that has been updated in this generation. - - - - - Represents a module from a previous compilation. Used in Edit and Continue - to emit the differences in a subsequent compilation. - - - - - Creates an from the metadata of the module before editing - and from a function that maps from a method to an array of local names. - - The metadata of the module before editing. - - A function that for a method handle returns Edit and Continue debug information emitted by the compiler into the PDB. - - An for the module. - - Only the initial baseline is created using this method; subsequent baselines are created - automatically when emitting the differences in subsequent compilations. - - When an active method (one for which a frame is allocated on a stack) is updated the values of its local variables need to be preserved. - The mapping of local variable names to their slots in the frame is not included in the metadata and thus needs to be provided by - . - - The is only needed for the initial generation. The mapping for the subsequent generations - is carried over through . The compiler assigns slots to named local variables (including named temporary variables) - it the order in which they appear in the source code. This property allows the compiler to reconstruct the local variable mapping - for the initial generation. A subsequent generation may add a new variable in between two variables of the previous generation. - Since the slots of the previous generation variables need to be preserved the only option is to add these new variables to the end. - The slot ordering thus no longer matches the syntax ordering. It is therefore necessary to pass - to the next generation (rather than e.g. create new s from scratch based on metadata produced by subsequent compilations). - - - - - The original metadata of the module. - - - - - Metadata generation ordinal. Zero for - full metadata and non-zero for delta. - - - - - Unique Guid for this delta, or default(Guid) - if full metadata. - - - - - EnC metadata for methods added or updated since the initial generation, indexed by method row id. - - - - - Local variable names for methods from metadata, - indexed by method row. - - - - - No change to symbol or members. - - - - - No change to symbol but may contain changed symbols. - - - - - Symbol updated. - - - - - Symbol added. - - - - - True if the symbol is a source symbol added during EnC session. - The symbol may be declared in any source compilation in the current solution. - - - - - Returns true if the symbol or some child symbol has changed and needs to be compiled. - - - - - Calculate the set of changes up to top-level types. The result - will be used as a filter when traversing the module. - - Note that these changes only include user-defined source symbols, not synthesized symbols since those will be - generated during lowering of the changed user-defined symbols. - - - - - Return the symbol that contains this symbol as far - as changes are concerned. For instance, an auto property - is considered the containing symbol for the backing - field and the accessor methods. By default, the containing - symbol is simply Symbol.ContainingSymbol. - - - - - Error type symbols should be replaced with an object of this class - in the translation layer for emit. - - - - - For the name we will use a word "Error" followed by a guid, generated on the spot. - - - - - A fake containing assembly for an ErrorType object. - - - - - For the name we will use a word "Error" followed by a guid, generated on the spot. - - - - - This is only used for testing. - - - - - This is only used for testing. - - - - - This is only used for testing. - - - - - Returns null if member doesn't belong to an embedded NoPia type. - - - - - Common base class for C# and VB PE module builder. - - - - - EnC generation. - - - - - Captures the set of synthesized definitions that should be added to a type - during emit process. - - - - - Returns null if there are no compiler generated types. - - - - - Returns null if there are no synthesized methods. - - - - - Returns null if there are no synthesized properties. - - - - - Returns null if there are no synthesized fields. - - - - - Builds symbol definition to location map used for emitting token -> location info - into PDB to be consumed by WinMdExp.exe tool (only applicable for /t:winmdobj) - - - - - Describes a symbol edit between two compilations. - For example, an addition of a method, an update of a method, removal of a type, etc. - - - - - The type of edit. - - - - - The symbol from the earlier compilation, - or null if the edit represents an addition. - - - - - The symbol from the later compilation, - or null if the edit represents a deletion. - - - - - A map from syntax node in the later compilation to syntax node in the previous compilation, - or null if is false and the map is not needed or - the source of the current method is the same as the source of the previous method. - - - The map does not need to map all syntax nodes in the active method, only those syntax nodes - that declare a local or generate a long lived local. - - - - - True if the edit is an update of the active method and local values - should be preserved; false otherwise. - - - - - Initializes an instance of . - - The type of edit. - - The symbol from the earlier compilation, or null if the edit represents an addition. - - - The symbol from the later compilation, or null if the edit represents a deletion. - - - A map from syntax node in the later compilation to syntax node in the previous compilation, - or null if is false and the map is not needed or - the source of the current method is the same as the source of the previous method. - - - True if the edit is an update of an active method and local values should be preserved; false otherwise. - - - or is null and the edit isn't an or , respectively. - - - is not a valid kind. - - - - - Encoding to use when there is no byte order mark (BOM) on the stream. This encoder may throw a - if the stream contains invalid UTF-8 bytes. - - - - - Encoding to use when UTF-8 fails. We try to find the following, in order, if available: - 1. The default ANSI codepage - 2. CodePage 1252. - 3. Latin1. - - - - - Initializes an instance of from the provided stream. This version differs - from in two ways: - 1. It attempts to minimize allocations by trying to read the stream into a byte array. - 2. If is null, it will first try UTF8 and, if that fails, it will - try CodePage 1252. If CodePage 1252 is not available on the system, then it will try Latin1. - - The stream containing encoded text. - - Specifies an encoding to be used if the actual encoding can't be determined from the stream content (the stream doesn't start with Byte Order Mark). - If not specified auto-detect heuristics are used to determine the encoding. If these heuristics fail the decoding is assumed to be Encoding.Default. - Note that if the stream starts with Byte Order Mark the value of is ignored. - - Hash algorithm used to calculate document checksum. - - The stream content can't be decoded using the specified , or - is null and the stream appears to be a binary file. - - An IO error occurred while reading from the stream. - - - - Try to create a from the given stream using the given encoding. - - The input stream containing the encoded text. The stream will not be closed. - The expected encoding of the stream. The actual encoding used may be different if byte order marks are detected. - The checksum algorithm to use. - Throw if binary (non-text) data is detected. - The decoded from the stream. - The decoder was unable to decode the stream with the given encoding. - - internal for unit testing - - - - - Some streams are easily represented as byte arrays. - - The stream - - The contents of as a byte array or null if the stream can't easily - be read into a byte array. - - - - - If the MemoryStream was created with publiclyVisible=true, then we can access its buffer - directly and save allocations in StreamReader. The input MemoryStream is not closed on exit. - - True if a byte array could be created. - - - - Read the contents of a FileStream into a byte array. - - The FileStream with encoded text. - A byte array filled with the contents of the file. - True if a byte array could be created. - - - - A composite of a sequence of s. - - - - - Validates the arguments passed to against the published contract. - - True if should bother to proceed with copying. - - - - A optimized for very large sources. The text is stored as - a list of chunks (char arrays). - - - - - internal for unit testing - - - - - Check for occurrence of two consecutive NUL (U+0000) characters. - This is unlikely to appear in genuine text, so it's a good heuristic - to detect binary files. - - - - - Called from to initialize the . Thereafter, - the collection is cached. - - A new representing the individual text lines. - - - - Immutable representation of a line number and position within a SourceText instance. - - - - - A that represents position 0 at line 0. - - - - - Initializes a new instance of a with the given line and character. - - - The line of the line position. The first line in a file is defined as line 0 (zero based line numbering). - - - The character position in the line. - - or is less than zero. - - - - The line number. The first line in a file is defined as line 0 (zero based line numbering). - - - - - The character position within the line. - - - - - Determines whether two are the same. - - - - - Determines whether two are different. - - - - - Determines whether two are the same. - - The object to compare. - - - - Determines whether two are the same. - - The object to compare. - - - - Provides a hash function for . - - - - - Provides a string representation for . - - 0,10 - - - - Immutable span represented by a pair of line number and index within the line. - - - - - Creates . - - Start position. - End position. - precedes . - - - - Gets the start position of the span. - - - - - Gets the end position of the span. - - - - - Provides a string representation for . - - (0,0)-(5,6) - - - - Specifies a hash algorithms used for hashing source files. - - - - - No algorithm specified. - - - - - Secure Hash Algorithm 1. - - - - - Secure Hash Algorithm 2 with a hash size of 256 bits. - - - - - An abstraction of source text. - - - - - Constructs a from text in a string. - - Text. - - Encoding of the file that the was read from or is going to be saved to. - null if the encoding is unspecified. - If the encoding is not specified the resulting isn't debuggable. - If an encoding-less is written to a file a shall be used as a default. - - - Hash algorithm to use to calculate checksum of the text that's saved to PDB. - - is null. - is not supported. - - - - Constructs a from stream content. - - Stream. The stream must be seekable. - - Data encoding to use if the stream doesn't start with Byte Order Mark specifying the encoding. - if not specified. - - - Hash algorithm to use to calculate checksum of the text that's saved to PDB. - - If the decoded text contains at least two consecutive NUL - characters, then an is thrown. - is null. - - doesn't support reading or seeking. - is not supported. - - If the given encoding is set to use a throwing decoder as a fallback - Two consecutive NUL characters were detected in the decoded text and was true. - An I/O error occurs. - Reads from the beginning of the stream. Leaves the stream open. - - - - Constructs a from a byte array. - - The encoded source buffer. - The number of bytes to read from the buffer. - - Data encoding to use if the encoded buffer doesn't start with Byte Order Mark. - if not specified. - - - Hash algorithm to use to calculate checksum of the text that's saved to PDB. - - If the decoded text contains at least two consecutive NUL - characters, then an is thrown. - The decoded text. - The is null. - The is negative or longer than the . - is not supported. - If the given encoding is set to use a throwing decoder as a fallback - Two consecutive NUL characters were detected in the decoded text and was true. - - - - Decode text from a stream. - - The stream containing encoded text. - The encoding to use if an encoding cannot be determined from the byte order mark. - The actual encoding used. - The decoded text. - If the given encoding is set to use a throwing decoder as a fallback - - - - Decode text from a byte array. - - The byte array containing encoded text. - The count of valid bytes in . - The encoding to use if an encoding cannot be determined from the byte order mark. - The actual encoding used. - The decoded text. - If the given encoding is set to use a throwing decoder as a fallback - - - - Check for occurrence of two consecutive NUL (U+0000) characters. - This is unlikely to appear in genuine text, so it's a good heuristic - to detect binary files. - - - internal for unit testing - - - - - Hash algorithm to use to calculate checksum of the text that's saved to PDB. - - - - - Encoding of the file that the text was read from or is going to be saved to. - null if the encoding is unspecified. - - - If the encoding is not specified the source isn't debuggable. - If an encoding-less is written to a file a shall be used as a default. - - - - - The length of the text in characters. - - - - - Returns a character at given position. - - The position to get the character from. - The character. - When position is negative or - greater than . - - - - Copy a range of characters from this SourceText to a destination array. - - - - - The container of this . - - - - - Gets a that contains the characters in the specified span of this text. - - - - - Returns a that has the contents of this text including and after the start position. - - - - - Write this to a text writer. - - - - - Write a span of text to a text writer. - - - - - Provides a string representation of the SourceText. - - - - - Gets a string containing the characters in specified span. - - When given span is outside of the text range. - - - - Constructs a new SourceText from this text with the specified changes. - - - - - Constructs a new SourceText from this text with the specified changes. - - - - - Returns a new SourceText with the specified span of characters replaced by the new text. - - - - - Returns a new SourceText with the specified range of characters replaced by the new text. - - - - - Gets the set of that describe how the text changed - between this text an older version. This may be multiple detailed changes - or a single change encompassing the entire text. - - - - - Gets the set of that describe how the text changed - between this text and an older version. This may be multiple detailed changes - or a single change encompassing the entire text. - - - - - The collection of individual text lines. - - - - - Called from to initialize the . Thereafter, - the collection is cached. - - A new representing the individual text lines. - - - - Compares the content with content of another . - - - - - Implements equality comparison of the content of two different instances of . - - - - - Detect an encoding by looking for byte order marks. - - A buffer containing the encoded text. - The length of valid data in the buffer. - The length of any detected byte order marks. - The detected encoding or null if no recognized byte order mark was present. - - - - An object that contains an instance of an SourceText and raises events when its current instance - changes. - - - - - The current text instance. - - - - - Raised when the current text instance changes. - - - - - A read-only, non-seekable over a . - - - - - Implementation of based on a input - - - - - Underlying string on which this SourceText instance is based - - - - - Underlying string which is the source of this SourceText instance - - - - - The length of the text represented by . - - - - - Returns a character at given position. - - The position to get the character from. - The character. - When position is negative or - greater than . - - - - Provides a string representation of the StringBuilderText located within given span. - - When given span is outside of the text range. - - - - Implementation of SourceText based on a input - - - - - Underlying string which is the source of this instance - - - - - The length of the text represented by . - - - - - Returns a character at given position. - - The position to get the character from. - The character. - When position is negative or - greater than . - - - - Provides a string representation of the StringText located within given span. - - When given span is outside of the text range. - - - - An SourceText that represents a subrange of another SourceText. - - - - - Describes a single change when a particular span is replaced with a new text. - - - - - The original span of the changed text. - - - - - The new text. - - - - - Initializes a new instance of - - The original span of the changed text. - The new text. - - - - Provides a string representation for . - - - - - Converts a to a . - - - - - - An empty set of changes. - - - - - Represents state for a TextChanged event. - - - - - Initializes an instance of . - - The text before the change. - The text after the change. - A non-empty set of ranges for the change. - - - - Initializes an instance of . - - The text before the change. - The text after the change. - A non-empty set of ranges for the change. - - - - Gets the text before the change. - - - - - Gets the text after the change. - - - - - Gets the set of ranges for the change. - - - - - Represents the change to a span of text. - - - - - The span of text before the edit which is being changed - - - - - Width of the span after the edit. A 0 here would represent a delete - - - - - Initializes a new instance of . - - - - - - - Compares current instance of to another. - - - - - Compares current instance of to another. - - - - - Provides hash code for current instance of . - - - - - - Determines if two instances of are same. - - - - - Determines if two instances of are different. - - - - - An empty set of changes. - - - - - Collapse a set of s into a single encompassing range. If - the set of ranges provided is empty, an empty range is returned. - - - - - Information about the character boundaries of a single line of text. - - - - - Creates a instance. - - The source text. - The span of the line. - An instance of . - The span does not represent a text line. - - - - Gets the source text. - - - - - Gets the zero-based line number. - - - - - Gets the start position of the line. - - - - - Gets the end position of the line not including the line break. - - - - - Gets the end position of the line including the line break. - - - - - Gets the line span not including the line break. - - - - - Gets the line span including the line break. - - - - - Abstract base class for collections. - - - - - The count of items in the collection - - - - - Gets the item at the specified index. - - - - - The index of the TextLine that encompasses the character position. - - - - - Gets a that encompasses the character position. - - - - - - - Gets a corresponding to a character position. - - - - - Convert a to a . - - - - - Convert a to a position. - - - - - Convert a to . - - - - - Immutable abstract representation of a span of text. For example, in an error diagnostic that reports a - location, it could come from a parsed string, text from a tool editor buffer, etc. - - - - - Creates a TextSpan instance beginning with the position Start and having the Length - specified with . - - - - - Start point of the span. - - - - - End of the span. - - - - - Length of the span. - - - - - Determines whether or not the span is empty. - - - - - Determines whether the position lies within the span. - - - The position to check. - - - true if the position is greater than or equal to Start and strictly less - than End, otherwise false. - - - - - Determines whether falls completely within this span. - - - The span to check. - - - true if the specified span falls completely within this span, otherwise false. - - - - - Determines whether overlaps this span. Two spans are considered to overlap - if they have positions in common and neither is empty. Empty spans do not overlap with any - other span. - - - The span to check. - - - true if the spans overlap, otherwise false. - - - - - Returns the overlap with the given span, or null if there is no overlap. - - - The span to check. - - - The overlap of the spans, or null if the overlap is empty. - - - - - Determines whether intersects this span. Two spans are considered to - intersect if they have positions in common or the end of one span - coincides with the start of the other span. - - - The span to check. - - - true if the spans intersect, otherwise false. - - - - - Determines whether intersects this span. - A position is considered to intersect if it is between the start and - end positions (inclusive) of this span. - - - The position to check. - - - true if the position intersects, otherwise false. - - - - - Returns the intersection with the given span, or null if there is no intersection. - - - The span to check. - - - The intersection of the spans, or null if the intersection is empty. - - - - - Creates a new from and positions as opposed to a position and length. - - The returned TextSpan contains the range with inclusive, - and exclusive. - - - - - Determines if two instances of are the same. - - - - - Determines if two instances of are different. - - - - - Determines if current instance of is equal to another. - - - - - Determines if current instance of is equal to another. - - - - - Produces a hash code for . - - - - - Provides a string representation for . - - - - - Compares current instance of with another. - - - - - Holder for common Text Utility functions and values - - - - - Return startLineBreak = index-1, lengthLineBreak = 2 if there is a \r\n at index-1 - Return startLineBreak = index, lengthLineBreak = 1 if there is a 1-char newline at index - Return startLineBreak = index+1, lengthLineBreak = 0 if there is no newline at index. - - - - - Determine if the character in question is any line break character - - - - - Emit the IL for the compilation into the specified stream. - - Compilation. - Path of the file to which the compilation will be written. - Path of the file to which the compilation's debug info will be written. - Also embedded in the output file. Null to forego PDB generation. - - Path of the file to which the compilation's XML documentation will be written. Null to forego XML generation. - Path of the file from which the compilation's Win32 resources will be read (in RES format). - Null to indicate that there are none. - List of the compilation's managed resources. Null to indicate that there are none. - To cancel the emit process. - Compilation or path is null. - Path is empty or invalid. - An error occurred while reading or writing a file. - - - - APIs for constructing documentation comment id's, and finding symbols that match ids. - - - - - Creates an id string used by external documentation comment files to identify declarations - of types, namespaces, methods, properties, etc. - - - - - Creates an id string used to reference type symbols (not strictly declarations, includes - arrays, pointers, type parameters, etc.) - - - - - Gets all declaration symbols that match the declaration id string - - - - - Try to get all the declaration symbols that match the declaration id string. - Returns true if at least one symbol matches. - - - - - Gets the first declaration symbol that matches the declaration id string, order undefined. - - - - - Gets the symbols that match the reference id string. - - - - - Try to get all symbols that match the reference id string. - Returns true if at least one symbol matches. - - - - - Gets the first symbol that matches the reference id string, order undefined. - - - - - Checks for the given ; if the is true, - immediately terminates the process without running any pending finally blocks or finalizers - and causes a crash dump to be collected (if the system is configured to do so). - Otherwise, the process continues normally. - - The conditional expression to evaluate. - An optional message to be recorded in the dump in case of failure. Can be null. - - - - Dictionary designed to hold small number of items. - Compared to the regular Dictionary, average overhead per-item is roughly the same, but - unlike regular dictionary, this one is based on an AVL tree and as such does not require - rehashing when items are added. - It does require rebalancing, but that is allocation-free. - - Major caveats: - 1) There is no Remove method. (can be added, but we do not seem to use Remove that much) - 2) foreach [keys|values|pairs] may allocate a small array. - 3) Performance is no longer O(1). At a certain count it becomes slower than regular Dictionary. - In comparison to regular Dictionary on my machine: - On trivial number of elements (5 or so) it is more than 2x faster. - The break even count is about 120 elements for read and 55 for write operations (with unknown initial size). - At UShort.MaxValue elements, this dictionary is 6x slower to read and 4x slower to write - - Generally, this dictionary is a win if number of elements is small, not known beforehand or both. - - If the size of the dictionary is known at creation and it is likely to contain more than 10 elements, - then regular Dictionary is a better choice. - - - - - Implements a readonly collection over a set of existing collections. This can be used to - prevent having to copy items from one collection over to another (thus bloating space). - - Note: this is a *collection*, not a *set*. There is no removal of duplicated elements. This - allows us to be able to efficiently do operations like CopyTo, Count, etc. in O(c) time - instead of O(n) (where 'c' is the number of collections and 'n' is the number of elements). - If you have a few collections with many elements in them, then this is an appropriate - collection for you. - - - - - Indicates the reasons why a candidate (or set of candidate) symbols were not considered - correct in SemanticInfo. Higher values take precedence over lower values, so if, for - example, there a symbol with a given name that was inaccessible, and other with the wrong - arity, only the inaccessible one would be reported in the SemanticInfo. - - - - - No CandidateSymbols. - - - - - Only a type or namespace was valid in the given location, but the candidate symbols was - of the wrong kind. - - - - - Only an event was valid in the given location, but the candidate symbols was - of the wrong kind. - - - - - The candidate symbol must be a WithEvents member, but it was not. - - - - - Only an attribute type was valid in the given location, but the candidate symbol was - of the wrong kind. - - - - - The candidate symbol takes a different number of type parameters that was required. - - - - - The candidate symbol existed, but was not allowed to be created in a new expression. - For example, interfaces, static classes, and unconstrained type parameters. - - - - - The candidate symbol existed, but was not allowed to be referenced. For example, the - "get_XXX" method used to implement a property named "XXX" may not be directly - referenced. Similarly, the type "System.Void" can not be directly referenced. - Also occurs if "this" is used in a context (static method or field initializer) - where "this" is not available. - - - - - The candidate symbol had an accessibility modifier (private, protected, ...) that made - it inaccessible. - - - - - The candidate symbol was in a place where a value was required, but was not a value - (e.g., was a type or namespace). - - - - - The candidate symbol was in a place where a variable (or sometimes, a property) was - required, but was not allowed there because it isn't a symbol that can be assigned to. - For example, the left hand side of an assignment, or a ref or out parameter. - - - - - The candidate symbol was used in a way that an invocable member (method, or variable of - delegate type) was required, but the candidate symbol was not invocable. - - - - - The candidate symbol must be an instance variable, but was used as static, or the - reverse. - - - - - Overload resolution did not choose a method. The candidate symbols are the methods there - were considered during overload resolution (which may or may not be applicable methods). - - - - - Method could not be selected statically. - The candidate symbols are the methods there were considered during overload resolution - (which may or may not be applicable methods). - - - - - Multiple ambiguous symbols were available with the same name. This can occur if "using" - statements bring multiple namespaces into scope, and the same type is available in - multiple. This can also occur if multiple properties of the same name are available in a - multiple interface inheritance situation. - - - - - CandidateSymbols are members of a group of results. This is used when there isn't a problem, - but there is more than one result, for example nameof(int.ToString). - - - - - Represents compilation options common to C# and VB. - - - - - The kind of assembly generated when emitted. - - - - - Name of the primary module, or null if a default name should be used. - - - The name usually (but not necessarily) includes an extension, e.g. "MyModule.dll". - - If is null the actual name written to metadata - is derived from the name of the compilation () - by appending a default extension for . - - - - - The full name of a global implicit class (script class). This class implicitly encapsulates top-level statements, - type declarations, and member declarations. Could be a namespace qualified name. - - - - - The full name of a type that declares static Main method. Must be a valid non-generic namespace-qualified name. - Null if any static Main method is a candidate for an entry point. - - - - - Specifies public key used to generate strong name for the compilation assembly, or empty of not specified. - - - If specified the values of and must be null. - If is false the assembly is marked as signed but not actually signed (aka "OSS signing"). - - - - - The name of the file containing the public and private keys to use to generate strong name of the - compilation assembly and to sign it. - - - - To sign the output supply either one of or . - but not both. If both are specified is ignored. - - - This setting is obsolete and only supported on Microsoft Windows platform. - Use to generate assemblies with strong name and - a signing tool (Microsoft .NET Framework Strong Name Utility (sn.exe) or equivalent) to sign them. - - - - - - The CSP container containing the key with which to sign the output. - - - - To sign the output supply either one of or . - but not both. If both are specified is ignored. - - - This setting is obsolete and only supported on Microsoft Windows platform. - Use to generate assemblies with strong name and - a signing tool (Microsoft .NET Framework Strong Name Utility (sn.exe) or equivalent) to sign them. - - - - - - Turn compilation assembly signing on or off. - - - If true the resulting assembly is marked as delay signed. - - If false and , , or is specified - or attribute System.Reflection.AssemblyKeyFileAttribute or System.Reflection.AssemblyKeyNameAttribute is applied to the - compilation assembly in source the resulting assembly is signed accordingly to the specified values/attributes. - - If null the semantics is specified by the value of attribute System.Reflection.AssemblyDelaySignAttribute - applied to the compilation assembly in source. If the attribute is not present the value defaults to "false". - - - - - Whether bounds checking on integer arithmetic is enforced by default or not. - - - - - Specifies which version of the common language runtime (CLR) can run the assembly. - - - - - Specifies whether or not optimizations should be performed on the output IL. - This is independent of whether or not PDB information is generated. - - - - - Global warning report option - - - - - Global warning level (from 0 to 4). - - - - - Specifies whether building compilation may use multiple threads. - - - - - Specifies whether the compilation should be deterministic. - - - - - Emit extended custom debug information to the PDB file. - - - - - Emit mode that favors debuggability. - - - - - Import internal/private members from all references regardless of "internals-visible-to" relationship. - - - - - Modifies the incoming diagnostic, for example escalating its severity, or discarding it (returning null) based on the compilation options. - - - The modified diagnostic, or null - - - - Warning report option for each warning. - - - - - Whether diagnostics suppressed in source, i.e. is true, should be reported. - - - - - Resolves paths to metadata references specified in source via #r directives. - Null if the compilation can't contain references to metadata other than those explicitly passed to its factory (such as #r directives in sources). - - - - - Gets the resolver for resolving XML document references for the compilation. - Null if the compilation is not allowed to contain XML file references, such as XML doc comment include tags and permission sets stored in an XML file. - - - - - Gets the resolver for resolving source document references for the compilation. - Null if the compilation is not allowed to contain source file references, such as #line pragmas and #load directives. - - - - - Provides strong name and signature the source assembly. - Null if assembly signing is not supported. - - - - - Used to compare assembly identities. May implement unification and portability policies specific to the target platform. - if not specified. - - - - - A set of strings designating experimental compiler features that are to be enabled. - - - - - Creates a new options instance with the specified general diagnostic option. - - - - - Creates a new options instance with the specified diagnostic-specific options. - - - - - Creates a new options instance with the specified diagnostic-specific options. - - - - - Creates a new options instance with the specified suppressed diagnostics reporting option. - - - - - Creates a new options instance with the deterministic property set accordingly. - - - - - Creates a new options instance with the specified output kind. - - - - - Creates a new options instance with the specified platform. - - - - - Creates a new options instance with optimizations enabled or disabled. - - - - - Performs validation of options compatibilities and generates diagnostics if needed - - - - - Errors collection related to an incompatible set of compilation options - - - - - Represents the possible compilation stages for which it is possible to get diagnostics - (errors). - - - - - Provides information about statements which transfer control in and out of a region. This - information is returned from a call to . - - - - - The set of statements inside the region what are the - destination of branches outside the region. - - - - - The set of statements inside a region that jump to locations outside - the region. - - - - - Indicates whether a region completes normally. Return true if and only if the end of the - last statement in a region is reachable or the region contains no statements. - - - - - The set of return statements found within a region. - - - - - Returns true iff analysis was successful. Analysis can fail if the region does not properly span a single expression, - a single statement, or a contiguous series of statements within the enclosing block. - - - - - Provides information about how data flows into and out of a region. This information is - returned from a call to - , or one of its language-specific overloads, - where you pass the first and last statements of the region as parameters. - "Inside" means those statements or ones between them. "Outside" are any other statements of the same method. - - - - - The set of local variables that are declared within a region. Note - that the region must be bounded by a method's body or a field's initializer, so - parameter symbols are never included in the result. - - - - - The set of local variables which are assigned a value outside a region - that may be used inside the region. - - - - - The set of local variables which are assigned a value inside a region - that may be used outside the region. - - - - - The set of local variables for which a value is always assigned inside - a region. - - - - - The set of local variables that are read inside a region. - - - - - The set of local variables that are written inside a region. - - - - - The set of the local variables that are read outside a region. - - - - - The set of local variables that are written outside a region. - - - - - The set of the local variables that have been referenced in anonymous - functions within a region and therefore must be moved to a field of a frame class. - - - - - The set of non-constant local variables and parameters that have had their - address (or the address of one of their fields) taken. - - - - - Returns true iff analysis was successful. Analysis can fail if the region does not - properly span a single expression, a single statement, or a contiguous series of - statements within the enclosing block. - - - - - Gets symbol information about a syntax node. - - - The syntax node to get semantic information for. - A cancellation token that can be used to cancel the - process of obtaining the semantic info. - - - - Binds the node in the context of the specified location and get semantic information - such as type, symbols and diagnostics. This method is used to get semantic information - about an expression that did not actually appear in the source code. - - - A character position used to identify a declaration scope and - accessibility. This character position must be within the FullSpan of the Root syntax - node in this SemanticModel. - - A syntax node that represents a parsed expression. This syntax - node need not and typically does not appear in the source code referred to SemanticModel - instance. - Indicates whether to binding the expression as a full expressions, - or as a type or namespace. If SpeculativeBindingOption.BindAsTypeOrNamespace is supplied, then - expression should derive from TypeSyntax. - The semantic information for the topmost node of the expression. - The passed in expression is interpreted as a stand-alone expression, as if it - appeared by itself somewhere within the scope that encloses "position". - - - - Gets type information about a syntax node. - - - The syntax node to get semantic information for. - A cancellation token that can be used to cancel the - process of obtaining the semantic info. - - - - If "nameSyntax" resolves to an alias name, return the IAliasSymbol corresponding - to A. Otherwise return null. - - - Name to get alias info for. - A cancellation token that can be used to cancel the - process of obtaining the alias information. - - - - Binds the name in the context of the specified location and sees if it resolves to an - alias name. If it does, return the AliasSymbol corresponding to it. Otherwise, return null. - - - A character position used to identify a declaration scope and - accessibility. This character position must be within the FullSpan of the Root syntax - node in this SemanticModel. - - A syntax node that represents a name. This syntax - node need not and typically does not appear in the source code referred to by the - SemanticModel instance. - Indicates whether to binding the name as a full expression, - or as a type or namespace. If SpeculativeBindingOption.BindAsTypeOrNamespace is supplied, then - expression should derive from TypeSyntax. - The passed in name is interpreted as a stand-alone name, as if it - appeared by itself somewhere within the scope that encloses "position". - - - - Binds the node in the context of the specified location and get semantic information - such as type, symbols and diagnostics. This method is used to get semantic information - about an expression that did not actually appear in the source code. - - - A character position used to identify a declaration scope and - accessibility. This character position must be within the FullSpan of the Root syntax - node in this SemanticModel. - - A syntax node that represents a parsed expression. This syntax - node need not and typically does not appear in the source code referred to SemanticModel - instance. - Indicates whether to binding the expression as a full expressions, - or as a type or namespace. If SpeculativeBindingOption.BindAsTypeOrNamespace is supplied, then - expression should derive from TypeSyntax. - The semantic information for the topmost node of the expression. - The passed in expression is interpreted as a stand-alone expression, as if it - appeared by itself somewhere within the scope that encloses "position". - - - - Gets the symbol associated with a declaration syntax node. - - - A syntax node that is a declaration. This can be any type - derived from MemberDeclarationSyntax, TypeDeclarationSyntax, EnumDeclarationSyntax, - NamespaceDeclarationSyntax, ParameterSyntax, TypeParameterSyntax, or the alias part of a - UsingDirectiveSyntax - The cancellation token. - The symbol declared by the node or null if the node is not a declaration. - - - - Gets a list of method or indexed property symbols for a syntax node. - - - The syntax node to get semantic information for. - The cancellation token. - - - - Analyze control-flow within a part of a method body. - - - - - Analyze control-flow within a part of a method body. - - - - - Analyze data-flow within a part of a method body. - - - - - Analyze data-flow within a part of a method body. - - - - - Determines the level of optimization of the generated code. - - - - - Disables all optimizations and instruments the generated code to improve debugging experience. - - - The compiler prefers debuggability over performance. Do not use for code running in a production environment. - - JIT optimizations are disabled via assembly level attribute (). - Edit and Continue is enabled. - Slots for local variables are not reused, lifetime of local variables is extended to make the values available during debugging. - - - Corresponds to command line argument /optimize-. - - - - - - Enables all optimizations, debugging experience might be degraded. - - - The compiler prefers performance over debuggability. Use for code running in a production environment. - - JIT optimizations are enabled via assembly level attribute (). - Edit and Continue is disabled. - Sequence points may be optimized away. As a result it might not be possible to place or hit a breakpoint. - User-defined locals might be optimized away. They might not be available while debugging. - - - Corresponds to command line argument /optimize+. - - - - - - Represents parse options common to C# and VB. - - - - - Specifies whether to parse as regular code files, script files or interactive code. - - - - - Gets a value indicating whether the documentation comments are parsed. - - true if documentation comments are parsed, false otherwise. - - - - Creates a new options instance with the specified source code kind. - - - - - Creates a new options instance with the specified documentation mode. - - - - - Enable some experimental language features for testing. - - - - - Returns the experimental features. - - - - - Names of defined preprocessor symbols. - - - - - AnyCPU (default) compiles the assembly to run on any platform. - - - - - x86 compiles the assembly to be run by the 32-bit, x86-compatible common language runtime. - - - - - x64 compiles the assembly to be run by the 64-bit common language runtime on a computer that supports the AMD64 or EM64T instruction set. - - - - - Itanium compiles the assembly to be run by the 64-bit common language runtime on a computer with an Itanium processor. - - - - - Compiles your assembly to run on any platform. Your application runs in 32-bit mode on systems that support both 64-bit and 32-bit applications. - - - - - Compiles your assembly to run on a computer that has an Advanced RISC Machine (ARM) processor. - - - - - The symbol that was referred to by the identifier, if any. - - - - - Returns true if this preprocessing symbol is defined at the identifier position. - - - - - Allows asking semantic questions about a tree of syntax nodes in a Compilation. Typically, - an instance is obtained by a call to GetBinding on a Compilation or Compilation. - - - An instance of SemanticModel caches local symbols and semantic information. Thus, it - is much more efficient to use a single instance of SemanticModel when asking multiple - questions about a syntax tree, because information from the first question may be reused. - This also means that holding onto an instance of SemanticModel for a long time may keep a - significant amount of memory from being garbage collected. - - - When an answer is a named symbol that is reachable by traversing from the root of the symbol - table, (that is, from an AssemblySymbol of the Compilation), that symbol will be returned - (i.e. the returned value will be reference-equal to one reachable from the root of the - symbol table). Symbols representing entities without names (e.g. array-of-int) may or may - not exhibit reference equality. However, some named symbols (such as local variables) are - not reachable from the root. These symbols are visible as answers to semantic questions. - When the same SemanticModel object is used, the answers exhibit reference-equality. - - - - - - Gets the source language ("C#" or "Visual Basic"). - - - - - The compilation this model was obtained from. - - - - - The compilation this model was obtained from. - - - - - The syntax tree this model was obtained from. - - - - - The syntax tree this model was obtained from. - - - - - Returns true if this is a SemanticModel that ignores accessibility rules when answering semantic questions. - - - - - Gets symbol information about a syntax node. - - The syntax node to get semantic information for. - A cancellation token that can be used to cancel the - process of obtaining the semantic info. - - - - Gets symbol information about a syntax node. - - The syntax node to get semantic information for. - A cancellation token that can be used to cancel the - process of obtaining the semantic info. - - - - Binds the node in the context of the specified location and get semantic information - such as type, symbols and diagnostics. This method is used to get semantic information - about an expression that did not actually appear in the source code. - - A character position used to identify a declaration scope and - accessibility. This character position must be within the FullSpan of the Root syntax - node in this SemanticModel. - - A syntax node that represents a parsed expression. This syntax - node need not and typically does not appear in the source code referred to SemanticModel - instance. - Indicates whether to binding the expression as a full expressions, - or as a type or namespace. If SpeculativeBindingOption.BindAsTypeOrNamespace is supplied, then - expression should derive from TypeSyntax. - The semantic information for the topmost node of the expression. - The passed in expression is interpreted as a stand-alone expression, as if it - appeared by itself somewhere within the scope that encloses "position". - - - - Binds the node in the context of the specified location and get semantic information - such as type, symbols and diagnostics. This method is used to get semantic information - about an expression that did not actually appear in the source code. - - A character position used to identify a declaration scope and - accessibility. This character position must be within the FullSpan of the Root syntax - node in this SemanticModel. - - A syntax node that represents a parsed expression. This syntax - node need not and typically does not appear in the source code referred to SemanticModel - instance. - Indicates whether to binding the expression as a full expressions, - or as a type or namespace. If SpeculativeBindingOption.BindAsTypeOrNamespace is supplied, then - expression should derive from TypeSyntax. - The semantic information for the topmost node of the expression. - The passed in expression is interpreted as a stand-alone expression, as if it - appeared by itself somewhere within the scope that encloses "position". - - - - Binds the node in the context of the specified location and get semantic information - such as type, symbols and diagnostics. This method is used to get semantic information - about an expression that did not actually appear in the source code. - - A character position used to identify a declaration scope and - accessibility. This character position must be within the FullSpan of the Root syntax - node in this SemanticModel. - - A syntax node that represents a parsed expression. This syntax - node need not and typically does not appear in the source code referred to SemanticModel - instance. - Indicates whether to binding the expression as a full expressions, - or as a type or namespace. If SpeculativeBindingOption.BindAsTypeOrNamespace is supplied, then - expression should derive from TypeSyntax. - The semantic information for the topmost node of the expression. - The passed in expression is interpreted as a stand-alone expression, as if it - appeared by itself somewhere within the scope that encloses "position". - - - - Binds the node in the context of the specified location and get semantic information - such as type, symbols and diagnostics. This method is used to get semantic information - about an expression that did not actually appear in the source code. - - A character position used to identify a declaration scope and - accessibility. This character position must be within the FullSpan of the Root syntax - node in this SemanticModel. - - A syntax node that represents a parsed expression. This syntax - node need not and typically does not appear in the source code referred to SemanticModel - instance. - Indicates whether to binding the expression as a full expressions, - or as a type or namespace. If SpeculativeBindingOption.BindAsTypeOrNamespace is supplied, then - expression should derive from TypeSyntax. - The semantic information for the topmost node of the expression. - The passed in expression is interpreted as a stand-alone expression, as if it - appeared by itself somewhere within the scope that encloses "position". - - - - Gets type information about a syntax node. - - The syntax node to get semantic information for. - A cancellation token that can be used to cancel the - process of obtaining the semantic info. - - - - Gets type information about a syntax node. - - The syntax node to get semantic information for. - A cancellation token that can be used to cancel the - process of obtaining the semantic info. - - - - If "nameSyntax" resolves to an alias name, return the IAliasSymbol corresponding - to A. Otherwise return null. - - Name to get alias info for. - A cancellation token that can be used to cancel the - process of obtaining the alias information. - - - - If "nameSyntax" resolves to an alias name, return the IAliasSymbol corresponding - to A. Otherwise return null. - - Name to get alias info for. - A cancellation token that can be used to cancel the - process of obtaining the alias information. - - - - Returns true if this is a speculative semantic model created with any of the TryGetSpeculativeSemanticModel methods. - - - - - If this is a speculative semantic model, returns the original position at which the speculative model was created. - Otherwise, returns 0. - - - - - If this is a speculative semantic model, then returns its parent semantic model. - Otherwise, returns null. - - - - - If this is a speculative semantic model, then returns its parent semantic model. - Otherwise, returns null. - - - - - Binds the name in the context of the specified location and sees if it resolves to an - alias name. If it does, return the AliasSymbol corresponding to it. Otherwise, return null. - - A character position used to identify a declaration scope and - accessibility. This character position must be within the FullSpan of the Root syntax - node in this SemanticModel. - - A syntax node that represents a name. This syntax - node need not and typically does not appear in the source code referred to by the - SemanticModel instance. - Indicates whether to binding the name as a full expression, - or as a type or namespace. If SpeculativeBindingOption.BindAsTypeOrNamespace is supplied, then - expression should derive from TypeSyntax. - The passed in name is interpreted as a stand-alone name, as if it - appeared by itself somewhere within the scope that encloses "position". - - - - Binds the name in the context of the specified location and sees if it resolves to an - alias name. If it does, return the AliasSymbol corresponding to it. Otherwise, return null. - - A character position used to identify a declaration scope and - accessibility. This character position must be within the FullSpan of the Root syntax - node in this SemanticModel. - - A syntax node that represents a name. This syntax - node need not and typically does not appear in the source code referred to by the - SemanticModel instance. - Indicates whether to binding the name as a full expression, - or as a type or namespace. If SpeculativeBindingOption.BindAsTypeOrNamespace is supplied, then - expression should derive from TypeSyntax. - The passed in name is interpreted as a stand-alone name, as if it - appeared by itself somewhere within the scope that encloses "position". - - - - Get all of the syntax errors within the syntax tree associated with this - object. Does not get errors involving declarations or compiling method bodies or initializers. - - Optional span within the syntax tree for which to get diagnostics. - If no argument is specified, then diagnostics for the entire tree are returned. - A cancellation token that can be used to cancel the - process of obtaining the diagnostics. - - - - Get all of the declaration errors within the syntax tree associated with this - object. Does not get errors involving incorrect syntax, compiling method bodies or initializers. - - Optional span within the syntax tree for which to get diagnostics. - If no argument is specified, then diagnostics for the entire tree are returned. - A cancellation token that can be used to cancel the - process of obtaining the diagnostics. - The declaration errors for a syntax tree are cached. The first time this method - is called, all declarations are analyzed for diagnostics. Calling this a second time - will return the cached diagnostics. - - - - - Get all of the method body and initializer errors within the syntax tree associated with this - object. Does not get errors involving incorrect syntax or declarations. - - Optional span within the syntax tree for which to get diagnostics. - If no argument is specified, then diagnostics for the entire tree are returned. - A cancellation token that can be used to cancel the - process of obtaining the diagnostics. - The method body errors for a syntax tree are not cached. The first time this method - is called, all method bodies are analyzed for diagnostics. Calling this a second time - will repeat this work. - - - - - Get all the errors within the syntax tree associated with this object. Includes errors - involving compiling method bodies or initializers, in addition to the errors returned by - GetDeclarationDiagnostics. - - Optional span within the syntax tree for which to get diagnostics. - If no argument is specified, then diagnostics for the entire tree are returned. - A cancellation token that can be used to cancel the - process of obtaining the diagnostics. - - Because this method must semantically bind all method bodies and initializers to check - for diagnostics, it may take a significant amount of time. Unlike - GetDeclarationDiagnostics, diagnostics for method bodies and initializers are not - cached, any semantic information used to obtain the diagnostics is discarded. - - - - - Gets the symbol associated with a declaration syntax node. - - A syntax node that is a declaration. This can be any type - derived from MemberDeclarationSyntax, TypeDeclarationSyntax, EnumDeclarationSyntax, - NamespaceDeclarationSyntax, ParameterSyntax, TypeParameterSyntax, or the alias part of a - UsingDirectiveSyntax - The cancellation token. - The symbol declared by the node or null if the node is not a declaration. - - - - Gets the symbol associated with a declaration syntax node. - - A syntax node that is a declaration. This can be any type - derived from MemberDeclarationSyntax, TypeDeclarationSyntax, EnumDeclarationSyntax, - NamespaceDeclarationSyntax, ParameterSyntax, TypeParameterSyntax, or the alias part of a - UsingDirectiveSyntax - The cancellation token. - The symbol declared by the node or null if the node is not a declaration. - - - - Gets the symbol associated with a declaration syntax node. Unlike , - this method returns all symbols declared by a given declaration syntax node. Specifically, in the case of field declaration syntax nodes, - which can declare multiple symbols, this method returns all declared symbols. - - A syntax node that is a declaration. This can be any type - derived from MemberDeclarationSyntax, TypeDeclarationSyntax, EnumDeclarationSyntax, - NamespaceDeclarationSyntax, ParameterSyntax, TypeParameterSyntax, or the alias part of a - UsingDirectiveSyntax - The cancellation token. - The symbols declared by the node. - - - - Gets the symbol associated with a declaration syntax node. Unlike , - this method returns all symbols declared by a given declaration syntax node. Specifically, in the case of field declaration syntax nodes, - which can declare multiple symbols, this method returns all declared symbols. - - A syntax node that is a declaration. This can be any type - derived from MemberDeclarationSyntax, TypeDeclarationSyntax, EnumDeclarationSyntax, - NamespaceDeclarationSyntax, ParameterSyntax, TypeParameterSyntax, or the alias part of a - UsingDirectiveSyntax - The cancellation token. - The symbols declared by the node. - - - - Gets the available named symbols in the context of the specified location and optional container. Only - symbols that are accessible and visible from the given location are returned. - - The character position for determining the enclosing declaration scope and - accessibility. - The container to search for symbols within. If null then the enclosing declaration - scope around position is used. - The name of the symbol to find. If null is specified then symbols - with any names are returned. - Consider (reduced) extension methods. - A list of symbols that were found. If no symbols were found, an empty list is returned. - - The "position" is used to determine what variables are visible and accessible. Even if "container" is - specified, the "position" location is significant for determining which members of "containing" are - accessible. - - Labels are not considered (see ). - - Non-reduced extension methods are considered regardless of the value of . - - - - - Backing implementation of . - - - - - Gets the available base type members in the context of the specified location. Akin to - calling with the container set to the immediate base type of - the type in which occurs. However, the accessibility rules - are different: protected members of the base type will be visible. - - Consider the following example: - - public class Base - { - protected void M() { } - } - - public class Derived : Base - { - void Test(Base b) - { - b.M(); // Error - cannot access protected member. - base.M(); - } - } - - Protected members of an instance of another type are only accessible if the instance is known - to be "this" instance (as indicated by the "base" keyword). - - The character position for determining the enclosing declaration scope and - accessibility. - The name of the symbol to find. If null is specified then symbols - with any names are returned. - A list of symbols that were found. If no symbols were found, an empty list is returned. - - The "position" is used to determine what variables are visible and accessible. - - Non-reduced extension methods are considered, but reduced extension methods are not. - - - - - Backing implementation of . - - - - - Gets the available named static member symbols in the context of the specified location and optional container. - Only members that are accessible and visible from the given location are returned. - - Non-reduced extension methods are considered, since they are static methods. - - The character position for determining the enclosing declaration scope and - accessibility. - The container to search for symbols within. If null then the enclosing declaration - scope around position is used. - The name of the symbol to find. If null is specified then symbols - with any names are returned. - A list of symbols that were found. If no symbols were found, an empty list is returned. - - The "position" is used to determine what variables are visible and accessible. Even if "container" is - specified, the "position" location is significant for determining which members of "containing" are - accessible. - - Essentially the same as filtering instance members out of the results of an analogous call. - - - - - Backing implementation of . - - - - - Gets the available named namespace and type symbols in the context of the specified location and optional container. - Only members that are accessible and visible from the given location are returned. - - The character position for determining the enclosing declaration scope and - accessibility. - The container to search for symbols within. If null then the enclosing declaration - scope around position is used. - The name of the symbol to find. If null is specified then symbols - with any names are returned. - A list of symbols that were found. If no symbols were found, an empty list is returned. - - The "position" is used to determine what variables are visible and accessible. Even if "container" is - specified, the "position" location is significant for determining which members of "containing" are - accessible. - - Does not return INamespaceOrTypeSymbol, because there could be aliases. - - - - - Backing implementation of . - - - - - Gets the available named label symbols in the context of the specified location and optional container. - Only members that are accessible and visible from the given location are returned. - - The character position for determining the enclosing declaration scope and - accessibility. - The name of the symbol to find. If null is specified then symbols - with any names are returned. - A list of symbols that were found. If no symbols were found, an empty list is returned. - - The "position" is used to determine what variables are visible and accessible. Even if "container" is - specified, the "position" location is significant for determining which members of "containing" are - accessible. - - - - - Backing implementation of . - - - - - Analyze control-flow within a part of a method body. - - The first node to be included within the analysis. - The last node to be included within the analysis. - An object that can be used to obtain the result of the control flow analysis. - The span is not with a method - body. - - The first and last nodes must be fully inside the same method body. - - - - - Analyze control-flow within a part of a method body. - - The first node to be included within the analysis. - The last node to be included within the analysis. - An object that can be used to obtain the result of the control flow analysis. - The span is not with a method - body. - - The first and last nodes must be fully inside the same method body. - - - - - Analyze control-flow within a part of a method body. - - The statement to be analyzed. - An object that can be used to obtain the result of the control flow analysis. - The span is not with a method - body. - - The statement must be fully inside the same method body. - - - - - Analyze control-flow within a part of a method body. - - The statement to be analyzed. - An object that can be used to obtain the result of the control flow analysis. - The span is not with a method - body. - - The statement must be fully inside the same method body. - - - - - Analyze data-flow within a part of a method body. - - The first node to be included within the analysis. - The last node to be included within the analysis. - An object that can be used to obtain the result of the data flow analysis. - The span is not with a method - body. - - The first and last nodes must be fully inside the same method body. - - - - - Analyze data-flow within a part of a method body. - - The first node to be included within the analysis. - The last node to be included within the analysis. - An object that can be used to obtain the result of the data flow analysis. - The span is not with a method - body. - - The first and last nodes must be fully inside the same method body. - - - - - Analyze data-flow within a part of a method body. - - The statement or expression to be analyzed. - An object that can be used to obtain the result of the data flow analysis. - The statement or expression is not with a method - body or field or property initializer. - - The statement or expression must be fully inside a method body. - - - - - Analyze data-flow within a part of a method body. - - The statement or expression to be analyzed. - An object that can be used to obtain the result of the data flow analysis. - The statement or expression is not with a method - body or field or property initializer. - - The statement or expression must be fully inside a method body. - - - - - If the node provided has a constant value an Optional value will be returned with - HasValue set to true and with Value set to the constant. If the node does not have an - constant value, an Optional will be returned with HasValue set to false. - - - - - If the node provided has a constant value an Optional value will be returned with - HasValue set to true and with Value set to the constant. If the node does not have an - constant value, an Optional will be returned with HasValue set to false. - - - - - When getting information for a symbol that resolves to a method group or property group, - from which a method is then chosen; the chosen method or property is present in Symbol; - all methods in the group that was consulted are placed in this property. - - - - - When getting information for a symbol that resolves to a method group or property group, - from which a method is then chosen; the chosen method or property is present in Symbol; - all methods in the group that was consulted are placed in this property. - - - - - Given a position in the SyntaxTree for this SemanticModel returns the innermost Symbol - that the position is considered inside of. - - - - - Given a position in the SyntaxTree for this SemanticModel returns the innermost Symbol - that the position is considered inside of. - - - - - Determines if the symbol is accessible from the specified location. - - A character position used to identify a declaration scope and - accessibility. This character position must be within the FullSpan of the Root syntax - node in this SemanticModel. - - The symbol that we are checking to see if it accessible. - - True if "symbol is accessible, false otherwise. - - This method only checks accessibility from the point of view of the accessibility - modifiers on symbol and its containing types. Even if true is returned, the given symbol - may not be able to be referenced for other reasons, such as name hiding. - - - - - Determines if the symbol is accessible from the specified location. - - A character position used to identify a declaration scope and - accessibility. This character position must be within the FullSpan of the Root syntax - node in this SemanticModel. - - The symbol that we are checking to see if it accessible. - - True if "symbol is accessible, false otherwise. - - This method only checks accessibility from the point of view of the accessibility - modifiers on symbol and its containing types. Even if true is returned, the given symbol - may not be able to be referenced for other reasons, such as name hiding. - - - - - Field-like events can be used as fields in types that can access private - members of the declaring type of the event. - - - Always false for VB events. - - - - - Field-like events can be used as fields in types that can access private - members of the declaring type of the event. - - - Always false for VB events. - - - - - If is an identifier name syntax node, return the corresponding - to it. - - The nameSyntax node to get semantic information for. - - - - If is an identifier name syntax node, return the corresponding - to it. - - The nameSyntax node to get semantic information for. - - - - Gets the for all the declarations whose span overlaps with the given . - - Span to get declarations. - Flag indicating whether should be computed for the returned declaration infos. - If false, then is always null. - Builder to add declarations. - Cancellation token. - - - - Takes a node and returns a set of declarations that overlap the node's span. - - - - - Takes a Symbol and syntax for one of its declaring syntax reference and returns the topmost syntax node to be used by syntax analyzer. - - - - - Resolves references to source documents specified in the source. - - - - - Normalizes specified source path with respect to base file path. - - The source path to normalize. May be absolute or relative. - Path of the source file that contains the (may also be relative), or null if not available. - Normalized path, or null if can't be normalized. The resulting path doesn't need to exist. - - - - Resolves specified path with respect to base file path. - - The path to resolve. May be absolute or relative. - Path of the source file that contains the (may also be relative), or null if not available. - Normalized path, or null if the file can't be resolved. - - - - Opens a that allows reading the content of the specified file. - - Path returned by . - is null. - is not a valid absolute path. - Error reading file . See for details. - - - - Reads the contents of and returns a . - - Path returned by . - - - - Describes the kind of binding to be performed in one of the SemanticModel - speculative binding methods. - - - - - Binds the given expression using the normal expression binding rules - that would occur during normal binding of expressions. - - - - - Binds the given expression as a type or namespace only. If this option - is selected, then the given expression must derive from TypeSyntax. - - - - - Represents subsystem version, see /subsystemversion command line - option for details and valid values. - - The following table lists common subsystem versions of Windows. - - Windows version Subsystem version - - Windows 2000 5.00 - - Windows XP 5.01 - - Windows Vista 6.00 - - Windows 7 6.01 - - Windows 8 Release Preview 6.02 - - - - - Major subsystem version - - - - - Minor subsystem version - - - - - Subsystem version not specified - - - - - Subsystem version: Windows 2000 - - - - - Subsystem version: Windows XP - - - - - Subsystem version: Windows Vista - - - - - Subsystem version: Windows 7 - - - - - Subsystem version: Windows 8 - - - - - Try parse subsystem version in "x.y" format. Note, no spaces are allowed in string representation. - - String to parse - the value if successfully parsed or None otherwise - true if parsed successfully, false otherwise - - - - Create a new instance of subsystem version with specified major and minor values. - - major subsystem version - minor subsystem version - subsystem version with provided major and minor - - - - Subsystem version default for the specified output kind and platform combination - - Output kind - Platform - Subsystem version - - - - True if the subsystem version has a valid value - - - - - The symbol that was referred to by the syntax node, if any. Returns null if the given - expression did not bind successfully to a single symbol. If null is returned, it may - still be that case that we have one or more "best guesses" as to what symbol was - intended. These best guesses are available via the CandidateSymbols property. - - - - - If the expression did not successfully resolve to a symbol, but there were one or more - symbols that may have been considered but discarded, this property returns those - symbols. The reason that the symbols did not successfully resolve to a symbol are - available in the CandidateReason property. For example, if the symbol was inaccessible, - ambiguous, or used in the wrong context. - - - - - If the expression did not successfully resolve to a symbol, but there were one or more - symbols that may have been considered but discarded, this property describes why those - symbol or symbols were not considered suitable. - - - - - The type of the expression represented by the syntax node. For expressions that do not - have a type, null is returned. If the type could not be determined due to an error, then - an IErrorTypeSymbol is returned. - - - - - The type of the expression after it has undergone an implicit conversion. If the type - did not undergo an implicit conversion, returns the same as Type. - - - - - Resolves references to XML documents specified in source code. - - - - - Resolves specified XML reference with respect to base file path. - - The reference path to resolve. May be absolute or relative path. - Path of the source file that contains the (may also be relative), or null if not available. - Path to the XML artifact, or null if the file can't be resolved. - - - - Opens a that allows reading the content of the specified file. - - Path returned by . - is null. - is not a valid absolute path. - Error reading file . See for details. - - - - Parses .RES a file into its constituent resource elements. - Mostly translated from cvtres.cpp. - - - - - Assume that 3 WORDs preceded this string and that they began 32-bit aligned. - Given the string length compute the number of bytes that should be written to end - the buffer on a 32-bit boundary - - - - - - assuming the length of bytes submitted began on a 32-bit boundary, - round up this length as necessary so that it ends at a 32-bit boundary. - - - - - - - compute number of chars needed to end up on a 32-bit boundary assuming that three - WORDS preceded this string. - - - - - - - Represents a non source code file. - - - - - Path to the text. - - - - - Retrieves a with the contents of this file. - - - - - Abstracts the ability to classify and load messages for error codes. Allows the error - infrastructure to be reused between C# and VB. - - - - - Given an error code, get the severity (warning or error) of the code. - - - - - Load the message for the given error code. If the message contains - "fill-in" placeholders, those should be expressed in standard string.Format notation - and be in the string. - - - - - Get an optional localizable title for the given diagnostic code. - - - - - Get an optional localizable description for the given diagnostic code. - - - - - Get a localizable message format string for the given diagnostic code. - - - - - Get an optional help link for the given diagnostic code. - - - - - Get the diagnostic category for the given diagnostic code. - Default category is . - - - - - Get the text prefix (e.g., "CS" for C#) used on error messages. - - - - - Get the warning level for warnings (e.g., 1 through 4 for C#). VB does not have warning - levels and always uses 1. Errors should return 0. - - - - - Type that defines error codes. For testing purposes only. - - - - - Create a simple language specific diagnostic for given error code. - - - - - Create a simple language specific diagnostic for given error code. - - - - - Given a message identifier (e.g., CS0219), severity, warning as error and a culture, - get the entire prefix (e.g., "error CS0219: Warning as Error:" for C# or "error BC42024:" for VB) used on error messages. - - - - - convert given symbol to string representation based on given error code - - - - - Given an error code (like 1234) return the identifier (CS1234 or BC1234). - - - - - Produces the filtering action for the diagnostic based on the options passed in. - - - A new with new effective severity based on the options or null if the - diagnostic has been suppressed. - - - - - Filter a based on the compilation options so that /nowarn and /warnaserror etc. take effect.options - - A with effective severity based on option or null if suppressed. - - - - Represents a diagnostic, such as a compiler error or a warning, along with the location where it occurred. - - - A diagnostic (such as a compiler error or a warning), along with the location where it occurred. - - - - - Highest valid warning level for non-error diagnostics. - - - - - Creates a instance. - - A describing the diagnostic - An optional primary location of the diagnostic. If null, will return . - Arguments to the message of the diagnostic - The instance. - - - - Creates a instance. - - A describing the diagnostic. - An optional primary location of the diagnostic. If null, will return . - An optional set of properties of the diagnostic. If null, will return . - Arguments to the message of the diagnostic. - The instance. - - - - Creates a instance. - - A describing the diagnostic. - An optional primary location of the diagnostic. If null, will return . - - An optional set of additional locations related to the diagnostic. - Typically, these are locations of other items referenced in the message. - If null, will return an empty list. - - Arguments to the message of the diagnostic. - The instance. - - - - Creates a instance. - - A describing the diagnostic. - An optional primary location of the diagnostic. If null, will return . - - An optional set of additional locations related to the diagnostic. - Typically, these are locations of other items referenced in the message. - If null, will return an empty list. - - An optional set of properties of the diagnostic. If null, will return . - Arguments to the message of the diagnostic. - The instance. - - - - Creates a instance which is localizable. - - An identifier for the diagnostic. For diagnostics generated by the compiler, this will be a numeric code with a prefix such as "CS1001". - The category of the diagnostic. For diagnostics generated by the compiler, the category will be "Compiler". - The diagnostic message text. - The diagnostic's effective severity. - The diagnostic's default severity. - True if the diagnostic is enabled by default - The warning level, between 1 and 4 if severity is ; otherwise 0. - An optional short localizable title describing the diagnostic. - An optional longer localizable description for the diagnostic. - An optional hyperlink that provides more detailed information regarding the diagnostic. - An optional primary location of the diagnostic. If null, will return . - - An optional set of additional locations related to the diagnostic. - Typically, these are locations of other items referenced in the message. - If null, will return an empty list. - - - An optional set of custom tags for the diagnostic. See for some well known tags. - If null, will return an empty list. - - An optional set of properties of the diagnostic. If null, will return . - The instance. - - - - Creates a instance which is localizable. - - An identifier for the diagnostic. For diagnostics generated by the compiler, this will be a numeric code with a prefix such as "CS1001". - The category of the diagnostic. For diagnostics generated by the compiler, the category will be "Compiler". - The diagnostic message text. - The diagnostic's effective severity. - The diagnostic's default severity. - True if the diagnostic is enabled by default - The warning level, between 1 and 4 if severity is ; otherwise 0. - Flag indicating whether the diagnostic is suppressed by a source suppression. - An optional short localizable title describing the diagnostic. - An optional longer localizable description for the diagnostic. - An optional hyperlink that provides more detailed information regarding the diagnostic. - An optional primary location of the diagnostic. If null, will return . - - An optional set of additional locations related to the diagnostic. - Typically, these are locations of other items referenced in the message. - If null, will return an empty list. - - - An optional set of custom tags for the diagnostic. See for some well known tags. - If null, will return an empty list. - - An optional set of properties of the diagnostic. If null, will return . - The instance. - - - - Gets the diagnostic descriptor, which provides a description about a . - - - - - Gets the diagnostic identifier. For diagnostics generated by the compiler, this will be a numeric code with a prefix such as "CS1001". - - - - - Gets the category of diagnostic. For diagnostics generated by the compiler, the category will be "Compiler". - - - - - Get the culture specific text of the message. - - - - - Gets the default of the diagnostic's . - - - To get the effective severity of the diagnostic, use . - - - - - Gets the effective of the diagnostic. - - - To get the default severity of diagnostic's , use . - To determine if this is a warning treated as an error, use . - - - - - Gets the warning level. This is 0 for diagnostics with severity , - otherwise an integer between 1 and 4. - - - - - Returns true if the diagnostic has a source suppression, i.e. an attribute or a pragma suppression. - - - - - Gets the for suppressed diagnostics, i.e. = true. - Otherwise, returns null. - - - - - Returns true if this diagnostic is enabled by default by the author of the diagnostic. - - - - - Returns true if this is a warning treated as an error; otherwise false. - - - True implies = - and = . - - - - - Gets the primary location of the diagnostic, or if no primary location. - - - - - Gets an array of additional locations related to the diagnostic. - Typically these are the locations of other items referenced in the message. - - - - - Gets custom tags for the diagnostic. - - - - - Gets property bag for the diagnostic. it will return if there is no entry. - This can be used to put diagnostic specific information you want to pass around. for example, to corresponding fixer. - - - - - Create a new instance of this diagnostic with the Location property changed. - - - - - Create a new instance of this diagnostic with the Severity property changed. - - - - - Create a new instance of this diagnostic with the suppression info changed. - - - - - Returns true if the diagnostic location (or any additional location) is within the given tree and intersects with the filterSpanWithinTree, if non-null. - - - - - Returns true if a diagnostic is not configurable, i.e. cannot be suppressed or filtered or have its severity changed. - For example, compiler errors are always non-configurable. - - - - - Indicates that the diagnostic is related to some unnecessary source code. - - - - - Indicates that the diagnostic is related to edit and continue. - - - - - Indicates that the diagnostic is related to build. - - - - - Indicates that the diagnostic is reported by the compiler. - - - - - Indicates that the diagnostic can be used for telemetry - - - - - Indicates that the diagnostic is not configurable, i.e. it cannot be suppressed or filtered or have its severity changed. - - - - - Indicates that the diagnostic is related to an exception thrown by a . - - - - - Represents a mutable bag of diagnostics. You can add diagnostics to the bag, - and also get all the diagnostics out of the bag (the bag implements - IEnumerable<Diagnostics>. Once added, diagnostics cannot be removed, and no ordering - is guaranteed. - - It is ok to Add diagnostics to the same bag concurrently on multiple threads. - It is NOT ok to Add concurrently with Clear or Free operations. - - The bag is optimized to be efficient when containing zero errors. - - - - Return true if the bag is completely empty - not even containing void diagnostics. - - - This exists for short-circuiting purposes. Use - to get a resolved Tuple(Of NamedTypeSymbol, ImmutableArray(Of Diagnostic)) (i.e. empty after eliminating void diagnostics). - - - - - Returns true if the bag has any diagnostics with Severity=Error. Does not consider warnings or informationals. - - - Resolves any lazy diagnostics in the bag. - - Generally, this should only be called by the creator (modulo pooling) of the bag (i.e. don't use bags to communicate - - if you need more info, pass more info). - - - - - Returns true if the bag has any non-lazy diagnostics with Severity=Error. - - - Does not resolve any lazy diagnostics in the bag. - - Generally, this should only be called by the creator (modulo pooling) of the bag (i.e. don't use bags to communicate - - if you need more info, pass more info). - - - - - Add a diagnostic to the bag. - - - - - Add multiple diagnostics to the bag. - - - - - Add multiple diagnostics to the bag. - - - - - Add another DiagnosticBag to the bag. - - - - - Add another DiagnosticBag to the bag and free the argument. - - - - - Seal the bag so no further errors can be added, while clearing it and returning the old set of errors. - Return the bag to the pool. - - - - - Generally, this should only be called by the creator (modulo pooling) of the bag (i.e. don't use bags to communicate - - if you need more info, pass more info). - - - - - Using an iterator to avoid copying the list. If perf is a problem, - create an explicit enumerator type. - - - - - Get the underlying concurrent storage, creating it on demand if needed. - NOTE: Concurrent Adding to the bag is supported, but concurrent Clearing is not. - If one thread adds to the bug while another clears it, the scenario is - broken and we cannot do anything about it here. - - - - NOTE: Concurrent Adding to the bag is supported, but concurrent Clearing is not. - If one thread adds to the bug while another clears it, the scenario is - broken and we cannot do anything about it here. - - - - Provides a description about a - - - - - An unique identifier for the diagnostic. - - - - - A short localizable title describing the diagnostic. - - - - - An optional longer localizable description for the diagnostic. - - - - - An optional hyperlink that provides more detailed information regarding the diagnostic. - - - - - A localizable format message string, which can be passed as the first argument to when creating the diagnostic message with this descriptor. - - - - - - The category of the diagnostic (like Design, Naming etc.) - - - - - The default severity of the diagnostic. - - - - - Returns true if the diagnostic is enabled by default. - - - - - Custom tags for the diagnostic. - - - - - Create a DiagnosticDescriptor, which provides description about a . - NOTE: For localizable , and/or , - use constructor overload . - - A unique identifier for the diagnostic. For example, code analysis diagnostic ID "CA1001". - A short title describing the diagnostic. For example, for CA1001: "Types that own disposable fields should be disposable". - A format message string, which can be passed as the first argument to when creating the diagnostic message with this descriptor. - For example, for CA1001: "Implement IDisposable on '{0}' because it creates members of the following IDisposable types: '{1}'." - The category of the diagnostic (like Design, Naming etc.). For example, for CA1001: "Microsoft.Design". - Default severity of the diagnostic. - True if the diagnostic is enabled by default. - An optional longer description of the diagnostic. - An optional hyperlink that provides a more detailed description regarding the diagnostic. - Optional custom tags for the diagnostic. See for some well known tags. - - - - Create a DiagnosticDescriptor, which provides description about a . - - A unique identifier for the diagnostic. For example, code analysis diagnostic ID "CA1001". - A short localizable title describing the diagnostic. For example, for CA1001: "Types that own disposable fields should be disposable". - A localizable format message string, which can be passed as the first argument to when creating the diagnostic message with this descriptor. - For example, for CA1001: "Implement IDisposable on '{0}' because it creates members of the following IDisposable types: '{1}'." - The category of the diagnostic (like Design, Naming etc.). For example, for CA1001: "Microsoft.Design". - Default severity of the diagnostic. - True if the diagnostic is enabled by default. - An optional longer localizable description of the diagnostic. - An optional hyperlink that provides a more detailed description regarding the diagnostic. - Optional custom tags for the diagnostic. See for some well known tags. - Example descriptor for rule CA1001: - internal static DiagnosticDescriptor Rule = new DiagnosticDescriptor(RuleId, - new LocalizableResourceString(nameof(FxCopRulesResources.TypesThatOwnDisposableFieldsShouldBeDisposable), FxCopRulesResources.ResourceManager, typeof(FxCopRulesResources)), - new LocalizableResourceString(nameof(FxCopRulesResources.TypeOwnsDisposableFieldButIsNotDisposable), FxCopRulesResources.ResourceManager, typeof(FxCopRulesResources)), - FxCopDiagnosticCategory.Design, - DiagnosticSeverity.Warning, - isEnabledByDefault: true, - helpLinkUri: "http://msdn.microsoft.com/library/ms182172.aspx", - customTags: DiagnosticCustomTags.Microsoft); - - - - - Gets the effective severity of diagnostics created based on this descriptor and the given . - - Compilation options - - - - Returns true if diagnostic descriptor is not configurable, i.e. cannot be suppressed or filtered or have its severity changed. - For example, compiler errors are always non-configurable. - - - - - Formats messages. - - - - - Formats the message using the optional . - - The diagnostic. - The formatter; or null to use the default formatter. - The formatted message. - - - - A DiagnosticInfo object has information about a diagnostic, but without any attached location information. - - - More specialized diagnostics with additional information (e.g., ambiguity errors) can derive from this class to - provide access to additional information about the error, such as what symbols were involved in the ambiguity. - - - - - The error code, as an integer. - - - - - Returns the effective severity of the diagnostic: whether this diagnostic is informational, warning, or error. - If IsWarningsAsError is true, then this returns , while returns . - - - - - Returns whether this diagnostic is informational, warning, or error by default, based on the error code. - To get diagnostic's effective severity, use . - - - - - Gets the warning level. This is 0 for diagnostics with severity , - otherwise an integer between 1 and 4. - - - - - Returns true if this is a warning treated as an error. - - - True implies = and - = . - - - - - Get the diagnostic category for the given diagnostic code. - Default category is . - - - - - If a derived class has additional information about other referenced symbols, it can - expose the locations of those symbols in a general way, so they can be reported along - with the error. - - - - - Get the message id (for example "CS1001") for the message. This includes both the error number - and a prefix identifying the source. - - - - - Get the text of the message in the given language. - - - - - For a DiagnosticInfo that is lazily evaluated, this method evaluates it - and returns a non-lazy DiagnosticInfo. - - - - - Describes how severe a diagnostic is. - - - - - Something that is an issue, as determined by some authority, - but is not surfaced through normal means. - There may be different mechanisms that act on these issues. - - - - - Information that does not indicate a problem (i.e. not prescriptive). - - - - - Something suspicious but allowed. - - - - - Something not allowed by the rules of the language or other authority. - - - - - Values for severity that are used internally by the compiler but are not exposed. - - - - - An unknown severity diagnostic is something whose severity has not yet been determined. - - - - - If an unknown diagnostic is resolved and found to be unnecessary then it is - treated as a "Void" diagnostic - - - - - Values for ErrorCode/ERRID that are used internally by the compiler but are not exposed. - - - - - The code has yet to be determined. - - - - - The code was lazily determined and does not need to be reported. - - - - - A diagnostic (such as a compiler error or a warning), along with the location where it occurred. - - - - - Get the information about the diagnostic: the code, severity, message, etc. - - - - - True if the DiagnosticInfo for this diagnostic requires (or required - this property - is immutable) resolution. - - - - - Represents a span of text in a source code file in terms of file name, line number, and offset within line. - However, the file is actually whatever was passed in when asked to parse; there may not really be a file. - - - - - Path, or null if the span represents an invalid value. - - - Path may be if not available. - - - - - True if the is a mapped path. - - - A mapped path is a path specified in source via #line (C#) or #ExternalSource (VB) directives. - - - - - Gets the of the start of the span. - - - - - - Gets the of the end of the span. - - - - - - Gets the span. - - - - - Initializes the instance. - - The file identifier - typically a relative or absolute path. - The start line position. - The end line position. - is null. - - - - Initializes the instance. - - The file identifier - typically a relative or absolute path. - The span. - is null. - - - - Returns true if the span represents a valid location. - - - - - Determines if two FileLinePositionSpan objects are equal. - - - The path is treated as an opaque string, i.e. a case-sensitive comparison is used. - - - - - Determines if two FileLinePositionSpan objects are equal. - - - - - Serves as a hash function for FileLinePositionSpan. - - The hash code. - - The path is treated as an opaque string, i.e. a case-sensitive hash is calculated. - - - - - Returns a that represents FileLinePositionSpan. - - The string representation of FileLinePositionSpan. - Path: (0,0)-(5,6) - - - - A program location in source code. - - - - - Indicates that the implementing type can be serialized via - for diagnostic message purposes. - - - Not appropriate on types that require localization, since localization should - happen after serialization. - - - - - A program location in source code. - - - - - Location kind (None/SourceFile/MetadataFile). - - - - - Returns true if the location represents a specific location in a source code file. - - - - - Returns true if the location is in metadata. - - - - - The syntax tree this location is located in or null if not in a syntax tree. - - - - - Returns the metadata module the location is associated with or null if the module is not available. - - - Might return null even if returns true. The module symbol might not be available anymore, - for example, if the location is serialized and deserialized. - - - - - The location within the syntax tree that this location is associated with. - - - If returns False this method returns an empty which starts at position 0. - - - - - Gets the location in terms of path, line and column. - - - that contains path, line and column information. - - Returns an invalid span (see ) if the information is not available. - - The values are not affected by line mapping directives (#line in C# or #ExternalSource in VB). - - - - - Gets the location in terms of path, line and column after applying source line mapping directives - (#line in C# or #ExternalSource in VB). - - - that contains file, line and column information, - or an invalid span (see ) if not available. - - - - - A location of kind LocationKind.None. - - - - - Creates an instance of a for a span in a . - - - - - Creates an instance of a for a span in a file. - - - - - Specifies the kind of location (source vs. metadata). - - - - - Unspecified location. - - - - - The location represents a position in a source file. - - - - - The location represents a metadata file. - - - - - The location represents a position in an XML file. - - - - - The location in some external file. - - - - - A program location in metadata. - - - - - A class that represents no location at all. Useful for errors in command line options, for example. - - - - - - Describes how to report a warning diagnostic. - - - - - Report a diagnostic by default. - - - - - Report a diagnostic as an error. - - - - - Report a diagnostic as a warning even though /warnaserror is specified. - - - - - Report a diagnostic as an info. - - - - - Report a diagnostic as hidden. - - - - - Suppress a diagnostic. - - - - - A program location in source code. - - - - - A program location in an XML file. - - - - - WARN: This is a test hook - do not take a dependency on this. - - - - - - - - - - A class used to provide XML documentation to the compiler for members from metadata. A - custom implementation of this class should be returned from a DocumentationResolver to provide XML - documentation comments from custom caches or locations. - - - - - Fetches a documentation comment for the given member ID. - - The documentation member ID of the item to fetch. - The preferred culture to receive a comment in. Null if - there is no preference. This is a preference only, and providers may choose to provide - results from another culture if the preferred culture was unavailable. - A cancellation token for the search. - A DocumentationComment. - - - - DocumentationProviders are compared when determining whether an AssemblySymbol can be reused. - Hence, if multiple instances can represent the same documentation, it is imperative that - Equals (and GetHashCode) be overridden to capture this fact. Otherwise, it is possible to end - up with multiple AssemblySymbols for the same assembly, which plays havoc with the type hierarchy. - - - - - DocumentationProviders are compared when determining whether an AssemblySymbol can be reused. - Hence, if multiple instances can represent the same documentation, it is imperative that - GetHashCode (and Equals) be overridden to capture this fact. Otherwise, it is possible to end - up with multiple AssemblySymbols for the same assembly, which plays havoc with the type hierarchy. - - - - - A trivial DocumentationProvider which never returns documentation. - - - - - Used by the DocumentationCommentCompiler(s) to check doc comments for XML parse errors. - As a performance optimization, this class tries to re-use the same underlying instance - when possible. - - - - - Current text to validate. - - - - - We use to validate XML doc comments. Unfortunately it cannot be reset and thus can't be pooled. - Each time we need to validate a fragment of XML we "append" it to the underlying text reader, implemented by this class, - and advance the reader. By the end of the fragment validation, we keep the reader open in a state - that is ready for the next fragment validation unless the fragment was invalid, in which case we need to create a new XmlReader. - That is why pretends that the stream has extra spaces - at the end. That should be sufficient for to not reach the end of this reader before the next - fragment is appended, unless the current fragment is malformed in one way or another. - - - - - Specifies the different documentation comment processing modes. - - - Order matters: least processing to most processing. - - - - - Treats documentation comments as regular comments. - - - - - Parses documentation comments as structured trivia, but do not report any diagnostics. - - - - - Parses documentation comments as structured trivia and report diagnostics. - - - - - Maps an async/iterator method to the synthesized state machine type that implements the method. - - - - - Generate a ConstantValue of the same integer type as the argument - and offset by the given non-negative amount. Return ConstantValue.Bad - if the generated constant would be outside the valid range of the type. - - - - - Set by the host to a fail fast trigger, - if the host desires to crash the process on a fatal exception. - - - - - Set by the host to a fail fast trigger, - if the host desires to NOT crash the process on a non fatal exception. - - - - - Use in an exception filter to report a fatal error. - Unless the exception is - it calls . The exception is passed through (the method returns false). - - False to avoid catching the exception. - - - - Use in an exception filter to report a non fatal error. - Unless the exception is - it calls . The exception isn't passed through (the method returns true). - - True to catch the exception. - - - - Use in an exception filter to report a fatal error. - Unless the exception is - it calls . The exception is passed through (the method returns false). - - False to avoid catching the exception. - - - - Use in an exception filter to report a fatal error. - Calls and passes the exception through (the method returns false). - - False to avoid catching the exception. - - - - Use in an exception filter to report a non fatal error. - Calls and doesn't pass the exception through (the method returns true). - - True to catch the exception. - - - - Cache with a fixed size that evicts the least recently used members. - Thread-safe. - - - - - Create cache from an array. The cache capacity will be the size - of the array. All elements of the array will be added to the - cache. If any duplicate keys are found in the array a - will be thrown. - - - - - For testing. Very expensive. - - - - - Expects non-empty cache. Does not lock. - - - - - Doesn't lock. - - - - - Doesn't lock. - - - - - Represents an optional bool as a single byte. - - - - - Structure that describes a member of a type. - - - - - Id/token of containing type, usually value from some enum. - For example from SpecialType enum. - I am not using SpecialType as the type for this field because - VB runtime types are not part of SpecialType. - - So, the implication is that any type ids we use outside of the SpecialType - (either for the VB runtime classes, or types like System.Task etc.) will need - to use IDs that are all mutually disjoint. - - - - - Signature of the field or method, similar to metadata signature, - but with the following exceptions: - 1) Truncated on the left, for methods starts at [ParamCount], for fields at [Type] - 2) Type tokens are not compressed - 3) BOOLEAN | CHAR | I1 | U1 | I2 | U2 | I4 | U4 | I8 | U8 | R4 | R8 | I | U | Void types are encoded by - using VALUETYPE+typeId notation. - 4) array bounds are not included. - 5) modifiers are not included. - 6) (CLASS | VALUETYPE) are omitted after GENERICINST - - - - - Helper class to match signatures in format of - MemberDescriptor.Signature to members. - - - - - Returns true if signature matches signature of the field. - Signature should be in format described in MemberDescriptor. - - - - - Returns true if signature matches signature of the property. - Signature should be in format described in MemberDescriptor. - - - - - Returns true if signature matches signature of the method. - Signature should be in format described in MemberDescriptor. - - - - - Does pretty much the same thing as MetadataDecoder.DecodeType only instead of - producing a type symbol it compares encoded type to the target. - - Signature should be in format described in MemberDescriptor. - - - - - Should return null in case of error. - - - - - Should return null in case of error. - - - - - Should only accept Pointer types. - Should return null in case of error. - - - - - Should return null in case of error. - - - - - Should only accept multi-dimensional arrays. - - - - - Should only accept multi-dimensional arrays. - Should return null in case of error. - - - - If the encoded type is invalid. - An exception from metadata reader. - - - If the encoded type is invalid. - An exception from metadata reader. - - - If the encoded type is invalid. - An exception from metadata reader. - - - An exception from metadata reader. - - - If the encoded type is invalid. - An exception from metadata reader. - - - If the encoded local variable type is invalid. - An exception from metadata reader. - - - If the encoded local variable type is invalid. - An exception from metadata reader. - - - If the encoded parameter type is invalid. - - - An exception from metadata reader. - - - - Decodes attribute parameter type from method signature. - - If the encoded parameter type is invalid. - An exception from metadata reader. - - - - Decodes attribute argument type from attribute blob (called FieldOrPropType in the spec). - - If the encoded argument type is invalid. - An exception from metadata reader. - - - If the encoded attribute argument is invalid. - An exception from metadata reader. - - - If the encoded attribute argument is invalid. - An exception from metadata reader. - - - If the encoded attribute argument is invalid. - An exception from metadata reader. - - - If the given is invalid. - An exception from metadata reader. - - - If the encoded named argument is invalid. - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - - Find the methods that a given method explicitly overrides. - - - Methods may be on class or interfaces. - Containing classes/interfaces will be supertypes of the implementing type. - - TypeDef handle of the implementing type. - MethodDef handle of the implementing method. - The type symbol for the implementing type. - Array of implemented methods. - - - - Search for the corresponding to the given MethodDef token. Search amongst - the supertypes (classes and interfaces) of a designated type. - - - Generally, the type will be a type that explicitly implements an interface and the method will be the - implemented method (i.e. on the interface). - - TypeDef token of the type from which the search should begin. - MethodDef token of the target method. - Corresponding or null, if none is found. - - - - Enqueue the interfaces implemented and the type extended by a given TypeDef. - - Queue of TypeDefs to search. - Queue of TypeSymbols (representing typeRefs to search). - Handle of the TypeDef for which we want to enqueue supertypes. - An exception from metadata reader. - - - - Helper method for enqueuing a type token in the right queue. - Def -> typeDefsToSearch - Ref -> typeSymbolsToSearch - null -> neither - - - - - Enqueue the interfaces implemented and the type extended by a given TypeDef. - - Queue of TypeDefs to search. - Queue of TypeSymbols (representing typeRefs to search). - Symbol for which we want to enqueue supertypes. - - - - Enqueue the given type as either a def or a ref. - - Queue of TypeDefs to search. - Queue of TypeSymbols (representing typeRefs to search). - Symbol to enqueue. - - - - Search the members of a TypeSymbol to find the one that matches a given MethodDef token. - - Type to search for method. - MethodDef handle of the method to find. - The corresponding MethodSymbol or null. - - - - Search the members of a TypeSymbol to find the one that matches a given FieldDef token. - - Type to search for field. - FieldDef handle of the field to find. - The corresponding FieldSymbol or null. - - - - Given a MemberRef token for a method, we can find a corresponding MethodSymbol by - searching for the name and signature. - - A MemberRef token for a method. - Scope the search to supertypes of the implementing type. - True to only return method symbols, null if the token resolves to a field. - The corresponding MethodSymbol or null. - - - - Given a method symbol, return the MethodDef token, if it is defined in - this module, or a nil token, otherwise. - - The method symbol for which to return a MethodDef token. - A MethodDef token or nil. - - - - Returns a symbol that given token resolves to or null of the token represents an entity that isn't represented by a symbol, - such as vararg MemberRef. - - - - - Given a MemberRef token, return the TypeSymbol for its Class field. - - - - - Checks whether signatures match where the signatures are either from a property - and an accessor or two accessors. When comparing a property or getter to setter, the - setter signature must be the second argument and 'comparingToSetter' must be true. - - - Signature of the property containing the accessor, or the getter (type, then parameters). - - - Signature of the accessor when comparing property and accessor, - or the setter when comparing getter and setter (return type and then parameters). - - - True when comparing a property or getter to a setter, false otherwise. - - - True if differences in IsByRef for parameters should be treated as significant. - - - True if differences in return type (or value parameter for setter) should be treated as significant. - - True if the accessor signature is appropriate for the containing property. - - - - Check whether an event accessor has an appropriate signature. - - Type of the event containing the accessor. - Signature of the accessor (return type and then parameters). - True if the accessor signature is appropriate for the containing event. - - - - Decodes a serialized type name in its canonical form. The canonical name is its full type name, followed - optionally by the assembly where it is defined, its version, culture and public key token. If the assembly - name is omitted, the type name is in the current assembly otherwise it is in the referenced assembly. The - full type name is the fully qualified metadata type name. - - - - - Decodes a type name. A type name is a string which is terminated by the end of the string or one of the - delimiters '+', ',', '[', ']'. '+' separates nested classes. '[' and ']' - enclosed generic type arguments. ',' separates types. - - - - - Decodes a generic name. This is a type name followed optionally by a type parameter count - - - - - An ImmutableArray representing the single string "System" - - - - - Calculates information about types and namespaces immediately contained within a namespace. - - - Length of the fully-qualified name of this namespace. - - - The sequence of groups of TypeDef row ids for types contained within the namespace, - recursively including those from nested namespaces. The row ids must be grouped by the - fully-qualified namespace name in case-sensitive manner. - Key of each IGrouping is a fully-qualified namespace name, which starts with the name of - this namespace. There could be multiple groups for each fully-qualified namespace name. - - The groups must be sorted by the keys in a manner consistent with comparer passed in as - nameComparer. Therefore, all types immediately contained within THIS namespace, if any, - must be in several IGrouping at the very beginning of the sequence. - - - Equality comparer to compare namespace names. - - - Output parameter, never null: - A sequence of groups of TypeDef row ids for types immediately contained within this namespace. - - - Output parameter, never null: - A sequence with information about namespaces immediately contained within this namespace. - For each pair: - Key - contains simple name of a child namespace. - Value – contains a sequence similar to the one passed to this function, but - calculated for the child namespace. - - - - - - Extract a simple name of a top level child namespace from potentially qualified namespace name. - - - Parent namespace name length plus the dot. - - - Fully qualified namespace name. - - - Simple name of a top level child namespace, the left-most name following parent namespace name - in the fully qualified name. - - - - - Determines whether given string can be used as a non-empty metadata identifier (a NUL-terminated UTF8 string). - - - - - True if the string doesn't contain incomplete surrogates. - - - - - Checks that the specified name is a valid metadata String and a file name. - The specification isn't entirely consistent and complete but it mentions: - - 22.19.2: "Name shall index a non-empty string in the String heap. It shall be in the format {filename}.{extension} (e.g., 'foo.dll', but not 'c:\utils\foo.dll')." - 22.30.2: "The format of Name is {file name}.{file extension} with no path or drive letter; on POSIX-compliant systems Name contains no colon, no forward-slash, no backslash." - As Microsoft specific constraint. - - A reasonable restriction seems to be a valid UTF8 non-empty string that doesn't contain '\0', '\', '/', ':' characters. - - - - - Determine if the given namespace and type names combine to produce the given fully qualified name. - - The namespace part of the split name. - The type name part of the split name. - The fully qualified name to compare with. - true if the combination of and equals the fully-qualified name given by - - - - Given an input string changes it to be acceptable as a part of a type name. - - - - - Specifies what symbols to import from metadata. - - - - - Only import public and protected symbols. - - - - - Import public, protected and internal symbols. - - - - - Import all symbols. - - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - - Helper structure to encapsulate/cache various information about metadata name of a type and - name resolution options. - Also, allows us to stop using strings in the APIs that accept only metadata names, - making usage of them less bug prone. - - - - - Full metadata name of a type, includes namespace name for top level types. - - - - - Namespace name for top level types. - - - - - Name of the type without namespace prefix, but possibly with generic arity mangling present. - - - - - Name of the type without namespace prefix and without generic arity mangling. - - - - - Arity of the type inferred based on the name mangling. It doesn't have to match the actual - arity of the type. - - - - - While resolving the name, consider only types with this arity. - (-1) means allow any arity. - If forcedArity >= 0 and useCLSCompliantNameArityEncoding, lookup may - fail because forcedArity doesn't match the one encoded in the name. - - - - - While resolving the name, consider only types following - CLS-compliant generic type names and arity encoding (ECMA-335, section 10.7.2). - I.e. arity is inferred from the name and matching type must have the same - emitted name and arity. - TODO: PERF: Encode this field elsewhere to save 4 bytes - - - - - Individual parts of qualified namespace name. - - - - - Full metadata name of a type, includes namespace name for top level types. - - - - - Namespace name for top level types, empty string for nested types. - - - - - Name of the type without namespace prefix, but possibly with generic arity mangling present. - - - - - Name of the type without namespace prefix and without generic arity mangling. - - - - - Arity of the type inferred based on the name mangling. It doesn't have to match the actual - arity of the type. - - - - - Does name include arity mangling suffix. - - - - - While resolving the name, consider only types following - CLS-compliant generic type names and arity encoding (ECMA-335, section 10.7.2). - I.e. arity is inferred from the name and matching type must have the same - emitted name and arity. - - - - - While resolving the name, consider only types with this arity. - (-1) means allow any arity. - If ForcedArity >= 0 and UseCLSCompliantNameArityEncoding, lookup may - fail because ForcedArity doesn't match the one encoded in the name. - - - - - Individual parts of qualified namespace name. - - - - - A digest of MetadataTypeName's fully qualified name which can be used as the key in a dictionary - - - - - Returns true if the nested type should be imported. - - - - - Returns true if the field should be imported. Visibility - and the value of are considered - - - - - Returns true if the flags represent a field that should be imported. - Visibility and the value of are considered - - - - - Returns true if the method should be imported. Returns false for private methods that are not - explicit interface implementations. For other methods, visibility and the value of - are considered. - - - - - Returns 0 if method name doesn't represent a v-table gap. - Otherwise, returns the gap size. - - - - - All assemblies this assembly references. - - - A concatenation of assemblies referenced by each module in the order they are listed in . - - - - - The number of assemblies referenced by each module in . - - - - - Assembly identity read from Assembly table, or null if the table is empty. - - - - - Using for atomicity. - - - - - - - - A set of helpers for extracting elements from metadata. - This type is not responsible for managing the underlying storage - backing the PE image. - - - - - Using as a type for atomicity. - - - - - If bitmap is not null, each bit indicates whether a TypeDef - with corresponding RowId has been checked if it is a NoPia - local type. If the bit is 1, local type will have an entry - in m_lazyTypeDefToTypeIdentifierMap. - - - - - For each TypeDef that has 1 in m_lazyNoPiaLocalTypeCheckBitMap, - this map stores corresponding TypeIdentifier AttributeInfo. - - - - - Target architecture of the machine. - - - - - Indicates that this PE file makes Win32 calls. See CorPEKind.pe32BitRequired for more information (http://msdn.microsoft.com/en-us/library/ms230275.aspx). - - - - An exception from metadata reader. - - - - Returns the names of linked managed modules. - - An exception from metadata reader. - - - - Returns names of referenced modules. - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - - The function groups types defined in the module by their fully-qualified namespace name. - The case-sensitivity of the grouping depends upon the provided StringComparer. - - The sequence is sorted by name by using provided comparer. Therefore, if there are multiple - groups for a namespace name (e.g. because they differ in case), the groups are going to be - adjacent to each other. - - Empty string is used as namespace name for types in the Global namespace. Therefore, all types - in the Global namespace, if any, should be in the first group (assuming a reasonable StringComparer). - - Comparer to sort the groups. - - - A sorted list of TypeDef row ids, grouped by fully-qualified namespace name. - An exception from metadata reader. - - - - Groups together the RowIds of types in a given namespaces. The types considered are - those defined in this module. - - An exception from metadata reader. - - - - Supplements the namespace-to-RowIDs map with the namespaces of forwarded types. - These types will not have associated row IDs (represented as null, for efficiency). - These namespaces are important because we want lookups of missing forwarded types - to succeed far enough that we can actually find the type forwarder and provide - information about the target assembly. - - For example, consider the following forwarded type: - - .class extern forwarder Namespace.Type {} - - If this type is referenced in source as "Namespace.Type", then dev10 reports - - error CS1070: The type name 'Namespace.Name' could not be found. This type has been - forwarded to assembly 'pe2, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'. - Consider adding a reference to that assembly. - - If we did not include "Namespace" as a child of the global namespace of this module - (the forwarding module), then Roslyn would report that the type "Namespace" was not - found and say nothing about "Name" (because of the diagnostic already attached to - the qualifier). - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - - Returns a collection of interfaces implemented by given type. - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - - Determine if custom attribute application is - NoPia TypeIdentifier. - - - An index of the target constructor signature in - signaturesOfTypeIdentifierAttribute array, -1 if - this is not NoPia TypeIdentifier. - - - - - Determines if a custom attribute matches a namespace and name. - - Handle of the custom attribute. - The custom attribute's namespace in metadata format (case sensitive) - The custom attribute's type name in metadata format (case sensitive) - Constructor of the custom attribute. - Should case be ignored for name comparison? - true if match is found - - - - Determines if a custom attribute matches a namespace and name. - - The metadata reader. - Handle of the custom attribute. - The custom attribute's namespace in metadata format (case sensitive) - The custom attribute's type name in metadata format (case sensitive) - Constructor of the custom attribute. - Should case be ignored for name comparison? - true if match is found - - - - Returns MetadataToken for assembly ref matching name - - The assembly name in metadata format (case sensitive) - Matching assembly ref token or nil (0) - - - - Returns MetadataToken for type ref matching resolution scope and name - - The resolution scope token - The namespace name in metadata format (case sensitive) - The type name in metadata format (case sensitive) - Matching type ref token or nil (0) - - - An exception from metadata reader. - - - - Determine if custom attribute matches the target attribute. - - - Handle of the custom attribute. - - The attribute to match. - - An index of the target constructor signature in - signatures array, -1 if - this is not the target attribute. - - - - - Determine if custom attribute matches the target attribute. - - - The metadata reader. - - - Handle of the custom attribute. - - The attribute to match. - - An index of the target constructor signature in - signatures array, -1 if - this is not the target attribute. - - - - - Given a token for a constructor, return the token for the constructor's type and the blob containing the - constructor's signature. - - True if the function successfully returns the type and signature. - - - - Given a token for a constructor, return the token for the constructor's type and the blob containing the - constructor's signature. - - True if the function successfully returns the type and signature. - - - - Given a token for a type, return the type's name and namespace. Only works for top level types. - namespaceHandle will be NamespaceDefinitionHandle for defs and StringHandle for refs. - - True if the function successfully returns the name and namespace. - - - - Given a token for a type, return the type's name and namespace. Only works for top level types. - namespaceHandle will be NamespaceDefinitionHandle for defs and StringHandle for refs. - - True if the function successfully returns the name and namespace. - - - - For testing purposes only!!! - - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - - Returns an array of tokens for type constraints. Null reference if none. - - - - An array of tokens for type constraints. Null reference if none. - - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - - Returns true if method IL can be retrieved from the module. - - - - - Returns true if the full image of the module is available. - - - - Invalid metadata. - - - - Produce unbound generic type symbol if the type is a generic type. - - - - - Produce constructed type symbol. - - - - Symbol for generic type. - - - Generic type arguments, including those for containing types. - - - Flags for arguments. Each item indicates whether corresponding argument refers to NoPia local types. - - - - - Extracts information from TypeDef flags. - Returns 0 if the value is invalid. - - - - - Lookup a type defined in this module. - - - - - Lookup a type defined in referenced assembly. - - - - - Given the identity of an assembly referenced by this module, finds - the index of that assembly in the list of assemblies referenced by - the current module. - - - - - Represents an identity of an assembly as defined by CLI metadata specification. - - - May represent assembly definition or assembly reference identity. - - - Represents an identity of an assembly as defined by CLI metadata specification. - - - May represent assembly definition or assembly reference identity. - - - - - Constructs an from its constituent parts. - - The simple name of the assembly. - The version of the assembly. - - The name of the culture to associate with the assembly. - Specify null, , or "neutral" (any casing) to represent . - The name can be an arbitrary string that doesn't contain NUL character, the legality of the culture name is not validated. - - The public key or public key token of the assembly. - Indicates whether represents a public key. - Indicates whether the assembly is retargetable. - Specifies the binding model for how this object will be treated in comparisons. - If is null, empty or contains a NUL character. - If contains a NUL character. - is not a value of the enumeration. - contains values that are not greater than or equal to zero and less than or equal to ushort.MaxValue. - is true and is not set. - is false and - contains a value that is not the size of a public key token, 8 bytes. - - - - The simple name of the assembly. - - - - - The version of the assembly. - - - - - The culture name of the assembly, or empty if the culture is neutral. - - - - - The AssemblyNameFlags. - - - - - Specifies assembly binding model for the assembly definition or reference; - that is how assembly references are matched to assembly definitions. - - - - - True if the assembly identity includes full public key. - - - - - Full public key or empty. - - - - - Low 8 bytes of SHA1 hash of the public key, or empty. - - - - - True if the assembly identity has a strong name, ie. either a full public key or a token. - - - - - Gets the value which specifies if the assembly is retargetable. - - - - - Determines whether two instances are equal. - - The operand appearing on the left side of the operator. - The operand appearing on the right side of the operator. - - - - Determines whether two instances are not equal. - - The operand appearing on the left side of the operator. - The operand appearing on the right side of the operator. - - - - Determines whether the specified instance is equal to the current instance. - - The object to be compared with the current instance. - - - - Determines whether the specified instance is equal to the current instance. - - The object to be compared with the current instance. - - - - Returns the hash code for the current instance. - - - - - - Returns true (false) if specified assembly identities are (not) equal - regardless of unification, retargeting or other assembly binding policies. - Returns null if these policies must be consulted to determine name equivalence. - - - - - Retrieves assembly definition identity from given runtime assembly. - - The runtime assembly. - Assembly definition identity. - is null. - - - - Returns the display name of the assembly identity. - - True if the full public key should be included in the name. Otherwise public key token is used. - The display name. - - Characters ',', '=', '"', '\'', '\' occurring in the simple name are escaped by backslash in the display name. - Any character '\t' is replaced by two characters '\' and 't', - Any character '\n' is replaced by two characters '\' and 'n', - Any character '\r' is replaced by two characters '\' and 'r', - The assembly name in the display name is enclosed in double quotes if it starts or ends with - a whitespace character (' ', '\t', '\r', '\n'). - - - - - Returns the display name of the current instance. - - - - - Parses display name filling defaults for any basic properties that are missing. - - Display name. - A full assembly identity. - - Parts of the assembly identity that were specified in the display name, - or 0 if the parsing failed. - - True if display name parsed correctly. - - The simple name has to be non-empty. - A partially specified version might be missing build and/or revision number. The default value for these is 65535. - The default culture is neutral ( is . - If neither public key nor token is specified the identity is considered weak. - - is null. - - - - Compares assembly identities. - Derived types may implement platform specific unification and portability policies. - - - - - A set of possible outcomes of comparison. - - - - - Reference doesn't match definition. - - - - - Strongly named reference matches strongly named definition (strong identity is identity with public key or token), - Or weak reference matches weak definition. - - - - - Reference matches definition except for version (reference version is lower or higher than definition version). - - - - - Compares assembly reference name (possibly partial) with definition identity. - - Partial or full assembly display name. - Full assembly display name. - True if the reference name matches the definition identity. - - - - Compares assembly reference identity with definition identity. - - Reference assembly identity. - Full assembly display name. - True if the reference identity matches the definition identity. - - - - Compares reference assembly identity with definition identity and returns their relationship. - - Reference identity. - Definition identity. - - - - Represents an immutable snapshot of assembly CLI metadata. - - - - - Factory that provides the for additional modules (other than ) of the assembly. - Shall only throw or . - Null of all modules were specified at construction time. - - - - - Modules the was created with, in case they are eagerly allocated. - - - - - Cached assembly symbols. - - - Guarded by . - - - - - Creates a single-module assembly. - - - Manifest module image. - - is null. - - - - Creates a single-module assembly. - - - Manifest module image. - - is null. - The PE image format is invalid. - - - - Creates a single-module assembly. - - Manifest module PE image stream. - False to close the stream upon disposal of the metadata. - The PE image format is invalid. - - - - Creates a single-module assembly. - - Manifest module PE image stream. - False to close the stream upon disposal of the metadata. - The PE image format is invalid. - - - - Finds all modules of an assembly on a specified path and builds an instance of that represents them. - - The full path to the assembly on disk. - is null. - is invalid. - Error reading file . See for details. - Reading from a file path is not supported by the platform. - - - - Creates a single-module assembly. - - - Manifest module. - - This object disposes it when it is itself disposed. - - - - Creates a multi-module assembly. - - - Modules comprising the assembly. The first module is the manifest module of the assembly. - This object disposes the elements of it when it is itself . - is default value. - contains null elements. - is empty or contains a module that doesn't own its image (was created via ). - - - - Creates a multi-module assembly. - - - Modules comprising the assembly. The first module is the manifest module of the assembly. - This object disposes the elements of it when it is itself . - is default value. - contains null elements. - is empty or contains a module that doesn't own its image (was created via ). - - - - Creates a multi-module assembly. - - Modules comprising the assembly. The first module is the manifest module of the assembly. - This object disposes the elements of it when it is itself . - is default value. - contains null elements. - is empty or contains a module that doesn't own its image (was created via ). - - - - Creates a shallow copy of contained modules and wraps them into a new instance of . - - - The resulting copy shares the metadata images and metadata information read from them with the original. - It doesn't own the underlying metadata images and is not responsible for its disposal. - - This is used, for example, when a metadata cache needs to return the cached metadata to its users - while keeping the ownership of the cached metadata object. - - - - - Modules comprising this assembly. The first module is the manifest module. - - The PE image format is invalid. - IO error reading the metadata. See for details. - The object has been disposed. - - - The PE image format is invalid. - IO error while reading the metadata. See for details. - The object has been disposed. - - - The PE image format is invalid. - IO error while reading the metadata. See for details. - The object has been disposed. - - - - Disposes all modules contained in the assembly. - - - - - Checks if the first module has a single row in Assembly table and that all other modules have none. - - The PE image format is invalid. - IO error reading the metadata. See for details. - The object has been disposed. - - - - Returns the metadata kind. - - - - - Creates a reference to the assembly metadata. - - Provider of XML documentation comments for the metadata symbols contained in the module. - Aliases that can be used to refer to the assembly from source code (see "extern alias" directive in C#). - True to embed interop types from the referenced assembly to the referencing compilation. Must be false for a module. - Path describing the location of the metadata, or null if the metadata have no location. - Display string used in error messages to identity the reference. - A reference to the assembly metadata. - - - - Reference to another C# or VB compilation. - - - - - Returns an instance of the reference with specified aliases. - - The new aliases for the reference. - Alias is invalid for the metadata kind. - - - - Returns an instance of the reference with specified aliases. - - The new aliases for the reference. - Alias is invalid for the metadata kind. - - - - Returns an instance of the reference with specified interop types embedding. - - The new value for . - Interop types can't be embedded from modules. - - - - Returns an instance of the reference with specified properties, or this instance if properties haven't changed. - - The new properties for the reference. - Specified values not valid for this reference. - - - - Represents immutable assembly or module CLI metadata. - - - - - Retrieves the for this instance. - - - - - Releases any resources associated with this instance. - - - - - Creates a copy of this object. - - - - - The kind of metadata a PE file image contains. - - - - - The PE file is an assembly. - - - - - The PE file is a module. - - - - - Represents an in-memory Portable-Executable image. - - - - - Represents metadata image reference. - - - Represents a logical location of the image, not the content of the image. - The content might change in time. A snapshot is taken when the compiler queries the reference for its metadata. - - - - - Path or name used in error messages to identity the reference. - - - - - Returns true if this reference is an unresolved reference. - - - - - Returns an instance of the reference with specified aliases. - - The new aliases for the reference. - Alias is invalid for the metadata kind. - - - - Returns an instance of the reference with specified interop types embedding. - - The new value for . - Interop types can't be embedded from modules. - - - - Returns an instance of the reference with specified aliases. - - The new aliases for the reference. - Alias is invalid for the metadata kind. - - - - Returns an instance of the reference with specified properties, or this instance if properties haven't changed. - - The new properties for the reference. - Specified values not valid for this reference. - - - - Creates a reference to a single-module assembly or a standalone module stored in memory. - - Assembly image. - Reference properties (extern aliases, type embedding, ). - Provides XML documentation for symbol found in the reference. - Optional path that describes the location of the metadata. The file doesn't need to exist on disk. The path is opaque to the compiler. - - Performance considerations: - - It is recommended to use or - API when creating multiple references to the same metadata. - Reusing object to create multiple references allows for sharing data across these references. - - - The method pins in managed heap. The pinned memory is released - when the resulting reference becomes unreachable and GC collects it. To control the lifetime of the pinned memory - deterministically use - to create an metadata object and - to get a reference to it. - - - The method creates a reference to a single-module assembly. To create a reference to a multi-module assembly or a stand-alone module use - and . - - - is null. - - - - Creates a reference to a single-module assembly or a standalone module stored in memory. - - Assembly image. - Reference properties (extern aliases, type embedding, ). - Provides XML documentation for symbol found in the reference. - Optional path that describes the location of the metadata. The file doesn't need to exist on disk. The path is opaque to the compiler. - - Performance considerations: - - It is recommended to use or - API when creating multiple references to the same metadata. - Reusing object to create multiple references allows for sharing data across these references. - - - The method makes a copy of the data and pins it. To avoid making a copy use an overload that takes an . - The pinned memory is released when the resulting reference becomes unreachable and GC collects it. To control the lifetime of the pinned memory - deterministically use - to create an metadata object and - to get a reference to it. - to get a reference to it. - - - is null. - - - - Creates a reference to a single-module assembly or a stand-alone module from data in specified stream. - Reads the content of the stream into memory and closes the stream upon return. - - Assembly image. - Reference properties (extern aliases, type embedding, ). - Provides XML documentation for symbol found in the reference. - Optional path that describes the location of the metadata. The file doesn't need to exist on disk. The path is opaque to the compiler. - doesn't support read and seek operations. - is null. - An error occurred while reading the stream. - - Performance considerations: - - It is recommended to use or - API when creating multiple references to the same metadata. - Reusing object to create multiple references allows for sharing data across these references. - - - The method eagerly reads the entire content of into native heap. The native memory block is released - when the resulting reference becomes unreachable and GC collects it. To decrease memory footprint of the reference and/or manage - the lifetime deterministically use - to create an metadata object and - to get a reference to it. - to get a reference to it. - - - - - - Creates a reference to an assembly or standalone module stored in a file. - Reads the content of the file into memory. - - Path to the assembly file. - Reference properties (extern aliases, type embedding, ). - Provides XML documentation for symbol found in the reference. - is null. - is invalid. - An error occurred while reading the file. - - Performance considerations: - - It is recommended to use or - API when creating multiple references to the same file. - Reusing object allows for sharing data across these references. - - - The method eagerly reads the entire content of the file into native heap. The native memory block is released - when the resulting reference becomes unreachable and GC collects it. To decrease memory footprint of the reference and/or manage - the lifetime deterministically use - to create an metadata object and - - to get a reference to it. - - - - - - Creates a reference to a loaded assembly. - - Path to the module file. - is null. - is dynamic, doesn't have a location, or the platform doesn't support reading from the location. - - Performance considerations: - - It is recommended to use API when creating multiple references to the same assembly. - Reusing object allows for sharing data across these references. - - - - - - Creates a reference to a loaded assembly. - - Path to the module file. - Reference properties (extern aliases, type embedding). - Provides XML documentation for symbol found in the reference. - is null. - . is not . - is dynamic, doesn't have a location, or the platform doesn't support reading from the location. - - Performance considerations: - - It is recommended to use API when creating multiple references to the same assembly. - Reusing object allows for sharing data across these references. - - - - - - Information about a metadata reference. - - - - - Default properties for a module reference. - - - - - Default properties for an assembly reference. - - - - - Initializes reference properties. - - The image kind - assembly or module. - Assembly aliases. Can't be set for a module. - True to embed interop types from the referenced assembly to the referencing compilation. Must be false for a module. - - - - Returns with specified aliases. - - - is , as modules can't be aliased. - - - - - Returns with specified aliases. - - - is , as modules can't be aliased. - - - - - Returns with set to specified value. - - is , as interop types can't be embedded from modules. - - - - Returns with set to specified value. - - - - - The image kind (assembly or module) the reference refers to. - - - - - Alias that represents a global declaration space. - - - Namespaces in references whose contain are available in global declaration space. - - - - - Aliases for the metadata reference. Empty if the reference has no aliases. - - - In C# these aliases can be used in "extern alias" syntax to disambiguate type names. - - - - - True if interop types defined in the referenced metadata should be embedded into the compilation referencing the metadata. - - - - - True to apply recursively on the target assembly and on all its transitive dependencies. - False to apply only on the target assembly. - - - - - Resolves references to metadata specified in the source (#r directives). - - - - - True to instruct the compiler to invoke for each assembly reference that - doesn't match any of the assemblies explicitly referenced by the (via , or #r directives. - - - - - Resolves a missing assembly reference. - - The metadata definition (assembly or module) that declares assembly reference in its list of dependencies. - Identity of the assembly reference that couldn't be resolved against metadata references explicitly specified to in the compilation. - Resolved reference or null if the identity can't be resolved. - - - - Represents an immutable snapshot of module CLI metadata. - - This object may allocate significant resources or lock files depending upon how it is constructed. - - - - Create metadata module from a raw memory pointer to metadata directory of a PE image or .cormeta section of an object file. - Only manifest modules are currently supported. - - Pointer to the start of metadata block. - The size of the metadata block. - is null. - is not positive. - - - - Create metadata module from a raw memory pointer to a PE image or an object file. - - Pointer to the DOS header ("MZ") of a portable executable image. - The size of the image pointed to by . - is null. - is not positive. - - - - Create metadata module from a sequence of bytes. - - The portable executable image beginning with the DOS header ("MZ"). - is null. - - - - Create metadata module from a byte array. - - Portable executable image beginning with the DOS header ("MZ"). - is null. - - - - Create metadata module from a stream. - - Stream containing portable executable image. Position zero should contain the first byte of the DOS header ("MZ"). - - False to close the stream upon disposal of the metadata (the responsibility for disposal of the stream is transferred upon entry of the constructor - unless the arguments given are invalid). - - is null. - The stream doesn't support seek operations. - - - - Create metadata module from a stream. - - Stream containing portable executable image. Position zero should contain the first byte of the DOS header ("MZ"). - - Options specifying how sections of the PE image are read from the stream. - Unless is specified, the responsibility for disposal of the stream is transferred upon entry of the constructor - unless the arguments given are invalid. - - is null. - The stream doesn't support read and seek operations. - has an invalid value. - - or is specified and the PE headers of the image are invalid. - - - or is specified and an error occurs while reading the stream. - - - - - Creates metadata module from a file containing a portable executable image. - - File path. - - The file might remain mapped (and read-locked) until this object is disposed. - The memory map is only created for large files. Small files are read into memory. - - is null. - is invalid. - Error opening file . See for details. - File not found. - Reading from a file path is not supported by the platform. - - - - Creates a shallow copy of this object. - - - The resulting copy shares the metadata image and metadata information read from it with the original. - It doesn't own the underlying metadata image and is not responsible for its disposal. - - This is used, for example, when a metadata cache needs to return the cached metadata to its users - while keeping the ownership of the cached metadata object. - - - - - Frees memory and handles allocated for the module. - - - - - Name of the module. - - Invalid metadata. - Module has been disposed. - - - - Version of the module content. - - Invalid metadata. - Module has been disposed. - - - - Returns the for this instance. - - - - - Returns the file names of linked managed modules. - - When an invalid module name is encountered. - Module has been disposed. - - - - Returns the metadata reader. - - Module has been disposed. - When an invalid module name is encountered. - - - - Creates a reference to the module metadata. - - Provider of XML documentation comments for the metadata symbols contained in the module. - Path describing the location of the metadata, or null if the metadata have no location. - Display string used in error messages to identity the reference. - A reference to the module metadata. - - - - Reference to metadata stored in the standard ECMA-335 metadata format. - - - - - Display string used in error messages to identity the reference. - - - - - Path describing the location of the metadata, or null if the metadata have no location. - - - - - XML documentation comments provider for the reference. - - - - - Create documentation provider for the reference. - - - Called when the compiler needs to read the documentation for the reference. - This method can be called multiple times from different threads. The result of one of the calls - is cached on the reference object. - - - - - Returns an instance of the reference with specified aliases. - - The new aliases for the reference. - Alias is invalid for the metadata kind. - - - - Returns an instance of the reference with specified aliases. - - The new aliases for the reference. - Alias is invalid for the metadata kind. - - - - Returns an instance of the reference with specified interop types embedding. - - The new value for . - Interop types can't be embedded from modules. - - - - Returns an instance of the reference with specified properties, or this instance if properties haven't changed. - - The new properties for the reference. - Specified values not valid for this reference. - - - - Returns an instance of the reference with specified properties. - - The new properties for the reference. - Specified values not supported. - Only invoked if the properties changed. - - - - Get metadata representation for the PE file. - - If the PE image format is invalid. - The metadata image content can't be read. - The metadata image is stored in a file that can't be found. - - Called when the needs to read the reference metadata. - - The listed exceptions are caught and converted to compilation diagnostics. - Any other exception is considered an unexpected error in the implementation and is not caught. - - objects may cache information decoded from the PE image. - Reusing instances across metadata references will result in better performance. - - The calling doesn't take ownership of the objects returned by this method. - The implementation needs to retrieve the object from a provider that manages their lifetime (such as metadata cache). - The object is kept alive by the that called - and by all compilations created from it via calls to With- factory methods on , - other than overloads. A compilation created using - will call to again. - - - - - Represents the value of #r reference along with its source location. - - - - - Represents a metadata reference that can't be or is not yet resolved. - - - For error reporting only, can't be used to reference a metadata file. - - - - - Initializes a new instance of the class. - - An ordered set of fully qualified - paths which are searched when resolving assembly names. - Directory used when resolving relative paths. - - - - Represents errors that occur while parsing RuleSet files. - - - - - Represents a set of rules as specified in a ruleset file. - - - - - The file path of the ruleset file. - - - - - The global option specified by the IncludeAll tag. - - - - - Individual rule ids and their associated actions. - - - - - List of rulesets included by this ruleset. - - - - - Create a RuleSet. - - - - - Create a RuleSet with a global effective action applied on it. - - - - - Get the effective ruleset after resolving all the included rulesets. - - - - - Get all the files involved in resolving this ruleset. - - - - - Returns true if the action1 is stricter than action2. - - - - - Load the ruleset from the specified file. This ruleset will contain - all the rules resolved from the includes specified in the ruleset file - as well. See also: . - - - A ruleset that contains resolved rules or null if there were errors. - - - - - Get the paths to all files contributing rules to the ruleset from the specified file. - See also: . - - - The full paths to included files, or an empty array if there were errors. - - - - - Parses the ruleset file at the given and returns the following diagnostic options from the parsed file: - 1) A map of from rule ID to option. - 2) A global option for all rules in the ruleset file. - - - - - Represents a Include tag in a RuleSet file. - - - - - The path of the included file. - - - - - The effective action to apply on this included ruleset. - - - - - Create a RuleSetInclude given the include path and the effective action. - - - - - Gets the RuleSet associated with this ruleset include - - The parent of this ruleset include - - - - Returns a full path to the include file. Relative paths are expanded relative to the current rule set file. - - The parent of this rule set include - - - - This type is responsible for parsing a ruleset xml file and producing a object. - - - - - Creates and loads the rule set from a file - - The file path to load the rule set - - - - Load the rule set from the XML node - - The rule set node from which to create a rule set object - The file path to the rule set file - A rule set object with data from the given XML node - - - - Load the rules from the XML node - - The rules node from which to loop through each child rule node - A list of rule objects with data from the given XML node - - - - Load the rule from the XML node - - The rule node from which to create a rule object - The analyzer this rule belongs to - The namespace this rule belongs to - A rule object with data from the given XML node - - - - Load the included rule set from the XML node - - The include node from which to create a RuleSetInclude object - A RuleSetInclude object with data from the given XML node - - - - Reads the action from the given node - - The node to read the action, it can be a rule node or an include node. - Whether or not the default value is allowed. - The rule action - - - - Load the IncludedAll from the XML node - - The IncludeAll node from which to create a IncludeAll object - A IncludeAll object with data from the given XML node - - - - Reads an attribute from a node and validates that it is not empty. - - The XML node that contains the attribute - The name of the attribute to read - The attribute value - - - - Gets the default settings to read the ruleset xml file. - - - - - Resolves references to source files specified in source code. - - - - - Determines if a flag is set on the enum. - - The value to check. - An enum field that specifies the flag. - Whether the is set on the . - - - - Specifies the options for how generics are displayed in the description of a symbol. - - - - - Format object using default options. - - - - - In C#, include the numeric code point before character literals. - - - - - Whether or not to include type suffix for applicable integral literals. - - - - - Whether or not to display integral literals in hexadecimal. - - - - - Whether or not to quote character and string literals. In Visual Basic, this also enables pretty-listing of non-printable characters using ChrW function and vb* constants. - - - - - Represents a value type that can be assigned null. - - - - - - Initializes a new instance to the specified value. - - - - - - Gets a value indicating whether the current object has a value. - - - - - - Gets the value of the current object. - - - - - - Creates a new object initialized to a specified value. - - - - - - Specifies output assembly kinds generated by compiler. - - - - - An .exe with an entry point and a console. - - - - - An .exe with an entry point but no console. - - - - - A .dll file. - - - - - A .netmodule file. - - - - - A .winmdobj file. - - - - - An .exe that can run in an app container. - - - Equivalent to a WindowsApplication, but with an extra bit set in the Portable Executable file - so that the application can only be run in an app container. - Also known as a "Windows Store app". - - - - - The base class for language specific assembly managers. - - Language specific representation for a compilation - Language specific representation for an assembly symbol. - - - - Information about an assembly, used as an input for the Binder class. - - - - - Identity of the assembly. - - - - - Identity of assemblies referenced by this assembly. - References should always be returned in the same order. - - - - - The sequence of AssemblySymbols the Binder can choose from. - - - - - Check if provided AssemblySymbol is created for assembly described by this instance. - This method is expected to return true for every AssemblySymbol returned by - AvailableSymbols property. - - - The AssemblySymbol to check. - - Boolean. - - - - Resolve assembly references against assemblies described by provided AssemblyData objects. - In other words, match assembly identities returned by AssemblyReferences property against - assemblies described by provided AssemblyData objects. - - An array of AssemblyData objects to match against. - Used to compare assembly identities. - - For each assembly referenced by this assembly () - a description of how it binds to one of the input assemblies. - - - - - Get the source compilation backing this assembly, if one exists. - Returns null otherwise. - - - - - Result of binding an AssemblyRef to an AssemblyDef. - - - - - Failed binding. - - - - - Successful binding. - - - - - Returns true if the reference was matched with the identity of the assembly being built. - - - - - True if the definition index is available (reference was successfully matched with the definition). - - - - - 0 if the reference is equivalent to the definition. - -1 if version of the matched definition is lower than version of the reference, but the reference otherwise matches the definition. - +1 if version of the matched definition is higher than version of the reference, but the reference otherwise matches the definition. - - Undefined unless is true. - - - - - Index into assembly definition list. - Undefined unless is true. - - - - - Private helper class to capture information about AssemblySymbol instance we - should check for suitability. Used by the Bind method. - - - - - An index of the AssemblyData object in the input array. AssemblySymbol instance should - be checked for suitability against assembly described by that object, taking into account - assemblies described by other AssemblyData objects in the input array. - - - - - AssemblySymbol instance to check for suitability. - - - - - Convenience constructor to initialize fields of this structure. - - - - - Result of binding an input assembly and its references. - - - - - Suitable AssemblySymbol instance for the corresponding assembly, - null reference if none is available/found. - - - - - For each AssemblyRef of this AssemblyDef specifies which AssemblyDef matches the reference. - - - Result of resolving assembly references of the corresponding assembly - against provided set of assemblies. Essentially, this is an array returned by - AssemblyData.BindAssemblyReferences method. - - Each element describes the assembly the corresponding reference of the input assembly - is bound to. - - - - - For the given set of AssemblyData objects, do the following: - 1) Resolve references from each assembly against other assemblies in the set. - 2) Choose suitable AssemblySymbol instance for each AssemblyData object. - - The first element (index==0) of the assemblies array represents the assembly being built. - One can think about the rest of the items in assemblies array as assembly references given to the compiler to - build executable for the assembly being built. - - Compilation. - - An array of objects describing assemblies, for which this method should - resolve references and find suitable AssemblySymbols. The first slot contains the assembly being built. - - - An array of objects describing standalone modules referenced by the compilation. - - - An array of references passed to the compilation and resolved from #r directives. - May contain references that were skipped during resolution (they don't have a corresponding explicit assmebly). - - - Maps index to to an index of a resolved assembly or module in or modules. - - - Reference resolver used to look up missing assemblies. - - - Hide lower versions of dependencies that have multiple versions behind an alias. - - - Used to filter out assemblies that have the same strong or weak identity. - Maps simple name to a list of identities. The highest version of each name is the first. - - - Import options applied to implicitly resolved references. - - - Updated array with resolved implicitly referenced assemblies appended. - - - Implicitly resolved references. - - - Maps indices of implicitly resolved references to the corresponding indices of resolved assemblies in (explicit + implicit). - - - Any diagnostics reported while resolving missing assemblies. - - - True if the assembly being compiled is indirectly referenced through some of its own references. - - - The definition index of the COR library. - - - An array of structures describing the result. It has the same amount of items as - the input assemblies array, for each input AssemblyData object resides - at the same position. - - Each contains the following data: - - - Suitable AssemblySymbol instance for the corresponding assembly, - null reference if none is available/found. Always null for the first element, which corresponds to the assembly being built. - - - Result of resolving assembly references of the corresponding assembly - against provided set of assembly definitions. Essentially, this is an array returned by - method. - - - - - Determines if it is possible that gives internals - access to assembly . It does not make a conclusive - determination of visibility because the compilation's strong name key is not supplied. - - - - - Return AssemblySymbols referenced by the input AssemblySymbol. The AssemblySymbols must correspond - to the AssemblyNames returned by AssemblyData.AssemblyReferences property. If reference is not - resolved, null reference should be returned in the corresponding item. - - - The target AssemblySymbol instance. - - An array of AssemblySymbols referenced by the input AssemblySymbol. - Implementers may return cached array, Binder does not mutate it. - - - - - Return collection of assemblies involved in canonical type resolution of - NoPia local types defined within target assembly. In other words, all - references used by previous compilation referencing the target assembly. - - - - - Assembly is /l-ed by compilation that is using it as a reference. - - - - - Get Assembly used as COR library for the candidate. - - - - - Checks if the properties of are compatible with properties of . - Reports inconsistencies to the given diagnostic bag. - - True if the properties are compatible and hence merged, false if the duplicate reference should not merge it's properties with primary reference. - - - - Called to compare two weakly named identities with the same name. - - - - - Aliases that should be applied to the referenced assembly. - Empty array means {"global"} (all namespaces and types in the global namespace of the assembly are accessible without qualification). - Null if not applicable (the reference only has recursive aliases). - - - - - Aliases that should be applied recursively to all dependent assemblies. - Empty array means {"global"} (all namespaces and types in the global namespace of the assembly are accessible without qualification). - Null if not applicable (the reference only has simple aliases). - - - - - default() is considered skipped. - - - - - Index into an array of assemblies (not including the assembly being built) or an array of modules, depending on . - - - - - non-negative: Index into the array of all (explicitly and implicitly) referenced assemblies. - negative: ExplicitlyReferencedAssemblies.Count + RelativeAssemblyIndex is an index into the array of assemblies. - - - - - Resolves given metadata references to assemblies and modules. - - The compilation whose references are being resolved. - - Used to filter out assemblies that have the same strong or weak identity. - Maps simple name to a list of identities. The highest version of each name is the first. - - List where to store resolved references. References from #r directives will follow references passed to the compilation constructor. - Maps #r values to successfully resolved metadata references. Does not contain values that failed to resolve. - Unique metadata references resolved from #r directives. - List where to store information about resolved assemblies to. - List where to store information about resolved modules to. - Diagnostic bag where to report resolution errors. - - Maps index to to an index of a resolved assembly or module in or , respectively. - - - - - Creates or gets metadata for PE reference. - - - If any of the following exceptions: , , , - are thrown while reading the metadata file, the exception is caught and an appropriate diagnostic stored in . - - - - - Determines whether references are the same. Compilation references are the same if they refer to the same compilation. - Otherwise, references are represented by their object identities. - - - - - Merges aliases of the first observed reference () with aliases specified for an equivalent reference (). - Empty alias list is considered to be the same as a list containing "global", since in both cases C# allows unqualified access to the symbols. - - - - - Caller is responsible for freeing any allocated ArrayBuilders. - - - - - Caller is responsible for freeing any allocated ArrayBuilders. - - - - - Returns null if an assembly of an equivalent identity has not been added previously, otherwise returns the reference that added it. - Two identities are considered equivalent if - - both assembly names are strong (have keys) and are either equal or FX unified - - both assembly names are weak (no keys) and have the same simple name. - - - - - For each given directive return a bound PE reference, or null if the binding fails. - - - - - Used to match AssemblyRef with AssemblyDef. - - Array of definition identities to match against. - An index of the first definition to consider, preceding this index are ignored. - Reference identity to resolve. - Assembly identity comparer. - - Returns an index the reference is bound. - - - - - If the compilation being built represents an assembly its assembly name. - If the compilation being built represents a module, the name of the - containing assembly or - if not specified (/moduleassemblyname command line option). - - - - - Used to compares assembly identities. - May implement unification and portability policies specific to the target platform. - - - - - Metadata observed by the compiler. - May be shared across multiple Reference Managers. - Access only under lock(). - - - - - Once this is non-zero the state of the manager is fully initialized and immutable. - - - - - True if the compilation has a reference that refers back to the assembly being compiled. - - - If we have a circular reference the bound references can't be shared with other compilations. - - - - - A map from a metadata reference to an index to array. Do not access - directly, use property instead. - - - - - A map from a net-module metadata reference to the index of the corresponding module - symbol in the source assembly symbol for the current compilation. - - - Subtract one from the index (for the manifest module) to find the corresponding elements - of and . - - - - - Maps (containing syntax tree file name, reference string) of #r directive to a resolved metadata reference. - If multiple #r's in the same tree use the same value as a reference the resolved metadata reference is the same as well. - - - - - Array of unique bound #r references. - - - The references are in the order they appear in syntax trees. This order is currently preserved - as syntax trees are added or removed, but we might decide to share reference manager between compilations - with different order of #r's. It doesn't seem this would be an issue since all #r's within the compilation - have the same "priority" with respect to each other. - - - - - Diagnostics produced during reference resolution and binding. - - - When reporting diagnostics be sure not to include any information that can't be shared among - compilations that share the same reference manager (such as full identity of the compilation, - simple assembly name is ok). - - - - - COR library symbol, or null if the compilation itself is the COR library. - - - If the compilation being built is the COR library we don't want to store its source assembly symbol - here since we wouldn't be able to share the state among subsequent compilations that are derived from it - (each of them has its own source assembly symbol). - - - - - Standalone modules referenced by the compilation (doesn't include the manifest module of the compilation). - - - [i] corresponds to [i]. - - - - - References of standalone modules referenced by the compilation (doesn't include the manifest module of the compilation). - - - [i] corresponds to [i]. - - - - - Assemblies referenced directly by the source module of the compilation. - - - - - Assemblies referenced directly by the source module of the compilation. - - - Aliases [i] are of an assembly [i]. - - - - - Unified assemblies referenced directly by the source module of the compilation. - - - - - Call only while holding . - - - - - Call only while holding . - - - - - Global namespaces of assembly references that have been superseded by an assembly reference with a higher version are - hidden behind to avoid ambiguity when they are accessed from source. - All existing aliases of a superseded assembly are discarded. - - - - - Gets the that corresponds to the assembly symbol. - - - - - Must be acquired whenever the following data are about to be modified: - - Compilation.lazyAssemblySymbol - - Compilation.referenceManager - - ReferenceManager state - - - - - - All the above data should be updated at once while holding this lock. - Once lazyAssemblySymbol is set the Compilation.referenceManager field and ReferenceManager - state should not change. - - - - - Enumerates all referenced assemblies. - - - - - Enumerates all referenced assemblies and their aliases. - - - - - A record of the assemblies referenced by a module (their identities, symbols, and unification). - - - - - Identities of referenced assemblies (those that are or will be emitted to metadata). - - - Names[i] is the identity of assembly Symbols[i]. - - - - - Assembly symbols that the identities are resolved against. - - - Names[i] is the identity of assembly Symbols[i]. - Unresolved references are represented as MissingAssemblySymbols. - - - - - A subset of that correspond to references with non-matching (unified) - version along with unification details. - - - - - Assembly symbol referenced by a AssemblyRef for which we couldn't find a matching - compilation reference but we found one that differs in version. - Created only for assemblies that require runtime binding redirection policy, - i.e. not for Framework assemblies. - - - - - Original reference that was unified to the identity of the . - - - - - Representation of a resource whose contents are to be embedded in the output assembly. - - - - - Creates a representation of a resource whose contents are to be embedded in the output assembly. - - Resource name. - The callers will dispose the result after use. - This allows the resources to be opened and read one at a time. - - True if the resource is public. - - Returns a stream of the data to embed. - - - - - Creates a representation of a resource whose file name will be recorded in the assembly. - - Resource name. - File name with an extension to be stored in metadata. - The callers will dispose the result after use. - This allows the resources to be opened and read one at a time. - - True if the resource is public. - - Function returning a stream of the resource content (used to calculate hash). - - - - - Specifies the C# or VB source code kind. - - - - - No scripting. Used for .cs/.vb file parsing. - - - - - Allows top-level statements, declarations, and optional trailing expression. - Used for parsing .csx/.vbx and interactive submissions. - - - - - The same as . - - - - - Specifies the Ids of special runtime types. - - - Only types explicitly mentioned in "Co-located core types" spec - (https://github.com/dotnet/roslyn/blob/master/docs/compilers/Co-located%20core%20types.md) - can be in this enum. - The following things should be in sync: - 1) SpecialType enum - 2) names in SpecialTypes.EmittedNames array. - - - - - Indicates a non-special type (default value). - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Count of special types. This is not a count of enum members. - - - - - Checks if a type is considered a "built-in integral" by CLR. - - - - - Checks if a type is a primitive of a fixed size. - - - - - These special types are structs that contain fields of the same type - (e.g. System.Int32 contains a field of type System.Int32). - - - - - Array of names for types from Cor Library. - The names should correspond to ids from TypeId enum so - that we could use ids to index into the array - - - - - - Gets the name of the special type as it would appear in metadata. - - - - - The strong name key associated with the identity of this assembly. - This contains the contents of the user-supplied key file exactly as extracted. - - - - - Determines source assembly identity. - - - - - A diagnostic created in the process of determining the key. - - - - - The CSP key container containing the public key used to produce the key, - or null if the key was retrieved from . - - - The original value as specified by or - . - - - - - Original key file path, or null if the key is provided by the . - - - The original value as specified by or - - - - - - True if the compilation can be signed using these keys. - - - - - True if a strong name can be created for the compilation using these keys. - - - - - Provides strong name and signs source assemblies. - - - - - Contains helper methods for switch statement label constants - - - - - Method used to compare ConstantValues for switch statement case labels - - - - A value that indicates the relative order of the objects being compared. The return value has these meanings: - Less than zero: first instance precedes second in the sort order. - Zero: first instance occurs in the same position in the sort order as second. - Greater than zero: first instance follows second in the sort order. - - - - - Append a default argument (i.e. the default argument of an optional parameter). - Assumed to be non-null. - - - - - Check if the given type is an enum with System.FlagsAttribute. - - - TODO: Can/should this be done using WellKnownAttributes? - - - - - This class associates a symbol with particular format for display. - It can be passed as an argument for an error message in place where symbol display should go, - which allows to defer building strings and doing many other things (like loading metadata) - associated with that until the error message is actually requested. - - - - - None - - - - - ".ctor" instead of "Foo" - - - - - "List`1" instead of "List<T>" ("List(of T)" in VB). Overrides GenericsOptions on - types. - - - - - Append "[Missing]" to missing Metadata types (for testing). - - - - - Include the Script type when qualifying type names. - - - - - Include custom modifiers (e.g. modopt([mscorlib]System.Runtime.CompilerServices.IsConst)) on - the member (return) type and parameters. - - - CONSIDER: custom modifiers are part of the public API, so we might want to move this to SymbolDisplayMemberOptions. - - - - - For a type written as "int[][,]" in C#, then - a) setting this option will produce "int[,][]", and - b) not setting this option will produce "int[][,]". - - - - - Specifies how to display delegates (just the name or the name with the signature). - - - - - Shows only the name of the delegate (e.g. "SomeDelegate"). - - - - - Shows the name and the parameters of the delegate (e.g. "SomeDelegate(int x)"). - - - The format of the parameters will be determined by the other flags passed. - - - - - Shows the name and the signature of the delegate (e.g. "void SomeDelegate(int x)"). - - - The format of the signature will be determined by the other flags passed. - - - - - Specifies how to display extension methods. - - - - - Displays the extension method based on its . - - - - - Displays the extension method in the form of an instance method. - For example, IEnumerable<TSource>.ElementAt<TSource>(int index). - - - - - Displays the extension method as a static method. - For example, Enumerable.ElementAt<TSource>(this IEnumerable<TSource> source, int index). - - - - - Exposes extension methods for displaying symbol descriptions. - - - - - Converts an immutable array of s to a string. - - The array of parts. - The concatenation of the parts into a single string. - - - - Determines if a flag is set on the enum. - - The value to check. - An enum field that specifies the flag. - Whether the is set on the . - - - - Determines if a flag is set on the enum. - - The value to check. - An enum field that specifies the flag. - Whether the is set on the . - - - - Determines if a flag is set on the enum. - - The value to check. - An enum field that specifies the flag. - Whether the is set on the . - - - - Determines if a flag is set on the enum. - - The value to check. - An enum field that specifies the flag. - Whether the is set on the . - - - - Determines if a flag is set on the enum. - - The value to check. - An enum field that specifies the flag. - Whether the is set on the . - - - - Determines if a flag is set on the enum. - - The value to check. - An enum field that specifies the flag. - Whether the is set on the . - - - - Determines if a flag is set on the enum. - - The value to check. - An enum field that specifies the flag. - Whether the is set on the . - - - - Describes the formatting rules that should be used when displaying symbols. - - - - - Formats a symbol description as in a C# compiler error message. - - - - - Formats a symbol description as in a C# compiler short error message. - - - - - Formats a symbol description as in a Visual Basic compiler error message. - - - - - Formats a symbol description as in a Visual Basic compiler short error message. - - - - - Formats the names of all types and namespaces in a fully qualified style (including the global alias). - - - - - Formats a symbol description in a form that suits . - - - - - A verbose format for displaying symbols (useful for testing). - - - - - this.QualifiedNameOnly = containingSymbol.QualifiedNameOnly + "." + this.Name - - - - - this.QualifiedNameArity = containingSymbol.QualifiedNameArity + "." + this.Name + "`" + this.Arity - - - - - A succinct format for displaying symbols. - - - - - The format used for displaying symbols when visualizing IL. - - - - - Used to normalize explicit interface implementation member names. - Only expected to be applied to interface types (and their type arguments). - - - - - Determines how the global namespace is displayed. - - - - - Determines how types are qualified (e.g. Nested vs Containing.Nested vs Namespace.Containing.Nested). - - - - - Determines how generics (on types and methods) should be described (i.e. the level of detail). - - - - - Determines how fields, properties, events, and methods are displayed. - - - - - Determines how parameters (of methods, properties/indexers, and delegates) are displayed. - - - - - Determines how delegates are displayed (e.g. name vs full signature). - - - - - Determines how extension methods are displayed. - - - - - Determines how properties are displayed. - For example, "Prop" vs "Prop { get; set; }" in C# or "Prop" vs. "ReadOnly Prop" in Visual Basic. - - - - - Determines how local variables are displayed. - - - - - Determines which kind keywords should be included when displaying symbols. - - - - - Determines other characteristics of how symbols are displayed. - - - - - Flags that can only be set within the compiler. - - - - - Constructs a new instance of accepting a variety of optional parameters. - - - The settings that determine how the global namespace is displayed. - - - The settings that determine how types are qualified (e.g. Nested vs Containing.Nested vs Namespace.Containing.Nested). - - - The settings that determine how generics (on types and methods) should be described (i.e. the level of detail). - - - The settings that determine how fields, properties, events, and methods are displayed. - - - The settings that determine how delegates are displayed (e.g. name vs full signature). - - - The settings that determine how extension methods are displayed. - - - The settings that determine how parameters (of methods, properties/indexers, and delegates) are displayed. - - - The settings that determine how properties are displayed. - For example, "Prop" vs "Prop { get; set; }" in C# or "Prop" vs. "ReadOnly Prop" in Visual Basic. - - - The settings that determine how local variables are displayed. - - - The settings that determine which kind keywords should be included when displaying symbols. - - - The settings that determine other characteristics of how symbols are displayed. - - - - - This version also accepts . - - - - - Creates a copy of the SymbolDisplayFormat but with replaced set of . - - - An object representing how miscellaneous symbols will be formatted. - - A duplicate of the SymbolDisplayFormat, with a replaced set of . - - - - Creates a copy of the SymbolDisplayFormat but with an additional set of . - - - An object specifying additional parameters for how miscellaneous symbols will be formatted. - - A duplicate of the SymbolDisplayFormat, with an additional set of . - - - - Creates a copy of the SymbolDisplayFormat but with replaced set of . - - - An object specifying how generic symbols will be formatted. - - A duplicate of the SymbolDisplayFormat, with a replaced set of . - - - - Creates a copy of the SymbolDisplayFormat but with an additional set of . - - - An object specifying additional parameters for how generic symbols will be formatted. - - A duplicate of the SymbolDisplayFormat, with an additional set of . - - - - Creates a copy of the SymbolDisplayFormat but with replaced set of . - - - An object specifying how members will be formatted. - - A duplicate of the SymbolDisplayFormat, with a replaced set of . - - - - Creates a copy of the SymbolDisplayFormat but with an additional set of . - - - An object specifying additional parameters for how members will be formatted. - - - A duplicate of the SymbolDisplayFormat, with an additional set of . - - - - - Creates a copy of the SymbolDisplayFormat but with a set of stripped away from the original object. - - - An object specifying which parameters should not be applied to how members will be formatted. - - - A duplicate of the SymbolDisplayFormat, with a set of stripped away from the original object. - - - - - Creates a copy of the SymbolDisplayFormat but with replaced set of . - - - An object specifying parameters with which symbols belonging to kind keywords should be formatted. - - - A duplicate of the SymbolDisplayFormat, with a replaced set of . - - - - - Creates a copy of the SymbolDisplayFormat but with an additional set of . - - - An object specifying additional parameters with which symbols belonging to kind keywords should be formatted. - - - A duplicate of the SymbolDisplayFormat, with an additional set of . - - - - - Creates a copy of the SymbolDisplayFormat but with a set of stripped away from the original object. - - - The settings that determine other characteristics of how symbols are displayed. - - - A duplicate of the SymbolDisplayFormat, with a set of stripped away from the original object. - - - - - Creates a copy of the SymbolDisplayFormat but with replaced set of . - - - An object specifying how parameters should be formatted. - - A duplicate of the SymbolDisplayFormat, with a replaced set of . - - - - Creates a copy of the SymbolDisplayFormat but with an additional set of . - - - An object specifying additional parameters on how parameters should be formatted. - - - A duplicate of the SymbolDisplayFormat, with an additional set of . - - - - - Creates a copy of the SymbolDisplayFormat but with a set of stripped away from the original object. - - - An object specifying parameters that should not be applied when formatting parameters. - - - A duplicate of the SymbolDisplayFormat, with a set of stripped away from the original object. - - - - - Creates a copy of the SymbolDisplayFormat but with replaced . - - - An object specifying parameters on how namespace symbols should be formatted. - - A duplicate of the SymbolDisplayFormat, with a replaced set of . - - - - Creates a copy of the SymbolDisplayFormat but with replaced set of . - - - An object specifying parameters on how symbols belonging to locals should be formatted. - - A duplicate of the SymbolDisplayFormat, with a replaced set of . - - - - Creates a copy of the SymbolDisplayFormat but with an additional set of . - - - An object specifying additional parameters on how symbols belonging to locals should be formatted. - - - A duplicate of the SymbolDisplayFormat, with an additional set of . - - - - - Specifies the options for how generics are displayed in the description of a symbol. - - - - - Omits the type parameter list entirely. - - - - - Includes the type parameters. - For example, "Foo<T>" in C# or "Foo(Of T)" in Visual Basic. - - - - - Includes type parameters and constraints. - For example, "where T : new()" in C# or "Of T as New" in Visual Basic. - - - - - Includes in or out keywords before variant type parameters. - For example, "Foo<out T>" in C# or (Foo Of Out T" in Visual Basic. - - - - - Specifies the options for how to display the global namespace in the description of a symbol. - - - Any of these styles may be overridden by . - - - - - Omits the global namespace, unconditionally. - - - - - Omits the global namespace if it is being displayed as a containing symbol (i.e. not on its own). - - - - - Include the global namespace, unconditionally. - - - - - Specifies which kind keywords should be included when displaying symbols. - - - - - Omits all kind keywords. - - - - - Includes the namespace keyword before namespaces. - For example, "namespace System", rather than "System". - - - - - Includes the type keyword before types. - For example, "class C" in C# or "Structure S" in Visual Basic. - - - - - Include the member keyword before members (if one exists). - For example, "event D E" in C# or "Function MyFun()" in Visual Basic. - - - - - Specifies the options for how locals are displayed in the description of a symbol. - - - - - Shows only the name of the local. - For example, "x". - - - - - Shows the type of the local in addition to its name. - For example, "int x" in C# or "x As Integer" in Visual Basic. - - - - - Shows the constant value of the local, if there is one, in addition to its name. - For example "x = 1". - - - - - Specifies the options for how members are displayed in the description of a symbol. - - - - - Includes only the name of the member. - - - - - Includes the (return) type of the method/field/property/event. - - - - - Includes the modifiers of the member. - For example, "static readonly" in C# or "Shared ReadOnly" in Visual Basic. - - - Accessibility modifiers are controlled separately by . - - - - - Includes the accessibility modifiers of the member. - For example, "public" in C# or "Public" in Visual Basic. - - - - - Includes the name of corresponding interface on members that explicitly implement - interface members. - For example, "IFoo.Bar { get; }". - - - This option has no effect in Visual Basic. - - - - - Includes the parameters of methods and properties/indexers. - - - See for finer-grained settings. - - - - - Includes the name of the type containing the member. - - - The format of the containing type is determined by . - - - - - Includes the value of the member if is a constant. - - - - - Specifies miscellaneous options about the format of symbol descriptions. - - - - - Specifies that no miscellaneous options should be applied. - - - - - Uses keywords for predefined types. - For example, "int" instead of "System.Int32" in C# - or "Integer" instead of "System.Integer" in Visual Basic. - - - - - Escapes identifiers that are also keywords. - For example, "@true" instead of "true" in C# or - "[True]" instead of "True" in Visual Basic. - - - - - Displays asterisks between commas in multi-dimensional arrays. - For example, "int[][*,*]" instead of "int[][,]" in C# or - "Integer()(*,*)" instead of "Integer()(*,*) in Visual Basic. - - - - - Displays "?" for erroneous types that lack names (perhaps due to faulty metadata). - - - - - Displays attributes names without the "Attribute" suffix, if possible. - - - Has no effect outside and only applies - if the context location is one where an attribute ca be referenced without the suffix. - - - - - Displays as a normal generic type, rather than with - the special question mark syntax. - - - - - Specifies how parameters are displayed in the description of a (member, property/indexer, or delegate) symbol. - - - - - Omits parameters from symbol descriptions. - - - If this option is combined with , then only - the parentheses will be shown (e.g. M()). - - - - - Includes the this keyword before the first parameter of an extension method in C#. - - - This option has no effect in Visual Basic. - - - - - Includes the params, ref, out, ByRef, ByVal keywords before parameters. - - - - - Includes parameter types in symbol descriptions. - - - - - Includes parameter names in symbol descriptions. - - - - - Includes parameter default values in symbol descriptions. - - Ignored if is not set. - - - - Includes square brackets around optional parameters. - - - - - A single element of a symbol description. For example, a keyword, a punctuation character or - a class name. - - - - - - - - Gets the kind of this display part. - - - - - Gets the symbol associated with this display part, if there is one. - For example, the associated with a class name. - - - - - - Construct a non-formattable (i.e. with a fixed string value). - - The kind of the display part. - An optional associated symbol. - The fixed string value of the part. - - - - Returns the string value of this symbol display part. - - - - - Specifies the kinds of a piece of classified text (SymbolDisplayPart). - - - - The name of an alias. - - - The name of an assembly. - - - The name of a class. - - - The name of a delegate. - - - The name of an enum. - - - The name of an error type. - - - - The name of an event. - - - The name of a field. - - - The name of an interface. - - - A language keyword. - - - The name of a label. - - - A line-break (i.e. whitespace). - - - A numeric literal. - Typically for the default values of parameters and the constant values of fields. - - - A string literal. - Typically for the default values of parameters and the constant values of fields. - - - The name of a local. - - - The name of a method. - - - The name of a module. - - - The name of a namespace. - - - The symbol of an operator (e.g. "+"). - - - The name of a parameter. - - - The name of a property. - - - A punctuation character (e.g. "(", ".", ",") other than an . - - - A single space character. - - - The name of a struct (structure in Visual Basic). - - - A keyword-like part for anonymous types (not actually a keyword). - - - An unclassified part. - Never returned - only set in user-constructed parts. - - - The name of a type parameter. - - - The name of a query range variable.. - - - - Specifies the options for how properties are displayed in symbol descriptions. - - - - - Shows only the names of properties. - - - - - - Indicates whether the property is readable and/or writable. - In C#, this is accomplished by including accessors. - In Visual Basic, this is accomplished by including the ReadOnly or WriteOnly - keyword, as appropriate. - - - - - Specifies how much qualification is used in symbol descriptions. - - - - - Shows only the name of the symbol. - - - - - Shows the name of the symbol and the names of all containing types. - - - - - Shows the name of the symbol the names of all containing types and namespaces. - - - - - Enumeration for common accessibility combinations. - - - - - No accessibility specified. - - - - - We should not see new anonymous types from source after we finished emit phase. - If this field is true, the collection is sealed; in DEBUG it also is used to check the assertion. - - - - - Collection of anonymous type templates is sealed - - - - - Default attribute usage for attribute types: - (a) Valid targets: AttributeTargets.All - (b) AllowMultiple: false - (c) Inherited: true - - - - - Information decoded from well-known custom attributes applied on an assembly. - - - - - Returns data decoded from security attributes or null if there are no security attributes. - - - - - The attribute class. - - - - - The constructor on the attribute class. - - - - - Constructor arguments on the attribute. - - - - - Named (property value) arguments on the attribute. - - - - - Attribute is conditionally omitted if it is a source attribute and both the following are true: - (a) It has at least one applied conditional attribute AND - (b) None of conditional symbols are true at the attribute source location. - - - - - Checks if an applied attribute with the given attributeType matches the namespace name and type name of the given early attribute's description - and the attribute description has a signature with parameter count equal to the given attributeArgCount. - NOTE: We don't allow early decoded attributes to have optional parameters. - - - - - Returns the value of a constructor argument as type . - Throws if no constructor argument exists or the argument cannot be converted to the type. - - - - - Returns named attribute argument with the given as type . - If there is more than one named argument with this name, it returns the last one. - If no named argument is found then the is returned. - - The metadata property or field name. This name is case sensitive (both VB and C#). - SpecialType of the named argument. - Default value for the named argument. - - For user defined attributes VB allows duplicate named arguments and uses the last value. - Dev11 reports an error for pseudo-custom attributes when emitting metadata. We don't. - - - - - Decode the arguments to ObsoleteAttribute. ObsoleteAttribute can have 0,1 or 2 arguments. - - - - - Decode the arguments to DeprecatedAttribute. DeprecatedAttribute can have 3 or 4 arguments. - - - - - Used to determine if two instances are identical, - i.e. they have the same attribute type, attribute constructor and have identical arguments. - - - - - Information decoded from early well-known custom attributes applied on an event. - - - - - Information decoded from well-known custom attributes applied on an event. - - - - - Information decoded from early well-known custom attributes applied on a field. - - - - - Information decoded from well-known custom attributes applied on a field. - - - - - Returns marshalling data or null of MarshalAs attribute isn't applied on the field. - - - - - Information decoded from early well-known custom attributes applied on a method. - - - - - Information decoded from well-known custom attributes applied on a method. - - - - - Returns data decoded from security attributes or null if there are no security attributes. - - - - - Information decoded from well-known custom attributes applied on a module. - - - - - Information decoded from early well-known custom attributes applied on a parameter. - - - - - Information decoded from well-known custom attributes applied on a parameter. - - - - - Returns marshalling data or null of MarshalAs attribute isn't applied on the parameter. - - - - - Information decoded from early well-known custom attributes applied on a property. - - - - - Information decoded from well-known custom attributes applied on a property. - - - - - Information decoded from well-known custom attributes applied on a method return value. - - - - - Returns marshalling data or null of MarshalAs attribute isn't applied on the return value. - - - - - Information decoded from early well-known custom attributes applied on a type. - - - - - Information decoded from well-known custom attributes applied on a type. - - - - - Returns data decoded from security attributes or null if there are no security attributes. - - - - - Represents a bag of custom attributes and the associated decoded well-known attribute data. - - - - - Instance representing sealed custom attribute bag with no attributes. - - - - - Returns a non-sealed custom attribute bag with null initialized , null initialized and uninitialized . - - - - - Sets the early decoded well-known attribute data on the bag in a thread safe manner. - Stored early decoded data is immutable and cannot be updated further. - - Returns true if early decoded data were stored into the bag on this thread. - - - - Sets the decoded well-known attribute data (except the early data) on the bag in a thread safe manner. - Stored decoded data is immutable and cannot be updated further. - - Returns true if decoded data were stored into the bag on this thread. - - - - Sets the bound attributes on the bag in a thread safe manner. - If store succeeds, it seals the bag and makes the bag immutable. - - Returns true if bound attributes were stored into the bag on this thread. - - - - Gets the stored bound attributes in the bag. - - This property can only be accessed on a sealed bag. - - - - Gets the decoded well-known attribute data (except the early data) in the bag. - - This property can only be accessed on the bag after has been invoked. - - - - Gets the early decoded well-known attribute data in the bag. - - This property can only be accessed on the bag after has been invoked. - - - - Return whether early decoded attribute data has been computed and stored on the bag and it is safe to access from this bag. - Return value of true doesn't guarantee that bound attributes or remaining decoded attribute data has also been initialized. - - - - - Return whether all decoded attribute data has been computed and stored on the bag and it is safe to access from this bag. - Return value of true doesn't guarantee that bound attributes have also been initialized. - - - - - Enum representing the current state of attribute binding/decoding for a corresponding CustomAttributeBag. - - - - - Bag has been created, but no decoded data or attributes have been stored. - CustomAttributeBag is in this state during early decoding phase. - - - - - Early decoded attribute data has been computed and stored on the bag, but bound attributes or remaining decoded attribute data is not stored. - Only can be accessed from this bag. - - - - - All decoded attribute data has been computed and stored on the bag, but bound attributes are not yet stored. - Both and can be accessed from this bag. - - - - - Bound attributes have been computed and stored on this bag. - - - - - CustomAttributeBag is completely initialized and immutable. - - - - - Contains common arguments to Symbol.DecodeWellKnownAttribute method in both the language compilers. - - - - - Object to store the decoded data from bound well-known attributes. - Created lazily only when some decoded data needs to be stored, null otherwise. - - - - - Gets or creates the decoded data object. - - - This method must be called only when some decoded data will be stored into it subsequently. - - - - - Returns true if some decoded data has been stored into . - - - - - Gets the stored decoded data. - - - Assumes is true. - - - - - Syntax of the attribute to decode. Might be null when the attribute information is not coming - from syntax. For example, an assembly attribute propagated from added module to the resulting assembly. - - - - - Bound attribute to decode. - - - - - The index of the attribute in the list of attributes to decode. - - - - - Total count of attributes to decode. - - - - - Diagnostic bag. - - - - - Specific part of the symbol to which the attributes apply, or AttributeLocation.None if the attributes apply to the symbol itself. - Used e.g. for return type attributes of a method symbol. - - - - - Contains common arguments to Symbol.EarlyDecodeWellKnownAttribute method in both the language compilers. - - - - - Object to store the decoded data from early bound well-known attributes. - Created lazily only when some decoded data needs to be stored, null otherwise. - - - - - Gets or creates the decoded data object. - - - This method must be called only when some decoded data will be stored into it subsequently. - - - - - Returns true if some decoded data has been stored into . - - - - - Gets the stored decoded data. - - - Assumes is true. - - - - - Binder to bind early well-known attributes. - - - - - Bound type of the attribute to decode. - - - - - Syntax of the attribute to decode. - - - - - Specific part of the symbol to which the attributes apply, or AttributeLocation.None if the attributes apply to the symbol itself. - Used e.g. for return type attributes of a method symbol. - - - - - Base class for storing information decoded from early well-known custom attributes. - - - CONSIDER: Should we remove this class and let the sub-classes derived from WellKnownAttributeData? - - - - - Information decoded from . - - - - - Returns an instance of with all types replaced by types returned by specified translator. - Returns this instance if it doesn't hold on any types. - - - - - Information decoded from . - - - - - True if an error should be thrown for the . Default is false in which case - a warning is thrown. - - - - - The message that will be shown when an error/warning is created for . - - - - - Information decoded from security attributes, i.e. attributes derived from well-known SecurityAttribute, applied on a method/type/assembly. - - - - - Used for retrieving applied source security attributes, i.e. attributes derived from well-known SecurityAttribute. - - - - - Base class for storing information decoded from well-known custom attributes. - - - - - Used to distinguish cases when attribute is applied with null value and when attribute is not applied. - For some well-known attributes, the latter case will return string stored in - field. - - - - - If true, a language may use the modified storage location without - being aware of the meaning of the modification, modopt vs. modreq. - - - - - A type used as a tag that indicates which type of modification applies. - - - - - Represents a using alias (Imports alias in Visual Basic). - - - This interface is reserved for implementation by its associated APIs. We reserve the right to - change it in the future. - - - - - Gets the for the - namespace or type referenced by the alias. - - - - - Represents an array. - - - This interface is reserved for implementation by its associated APIs. We reserve the right to - change it in the future. - - - - - Gets the number of dimensions of this array. A regular single-dimensional array - has rank 1, a two-dimensional array has rank 2, etc. - - - - - Gets the type of the elements stored in the array. - - - - - Custom modifiers associated with the array type, or an empty array if there are none. - - - - - Represents a .NET assembly, consisting of one or more modules. - - - This interface is reserved for implementation by its associated APIs. We reserve the right to - change it in the future. - - - - - True if the assembly contains interactive code. - - - - - Gets the name of this assembly. - - - - - Gets the merged root namespace that contains all namespaces and types defined in the modules - of this assembly. If there is just one module in this assembly, this property just returns the - GlobalNamespace of that module. - - - - - Gets the modules in this assembly. (There must be at least one.) The first one is the main module - that holds the assembly manifest. - - - - - Gets the set of type identifiers from this assembly. - - - - - Gets the set of namespace names from this assembly. - - - - - Gets a value indicating whether this assembly gives - access to internal symbols - - - - Lookup a type within the assembly using the canonical CLR metadata name of the type. - - Type name. - Symbol for the type or null if type cannot be found or is ambiguous. - - - - Determines if the assembly might contain extension methods. - If false, the assembly does not contain extension methods. - - - - - Returns the type symbol for a forwarded type based its canonical CLR metadata name. - The name should refer to a non-nested type. If type with this name is not forwarded, - null is returned. - - - - - Represents the 'dynamic' type in C#. - - - This interface is reserved for implementation by its associated APIs. We reserve the right to - change it in the future. - - - - - An IErrorTypeSymbol is used when the compiler cannot determine a symbol object to return because - of an error. For example, if a field is declared "Foo x;", and the type "Foo" cannot be - found, an IErrorTypeSymbol is returned when asking the field "x" what it's type is. - - - This interface is reserved for implementation by its associated APIs. We reserve the right to - change it in the future. - - - - - When constructing this type, there may have been symbols that seemed to - be what the user intended, but were unsuitable. For example, a type might have been - inaccessible, or ambiguous. This property returns the possible symbols that the user - might have intended. It will return no symbols if no possible symbols were found. - See the CandidateReason property to understand why the symbols were unsuitable. - - - This only applies if this INamedTypeSymbol has TypeKind TypeKind.Error. - If not, an empty ImmutableArray is returned. - - - - - If CandidateSymbols returns one or more symbols, returns the reason that those - symbols were not chosen. Otherwise, returns None. - - - - - Represents an event. - - - This interface is reserved for implementation by its associated APIs. We reserve the right to - change it in the future. - - - - - The type of the event. - - - - - Returns true if the event is a WinRT type event. - - - - - The 'add' accessor of the event. Null only in error scenarios. - - - - - The 'remove' accessor of the event. Null only in error scenarios. - - - - - The 'raise' accessor of the event. Null if there is no raise method. - - - - - The original definition of the event. If the event is constructed from another - symbol by type substitution, OriginalDefinition gets the original symbol, as it was - defined in source or metadata. - - - - - Returns the overridden event, or null. - - - - - Returns interface properties explicitly implemented by this event. - - - Properties imported from metadata can explicitly implement more than one event. - - - - - Represents a field in a class, struct or enum. - - - This interface is reserved for implementation by its associated APIs. We reserve the right to - change it in the future. - - - - - If this field serves as a backing variable for an automatically generated - property or a field-like event, returns that - property/event. Otherwise returns null. - Note, the set of possible associated symbols might be expanded in the future to - reflect changes in the languages. - - - - - Returns true if this field was declared as "const" (i.e. is a constant declaration). - Also returns true for an enum member. - - - - - Returns true if this field was declared as "readonly". - - - - - Returns true if this field was declared as "volatile". - - - - - Gets the type of this field. - - - - - Returns false if the field wasn't declared as "const", or constant value was omitted or erroneous. - True otherwise. - - - - - Gets the constant value of this field - - - - - Returns custom modifiers associated with the field, or an empty array if there are none. - - - - - Get the original definition of this symbol. If this symbol is derived from another - symbol by (say) type substitution, this gets the original symbol, as it was defined in - source or metadata. - - - - - Represents a label in method body - - - This interface is reserved for implementation by its associated APIs. We reserve the right to - change it in the future. - - - - - Gets the immediately containing of this . - - - - - Represents a local variable in method body. - - - This interface is reserved for implementation by its associated APIs. We reserve the right to - change it in the future. - - - - - Gets the type of this local variable. - - - - - Returns true if this local variable was declared as "const" (i.e. is a constant declaration). - Also returns true for an enum member. - - - - - Returns false if the local variable wasn't declared as "const", or constant value was omitted or erroneous. - True otherwise. - - - - - Gets the constant value of this local variable. - - - - - Represents a method or method-like symbol (including constructor, - destructor, operator, or property/event accessor). - - - This interface is reserved for implementation by its associated APIs. We reserve the right to - change it in the future. - - - - - Gets what kind of method this is. There are several different kinds of things in the - C# language that are represented as methods. This property allow distinguishing those things - without having to decode the name of the method. - - - - - Returns the arity of this method, or the number of type parameters it takes. - A non-generic method has zero arity. - - - - - Returns whether this method is generic; i.e., does it have any type parameters? - - - - - Returns true if this method is an extension method. - - - - - Returns true if this method is an async method - - - - - Returns whether this method is using CLI VARARG calling convention. This is used for - C-style variable argument lists. This is used extremely rarely in C# code and is - represented using the undocumented "__arglist" keyword. - - Note that methods with "params" on the last parameter are indicated with the "IsParams" - property on ParameterSymbol, and are not represented with this property. - - - - - Returns whether this built-in operator checks for integer overflow. - - - - - Returns true if this method hides base methods by name. This cannot be specified directly - in the C# language, but can be true for methods defined in other languages imported from - metadata. The equivalent of the "hidebyname" flag in metadata. - - - - - Returns true if this method has no return type; i.e., returns "void". - - - - - Gets the return type of the method. - - - - - Returns the type arguments that have been substituted for the type parameters. - If nothing has been substituted for a given type parameter, - then the type parameter itself is consider the type argument. - - - - - Get the type parameters on this method. If the method has not generic, - returns an empty list. - - - - - Gets the parameters of this method. If this method has no parameters, returns - an empty list. - - - - - Returns the method symbol that this method was constructed from. The resulting - method symbol - has the same containing type (if any), but has type arguments that are the same - as the type parameters (although its containing type might not). - - - - - Get the original definition of this symbol. If this symbol is derived from another - symbol by (say) type substitution, this gets the original symbol, as it was defined in - source or metadata. - - - - - If this method overrides another method (because it both had the override modifier - and there correctly was a method to override), returns the overridden method. - - - - - If this method can be applied to an object, returns the type of object it is applied to. - - - - - If this method is a reduced extension method, returns the definition of extension - method from which this was reduced. Otherwise, returns null. - - - - - If this method is a reduced extension method, returns a type inferred during reduction process for the type parameter. - - Type parameter of the corresponding method. - Inferred type or Nothing if nothing was inferred. - If this is not a reduced extension method. - If is null. - If doesn't belong to the corresponding method. - - - - If this is an extension method that can be applied to a receiver of the given type, - returns a reduced extension method symbol thus formed. Otherwise, returns null. - - - - - Returns interface methods explicitly implemented by this method. - - - Methods imported from metadata can explicitly implement more than one method, - that is why return type is ImmutableArray. - - - - - Returns the list of custom modifiers, if any, associated with the returned value. - - - - - Returns the list of custom attributes, if any, associated with the returned value. - - - - - Returns a symbol (e.g. property, event, etc.) associated with the method. - - - If this method has of or , - returns the property that this method is the getter or setter for. - If this method has of or , - returns the event that this method is the adder or remover for. - Note, the set of possible associated symbols might be expanded in the future to - reflect changes in the languages. - - - - - Returns a constructed method given its type arguments. - - The immediate type arguments to be replaced for type - parameters in the method. - - - - If this is a partial method implementation part, returns the corresponding - definition part. Otherwise null. - - - - - If this is a partial method declaration without a body, and the method is - implemented with a body, returns that implementing definition. Otherwise - null. - - - - - Platform invoke information, or null if the method isn't a P/Invoke. - - - - - If this method is a Lambda method (MethodKind = MethodKind.LambdaMethod) and - there is an anonymous delegate associated with it, returns this delegate. - - Returns null if the symbol is not a lambda or if it does not have an - anonymous delegate associated with it. - - - - - Represents a module within an assembly. Every assembly contains one or more modules. - - - This interface is reserved for implementation by its associated APIs. We reserve the right to - change it in the future. - - - - - Returns a NamespaceSymbol representing the global (root) namespace, with - module extent, that can be used to browse all of the symbols defined in this module. - - - - - Given a namespace symbol, returns the corresponding module specific namespace symbol - - - - - Returns an array of assembly identities for assemblies referenced by this module. - Items at the same position from ReferencedAssemblies and from ReferencedAssemblySymbols - correspond to each other. - - - - - Returns an array of AssemblySymbol objects corresponding to assemblies referenced - by this module. Items at the same position from ReferencedAssemblies and - from ReferencedAssemblySymbols correspond to each other. - - - - - Represents a type other than an array, a pointer, a type parameter. - - - This interface is reserved for implementation by its associated APIs. We reserve the right to - change it in the future. - - - - - Returns the arity of this type, or the number of type parameters it takes. - A non-generic type has zero arity. - - - - - True if this type or some containing type has type parameters. - - - - - True if this is a reference to an unbound generic type. A generic type is - considered unbound if all of the type argument lists in its fully qualified - name are empty. Note that the type arguments of an unbound generic type will be - returned as error types because they do not really have type arguments. An unbound - generic type yields null for its BaseType and an empty result for its Interfaces. - - - - - Returns true if the type is a Script class. - It might be an interactive submission class or a Script class in a csx file. - - - - - Returns true if the type is the implicit class that holds onto invalid global members (like methods or - statements in a non script file). - - - - - Returns collection of names of members declared within this type. - - - - - Returns the type parameters that this type has. If this is a non-generic type, - returns an empty ImmutableArray. - - - - - Returns the type arguments that have been substituted for the type parameters. - If nothing has been substituted for a give type parameters, - then the type parameter itself is consider the type argument. - - - - - Get the original definition of this type symbol. If this symbol is derived from another - symbol by (say) type substitution, this gets the original symbol, as it was defined in - source or metadata. - - - - - For delegate types, gets the delegate's invoke method. Returns null on - all other kinds of types. Note that it is possible to have an ill-formed - delegate type imported from metadata which does not have an Invoke method. - Such a type will be classified as a delegate but its DelegateInvokeMethod - would be null. - - - - - For enum types, gets the underlying type. Returns null on all other - kinds of types. - - - - - Returns the type symbol that this type was constructed from. This type symbol - has the same containing type (if any), but has type arguments that are the same - as the type parameters (although its containing type might not). - - - - - Returns a constructed type given its type arguments. - - The immediate type arguments to be replaced for type - parameters in the type. - - - - Returns an unbound generic type of this named type. - - - - - Get the instance constructors for this type. - - - - - Get the static constructors for this type. - - - - - Get the both instance and static constructors for this type. - - - - - For implicitly declared delegate types returns the EventSymbol that caused this - delegate type to be generated. - For all other types returns null. - Note, the set of possible associated symbols might be expanded in the future to - reflect changes in the languages. - - - - - Determines if the symbol might contain extension methods. - If false, the symbol does not contain extension methods. - - - - - Represents either a namespace or a type. - - - This interface is reserved for implementation by its associated APIs. We reserve the right to - change it in the future. - - - - - Get all the members of this symbol. - - An ImmutableArray containing all the members of this symbol. If this symbol has no members, - returns an empty ImmutableArray. Never returns Null. - - - - Get all the members of this symbol that have a particular name. - - An ImmutableArray containing all the members of this symbol with the given name. If there are - no members with this name, returns an empty ImmutableArray. Never returns Null. - - - - Get all the members of this symbol that are types. - - An ImmutableArray containing all the types that are members of this symbol. If this symbol has no type members, - returns an empty ImmutableArray. Never returns null. - - - - Get all the members of this symbol that are types that have a particular name, of any arity. - - An ImmutableArray containing all the types that are members of this symbol with the given name. - If this symbol has no type members with this name, - returns an empty ImmutableArray. Never returns null. - - - - Get all the members of this symbol that are types that have a particular name and arity - - An ImmutableArray containing all the types that are members of this symbol with the given name and arity. - If this symbol has no type members with this name and arity, - returns an empty ImmutableArray. Never returns null. - - - - Returns true if this symbol is a namespace. If it is not a namespace, it must be a type. - - - - - Returns true if this symbols is a type. If it is not a type, it must be a namespace. - - - - - Represents a namespace. - - - This interface is reserved for implementation by its associated APIs. We reserve the right to - change it in the future. - - - - - Get all the members of this symbol. - - - - - Get all the members of this symbol that have a particular name. - - - - - Get all the members of this symbol that are namespaces. - - - - - Returns whether this namespace is the unnamed, global namespace that is - at the root of all namespaces. - - - - - The kind of namespace: Module, Assembly or Compilation. - Module namespaces contain only members from the containing module that share the same namespace name. - Assembly namespaces contain members for all modules in the containing assembly that share the same namespace name. - Compilation namespaces contain all members, from source or referenced metadata (assemblies and modules) that share the same namespace name. - - - - - The containing compilation for compilation namespaces. - - - - - If a namespace is an assembly or compilation namespace, it may be composed of multiple - namespaces that are merged together. If so, ConstituentNamespaces returns - all the namespaces that were merged. If this namespace was not merged, returns - an array containing only this namespace. - - - - - Represents a parameter of a method or property. - - - This interface is reserved for implementation by its associated APIs. We reserve the right to - change it in the future. - - - - - Whether the parameter passed by value or by reference. - - - - - Returns true if the parameter was declared as a parameter array. - - - - - Returns true if the parameter is optional. - - - - - Returns true if the parameter is the hidden 'this' ('Me' in Visual Basic) parameter. - - - - - Gets the type of the parameter. - - - - - Custom modifiers associated with the parameter, or an empty array if there are none. - - - - - Gets the ordinal position of the parameter. The first parameter has ordinal zero. - The 'this' parameter ('Me' in Visual Basic) has ordinal -1. - - - - - Returns true if the parameter specifies a default value to be passed - when no value is provided as an argument to a call. The default value - can be obtained with the DefaultValue property. - - - - - Returns the default value of the parameter. - - - Returns null if the parameter type is a struct and the default value of the parameter - is the default value of the struct type. - - The parameter has no default value. - - - - Get the original definition of this symbol. If this symbol is derived from another - symbol by (say) type substitution, this gets the original symbol, as it was defined in - source or metadata. - - - - - Represents a pointer type such as "int *". Pointer types - are used only in unsafe code. - - - This interface is reserved for implementation by its associated APIs. We reserve the right to - change it in the future. - - - - - Gets the type of the storage location that an instance of the pointer type points to. - - - - - Custom modifiers associated with the pointer type, or an empty array if there are none. - - - Some managed languages may represent special information about the pointer type - as a custom modifier on either the pointer type or the element type, or - both. - - - - - Represents a preprocessing conditional compilation symbol. - - - This interface is reserved for implementation by its associated APIs. We reserve the right to - change it in the future. - - - - - Represents a property or indexer. - - - This interface is reserved for implementation by its associated APIs. We reserve the right to - change it in the future. - - - - - Returns whether the property is really an indexer. - - - - - True if this is a read-only property; that is, a property with no set accessor. - - - - - True if this is a write-only property; that is, a property with no get accessor. - - - - - Returns true if this property is an auto-created WithEvents property that takes place of - a field member when the field is marked as WithEvents. - - - - - The type of the property. - - - - - The parameters of this property. If this property has no parameters, returns - an empty list. Parameters are only present on indexers, or on some properties - imported from a COM interface. - - - - - The 'get' accessor of the property, or null if the property is write-only. - - - - - The 'set' accessor of the property, or null if the property is read-only. - - - - - The original definition of the property. If the property is constructed from another - symbol by type substitution, OriginalDefinition gets the original symbol, as it was - defined in source or metadata. - - - - - Returns the overridden property, or null. - - - - - Returns interface properties explicitly implemented by this property. - - - Properties imported from metadata can explicitly implement more than one property. - - - - - The list of custom modifiers, if any, associated with the type of the property. - - - - - Represents a range variable in a query expression. - - - This interface is reserved for implementation by its associated APIs. We reserve the right to - change it in the future. - - - - - Represents a symbol (namespace, class, method, parameter, etc.) - exposed by the compiler. - - - This interface is reserved for implementation by its associated APIs. We reserve the right to - change it in the future. - - - - - Gets the indicating what kind of symbol it is. - - - - - Gets the source language ("C#" or "Visual Basic"). - - - - - Gets the symbol name. Returns the empty string if unnamed. - - - - - Gets the name of a symbol as it appears in metadata. Most of the time, this - is the same as the Name property, with the following exceptions: - 1) The metadata name of generic types includes the "`1", "`2" etc. suffix that - indicates the number of type parameters (it does not include, however, names of - containing types or namespaces). - 2) The metadata name of explicit interface names have spaces removed, compared to - the name property. - 3) The length of names is limited to not exceed metadata restrictions. - - - - - Gets the for the immediately containing symbol. - - - - - Gets the for the containing assembly. Returns null if the - symbol is shared across multiple assemblies. - - - - - Gets the for the containing module. Returns null if the - symbol is shared across multiple modules. - - - - - Gets the for the containing type. Returns null if the - symbol is not contained within a type. - - - - - Gets the for the nearest enclosing namespace. Returns null if the - symbol isn't contained in a namespace. - - - - - Gets a value indicating whether the symbol is the original definition. Returns false - if the symbol is derived from another symbol, by type substitution for instance. - - - - - Gets a value indicating whether the symbol is static. - - - - - Gets a value indicating whether the symbol is virtual. - - - - - Gets a value indicating whether the symbol is an override of a base class symbol. - - - - - Gets a value indicating whether the symbol is abstract. - - - - - Gets a value indicating whether the symbol is sealed. - - - - - Gets a value indicating whether the symbol is defined externally. - - - - - Returns true if this symbol was automatically created by the compiler, and does not have - an explicit corresponding source code declaration. - - - This is intended for symbols that are ordinary symbols in the language sense, and may be - used by code, but that are simply declared implicitly rather than with explicit language - syntax. - - Examples include (this list is not exhaustive): - the default constructor for a class or struct that is created if one is not provided, - the BeginInvoke/Invoke/EndInvoke methods for a delegate, - the generated backing field for an auto property or a field-like event, - the "this" parameter for non-static methods, - the "value" parameter for a property setter, - the parameters on indexer accessor methods (not on the indexer itself), - methods in anonymous types - - - - - Returns true if this symbol can be referenced by its name in code. - - - - - Gets the locations where the symbol was originally defined, either in source or - metadata. Some symbols (for example, partial classes) may be defined in more than one - location. - - - - - Get the syntax node(s) where this symbol was declared in source. Some symbols (for example, - partial classes) may be defined in more than one location. This property should return - one or more syntax nodes only if the symbol was declared in source code and also was - not implicitly declared (see the IsImplicitlyDeclared property). - - Note that for namespace symbol, the declaring syntax might be declaring a nested namespace. - For example, the declaring syntax node for N1 in "namespace N1.N2 {...}" is the entire - NamespaceDeclarationSyntax for N1.N2. For the global namespace, the declaring syntax will - be the CompilationUnitSyntax. - - - The syntax node(s) that declared the symbol. If the symbol was declared in metadata - or was implicitly declared, returns an empty read-only array. - - - - - Gets the attributes for the symbol. Returns an empty - if there are no attributes. - - - - - Gets a indicating the declared accessibility for the symbol. - Returns NotApplicable if no accessibility is declared. - - - - - Gets the for the original definition of the symbol. - If this symbol is derived from another symbol, by type substitution for instance, - this gets the original symbol, as it was defined in source or metadata. - - - - - Returns the Documentation Comment ID for the symbol, or null if the symbol doesn't - support documentation comments. - - - - - Gets the XML (as text) for the comment associated with the symbol. - - Preferred culture or null for the default. - Optionally, expand <include> elements. No impact on non-source documentation comments. - Token allowing cancellation of request. - The XML that would be written to the documentation file for the symbol. - - - - Converts the symbol to a string representation. - - Format or null for the default. - A formatted string representation of the symbol. - - - - Convert a symbol to an array of string parts, each of which has a kind. Useful for - colorizing the display string. - - Formatting rules - null implies - SymbolDisplayFormat.ErrorMessageFormat. - A read-only array of string parts. - - - - Convert a symbol to a string that can be displayed to the user. May be tailored to a - specific location in the source code. - - Binding information (for determining names appropriate to - the context). - A position in the source code (context). - Formatting rules - null implies - SymbolDisplayFormat.MinimallyQualifiedFormat. - A formatted string that can be displayed to the user. - - - - Convert a symbol to an array of string parts, each of which has a kind. May be tailored - to a specific location in the source code. Useful for colorizing the display string. - - Binding information (for determining names appropriate to - the context). - A position in the source code (context). - Formatting rules - null implies - SymbolDisplayFormat.MinimallyQualifiedFormat. - A read-only array of string parts. - - - - Indicates that this symbol uses metadata that cannot be supported by the language. - - Examples include: - - Pointer types in VB - - ByRef return type - - Required custom modifiers - - This is distinguished from, for example, references to metadata symbols defined in assemblies that weren't referenced. - Symbols where this returns true can never be used successfully, and thus should never appear in any IDE feature. - - This is set for metadata symbols, as follows: - Type - if a type is unsupported (e.g., a pointer type, etc.) - Method - parameter or return type is unsupported - Field - type is unsupported - Event - type is unsupported - Property - type is unsupported - Parameter - type is unsupported - - - - - Returns the constructed form of the ReducedFrom property, - including the type arguments that were either inferred during reduction or supplied at the call site. - - - - - Synthesized symbol that implements a method body feature (iterator, async, lambda, etc.) - - - This interface is reserved for implementation by its associated APIs. We reserve the right to - change it in the future. - - - - - The symbol whose body lowering produced this synthesized symbol, - or null if the symbol is synthesized based on declaration. - - - - - True if this symbol body needs to be updated when the body is updated. - False if is null. - - - - - Represents a type parameter in a generic type or generic method. - - - This interface is reserved for implementation by its associated APIs. We reserve the right to - change it in the future. - - - - - The ordinal position of the type parameter in the parameter list which declares - it. The first type parameter has ordinal zero. - - - - - The variance annotation, if any, of the type parameter declaration. Type parameters may be - declared as covariant (out), contravariant (in), or neither. - - - - - The type parameter kind of this type parameter. - - - - - The method that declares the type parameter, or null. - - - - - The type that declares the type parameter, or null. - - - - - True if the reference type constraint (class) was specified for the type parameter. - - - - - True if the value type constraint (struct)was specified for the type parameter. - - - - - True if the parameterless constructor constraint (new()) was specified for the type parameter. - - - - - The types that were directly specified as constraints on the type parameter. - - - - - Get the original definition of this type symbol. If this symbol is derived from another - symbol by (say) type substitution, this gets the original symbol, as it was defined in - source or metadata. - - - - - If this is a type parameter of a reduced extension method, gets the type parameter definition that - this type parameter was reduced from. Otherwise, returns Nothing. - - - - - Represents a type. - - - This interface is reserved for implementation by its associated APIs. We reserve the right to - change it in the future. - - - - - An enumerated value that identifies whether this type is an array, pointer, enum, and so on. - - - - - The declared base type of this type, or null. The object type, interface types, - and pointer types do not have a base type. The base type of a type parameter - is its effective base class. - - - - - Gets the set of interfaces that this type directly implements. This set does not include - interfaces that are base interfaces of directly implemented interfaces. This does - include the interfaces declared as constraints on type parameters. - - - - - The list of all interfaces of which this type is a declared subtype, excluding this type - itself. This includes all declared base interfaces, all declared base interfaces of base - types, and all declared base interfaces of those results (recursively). This also is the effective - interface set of a type parameter. Each result - appears exactly once in the list. This list is topologically sorted by the inheritance - relationship: if interface type A extends interface type B, then A precedes B in the - list. This is not quite the same as "all interfaces of which this type is a proper - subtype" because it does not take into account variance: AllInterfaces for - ]]> will not include ]]>; - - - - - True if this type is known to be a reference type. It is never the case that - and both return true. However, for an unconstrained type - parameter, and will both return false. - - - - - True if this type is known to be a value type. It is never the case that - and both return true. However, for an unconstrained type - parameter, and will both return false. - - - - - Is this a symbol for an anonymous type (including anonymous VB delegate). - - - - - The original definition of this symbol. If this symbol is constructed from another - symbol by type substitution then gets the original symbol as it was defined in - source or metadata. - - - - - An enumerated value that identifies certain 'special' types such as . - Returns if the type is not special. - - - - - Returns the corresponding symbol in this type or a base type that implements - interfaceMember (either implicitly or explicitly), or null if no such symbol exists - (which might be either because this type doesn't implement the container of - interfaceMember, or this type doesn't supply a member that successfully implements - interfaceMember). - - - Must be a non-null interface property, method, or event. - - - - - A class that provides constants for common language names. - - - - - The common name used for the C# language. - - - - - The common name used for the Visual Basic language. - - - - - Enumeration for possible kinds of method symbols. - - - - - An anonymous method or lambda expression - - - - - Method is a constructor. - - - - - Method is a conversion. - - - - - Method is a delegate invoke. - - - - - Method is a destructor. - - - - - Method is an event add. - - - - - Method is an event raise. - - - - - Method is an event remove. - - - - - Method is an explicit interface implementation. - - - - - Method is an operator. - - - - - Method is an ordinary method. - - - - - Method is a property get. - - - - - Method is a property set. - - - - - An extension method with the "this" parameter removed. - - - - - Method is a static constructor. - - - - - A built-in operator. - - - - - Declare Sub or Function. - - - - - Describes the kind of the namespace extent. - - - - - Information that describes how a method from the underlying Platform is to be invoked. - - - - - Module name. Null if value specified in the attribute is not valid. - - - - - Name of the native entry point or null if not specified (the effective name is the same as the name of the target method). - - - - - Controls whether the field causes the common language runtime - to search an unmanaged DLL for entry-point names other than the one specified. - - - - - Indicates how to marshal string parameters and controls name mangling. - - - - - Indicates whether the callee calls the SetLastError Win32 API function before returning from the attributed method. - - - - - Indicates the calling convention of an entry point. - - - - - Enables or disables best-fit mapping behavior when converting Unicode characters to ANSI characters. - Null if not specified (the setting for the containing type or assembly should be used, ). - - - - - Enables or disables the throwing of an exception on an unmappable Unicode character that is converted to an ANSI "?" character. - Null if not specified. - - - - - Denotes the kind of reference parameter. - - - - - Indicates a "value" parameter. - - - - - Indicates a "ref" parameter. - - - - - Indicates an "out" parameter. - - - - - Specifies the possible kinds of symbols. - - - - - Symbol is an alias. - - - - - Symbol is an array type. - - - - - Symbol is an assembly. - - - - - Symbol is a dynamic type. - - - - - Symbol that represents an error - - - - - Symbol is an Event. - - - - - Symbol is a field. - - - - - Symbol is a label. - - - - - Symbol is a local. - - - - - Symbol is a method. - - - - - Symbol is a netmodule. - - - - - Symbol is a named type (e.g. class). - - - - - Symbol is a namespace. - - - - - Symbol is a parameter. - - - - - Symbol is a pointer type. - - - - - Symbol is a property. - - - - - Symbol is a range variable of a query expression. - - - - - Symbol is a type parameter. - - - - - Symbol is a preprocessing/conditional compilation constant. - - - - - Kind of a synthesized local variable. - - - Synthesized local variables are either - 1) Short-lived (temporary) - The lifespan of an temporary variable shall not cross a statement boundary (a PDB sequence point). - These variables are not tracked by EnC and don't have names. - - 2) Long-lived - All variables whose lifespan might cross a statement boundary (include a PDB sequence point) - must be named in a build configuration that supports EnC. Some of them might need to be named in release, to support EE. - The kind of such local must be encoded in the name, so that we can retrieve it from debug metadata during EnC. - - The integer value of the kind must match corresponding Dev11/12 TEMP_KIND enum values for - compatibility with assemblies generated by the native compiler. - - Long-lived local variables must be assigned slots in source order. - - - - - Temp variable created by the optimizer. - - - - - Temp variable created during lowering. - - - - - Temp variable created by the emitter. - - - - - The variable is not synthesized (C#, VB). - - - - - Local variable that stores value of an expression consumed by a subsequent conditional branch instruction that might jump across PDB sequence points. - The value needs to be preserved when remapping the IL offset from old method body to new method body during EnC. - A hidden sequence point also needs to be inserted at the offset where this variable is loaded to be consumed by the branch instruction. - (VB, C#). - - - - - Boolean passed to Monitor.Enter (C#, VB). - - - - - Variable holding on the object being locked while the execution is within the block of the lock statement (C#) or SyncLock statement (VB). - - - - - Local variable that stores the resources to be disposed at the end of using statement (C#, VB). - - - - - Local variable that stores the enumerator instance (C#, VB). - - - - - Local variable that stores the array instance (C#, VB?). - - - - - Local variables that store upper bound of multi-dimensional array, for each dimension (C#, VB?). - - - - - Local variables that store the current index, for each dimension (C#, VB?). - - - - - Local variable that holds a pinned handle of a string passed to a fixed statement (C#). - - - - - Local variable that holds the object passed to With statement (VB). - - - - - Local variable used to store the value of Select Case during the execution of Case statements. - - - - - Local variable that stores the return value of an async method. - - - - - VB: Stores the return value of a function that is not accessible from user code (e.g. operator, lambda, async, iterator). - C#: Stores the return value of a method/lambda with a block body, so that we can put a sequence point on the closing brace of the body. - - - - - Very special corner case involving filters, await and lambdas. - - - - - Local variable that stores the current state of the state machine while MoveNext method is executing. - Used to avoid race conditions due to multiple reads from the lifted state. - - - - - Local that stores an expression value which needs to be spilled. - This local should either be hoisted or its lifespan ends before - the end of the containing await expression. - - - - - Local variable that holds on the display class instance. - - - - - Local variable used to cache a delegate that is used in inner block (possibly a loop), - and can be reused for all iterations of the loop. - - - - - Local variable that stores the result of an await expression (the awaiter object). - The variable is assigned the result of a call to await-expression.GetAwaiter() and subsequently used - to check whether the task completed. Eventually the value is stored in an awaiter field. - - The value assigned to the variable needs to be preserved when remapping the IL offset from old method body - to new method body during EnC. If the awaiter expression is contained in an active statement and the - containing MoveNext method changes the debugger finds the next sequence point that follows the await expression - and transfers the execution to the new method version. This sequence point is placed by the compiler at - the immediately after the stloc instruction that stores the awaiter object to this variable. - The subsequent ldloc then restores it in the new method version. - - (VB, C#). - - - - - All values have to be less than or equal to - () - - - - - An awaiter in async method. - Never actually created as a local variable, immediately lifted to a state machine field. - Not serialized to . - - - - - The receiver of a delegate relaxation stub. - Created as a local variable but always lifted to a relaxation display class field. - We never emit debug info for hoisted relaxation variable. - TODO: Avoid using lambdas and display classes for implementation of relaxation stubs and remove this kind. - - - - - Represents a constant value used as an argument to a custom attribute. - - - - - The kind of the constant. - - - - - Returns the of the constant, - or null if the type can't be determined (error). - - - - - True if the constant represents a null reference. - - - - - The value for a non-array constant. - - - - - The value for an array. - - - - - TypedConstant isn't computing its own kind from the type symbol because it doesn't - have a way to recognize the well-known type System.Type. - - - - - Represents the kind of a TypedConstant. - - - - - Represents a simple value or a read-only array of . - - - - - True if the constant represents a null literal. - - - - - Enumeration for possible kinds of type symbols. - - - - - Type's kind is undefined. - - - - - Type is an array type. - - - - - Type is a class. - - - - - Type is a delegate. - - - - - Type is dynamic. - - - - - Type is an enumeration. - - - - - Type is an error type. - - - - - Type is an interface. - - - - - Type is a module. - - - - - Type is a pointer. - - - - - Type is a C# struct or VB Structure - - - - - Type is a C# struct or VB Structure - - - - - Type is a type parameter. - - - - - Type is an interactive submission. - - - - - Type layout information. - - - - - Layout kind (Layout flags in metadata). - - - - - Field alignment (PackingSize field in metadata). - - - - - Size of the type. - - - - - Represents the different kinds of type parameters. - - - - - Type parameter of a named type. For example: T in ]]>. - - - - - Type parameter of a method. For example: T in ()]]>. - - - - - Type parameter in a cref attribute in XML documentation comments. For example: T in ]]>. - - - - - An enumeration declaring the kinds of variance supported for generic type parameters. - - - - - Invariant. - - - - - Covariant (out). - - - - - Contravariant (in). - - - - - Specifies the member names known to the compiler (such as .ctor or op_Explicit). - - - - - Name of the enum backing field. - - - - - The name assigned to an instance constructor. - - - - - The name assigned to the static constructor. - - - - - The symbol name assigned to all indexers, other than explicit interface implementations. - - - Will not correspond to the name that appears in metadata. - - - - - The name assigned to the destructor. - - - - - The name assigned to the delegate Invoke method. - - - - - The name assigned to the delegate BeginInvoke method. - - - - - The name assigned to the delegate EndInvoke method. - - - - - The name of an entry point method. - - - - - The default fully qualified name of a Script class. - - - - - The name assigned to Object.ToString method. - - - - - The name assigned to Object.Equals method. - - - - - The name assigned to Object.GetHashCode method. - - - - - The name assigned to an implicit (widening) conversion. - - - - - The name assigned to an explicit (narrowing) conversion. - - - - - The name assigned to the Addition operator. - - - - - The name assigned to the BitwiseAnd operator. - - - - - The name assigned to the BitwiseOr operator. - - - - - The name assigned to the Decrement operator. - - - - - The name assigned to the Division operator. - - - - - The name assigned to the Equality operator. - - - - - The name assigned to the ExclusiveOr operator. - - - - - The name assigned to the False operator. - - - - - The name assigned to the GreaterThan operator. - - - - - The name assigned to the GreaterThanOrEqual operator. - - - - - The name assigned to the Increment operator. - - - - - The name assigned to the Inequality operator. - - - - - The name assigned to the LeftShift operator. - - - - - The name assigned to the UnsignedLeftShift operator. - - - - - The name assigned to the LessThan operator. - - - - - The name assigned to the LessThanOrEqual operator. - - - - - The name assigned to the LogicalNot operator. - - - - - The name assigned to the LogicalOr operator. - - - - - The name assigned to the LogicalAnd operator. - - - - - The name assigned to the Modulus operator. - - - - - The name assigned to the Multiply operator. - - - - - The name assigned to the OnesComplement operator. - - - - - The name assigned to the RightShift operator. - - - - - The name assigned to the UnsignedRightShift operator. - - - - - The name assigned to the Subtraction operator. - - - - - The name assigned to the True operator. - - - - - The name assigned to the UnaryNegation operator. - - - - - The name assigned to the UnaryPlus operator. - - - - - The name assigned to the Concatenate operator. - - - - - The name assigned to the Exponent operator. - - - - - The name assigned to the IntegerDivision operator. - - - - - The name assigned to the Like operator. - - - - - The required name for the GetEnumerator method used in a ForEach statement. - - - - - The required name for the MoveNext method used in a ForEach statement. - - - - - The required name for the Current property used in a ForEach statement. - - - - - The required name for the property used in - a ForEach statement when the collection is a nullable struct. - - - - - The name for the Add method to be invoked for each element in a collection initializer expression - (see C# Specification, §7.6.10.3 Collection initializers). - - - - - The required name for the GetAwaiter method used to obtain an awaiter for a task - (see C# Specification, §7.7.7.1 Awaitable expressions). - - - - - The required name for the IsCompleted property used to determine if a task is already complete - (see C# Specification, §7.7.7.1 Awaitable expressions). - - - - - The required name for the GetResult method used to obtain the outcome of a task once it is complete - (see C# Specification, §7.7.7.1 Awaitable expressions). - - - - - The name of the method used to register a resumption delegate - (see C# Specification, §7.7.7.1 Awaitable expressions). - - - - - List of entries sorted in source order, each of which captures a - position in the supplied syntax tree and the set of diagnostics (warnings) - whose reporting should either be suppressed or enabled at this position. - - - - - Returns list of entries sorted in source order, each of which captures a - position in the supplied syntax tree and the set of diagnostics (warnings) - whose reporting should either be suppressed or enabled at this position. - - - - - Returns the reporting state for the supplied diagnostic id at the supplied position - in the associated syntax tree. - - - - - Gets the entry with the largest position less than or equal to supplied position. - - - - - Struct that represents an entry in the warning state map. Sorts by position in the associated syntax tree. - - - - - This is a SyntaxReference implementation that lazily translates the result (SyntaxNode) of the - original syntax reference to another one. - - - - - Creates a new node identical to this node with the specified annotations attached. - - Original node. - Annotations to be added to the new node. - - - - Creates a new node identical to this node with the specified annotations attached. - - Original node. - Annotations to be added to the new node. - - - - Creates a new node identical to this node with the specified annotations removed. - - Original node. - Annotations to be removed from the new node. - - - - Creates a new node identical to this node with the specified annotations removed. - - Original node. - Annotations to be removed from the new node. - - - - Creates a new node identical to this node with the annotations of the specified kind removed. - - Original node. - The kind of annotation to remove. - - - - Gets the number of children contained in the . - - - - Gets the child at the specified index. - The zero-based index of the child to get. - - is less than 0.-or- is equal to or greater than . - - - - internal indexer that does not verify index. - Used when caller has already ensured that index is within bounds. - - - - - Locate the node or token that is a child of the given and contains the given position. - - The to search. - The position. - The node or token that spans the given position. - - Assumes that is within the span of . - - - - - internal indexer that does not verify index. - Used when caller has already ensured that index is within bounds. - - - - - Returns the first child in the list. - - The first child in the list. - The list is empty. - - - - Returns the last child in the list. - - The last child in the list. - The list is empty. - - - - Returns a list which contains all children of in reversed order. - - which contains all children of in reversed order - - - Returns an enumerator that iterates through the . - A for the . - - - Determines whether the specified object is equal to the current instance. - true if the specified object is a structure and is equal to the current instance; otherwise, false. - The object to be compared with the current instance. - - - Determines whether the specified structure is equal to the current instance. - true if the specified structure is equal to the current instance; otherwise, false. - The structure to be compared with the current instance. - - - Returns the hash code for the current instance. - A 32-bit signed integer hash code. - - - Indicates whether two structures are equal. - true if is equal to ; otherwise, false. - The structure on the left side of the equality operator. - The structure on the right side of the equality operator. - - - Indicates whether two structures are unequal. - true if is equal to ; otherwise, false. - The structure on the left side of the inequality operator. - The structure on the right side of the inequality operator. - - - Enumerates the elements of a . - - - Advances the enumerator to the next element of the . - true if the enumerator was successfully advanced to the next element; false if the enumerator has passed the end of the collection. - - - Gets the element at the current position of the enumerator. - The element in the at the current position of the enumerator. - - - Sets the enumerator to its initial position, which is before the first element in the collection. - - - - Gets the element in the collection at the current position of the enumerator. - - - The element in the collection at the current position of the enumerator. - - - - - Gets the element in the collection at the current position of the enumerator. - - - The element in the collection at the current position of the enumerator. - - - - - Advances the enumerator to the next element of the collection. - - - true if the enumerator was successfully advanced to the next element; false if the enumerator has passed the end of the collection. - - - - - Sets the enumerator to its initial position, which is before the first element in the collection. - - - - - Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. - - - - - Gets the element in the collection at the current position of the enumerator. - - - The element in the collection at the current position of the enumerator. - - - - - Gets the element in the collection at the current position of the enumerator. - - - The element in the collection at the current position of the enumerator. - - - - - Advances the enumerator to the next element of the collection. - - - true if the enumerator was successfully advanced to the next element; false if the enumerator has passed the end of the collection. - - The collection was modified after the enumerator was created. - - - - Sets the enumerator to its initial position, which is before the first element in the collection. - - The collection was modified after the enumerator was created. - - - - Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. - - - - - Find the slot that contains the given offset. - - The target offset. Must be between 0 and . - The slot index of the slot containing the given offset. - - The base implementation is a linear search. This should be overridden - if a derived class can implement it more efficiently. - - - - - Represents the root node of a structured trivia tree (for example, a preprocessor directive - or a documentation comment). From this root node you can traverse back up to the containing - trivia in the outer tree that contains it. - - - - - Returns the parent trivia syntax for this structured trivia syntax. - - The parent trivia syntax for this structured trivia syntax. - - - - The LineDirectiveMap is created to enable translating positions, using the #line directives - in a file. The basic implementation creates an ordered array of line mapping entries, one - for each #line directive in the file (plus one at the beginning). If the file has no - directives, then the array has just one element in it. To map line numbers, a binary search - of the mapping entries is done and nearest line mapping is applied. - - - - - Determines whether the position is considered to be hidden from the debugger or not. - - - - - Combines TranslateSpan and IsHiddenPosition to not search the entries twice when emitting sequence points - - - - - Are there any hidden regions in the map? - - True if there's at least one hidden region in the map. - - - - Enum that describes the state related to the #line or #externalsource directives at a position in source. - - - - - Used in VB when the position is not hidden, but it's not known yet that there is a (nonempty) #ExternalSource - following. - - - - - Used in C# for spans outside of #line directives - - - - - Used in C# for spans inside of "#line linenumber" directive - - - - - Used in VB for spans inside of a "#ExternalSource" directive that followed an unknown span - - - - - Used in VB for spans inside of a "#ExternalSource" directive that followed a hidden span - - - - - Used in C# and VB for spans that are inside of #line hidden (C#) or outside of #ExternalSource (VB) - directives - - - - - The state of the visibility of a line. - - - - - The line is located before any #line directive and there is at least one #line directive present in this syntax tree. - This enum value is used for C# only to enable the consumer to define how to interpret the lines before the first - line directive. - - - - - The line is following a #line hidden directive. - - - - - The line is following a #line default directive or a #line directive with at least a line number. - If there is no line directive at all, Visible is returned for all lines. - - - - - Gets the separator at the given index in this list. - - The index. - - - - - Returns the sequence of just the separator tokens. - - - - - The absolute span of the list elements in characters, including the leading and trailing trivia of the first and last elements. - - - - - The absolute span of the list elements in characters, not including the leading and trailing trivia of the first and last elements. - - - - - Returns the string representation of the nodes in this list including separators but not including - the first node's leading trivia and the last node or token's trailing trivia. - - - The string representation of the nodes in this list including separators but not including - the first node's leading trivia and the last node or token's trailing trivia. - - - - - Returns the full string representation of the nodes in this list including separators, - the first node's leading trivia, and the last node or token's trailing trivia. - - - The full string representation of the nodes in this list including separators including separators, - the first node's leading trivia, and the last node or token's trailing trivia. - - - - - Creates a new list with the specified node added to the end. - - The node to add. - - - - Creates a new list with the specified nodes added to the end. - - The nodes to add. - - - - Creates a new list with the specified node inserted at the index. - - The index to insert at. - The node to insert. - - - - Creates a new list with the specified nodes inserted at the index. - - The index to insert at. - The nodes to insert. - - - - Creates a new list with the element at the specified index removed. - - The index of the element to remove. - - - - Creates a new list with specified element removed. - - The element to remove. - - - - Creates a new list with the specified element replaced by the new node. - - The element to replace. - The new node. - - - - Creates a new list with the specified element replaced by the new nodes. - - The element to replace. - The new nodes. - - - - Creates a new list with the specified separator token replaced with the new separator. - - The separator token to be replaced. - The new separator token. - - - - A SyntaxAnnotation is used to annotate syntax elements with additional information. - - Since syntax elements are immutable, annotating them requires creating new instances of them - with the annotations attached. - - - - - A predefined syntax annotation that indicates whether the syntax element has elastic trivia. - - - - - A list of . - - - - - The number of nodes in the list. - - - - - Gets the node at the specified index. - - The zero-based index of the node to get or set. - The node at the specified index. - - - - The absolute span of the list elements in characters, including the leading and trailing trivia of the first and last elements. - - - - - The absolute span of the list elements in characters, not including the leading and trailing trivia of the first and last elements. - - - - - Returns the string representation of the nodes in this list, not including - the first node's leading trivia and the last node's trailing trivia. - - - The string representation of the nodes in this list, not including - the first node's leading trivia and the last node's trailing trivia. - - - - - Returns the full string representation of the nodes in this list including - the first node's leading trivia and the last node's trailing trivia. - - - The full string representation of the nodes in this list including - the first node's leading trivia and the last node's trailing trivia. - - - - - Creates a new list with the specified node added at the end. - - The node to add. - - - - Creates a new list with the specified nodes added at the end. - - The nodes to add. - - - - Creates a new list with the specified node inserted at the index. - - The index to insert at. - The node to insert. - - - - Creates a new list with the specified nodes inserted at the index. - - The index to insert at. - The nodes to insert. - - - - Creates a new list with the element at specified index removed. - - The index of the element to remove. - - - - Creates a new list with the element removed. - - The element to remove. - - - - Creates a new list with the specified element replaced with the new node. - - The element to replace. - The new node. - - - - Creates a new list with the specified element replaced with new nodes. - - The element to replace. - The new nodes. - - - - The first node in the list. - - - - - The first node in the list or default if the list is empty. - - - - - The last node in the list. - - - - - The last node in the list or default if the list is empty. - - - - - True if the list has at least one node. - - - - - Get's the enumerator for this list. - - - - - The index of the node in this list, or -1 if the node is not in the list. - - - - - Represents a non-terminal node in the syntax tree. This is the language agnostic equivalent of and . - - - - - Used by structured trivia which has "parent == null", and therefore must know its - SyntaxTree explicitly when created. - - - - - An integer representing the language specific kind of this node. - - - - - The language name that this node is syntax of. - - - - - Returns SyntaxTree that owns the node or null if node does not belong to a - SyntaxTree - - - - - The absolute span of this node in characters, including its leading and trailing trivia. - - - - - The absolute span of this node in characters, not including its leading and trailing trivia. - - - - - Same as accessing on . - - - Slight performance improvement. - - - - - The width of the node in characters, not including leading and trailing trivia. - - - The Width property returns the same value as Span.Length, but is somewhat more efficient. - - - - - The complete width of the node in characters, including leading and trailing trivia. - - The FullWidth property returns the same value as FullSpan.Length, but is - somewhat more efficient. - - - - This works the same as GetRed, but intended to be used in lists - The only difference is that the public parent of the node is not the list, - but the list's parent. (element's grand parent). - - - - - special cased helper for 2 and 3 children lists where child #1 may map to a token - - - - - Returns the string representation of this node, not including its leading and trailing trivia. - - The string representation of this node, not including its leading and trailing trivia. - The length of the returned string is always the same as Span.Length - - - - Returns full string representation of this node including its leading and trailing trivia. - - The full string representation of this node including its leading and trailing trivia. - The length of the returned string is always the same as FullSpan.Length - - - - Writes the full text of this node to the specified . - - - - - Gets the full text of this node as an new instance. - - - Encoding of the file that the text was read from or is going to be saved to. - null if the encoding is unspecified. - If the encoding is not specified the isn't debuggable. - If an encoding-less is written to a file a shall be used as a default. - - - Hash algorithm to use to calculate checksum of the text that's saved to PDB. - - is not supported. - - - - Determine whether this node is structurally equivalent to another. - - - - - Determines whether the node represents a language construct that was actually parsed - from the source code. Missing nodes are generated by the parser in error scenarios to - represent constructs that should have been present in the source code in order to - compile successfully but were actually missing. - - - - - Determines whether this node is a descendant of a structured trivia. - - - - - Determines whether this node represents a structured trivia. - - - - - Determines whether a descendant trivia of this node is structured. - - - - - Determines whether this node has any descendant skipped text. - - - - - Determines whether this node has any descendant preprocessor directives. - - - - - Determines whether this node or any of its descendant nodes, tokens or trivia have any diagnostics on them. - - - - - Determines if the specified node is a descendant of this node. - - - - - Determines whether this node has any leading trivia. - - - - - Determines whether this node has any trailing trivia. - - - - - Gets a node at given node index without forcing its creation. - If node was not created it would return null. - - - - - This function calculates the offset of a child at given position. It is very common that - some children to the left of the given index already know their positions so we first - check if that is the case. In a worst case the cost is O(n), but it is not generally an - issue because number of children in regular nodes is fixed and small. In a case where - the number of children could be large (lists) this function is overridden with more - efficient implementations. - - - - - Gets a list of all the diagnostics in the sub tree that has this node as its root. - This method does not filter diagnostics based on #pragmas and compiler options - like nowarn, warnaserror etc. - - - - - Gets a for this syntax node. CommonSyntaxReferences can be used to - regain access to a syntax node without keeping the entire tree and source text in - memory. - - - - - When invoked on a node that represents an anonymous function or a query clause [1] - with a of another anonymous function or a query clause of the same kind [2], - returns the body of the [1] that positionally corresponds to the specified . - - E.g. join clause declares left expression and right expression -- each of these expressions is a lambda body. - JoinClause1.GetCorrespondingLambdaBody(JoinClause2.RightExpression) returns JoinClause1.RightExpression. - - - - - The node that contains this node in its collection. - - - - - The list of child nodes and tokens of this node, where each element is a SyntaxNodeOrToken instance. - - - - - Gets node at given node index. - This WILL force node creation if node has not yet been created. - - - - - Gets a list of the child nodes in prefix document order. - - - - - Gets a list of ancestor nodes - - - - - Gets a list of ancestor nodes (including this node) - - - - - Gets the first node of type TNode that matches the predicate. - - - - - Gets a list of descendant nodes in prefix document order. - - An optional function that determines if the search descends into the argument node's children. - Determines if nodes that are part of structured trivia are included in the list. - - - - Gets a list of descendant nodes in prefix document order. - - The span the node's full span must intersect. - An optional function that determines if the search descends into the argument node's children. - Determines if nodes that are part of structured trivia are included in the list. - - - - Gets a list of descendant nodes (including this node) in prefix document order. - - An optional function that determines if the search descends into the argument node's children. - Determines if nodes that are part of structured trivia are included in the list. - - - - Gets a list of descendant nodes (including this node) in prefix document order. - - The span the node's full span must intersect. - An optional function that determines if the search descends into the argument node's children. - Determines if nodes that are part of structured trivia are included in the list. - - - - Gets a list of descendant nodes and tokens in prefix document order. - - An optional function that determines if the search descends into the argument node's children. - Determines if nodes that are part of structured trivia are included in the list. - - - - Gets a list of the descendant nodes and tokens in prefix document order. - - The span the node's full span must intersect. - An optional function that determines if the search descends into the argument node's children. - Determines if nodes that are part of structured trivia are included in the list. - - - - Gets a list of descendant nodes and tokens (including this node) in prefix document order. - - An optional function that determines if the search descends into the argument node's children. - Determines if nodes that are part of structured trivia are included in the list. - - - - Gets a list of the descendant nodes and tokens (including this node) in prefix document order. - - The span the node's full span must intersect. - An optional function that determines if the search descends into the argument node's children. - Determines if nodes that are part of structured trivia are included in the list. - - - - Finds the node with the smallest that contains . - is used to determine the behavior in case of a tie (i.e. a node having the same span as its parent). - If is true, then it returns lowest descending node encompassing the given . - Otherwise, it returns the outermost node encompassing the given . - - - TODO: This should probably be reimplemented with - - This exception is thrown if doesn't contain the given span. - - - - Finds a descendant token of this node whose span includes the supplied position. - - The character position of the token relative to the beginning of the file. - - True to return tokens that are part of trivia. If false finds the token whose full span (including trivia) - includes the position. - - - - - Gets the first token of the tree rooted by this node. Skips zero-width tokens. - - The first token or default(SyntaxToken) if it doesn't exist. - - - - Gets the last token of the tree rooted by this node. Skips zero-width tokens. - - The last token or default(SyntaxToken) if it doesn't exist. - - - - Gets a list of the direct child tokens of this node. - - - - - Gets a list of all the tokens in the span of this node. - - - - - Gets a list of all the tokens in the full span of this node. - - - - - The list of trivia that appears before this node in the source code and are attached to a token that is a - descendant of this node. - - - - - The list of trivia that appears after this node in the source code and are attached to a token that is a - descendant of this node. - - - - - Finds a descendant trivia of this node whose span includes the supplied position. - - The character position of the trivia relative to the beginning of the file. - - True to return tokens that are part of trivia. If false finds the token whose full span (including trivia) - includes the position. - - - - - Get a list of all the trivia associated with the descendant nodes and tokens. - - - - - Get a list of all the trivia associated with the descendant nodes and tokens. - - - - - Determines whether this node or any sub node, token or trivia has annotations. - - - - - Determines whether this node has any annotations with the specific annotation kind. - - - - - Determines whether this node has any annotations with any of the specific annotation kinds. - - - - - Determines whether this node has the specific annotation. - - - - - Gets all the annotations with the specified annotation kind. - - - - - Gets all the annotations with the specified annotation kinds. - - - - - Gets all nodes and tokens with an annotation of the specified annotation kind. - - - - - Gets all nodes and tokens with an annotation of the specified annotation kinds. - - - - - Gets all nodes and tokens with the specified annotation. - - - - - Gets all nodes with the specified annotation. - - - - - Gets all nodes with the specified annotation kind. - - - - - - - Gets all tokens with the specified annotation. - - - - - Gets all tokens with the specified annotation kind. - - - - - Gets all trivia with an annotation of the specified annotation kind. - - - - - Gets all trivia with an annotation of the specified annotation kinds. - - - - - Gets all trivia with the specified annotation. - - - - - Copies all SyntaxAnnotations, if any, from this SyntaxNode instance and attaches them to a new instance based on . - - - - If no annotations are copied, just returns . - - - It can also be used manually to preserve annotations in a more complex tree - modification, even if the type of a node changes. - - - - - - Determines if two nodes are the same, disregarding trivia differences. - - The node to compare against. - If true then the nodes are equivalent if the contained nodes and - tokens declaring metadata visible symbolic information are equivalent, ignoring any - differences of nodes inside method bodies or initializer expressions, otherwise all - nodes and tokens must be equivalent. - - - - - Determine if this node is structurally equivalent to another. - - - - - Returns SyntaxTree that owns the node or null if node does not belong to a - SyntaxTree - - - - - Finds a descendant token of this node whose span includes the supplied position. - - The character position of the token relative to the beginning of the file. - - True to return tokens that are part of trivia. - If false finds the token whose full span (including trivia) includes the position. - - - - - Finds a descendant token of this node whose span includes the supplied position. - - The character position of the token relative to the beginning of the file. - - Applied on every structured trivia. Return false if the tokens included in the trivia should be skipped. - Pass null to skip all structured trivia. - - - - - Finds a descendant trivia of this node whose span includes the supplied position. - - The character position of the trivia relative to the beginning of the file. - Whether to search inside structured trivia. - - - - Creates a new tree of nodes with the specified nodes, tokens or trivia replaced. - - - - - Creates a new tree of nodes with the specified node removed. - - - - - Determines if two nodes are the same, disregarding trivia differences. - - The node to compare against. - If true then the nodes are equivalent if the contained nodes and - tokens declaring metadata visible symbolic information are equivalent, ignoring any - differences of nodes inside method bodies or initializer expressions, otherwise all - nodes and tokens must be equivalent. - - - - - Creates a new tree of nodes with the specified nodes, tokens and trivia replaced. - - The type of the root node. - The root node of the tree of nodes. - The nodes to be replaced. - A function that computes a replacement node for the - argument nodes. The first argument is the original node. The second argument is the same - node potentially rewritten with replaced descendants. - The tokens to be replaced. - A function that computes a replacement token for - the argument tokens. The first argument is the original token. The second argument is - the same token potentially rewritten with replaced trivia. - The trivia to be replaced. - A function that computes replacement trivia for - the specified arguments. The first argument is the original trivia. The second argument is - the same trivia with potentially rewritten sub structure. - - - - Creates a new tree of nodes with the specified old node replaced with a new node. - - The type of the root node. - The type of the nodes being replaced. - The root node of the tree of nodes. - The nodes to be replaced; descendants of the root node. - A function that computes a replacement node for the - argument nodes. The first argument is the original node. The second argument is the same - node potentially rewritten with replaced descendants. - - - - Creates a new tree of nodes with the specified old node replaced with a new node. - - The type of the root node. - The root node of the tree of nodes. - The node to be replaced; a descendant of the root node. - The new node to use in the new tree in place of the old node. - - - - Creates a new tree of nodes with specified old node replaced with a new nodes. - - The type of the root node. - The root of the tree of nodes. - The node to be replaced; a descendant of the root node and an element of a list member. - A sequence of nodes to use in the tree in place of the old node. - - - - Creates a new tree of nodes with new nodes inserted before the specified node. - - The type of the root node. - The root of the tree of nodes. - The node to insert before; a descendant of the root node an element of a list member. - A sequence of nodes to insert into the tree immediately before the specified node. - - - - Creates a new tree of nodes with new nodes inserted after the specified node. - - The type of the root node. - The root of the tree of nodes. - The node to insert after; a descendant of the root node an element of a list member. - A sequence of nodes to insert into the tree immediately after the specified node. - - - - Creates a new tree of nodes with the specified old token replaced with new tokens. - - The type of the root node. - The root of the tree of nodes. - The token to be replaced; a descendant of the root node and an element of a list member. - A sequence of tokens to use in the tree in place of the specified token. - - - - Creates a new tree of nodes with new tokens inserted before the specified token. - - The type of the root node. - The root of the tree of nodes. - The token to insert before; a descendant of the root node and an element of a list member. - A sequence of tokens to insert into the tree immediately before the specified token. - - - - Creates a new tree of nodes with new tokens inserted after the specified token. - - The type of the root node. - The root of the tree of nodes. - The token to insert after; a descendant of the root node and an element of a list member. - A sequence of tokens to insert into the tree immediately after the specified token. - - - - Creates a new tree of nodes with the specified old trivia replaced with new trivia. - - The type of the root node. - The root of the tree of nodes. - The trivia to be replaced; a descendant of the root node. - A sequence of trivia to use in the tree in place of the specified trivia. - - - - Creates a new tree of nodes with new trivia inserted before the specified trivia. - - The type of the root node. - The root of the tree of nodes. - The trivia to insert before; a descendant of the root node. - A sequence of trivia to insert into the tree immediately before the specified trivia. - - - - Creates a new tree of nodes with new trivia inserted after the specified trivia. - - The type of the root node. - The root of the tree of nodes. - The trivia to insert after; a descendant of the root node. - A sequence of trivia to insert into the tree immediately after the specified trivia. - - - - Creates a new tree of nodes with the specified old node replaced with a new node. - - The type of the root node. - The root node of the tree of nodes. - The token to be replaced; descendants of the root node. - A function that computes a replacement token for - the argument tokens. The first argument is the original token. The second argument is - the same token potentially rewritten with replaced trivia. - - - - Creates a new tree of nodes with the specified old token replaced with a new token. - - The type of the root node. - The root node of the tree of nodes. - The token to be replaced. - The new token to use in the new tree in place of the old - token. - - - - Creates a new tree of nodes with the specified trivia replaced with new trivia. - - The type of the root node. - The root node of the tree of nodes. - The trivia to be replaced; descendants of the root node. - A function that computes replacement trivia for - the specified arguments. The first argument is the original trivia. The second argument is - the same trivia with potentially rewritten sub structure. - - - - Creates a new tree of nodes with the specified trivia replaced with new trivia. - - The type of the root node. - The root node of the tree of nodes. - The trivia to be replaced. - The new trivia to use in the new tree in place of the old trivia. - - - - Creates a new tree of nodes with the specified node removed. - - The type of the root node. - The root node from which to remove a descendant node from. - The node to remove. - Options that determine how the node's trivia is treated. - - - - Creates a new tree of nodes with the specified nodes removed. - - The type of the root node. - The root node from which to remove a descendant node from. - The nodes to remove. - Options that determine how the nodes' trivia is treated. - - - - Creates a new syntax node with all whitespace and end of line trivia replaced with - regularly formatted trivia. - - The type of the node. - The node to format. - A sequence of whitespace characters that defines a single level of indentation. - If true the replaced trivia is elastic trivia. - - - - Creates a new syntax node with all whitespace and end of line trivia replaced with - regularly formatted trivia. - - The type of the node. - The node to format. - An optional sequence of whitespace characters that defines a single level of indentation. - An optional sequence of whitespace characters used for end of line. - If true the replaced trivia is elastic trivia. - - - - Creates a new node from this node with both the leading and trailing trivia of the specified node. - - - - - Creates a new node from this node without leading or trailing trivia. - - - - - Creates a new node from this node with the leading trivia replaced. - - - - - Creates a new node from this node with the leading trivia replaced. - - - - - Creates a new node from this node with the leading trivia removed. - - - - - Creates a new node from this node with the leading trivia replaced. - - - - - Creates a new node from this node with the trailing trivia replaced. - - - - - Creates a new node from this node with the trailing trivia replaced. - - - - - Creates a new node from this node with the trailing trivia removed. - - - - - Creates a new node from this node with the trailing trivia replaced. - - - - - Creates a new tree of nodes with the specified nodes being tracked. - - Use GetCurrentNode on the subtree resulting from this operation, or any transformation of it, - to get the current node corresponding to the original tracked node. - - The root of the subtree containing the nodes to be tracked. - One or more nodes that are descendants of the root node. - - - - Creates a new tree of nodes with the specified nodes being tracked. - - Use GetCurrentNode on the subtree resulting from this operation, or any transformation of it, - to get the current node corresponding to the original tracked node. - - The root of the subtree containing the nodes to be tracked. - One or more nodes that are descendants of the root node. - - - - Gets the nodes within the subtree corresponding to the original tracked node. - Use TrackNodes to start tracking nodes. - - The root of the subtree containing the current node corresponding to the original tracked node. - The node instance originally tracked. - - - - Gets the node within the subtree corresponding to the original tracked node. - Use TrackNodes to start tracking nodes. - - The root of the subtree containing the current node corresponding to the original tracked node. - The node instance originally tracked. - - - - Gets the nodes within the subtree corresponding to the original tracked nodes. - Use TrackNodes to start tracking nodes. - - The root of the subtree containing the current nodes corresponding to the original tracked nodes. - One or more node instances originally tracked. - - - - A wrapper for either a syntax node () or a syntax token (). - - - Note that we do not store the token directly, we just store enough information to reconstruct it. - This allows us to reuse nodeOrToken as a token's parent. - - - - - An integer representing the language specific kind of the underlying node or token. - - - - - The language name that this node or token is syntax of. - - - - - Determines whether the underlying node or token represents a language construct that was actually parsed - from source code. Missing nodes and tokens are typically generated by the parser in error scenarios to - represent constructs that should have been present in the source code for the source code to compile - successfully but were actually missing. - - - - - The node that contains the underlying node or token in its Children collection. - - - - - Determines whether this is wrapping a token. - - - - - Determines whether this is wrapping a node. - - - - - Returns the underlying token if this is wrapping a - token. - - - The underlying token if this is wrapping a token. - - - - - Returns the underlying node if this is wrapping a - node. - - - The underlying node if this is wrapping a node. - - - - - The list of child nodes and tokens of the underlying node or token. - - - - - The absolute span of the underlying node or token in characters, not including its leading and trailing - trivia. - - - - - Same as accessing on . - - - Slight performance improvement. - - - - - The absolute span of the underlying node or token in characters, including its leading and trailing trivia. - - - - - Returns the string representation of this node or token, not including its leading and trailing - trivia. - - - The string representation of this node or token, not including its leading and trailing trivia. - - The length of the returned string is always the same as Span.Length - - - - Returns the full string representation of this node or token including its leading and trailing trivia. - - The full string representation of this node or token including its leading and trailing - trivia. - The length of the returned string is always the same as FullSpan.Length - - - - Writes the full text of this node or token to the specified TextWriter. - - - - - Determines whether the underlying node or token has any leading trivia. - - - - - The list of trivia that appear before the underlying node or token in the source code and are attached to a - token that is a descendant of the underlying node or token. - - - - - Determines whether the underlying node or token has any trailing trivia. - - - - - The list of trivia that appear after the underlying node or token in the source code and are attached to a - token that is a descendant of the underlying node or token. - - - - - Determines whether the underlying node or token or any of its descendant nodes, tokens or trivia have any - diagnostics on them. - - - - - Gets a list of all the diagnostics in either the sub tree that has this node as its root or - associated with this token and its related trivia. - This method does not filter diagnostics based on #pragmas and compiler options - like nowarn, warnaserror etc. - - - - - Determines whether the underlying node or token has any descendant preprocessor directives. - - - - - Determines whether this node or token (or any sub node, token or trivia) as annotations. - - - - - Determines whether this node or token has annotations of the specified kind. - - - - - Determines whether this node or token has annotations of the specified kind. - - - - - Determines if this node or token has the specific annotation. - - - - - Gets all annotations of the specified annotation kind. - - - - - Gets all annotations of the specified annotation kind. - - - - - Creates a new node or token identical to this one with the specified annotations. - - - - - Creates a new node or token identical to this one with the specified annotations. - - - - - Creates a new node or token identical to this one without the specified annotations. - - - - - Creates a new node or token identical to this one without the specified annotations. - - - - - Creates a new node or token identical to this one without annotations of the specified kind. - - - - - Determines whether the supplied is equal to this - . - - - - - Determines whether two s are equal. - - - - - Determines whether two s are unequal. - - - - - Determines whether the supplied is equal to this - . - - - - - Serves as hash function for . - - - - - Determines if the two nodes or tokens are equivalent. - - - - - Returns a new that wraps the supplied token. - - The input token. - - A that wraps the supplied token. - - - - - Returns the underlying token wrapped by the supplied . - - - The input . - - - The underlying token wrapped by the supplied . - - - - - Returns a new that wraps the supplied node. - - The input node. - - A that wraps the supplied node. - - - - - Returns the underlying node wrapped by the supplied . - - - The input . - - - The underlying node wrapped by the supplied . - - - - - SyntaxTree which contains current SyntaxNodeOrToken. - - - - - Get the location of this node or token. - - - - - A list of structures. - - - - - The underlying field - - - - - The index from the parent's children list of this node. - - - - - Initializes a new instance of the structure. - - The underlying syntax node. - The index. - - - - Gets the underlying syntax node. - - - - - Gets the count of nodes in this list - - - - - Gets the at the specified index. - - is out of range. - - - - The absolute span of the list elements in characters, including the leading and trailing trivia of the first and last elements. - - - - - The absolute span of the list elements in characters, not including the leading and trailing trivia of the first and last elements. - - - - - Returns the string representation of the nodes and tokens in this list, not including the first node or token's leading trivia - and the last node or token's trailing trivia. - - - The string representation of the nodes and tokens in this list, not including the first node or token's leading trivia - and the last node or token's trailing trivia. - - - - - Returns the full string representation of the nodes and tokens in this list including the first node or token's leading trivia - and the last node or token's trailing trivia. - - - The full string representation of the nodes and tokens in this list including the first node or token's leading trivia - and the last node or token's trailing trivia. - - - - - Gets the first SyntaxNodeOrToken structure from this list. - - - - - Gets the first SyntaxNodeOrToken structure from this list if present, else default(SyntaxNodeOrToken). - - - - - Gets the last SyntaxNodeOrToken structure from this list. - - - - - Gets the last SyntaxNodeOrToken structure from this list if present, else default(SyntaxNodeOrToken). - - - - - Returns the index from the list for the given . - - The node or token to search for in the list. - The index of the found nodeOrToken, or -1 if it wasn't found - - - - Indicates whether there is any element in the list. - - true if there are any elements in the list, else false. - - - - Copies a given count of elements into the given array at specified offsets. - - The offset to start copying from. - The array to copy the elements into. - The array offset to start writing to. - The count of elements to copy. - - - - Creates a new with the specified node or token added to the end. - - The node or token to add. - - - - Creates a new with the specified nodes or tokens added to the end. - - The nodes or tokens to add. - - - - Creates a new with the specified node or token inserted at the index. - - The index to insert at. - The node or token to insert. - - - - Creates a new with the specified nodes or tokens inserted at the index. - - The index to insert at. - The nodes or tokens to insert. - - - - Creates a new with the element at the specified index removed. - - The index of the element to remove. - - - - Creates a new with the specified element removed. - - The element to remove. - - - - Creates a new with the specified element replaced with a new node or token. - - The element to replace. - The new node or token. - - - - Creates a new with the specified element replaced with a new nodes and tokens. - - The element to replace. - The new nodes and tokens. - - - - Gets the enumerator. - - - - - Returns an enumerator that iterates through the collection. - - - A that can be used to iterate through the collection. - - - - - Returns an enumerator that iterates through a collection. - - - An object that can be used to iterate through the collection. - - - - - Implements the operator ==. - - The left SyntaxNodeOrTokenList - The right SyntaxNodeOrTokenList - - true if both lists equal, else false. - - - - - Implements the operator !=. - - The left SyntaxNodeOrTokenList - The right SyntaxNodeOrTokenList - - true if both lists not equal, else false. - - - - - Indicates whether the current object is equal to another object of the same type. - - An object to compare with this object. - - true if the current object is equal to the parameter; otherwise, - false. - - - - - Determines whether the specified is equal to this instance. - - The to compare with this instance. - - true if the specified is equal to this instance; otherwise, false. - - - - - Returns a hash code for this instance. - - - A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. - - - - - Enumerator for lists of SyntaxNodeOrToken structs. - - - - - Advances the enumerator to the next element of the collection. - - - true if the enumerator was successfully advanced to the next element; false if the enumerator has passed the end of the collection. - - The collection was modified after the enumerator was created. - - - - Gets the struct that this enumerator instance is currently pointing to. - - - - - Gets the struct that this enumerator instance is currently pointing to. - - - - - Sets the enumerator to its initial position, which is before the first element in the collection. - - The collection was modified after the enumerator was created. - - - - Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. - - - - - A reference to a syntax node. - - - - - The syntax tree that this references a node within. - - - - - The span of the node referenced. - - - - - Retrieves the original referenced syntax node. - This action may cause a parse to happen to recover the syntax node. - - The original referenced syntax node. - - - - Retrieves the original referenced syntax node. - This action may cause a parse to happen to recover the syntax node. - - The original referenced syntax node. - - - - The location of this syntax reference. - - The location of this syntax reference. - - More performant than GetSyntax().GetLocation(). - - - - - None of the trivia associated with the node or token is kept. - - - - - The leading trivia associated with the node or token is kept. - - - - - The trailing trivia associated with the node or token is kept. - - - - - The leading and trailing trivia associated with the node or token is kept. - - - - - Any directives that would become unbalanced are kept. - - - - - All directives are kept - - - - - Ensure that at least one EndOfLine trivia is kept if one was present - - - - - Adds elastic marker trivia - - - - - Represents a token in the syntax tree. This is the language agnostic equivalent of and . - - - - - An integer representing the language specific kind of this token. - - - - - The language name that this token is syntax of. - - - - - The kind of token, given its position in the syntax. This differs from when a contextual keyword is used in a place in the syntax that gives it - its keyword meaning. - - - The ContextualKind is relevant only on contextual keyword tokens. ContextualKind differs - from Kind when a token is used in context where the token should be interpreted as a - keyword. - - - - - The node that contains this token in its Children collection. - - - - - The width of the token in characters, not including its leading and trailing trivia. - - - - - The complete width of the token in characters including its leading and trailing trivia. - - - - - The absolute span of this token in characters, not including its leading and trailing trivia. - - - - - Same as accessing on . - - - Slight performance improvement. - - - - - The absolute span of this token in characters, including its leading and trailing trivia. - - - - - Determines whether this token represents a language construct that was actually parsed from source code. - Missing tokens are typically generated by the parser in error scenarios to represent constructs that should - have been present in the source code for the source code to compile successfully but were actually missing. - - - - - Returns the value of the token. For example, if the token represents an integer literal, then this property - would return the actual integer. - - - - - Returns the text representation of the value of the token. For example, if the token represents an integer - literal, then this property would return a string representing the integer. - - - - - Returns the string representation of this token, not including its leading and trailing trivia. - - The string representation of this token, not including its leading and trailing trivia. - The length of the returned string is always the same as Span.Length - - - - Returns the full string representation of this token including its leading and trailing trivia. - - The full string representation of this token including its leading and trailing trivia. - The length of the returned string is always the same as FullSpan.Length - - - - Writes the full text of this token to the specified . - - - - - Writes the text of this token to the specified TextWriter, optionally including trivia. - - - - - Determines whether this token has any leading trivia. - - - - - Determines whether this token has any trailing trivia. - - - - - Full width of the leading trivia of this token. - - - - - Full width of the trailing trivia of this token. - - - - - Determines whether this token or any of its descendant trivia have any diagnostics on them. - - - - - Determines whether this token has any descendant preprocessor directives. - - - - - Determines whether this token is a descendant of a structured trivia. - - - - - Determines whether any of this token's trivia is structured. - - - - - True if this token or its trivia has any annotations. - - - - - True if this token has annotations of the specified annotation kind. - - - - - True if this token has annotations of the specified annotation kinds. - - - - - True if this token has the specified annotation. - - - - - Gets all the annotations of the specified annotation kind. - - - - - Gets all the annotations of the specified annotation kind. - - - - - Gets all the annotations of the specified annotation kind. - - - - - Adds this annotation to a given syntax token, creating a new syntax token of the same type with the - annotation on it. - - - - - Adds this annotation to a given syntax token, creating a new syntax token of the same type with the - annotation on it. - - - - - Creates a new syntax token identical to this one without the specified annotations. - - - - - Creates a new syntax token identical to this one without the specified annotations. - - - - - Creates a new syntax token identical to this one without annotations of the specified kind. - - - - - Copies all SyntaxAnnotations, if any, from this SyntaxToken instance and attaches them to a new instance based on . - - - If no annotations are copied, just returns . - - - - - The list of trivia that appear before this token in the source code. - - - - - The list of trivia that appear after this token in the source code and are attached to this token or any of - its descendants. - - - - - Creates a new token from this token with the leading and trailing trivia from the specified token. - - - - - Creates a new token from this token with the leading trivia specified. - - - - - Creates a new token from this token with the leading trivia specified.. - - - - - Creates a new token from this token with the leading trivia specified.. - - - - - Creates a new token from this token with the trailing trivia specified. - - - - - Creates a new token from this token with the trailing trivia specified. - - - - - Creates a new token from this token with the trailing trivia specified. - - - - - Gets a list of all the trivia (both leading and trailing) for this token. - - - - - Determines whether two s are equal. - - - - - Determines whether two s are unequal. - - - - - Determines whether the supplied is equal to this - . - - - - - Determines whether the supplied is equal to this - . - - - - - Serves as hash function for . - - - - - Gets the token that follows this token in the syntax tree. - - The token that follows this token in the syntax tree. - - - - Returns the token after this token in the syntax tree. - - Delegate applied to each token. The token is returned if the predicate returns - true. - Delegate applied to trivia. If this delegate is present then trailing trivia is - included in the search. - - - - Gets the token that precedes this token in the syntax tree. - - The next token that follows this token in the syntax tree. - - - - Returns the token before this token in the syntax tree. - - Delegate applied to each token. The token is returned if the predicate returns - true. - Delegate applied to trivia. If this delegate is present then trailing trivia is - included in the search. - - - - The SyntaxTree that contains this token. - - - - - Gets the location for this token. - - - - - Gets a list of all the diagnostics associated with this token and any related trivia. - This method does not filter diagnostics based on #pragmas and compiler options - like nowarn, warnaserror etc. - - - - - Determines if this token is equivalent to the specified token. - - - - - Represents a read-only list of . - - - Represents a read-only list of s. - - - - - Returns the number of tokens in the list. - - - - - Gets the token at the specified index. - - The zero-based index of the token to get. - The token at the specified index. - - is less than 0.-or- is equal to or greater than . - - - - The absolute span of the list elements in characters, including the leading and trailing trivia of the first and last elements. - - - - - The absolute span of the list elements in characters, not including the leading and trailing trivia of the first and last elements. - - - - - Returns the string representation of the tokens in this list, not including - the first token's leading trivia and the last token's trailing trivia. - - - The string representation of the tokens in this list, not including - the first token's leading trivia and the last token's trailing trivia. - - - - - Returns the full string representation of the tokens in this list including - the first token's leading trivia and the last token's trailing trivia. - - - The full string representation of the tokens in this list including - the first token's leading trivia and the last token's trailing trivia. - - - - - Returns the first token in the list. - - The first token in the list. - The list is empty. - - - - Returns the last token in the list. - - The last token in the list. - The list is empty. - - - - Tests whether the list is non-empty. - - True if the list contains any tokens. - - - - Returns a list which contains all elements of in reversed order. - - which contains all elements of in reversed order - - - - get the green node at the given slot - - - - - get the green node at the given slot - - - - - Creates a new with the specified token added to the end. - - The token to add. - - - - Creates a new with the specified tokens added to the end. - - The tokens to add. - - - - Creates a new with the specified token insert at the index. - - The index to insert the new token. - The token to insert. - - - - Creates a new with the specified tokens insert at the index. - - The index to insert the new tokens. - The tokens to insert. - - - - Creates a new with the token at the specified index removed. - - The index of the token to remove. - - - - Creates a new with the specified token removed. - - The token to remove. - - - - Creates a new with the specified token replaced with a new token. - - The token to replace. - The new token. - - - - Creates a new with the specified token replaced with new tokens. - - The token to replace. - The new tokens. - - - - Returns an enumerator for the tokens in the - - - - - Compares and for equality. - - - - True if the two s are equal. - - - - Compares and for inequality. - - - - True if the two s are not equal. - - - - Compares this with the for equality. - - True if the two objects are equal. - - - - Serves as a hash function for the - - - - - Create a new Token List - - Element of the return Token List - - - - A structure for enumerating a - - - - - Advances the enumerator to the next token in the collection. - - true if the enumerator was successfully advanced to the next element; false if the enumerator - has passed the end of the collection. - - - - Gets the current element in the collection. - - - - - Reversed enumerable. - - - - - The parsed representation of a source document. - - - - - The path of the source document file. - - - If this syntax tree is not associated with a file, this value can be empty. - The path shall not be null. - - The file doesn't need to exist on disk. The path is opaque to the compiler. - The only requirement on the path format is that the implementations of - , and - passed to the compilation that contains the tree understand it. - - Clients must also not assume that the values of this property are unique - within a Compilation. - - The path is used as follows: - - When debug information is emitted, this path is embedded in the debug information. - - When resolving and normalizing relative paths in #r, #load, #line/#ExternalSource, - #pragma checksum, #ExternalChecksum directives, XML doc comment include elements, etc. - - - - - Returns true if this syntax tree has a root with SyntaxKind "CompilationUnit". - - - - - The options used by the parser to produce the syntax tree. - - - - - The options used by the parser to produce the syntax tree. - - - - - The length of the text of the syntax tree. - - - - - Gets the syntax tree's text if it is available. - - - - - Gets the text of the source document. - - - - - The text encoding of the source document. - - - - - Gets the text of the source document asynchronously. - - - By default, the work associated with this method will be executed immediately on the current thread. - Implementations that wish to schedule this work differently should override . - - - - - Gets the root of the syntax tree if it is available. - - - - - Gets the root of the syntax tree if it is available. - - - - - Gets the root node of the syntax tree, causing computation if necessary. - - - - - Gets the root node of the syntax tree, causing computation if necessary. - - - - - Gets the root node of the syntax tree asynchronously. - - - - - Gets the root node of the syntax tree asynchronously. - - - - - Create a new syntax tree based off this tree using a new source text. - - If the new source text is a minor change from the current source text an incremental - parse will occur reusing most of the current syntax tree internal data. Otherwise, a - full parse will occur using the new source text. - - - - - Gets a list of all the diagnostics in the syntax tree. - This method does not filter diagnostics based on #pragmas and compiler options - like nowarn, warnaserror etc. - - - - - Gets a list of all the diagnostics in the sub tree that has the specified node as its root. - This method does not filter diagnostics based on #pragmas and compiler options - like nowarn, warnaserror etc. - - - - - Gets a list of all the diagnostics associated with the token and any related trivia. - This method does not filter diagnostics based on #pragmas and compiler options - like nowarn, warnaserror etc. - - - - - Gets a list of all the diagnostics associated with the trivia. - This method does not filter diagnostics based on #pragmas and compiler options - like nowarn, warnaserror etc. - - - - - Gets a list of all the diagnostics in either the sub tree that has the specified node as its root or - associated with the token and its related trivia. - This method does not filter diagnostics based on #pragmas and compiler options - like nowarn, warnaserror etc. - - - - - Gets the location in terms of path, line and column for a given span. - - Span within the tree. - Cancellation token. - - A valid that contains path, line and column information. - The values are not affected by line mapping directives (#line). - - - - - Gets the location in terms of path, line and column after applying source line mapping directives - (#line in C# or #ExternalSource in VB). - - Span within the tree. - Cancellation token. - - A valid that contains path, line and column information. - - If the location path is mapped the resulting path is the path specified in the corresponding #line, - otherwise it's . - - A location path is considered mapped if the first #line directive that precedes it and that - either specifies an explicit file path or is #line default exists and specifies an explicit path. - - - - - Returns the visibility for the line at the given position. - - The position to check. - The cancellation token. - - - - Gets a FileLinePositionSpan for a TextSpan and the information whether this span is considered to be hidden or not. - FileLinePositionSpans are used primarily for diagnostics and source locations. - This method combines a call to GetLineSpan and IsHiddenPosition. - - - Returns a boolean indicating whether this span is considered hidden or not. - This function is being called only in the context of sequence point creation and therefore interprets the - LineVisibility accordingly (BeforeFirstRemappingDirective -> Visible). - - - - Returns a path for particular location in source that is presented to the user. - - - Used for implementation of - or for embedding source paths in error messages. - - Unlike Dev12 we do account for #line and #ExternalSource directives when determining value for - . - - - - - Returns a line number for particular location in source that is presented to the user. - - - Used for implementation of - or for embedding source line numbers in error messages. - - Unlike Dev12 we do account for #line and #ExternalSource directives when determining value for - . - - - - - Are there any hidden regions in the tree? - - True if there is at least one hidden region. - - - - Returns a list of the changed regions between this tree and the specified tree. The list is conservative for - performance reasons. It may return larger regions than what has actually changed. - - - - - Gets a location for the specified text span. - - - - - Determines if two trees are the same, disregarding trivia differences. - - The tree to compare against. - If true then the trees are equivalent if the contained nodes and tokens declaring - metadata visible symbolic information are equivalent, ignoring any differences of nodes inside method bodies - or initializer expressions, otherwise all nodes and tokens must be equivalent. - - - - - Gets a SyntaxReference for a specified syntax node. SyntaxReferences can be used to - regain access to a syntax node without keeping the entire tree and source text in - memory. - - - - - Gets a list of text changes that when applied to the old tree produce this tree. - - The old tree. - The list of changes may be different than the original changes that produced - this tree. - - - - Returns a new tree whose root and options are as specified and other properties are copied from the current tree. - - - - - Returns a new tree whose is the specified node and other properties are copied from the current tree. - - - - - Returns a that represents the entire source text of this . - - - - - Verify nodes match source. - - - - - Return the index of the first difference between - the two strings, or -1 if the strings are the same. - - - - - Represents a trivia in the syntax tree. This is the language agnostic equivalent of and . - - - - - An integer representing the language specific kind of this trivia. - - - - - The language name that this trivia is syntax of. - - - - - The parent token that contains this token in its LeadingTrivia or TrailingTrivia collection. - - - - - The width of this trivia in characters. If this trivia is a structured trivia then the returned width will - not include the widths of any leading or trailing trivia present on the child non-terminal node of this - trivia. - - - - - The width of this trivia in characters. If this trivia is a structured trivia then the returned width will - include the widths of any leading or trailing trivia present on the child non-terminal node of this trivia. - - - - - The absolute span of this trivia in characters. If this trivia is a structured trivia then the returned span - will not include spans of any leading or trailing trivia present on the child non-terminal node of this - trivia. - - - - - Same as accessing on . - - - Slight performance improvement. - - - - - The absolute span of this trivia in characters. If this trivia is a structured trivia then the returned span - will include spans of any leading or trailing trivia present on the child non-terminal node of this trivia. - - - - - Determines whether this trivia has any diagnostics on it. If this trivia is a structured trivia then the - returned value will indicate whether this trivia or any of its descendant nodes, tokens or trivia have any - diagnostics on them. - > - - - - Determines whether this trivia is a structured trivia. - - - - - Determines whether this trivia is a descendant of a structured trivia. - - - - - Determines whether this trivia or any of its structure has annotations. - - - - - Determines where this trivia has annotations of the specified annotation kind. - - - - - Determines where this trivia has any annotations of the specified annotation kinds. - - - - - Determines whether this trivia has the specific annotation. - - - - - Get all the annotations of the specified annotation kind. - - - - - Get all the annotations of the specified annotation kinds. - - - - - Determines whether this trivia represents a preprocessor directive. - - - - - Returns the child non-terminal node representing the syntax tree structure under this structured trivia. - - The child non-terminal node representing the syntax tree structure under this structured - trivia. - - - - Returns the string representation of this trivia. If this trivia is structured trivia then the returned string - will not include any leading or trailing trivia present on the StructuredTriviaSyntax node of this trivia. - - The string representation of this trivia. - The length of the returned string is always the same as Span.Length - - - - Returns the full string representation of this trivia. If this trivia is structured trivia then the returned string will - include any leading or trailing trivia present on the StructuredTriviaSyntax node of this trivia. - - The full string representation of this trivia. - The length of the returned string is always the same as FullSpan.Length - - - - Writes the full text of this trivia to the specified TextWriter. - - - - - Determines whether two s are equal. - - - - - Determines whether two s are unequal. - - - - - Determines whether the supplied is equal to this - . - - - - - Determines whether the supplied is equal to this - . - - - - - Serves as hash function for . - - - - - Creates a new SyntaxTrivia with the specified annotations. - - - - - Creates a new SyntaxTrivia with the specified annotations. - - - - - Creates a new SyntaxTrivia without the specified annotations. - - - - - Creates a new SyntaxTrivia without the specified annotations. - - - - - Creates a new SyntaxTrivia without annotations of the specified kind. - - - - - Copies all SyntaxAnnotations, if any, from this SyntaxTrivia instance and attaches them to a new instance based on . - - - - - SyntaxTree which contains current SyntaxTrivia. - - - - - Get the location of this trivia. - - - - - Gets a list of all the diagnostics associated with this trivia. - This method does not filter diagnostics based on #pragmas and compiler options - like nowarn, warnaserror etc. - - - - - Determines if this trivia is equivalent to the specified trivia. - - - - - Represents a read-only list of . - - - - - Gets the trivia at the specified index. - - The zero-based index of the trivia to get. - The token at the specified index. - - is less than 0.-or- is equal to or greater than . - - - - The absolute span of the list elements in characters, including the leading and trailing trivia of the first and last elements. - - - - - The absolute span of the list elements in characters, not including the leading and trailing trivia of the first and last elements. - - - - - Returns the first trivia in the list. - - The first trivia in the list. - The list is empty. - - - - Returns the last trivia in the list. - - The last trivia in the list. - The list is empty. - - - - Does this list have any items. - - - - - Returns a list which contains all elements of in reversed order. - - which contains all elements of in reversed order - - - - Creates a new with the specified trivia added to the end. - - The trivia to add. - - - - Creates a new with the specified trivia added to the end. - - The trivia to add. - - - - Creates a new with the specified trivia inserted at the index. - - The index in the list to insert the trivia at. - The trivia to insert. - - - - Creates a new with the specified trivia inserted at the index. - - The index in the list to insert the trivia at. - The trivia to insert. - - - - Creates a new with the element at the specified index removed. - - The index identifying the element to remove. - - - - Creates a new with the specified element removed. - - The trivia element to remove. - - - - Creates a new with the specified element replaced with new trivia. - - The trivia element to replace. - The trivia to replace the element with. - - - - Creates a new with the specified element replaced with new trivia. - - The trivia element to replace. - The trivia to replace the element with. - - - - get the green node at the specific slot - - - - - Copy number of items starting at from this list into starting at . - - - - - Reversed enumerable. - - - - - Walks the syntax tree, allowing subclasses to operate on all nodes, token and trivia. The - walker will perform a depth first walk of the tree. - - - - - Syntax the should descent into. - - - - - Creates a new walker instance. - - Syntax the should descent into. - - - - Called when the walker visits a node. This method may be overridden if subclasses want - to handle the node. Overrides should call back into this base method if they want the - children of this node to be visited. - - The current node that the walker is visiting. - - - - Called when the walker visits a token. This method may be overridden if subclasses want - to handle the token. Overrides should call back into this base method if they want the - trivia of this token to be visited. - - The current token that the walker is visiting. - - - - Called when the walker visits a trivia syntax. This method may be overridden if - subclasses want to handle the token. Overrides should call back into this base method if - they want the children of this trivia syntax to be visited. - - The current trivia syntax that the walker is visiting. - - - - Syntax the should descent into. - - - - - descend into only nodes - - - - - descend into nodes and tokens - - - - - descend into nodes, tokens and trivia - - - - - descend into everything - - - - - This is ONLY used id BoundNode.cs Debug method - Dump() - - - - - This is ONLY used for debugging purpose - - - - - Parses a version string of the form "major [ '.' minor [ '.' build [ '.' revision ] ] ]". - - The version string to parse. - If parsing succeeds, the parsed version. Null otherwise. - True when parsing succeeds completely (i.e. every character in the string was consumed), false otherwise. - - - - Parses a version string of the form "major [ '.' minor [ '.' ( '*' | ( build [ '.' ( '*' | revision ) ] ) ) ] ]" - as accepted by System.Reflection.AssemblyVersionAttribute. - - The version string to parse. - Indicates whether or not a wildcard is accepted as the terminal component. - If parsing succeeded, the parsed version. Null otherwise. - True when parsing succeeds completely (i.e. every character in the string was consumed), false otherwise. - - - - Parses a version string of the form "major [ '.' minor [ '.' ( '*' | ( build [ '.' ( '*' | revision ) ] ) ) ] ]" - as accepted by System.Reflection.AssemblyVersionAttribute. - - The version string to parse. - Indicates whether or not we're parsing an assembly version string. If so, wildcards are accepted and each component must be less than 65535. - The maximum value that a version component may have. - If parsing succeeded, the parsed version. Null otherwise. - True when parsing succeeds completely (i.e. every character in the string was consumed), false otherwise. - - - - This function defines whether an attribute is optional or not. - - The attribute member. - - - - Ids of well known runtime types. - Values should not intersect with SpecialType enum! - - - - - - Number of well known types in WellKnownType enum - - - - - Array of names for types. - The names should correspond to ids from WellKnownType enum so - that we could use ids to index into the array - - - - - - Resolves references to XML files specified in the source. - - - - - Resolves XML document file path. - - - Value of the "file" attribute of an <include> documentation comment element. - - - Path of the source file () or XML document that contains the . - If not null used as a base path of , if is relative. - If is relative is used as the base path of . - - Normalized XML document file path or null if not found. - - - - The XmlCharType class is used for quick character type recognition - which is optimized for the first 127 ascii characters. - - - - - start >= value <= end - - - - - Struct containing information about a source declaration. - - - - - Topmost syntax node for this declaration. - - - - - Syntax nodes for executable code blocks (method body, initializers, etc.) associated with this declaration. - - - - - Symbol declared by this declaration. - - - - - Realizes the array. - - - - - Realizes the array. - - - - - Realizes the array, downcasting each element to a derived type. - - - - - Realizes the array and disposes the builder in one operation. - - - - - struct enumerator used in foreach. - - - - - This class is used to store the module serialization properties for a compilation. - - - - - The alignment factor (in bytes) that is used to align the raw data of sections in the image file. - The value should be a power of 2 between 512 and 64K, inclusive. The default is 512. - - - - - The alignment (in bytes) of sections when they are loaded into memory. - It must be greater than or equal to . - The default is the page size for the architecture. - - - - - Identifies the version of the CLR that is required to load this module or assembly. - - - - - Specifies the target CPU. means AnyCPU. - - - - - True if the module contains only IL and is processor independent. Should there be a choice between launching as a 64-bit or 32-bit - process, this setting will cause the host to launch it as a 32-bit process. - - - - - The first part of a two part version number indicating the version of the format used to persist this module. For example, the 1 in 1.0. - - - - - The second part of a two part version number indicating the version of the format used to persist this module. For example, the 0 in 1.0. - - - - - A globally unique persistent identifier for this module. - - - - - True if the module contains only IL and is processor independent. - - - - - True if the instructions in this module must be compiled in such a way that the debugging experience is not compromised. - To set the value of this property, add an instance of System.Diagnostics.DebuggableAttribute to the MetadataAttributes list. - - - - - The preferred memory address at which the module is to be loaded at runtime. - - - - - The size of the virtual memory to reserve for the initial process heap. - Must fit into 32 bits if the target platform is 32 bit. - - - - - The size of the virtual memory initially committed for the initial process heap. - Must fit into 32 bits if the target platform is 32 bit. - - - - - The size of the virtual memory to reserve for the initial thread's stack. - Must fit into 32 bits if the target platform is 32 bit. - - - - - The first part of a two part version number indicating the version of the linker that produced this module. For example, the 8 in 8.0. - - - - - The first part of a two part version number indicating the version of the linker that produced this module. For example, the 0 in 8.0. - - - - - Flags that control the behavior of the target operating system. CLI implementations are supposed to ignore this, but some operating system pay attention. - - - - - If set, the module must include a machine code stub that transfers control to the virtual execution system. - - - - - If set, the module contains instructions or assumptions that are specific to the AMD 64 bit instruction set. - - - - - If set, the module contains instructions that assume a 32 bit instruction set. For example it may depend on an address being 32 bits. - This may be true even if the module contains only IL instructions because of PlatformInvoke and COM interop. - - - - - If set, the module contains instructions that assume a 64 bit instruction set. For example it may depend on an address being 64 bits. - This may be true even if the module contains only IL instructions because of PlatformInvoke and COM interop. - - - - - Compares the current content of this writer with another one. - - - - Range specified by and falls outside of the bounds of the buffer content. - - - Range specified by and falls outside of the bounds of the buffer content. - - - is negative. - - - is null. - is negative. - - - is null. - - - is null. - is negative. - - - is null. - - - is null. - Range specified by and falls outside of the bounds of the . - - - is null. - - - is null. - Range specified by and falls outside of the bounds of the . - - - - Writes a reference to a heap (heap index) or a table (row id). - - - References may be small (2B) or large (4B). - - - - - Writes UTF16 (little-endian) encoded string at the current position. - - is null. - - - - Writes UTF16 (little-endian) encoded string at the current position. - - is null. - - - - Writes string in SerString format (see ECMA-335-II 23.3 Custom attributes): - The string is UTF8 encoded and prefixed by the its size in bytes. - Null string is represented as a single byte 0xFF. - - - - - Writes UTF8 encoded string at the current position. - - is null. - - - - Implements compressed signed integer encoding as defined by ECMA-335-II chapter 23.2: Blobs and signatures. - - - If the value lies between -64 (0xFFFFFFC0) and 63 (0x3F), inclusive, encode as a one-byte integer: - bit 7 clear, value bits 5 through 0 held in bits 6 through 1, sign bit (value bit 31) in bit 0. - - If the value lies between -8192 (0xFFFFE000) and 8191 (0x1FFF), inclusive, encode as a two-byte integer: - 15 set, bit 14 clear, value bits 12 through 0 held in bits 13 through 1, sign bit(value bit 31) in bit 0. - - If the value lies between -268435456 (0xF000000) and 268435455 (0x0FFFFFFF), inclusive, encode as a four-byte integer: - 31 set, 30 set, bit 29 clear, value bits 27 through 0 held in bits 28 through 1, sign bit(value bit 31) in bit 0. - - can't be represented as a compressed signed integer. - - - - Implements compressed unsigned integer encoding as defined by ECMA-335-II chapter 23.2: Blobs and signatures. - - - If the value lies between 0 (0x00) and 127 (0x7F), inclusive, - encode as a one-byte integer (bit 7 is clear, value held in bits 6 through 0). - - If the value lies between 28 (0x80) and 214 – 1 (0x3FFF), inclusive, - encode as a 2-byte integer with bit 15 set, bit 14 clear(value held in bits 13 through 0). - - Otherwise, encode as a 4-byte integer, with bit 31 set, bit 30 set, bit 29 clear (value held in bits 28 through 0). - - can't be represented as a compressed signed integer. - - - - Writes a constant value (see ECMA-335 Partition II section 22.9) at the current position. - - is not of a constant type. - - - - The type of target machine. - - - - - The number of sections. This indicates the size of the section table, which immediately follows the headers. - - - - - The low 32 bits of the number of seconds since 00:00 January 1, 1970, that indicates when the file was created. - - - - - The file pointer to the COFF symbol table, or zero if no COFF symbol table is present. - This value should be zero for a PE image. - - - - - The number of entries in the symbol table. This data can be used to locate the string table, - which immediately follows the symbol table. This value should be zero for a PE image. - - - - - The size of the optional header, which is required for executable files but not for object files. - This value should be zero for an object file. - - - - - The flags that indicate the attributes of the file. - - - - - Represents a value on #String heap that has not been serialized yet. - - - - - Represents a value on #Blob heap that has not been serialized yet. - - - - - Fills in stringIndexMap with data from stringIndex and write to stringWriter. - Releases stringIndex as the stringTable is sealed after this point. - - - - - Sorts strings such that a string is followed immediately by all strings - that are a suffix of it. - - - - - This is the maximum length of a type or member name in metadata, assuming - the name is in UTF-8 format and not (yet) null-terminated. - - - Source names may have to be shorter still to accommodate mangling. - Used for event names, field names, property names, field names, method def names, - member ref names, type def (full) names, type ref (full) names, exported type - (full) names, parameter names, manifest resource names, and unmanaged method names - (ImplMap table). - - See CLI Part II, section 22. - - - - - This is the maximum length of a path in metadata, assuming the path is in UTF-8 - format and not (yet) null-terminated. - - - Used for file names, module names, and module ref names. - - See CLI Part II, section 22. - - - - - This is the maximum length of a string in the PDB, assuming it is in UTF-8 format - and not (yet) null-terminated. - - - Used for import strings, locals, and local constants. - - - - - Returns true if writing full metadata, false if writing delta. - - - - - True if writing delta metadata in a minimal format. - - - - - NetModules and EnC deltas don't have AssemblyDef record. - We don't emit it for EnC deltas since assembly identity has to be preserved across generations (CLR/debugger get confused otherwise). - - - - - Returns metadata generation ordinal. Zero for - full metadata and non-zero for delta. - - - - - Returns unique Guid for this delta, or default(Guid) - if full metadata. - - - - - Returns Guid of previous delta, or default(Guid) - if full metadata or generation 1 delta. - - - - - Returns true and the 1-based index of the type definition - if the type definition is recognized. Otherwise returns false. - The index is into the full metadata. - - - - - The 1-based index of the type definition. - The index is into the full metadata. - - - - - The type definition at the 0-based index into the full set. Deltas - are only required to support indexing into current generation. - - - - - The type definitions to be emitted, in row order. These - are just the type definitions from the current generation. - - - - - The 1-based index of the event definition. - The index is into the full metadata. - - - - - The event definitions to be emitted, in row order. These - are just the event definitions from the current generation. - - - - - The 1-based index of the field definition. - The index is into the full metadata. - - - - - The field definitions to be emitted, in row order. These - are just the field definitions from the current generation. - - - - - Returns true and the 1-based index of the method definition - if the method definition is recognized. Otherwise returns false. - The index is into the full metadata. - - - - - The 1-based index of the method definition. - The index is into the full metadata. - - - - - The method definition at the 0-based index into the full set. Deltas - are only required to support indexing into current generation. - - - - - The method definitions to be emitted, in row order. These - are just the method definitions from the current generation. - - - - - The 1-based index of the property definition. - The index is into the full metadata. - - - - - The property definitions to be emitted, in row order. These - are just the property definitions from the current generation. - - - - - The 1-based index of the parameter definition. - The index is into the full metadata. - - - - - The parameter definitions to be emitted, in row order. These - are just the parameter definitions from the current generation. - - - - - The generic parameter definitions to be emitted, in row order. These - are just the generic parameter definitions from the current generation. - - - - - The 1-based index of the first field of the type. - - - - - The 1-based index of the first method of the type. - - - - - The 1-based index of the first parameter of the method. - - - - - Return the 1-based index of the assembly reference, adding - the reference to the index for this generation if missing. - The index is into the full metadata. However, deltas - are not required to return rows from previous generations. - - - - - The assembly references to be emitted, in row order. These - are just the assembly references from the current generation. - - - - - Return the 1-based index of the module reference, adding - the reference to the index for this generation if missing. - The index is into the full metadata. However, deltas - are not required to return rows from previous generations. - - - - - The module references to be emitted, in row order. These - are just the module references from the current generation. - - - - - Return the 1-based index of the member reference, adding - the reference to the index for this generation if missing. - The index is into the full metadata. However, deltas - are not required to return rows from previous generations. - - - - - The member references to be emitted, in row order. These - are just the member references from the current generation. - - - - - Return the 1-based index of the method spec, adding - the spec to the index for this generation if missing. - The index is into the full metadata. However, deltas - are not required to return rows from previous generations. - - - - - The method specs to be emitted, in row order. These - are just the method specs from the current generation. - - - - - Return true and the 1-based index of the type reference - if the reference is available in the current generation. - The index is into the full metadata. However, deltas - are not required to return rows from previous generations. - - - - - Return the 1-based index of the type reference, adding - the reference to the index for this generation if missing. - The index is into the full metadata. However, deltas - are not required to return rows from previous generations. - - - - - The type references to be emitted, in row order. These - are just the type references from the current generation. - - - - - Return the 1-based index of the type spec, adding - the spec to the index for this generation if missing. - The index is into the full metadata. However, deltas - are not required to return rows from previous generations. - - - - - The type specs to be emitted, in row order. These - are just the type specs from the current generation. - - - - - Return the 1-based index of the signature index, adding - the signature to the index for this generation if missing. - The index is into the full metadata. However, deltas - are not required to return rows from previous generations. - - - - - The signature indices to be emitted, in row order. These - are just the signature indices from the current generation. - - - - - Return a visitor for traversing all references to be emitted. - - - - - Populate EventMap table. - - - - - Populate PropertyMap table. - - - - - Populate EncLog table. - - - - - Populate EncMap table. - - - - - Returns a reference to the unit that defines the given referenced type. If the referenced type is a structural type, such as a pointer or a generic type instance, - then the result is null. - - - - - The Microsoft CLR requires that {namespace} + "." + {name} fit in MAX_CLASS_NAME - (even though the name and namespace are stored separately in the Microsoft - implementation). Note that the namespace name of a nested type is always blank - (since comes from the container). - - We're trying to add the containing namespace of this type to the string heap. - Namespace names are never used on their own - this is the type that is adding the namespace name. - Used only for length checking. - - - - Test the given name to see if it fits in metadata. - - String to test (non-null). - Max length for name. (Expected to be at least 5.) - True if the name is too long. - Internal for test purposes. - - - - Compares quality of assembly references to achieve unique rows in AssemblyRef table. - Metadata spec: "The AssemblyRef table shall contain no duplicates (where duplicate rows are deemed to - be those having the same MajorVersion, MinorVersion, BuildNumber, RevisionNumber, PublicKeyOrToken, - Name, and Culture)". - - - - - Serialize the method local signature to the blob. - - Standalone signature token - - - - Computes the string representing the strong name of the given assembly reference. - - - - - Visitor to force translation of all symbols that will be referred to - in metadata. Allows us to build the set of types that must be embedded - as local types. - - - - - Strip off *, &, and []. - - - - - Qualified name of namespace. - e.g. "A.B.C" - - - - - The offset of the first operation in the scope. - - - - - The offset of the first operation outside of the scope, or the method body length. - - - - - An object corresponding to a metadata entity such as a type or a field. - - - - - An object corresponding to reference to a metadata entity such as a type or a field. - - - - - A collection of metadata custom attributes that are associated with this definition. - - - - - Calls the visitor.Visit(T) method where T is the most derived object model node interface type implemented by the concrete type - of the object implementing IDefinition. The dispatch method does not invoke Dispatch on any child objects. If child traversal - is desired, the implementations of the Visit methods should do the subsequent dispatching. - - - - - Gets the definition object corresponding to this reference within the given context, - or null if the referenced entity isn't defined in the context. - - - - - Constants for producing and consuming streams of binary custom debug info. - - - - - Returns true if the namespace scope for this method should be forwarded to another method. - Returns non-null if the forwarding should be done directly via UsingNamespace, - null if the forwarding is done via custom debug info. - - - - - Use to create a document when checksum is computed based on actual source stream. - - - - - Use to create a document when checksum is suggested via external checksum pragma/directive - - - - - returns true when checksum was computed base on an actual source stream - as opposed to be suggested via a checksum directive/pragma - - - - - A region representing an exception handler clause. The region exposes the type (catch or - finally) and the bounds of the try block and catch or finally block as needed by - - - - - Handler kind for this SEH info - - - - - If HandlerKind == HandlerKind.Catch, this is the type of exception to catch. If HandlerKind == HandlerKind.Filter, this is System.Object. - Otherwise this is a Dummy.TypeReference. - - - - - Label instruction corresponding to the start of filter decision block - - - - - Label instruction corresponding to the start of try block - - - - - Label instruction corresponding to the end of try block - - - - - Label instruction corresponding to the start of handler block - - - - - Label instruction corresponding to the end of handler block - - - - - An expression that does not change its value at runtime and can be evaluated at compile time. - - - - - The compile time value of the expression. Null to represent a null object reference or a null array. - - - - - An expression that creates an array instance in metadata. Only for use in custom attributes. - - - - - The element type of the array. - - - - - The values of the array elements. May be empty to represent an empty array. - - - - - The number of elements in the array. - - - - - An expression that can be represented directly in metadata. - - - - - Calls the visitor.Visit(T) method where T is the most derived object model node interface type implemented by the concrete type - of the object implementing IStatement. The dispatch method does not invoke Dispatch on any child objects. If child traversal - is desired, the implementations of the Visit methods should do the subsequent dispatching. - - - - - The type of value the expression represents. - - - - - An expression that represents a (name, value) pair and that is typically used in method calls, custom attributes and object initializers. - - - - - The name of the parameter or property or field that corresponds to the argument. - - - - - The value of the argument. - - - - - True if the named argument provides the value of a field. - - - - - An expression that results in a System.Type instance. - - - - - The type that will be represented by the System.Type instance. - - - - - Represents an assembly reference with an alias (C# only, /r:Name=Reference on command line). - - - - - An alias for the global namespace of the assembly. - - - - - The assembly reference. - - - - - A metadata custom attribute. - - - - - Zero or more positional arguments for the attribute constructor. - - - - - A reference to the constructor that will be used to instantiate this custom attribute during execution (if the attribute is inspected via Reflection). - - - - - Zero or more named arguments that specify values for fields and properties of the attribute. - - - - - The number of positional arguments. - - - - - The number of named arguments. - - - - - The type of the attribute. For example System.AttributeUsageAttribute. - - - - - Whether attribute allows multiple. - - - - - Represents a file referenced by an assembly. - - - - - True if the file has metadata. - - - - - File name with extension. - - - - - A hash of the file contents. - - - - - has type , rather than , - so that we can do custom marshalling of . Unfortunately, .NET marshals - s as the number of days since 1899/12/30, whereas the native VB compiler - marshalled them as the number of ticks since the Unix epoch (i.e. a much, much larger number). - - - - - A struct with the same size and layout as the native VARIANT type: - 2 bytes for a discriminator (i.e. which type of variant it is). - 6 bytes of padding - 8 or 16 bytes of data - - - - - This field determines the size of the struct - (16 bytes on 32-bit platforms, 24 bytes on 64-bit platforms). - - - - - This type is 8 bytes on a 32-bit platforms and 16 bytes on 64-bit platforms. - - - - - A range of CLR IL operations that comprise a lexical scope. - - - - - The offset of the first operation in the scope. - - - - - The offset of the first operation outside of the scope, or the method body length. - - - - - Returns zero or more local constant definitions that are local to the given scope. - - - - - Returns zero or more local variable definitions that are local to the given scope. - - - - - streamProvider callers will dispose result after use. - and are mutually exclusive. - - - - - Specifies how the caller passes parameters to the callee and who cleans up the stack. - - - - - C/C++ style calling convention for unmanaged methods. The call stack is cleaned up by the caller, - which makes this convention suitable for calling methods that accept extra arguments. - - - - - The convention for calling managed methods with a fixed number of arguments. - - - - - The convention for calling managed methods that accept extra arguments. - - - - - Arguments are passed in registers when possible. This calling convention is not yet supported. - - - - - Win32 API calling convention for calling unmanaged methods via PlatformInvoke. The call stack is cleaned up by the callee. - - - - - C++ member unmanaged method (non-vararg) calling convention. The callee cleans the stack and the this pointer is pushed on the stack last. - - - - - The convention for calling a generic method. - - - - - The convention for calling an instance method with an implicit this parameter (the method does not have an explicit parameter definition for this). - - - - - The convention for calling an instance method that explicitly declares its first parameter to correspond to the this instance. - - - - - An event is a member that enables an object or class to provide notifications. Clients can attach executable code for events by supplying event handlers. - This interface models the metadata representation of an event. - - - - - A list of methods that are associated with the event. - - - - - The method used to add a handler to the event. - - - - - The method used to call the event handlers when the event occurs. May be null. - - - - - True if the event gets special treatment from the runtime. - - - - - This event is special in some way, as specified by the name. - - - - - The method used to add a handler to the event. - - - - - The (delegate) type of the handlers that will handle the event. - - - - - A field is a member that represents a variable associated with an object or class. - This interface models the metadata representation of a field. - - - - - The compile time value of the field. This value should be used directly in IL, rather than a reference to the field. - If the field does not have a valid compile time value, Dummy.Constant is returned. - - - - - Mapped field data, or null if the field is not mapped. - - - - - This field is a compile-time constant. The field has no runtime location and cannot be directly addressed from IL. - - - - - This field has associated field marshalling information. - - - - - The field does not have to be serialized when its containing instance is serialized. - - - - - This field can only be read. Initialization takes place in a constructor. - - - - - True if the field gets special treatment from the runtime. - - - - - This field is special in some way, as specified by the name. - - - - - This field is static (shared by all instances of its declaring type). - - - - - Specifies how this field is marshalled when it is accessed from unmanaged code. - - - - - Checked if IsMarshalledExplicitly == true and MarshallingInformation is null - - - - - Offset of the field. - - - - - A reference to a field. - - - - - The type of value that is stored in this field. - - - - - The Field being referred to. - - - - - True, if field is an IContextualNamedEntity, even if field reference implements the interface, - doesn't mean it is contextual. - - - - - An object that represents a local variable or constant. - - - - - The compile time value of the definition, if it is a local constant. - - - - - Custom modifiers associated with local variable definition. - - - - - TODO: use instead. - True if the value referenced by the local must not be moved by the actions of the garbage collector. - - - - - TODO: use instead. - True if the local contains a managed pointer (for example a reference to a local variable or a reference to a field of an object). - - - - - True if the local variable is of type Dynamic. - - - - - Each local has an attributes field in the PDB. To match the native compiler, - we emit "1" for locals that should definitely not bind in the debugger and "0" - for all other locals. - - - A value of "1" is a sufficient, but not a necessary, condition for hiding the - local in the debugger. Locals with value "0" may also be hidden. - - Hidden locals must still be emitted because they participate in evaluation. - - - - - Should return the synthesized dynamic attributes of the local definition if any. Else null. - - - - - The type of the local. - - - - - Location for reporting diagnostics about the local. - - - Use rather than null. - - - - - Slot index or -1 if not applicable. - - - - - Optional serialized local signature. - - - - - Local id, or if this is a local constant, short-lived temp variable, - or we are not emitting local variable ids (release builds). - - - - - Represents additional info needed by async method implementation methods - (MoveNext() methods) to properly emit necessary PDB data for async debugging. - - - - - Original async method transformed into MoveNext() - - - - - IL offset of catch handler or -1 - - - - - Set of IL offsets where await operators yield control - - - - - Set of IL offsets where await operators are to be resumed - - - - - A metadata (IL) level representation of the body of a method or of a property/event accessor. - - - - - Calls the visitor.Visit(T) method where T is the most derived object model node interface type implemented by the concrete type - of the object implementing IDoubleDispatcher. The dispatch method does not invoke Dispatch on any child objects. If child traversal - is desired, the implementations of the Visit methods should do the subsequent dispatching. - - - - - A list exception data within the method body IL. - - - - - True if the locals are initialized by zeroing the stack upon method entry. - - - - - The local variables of the method. - - - - - The definition of the method whose body this is. - If this is the body of an event or property accessor, this will hold the corresponding adder/remover/setter or getter method. - - - - - Debugging information associated with an async method to support EE. - - - - - The maximum number of elements on the evaluation stack during the execution of the method. - - - - - Returns true if there is at least one dynamic local within the MethodBody - - - - - Returns zero or more local (block) scopes into which the CLR IL operations in the given method body is organized. - - - - - Returns an import scope the method is declared within, or null if there is none - (e.g. the method doesn't contain user code). - - - The chain is a spine of a tree in a forest of import scopes. A tree of import scopes is created by the language for each source file - based on namespace declarations. In VB each tree is trivial single-node tree that declares the imports of a file. - In C# the tree copies the nesting of namespace declarations in the file. There is a separate scope for each dotted component in - the namespace type name. For instance namespace type x.y.z will have two namespace scopes, the first is for the x and the second - is for the y. - - - - - Returns debug information for local variables hoisted to state machine fields, - or null if this method isn't MoveNext method of a state machine. - - - Returns zero or more local (block) scopes, each defining an IL range in which an iterator local is defined. - The scopes are returned for the MoveNext method of the object returned by the iterator method. - The index of the scope corresponds to the index of the local. Specifically local scope i corresponds - to the local stored in a field named <localName>5__i of the class used to store the local values in - between calls to MoveNext, where localName is the original name of the local variable. For example, if - the first local to be moved into the class is named "xyzzy", it will be stored in a field named - "<xyzzy>5__1", and the ILocalScope returned from this method at index 1 (i.e. the second one) will - have the scope information for where that variable is in scope. - - - - - The name of the state machine generated for the method, - or null if the method isn't the kickoff method of a state machine. - - - - - Returns information relevant to EnC on slots of local variables hoisted to state machine fields, - or null if the method isn't the kickoff method of a state machine. - - - - - Returns types of awaiter slots allocated on the state machine, - or null if the method isn't the kickoff method of a state machine. - - - - - This interface models the metadata representation of a method. - - - - - A container for a list of IL instructions providing the implementation (if any) of this method. - - - When emitting metadata-only assemblies this returns null even if returns true. - - - - - If the method is generic then this list contains the type parameters. - - - - - Returns true if this symbol was automatically created by the compiler, and does not have - an explicit corresponding source code declaration. - - - - - True if this method has a non empty collection of SecurityAttributes or the System.Security.SuppressUnmanagedCodeSecurityAttribute. - - - - - True if the method does not provide an implementation. - - - - - True if the method can only be overridden when it is also accessible. - - - - - True if the method is a constructor. - - - - - True if the method has an external implementation (i.e. not supplied by this definition). - - - If the method is not external and not abstract it has to provide an IL body. - - - - - True if this method is hidden if a derived type declares a method with the same name and signature. - If false, any method with the same name hides this method. This flag is ignored by the runtime and is only used by compilers. - - - - - The method always gets a new slot in the virtual method table. - This means the method will hide (not override) a base type method with the same name and signature. - - - - - True if the method is implemented via the invocation of an underlying platform method. - - - - - True if the method gets special treatment from the runtime. For example, it might be a constructor. - - - - - True if the method may not be overridden. - - - - - True if the method is special in some way for tools. For example, it might be a property getter or setter. - - - - - True if the method does not require an instance of its declaring type as its first argument. - - - - - True if the method may be overridden (or if it is an override). - - - - - Implementation flags. - - - - - The parameters forming part of this signature. - - - - - Detailed information about the PInvoke stub. Identifies which method to call, which module has the method and the calling convention among other things. - - - - - True if the method calls another method containing security code. If this flag is set, the method - should have System.Security.DynamicSecurityMethodAttribute present in its list of custom attributes. - - - - - Custom attributes associated with the method's return value. - - - - - The return value has associated marshalling information. - - - - - Specifies how the return value is marshalled when the method is called from unmanaged code. - - - - - Checked if ReturnValueIsMarshalledExplicitly == true and ReturnValueMarshallingInformation is null - - - - - Declarative security actions for this method. - - - - - Namespace containing this method. - TODO: Ideally we would expose INamespace on INamespaceTypeDefinition. Right now we can only get the qualified namespace name. - - - - - This interface models the metadata representation of a method or property parameter. - - - - - A compile time constant value that should be supplied as the corresponding argument value by callers that do not explicitly specify an argument value for this parameter. - Null if the parameter doesn't have default value. - - - - - True if the parameter has a default value that should be supplied as the argument value by a caller for which the argument value has not been explicitly specified. - - - - - True if the argument value must be included in the marshalled arguments passed to a remote callee. - - - - - This parameter has associated marshalling information. - - - - - True if the argument value must be included in the marshalled arguments passed to a remote callee only if it is different from the default value (if there is one). - - - - - True if the final value assigned to the parameter will be marshalled with the return values passed back from a remote callee. - - - - - Specifies how this parameter is marshalled when it is accessed from unmanaged code. - - - - - Checked if IsMarshalledExplicitly == true and MarshallingInformation is null - - - - - A property is a member that provides access to an attribute of an object or a class. - This interface models the metadata representation of a property. - - - - - A list of methods that are associated with the property. - - - - - A compile time constant value that provides the default value for the property. (Who uses this and why?) - - - - - The method used to get the value of this property. May be absent (null). - - - - - True if this property has a compile time constant associated with that serves as a default value for the property. (Who uses this and why?) - - - - - True if this property gets special treatment from the runtime. - - - - - True if this property is special in some way, as specified by the name. - - - - - The parameters forming part of this signature. - - - - - The method used to set the value of this property. May be absent (null). - - - - - The parameters and return type that makes up a method or property signature. - This interface models the metadata representation of a signature. - - - - - Calling convention of the signature. - - - - - The number of required parameters of the signature. - - - - - The parameters forming part of this signature. - - - - - Returns the list of custom modifiers, if any, associated with the returned value. Evaluate this property only if ReturnValueIsModified is true. - - - - - True if the return value is passed by reference (using a managed pointer). - - - - - The return type of the method or type of the property. - - - - - A member of a type definition, such as a field or a method. - This interface models the metadata representation of a type member. - - - - - The type definition that contains this member. - - - - - Indicates if the member is public or confined to its containing type, derived types and/or declaring assembly. - - - - - A reference to a member of a type, such as a field or a method. - This interface models the metadata representation of a type member reference. - - - - - A reference to the containing type of the referenced type member. - - - - - Represents the specialized event definition. - - - - - The event that has been specialized to obtain this event. When the containing type is an instance of type which is itself a specialized member (i.e. it is a nested - type of a generic type instance), then the unspecialized member refers to a member from the unspecialized containing type. (I.e. the unspecialized member always - corresponds to a definition that is not obtained via specialization.) - - - - - Represents reference specialized field. - - - - - A reference to the field definition that has been specialized to obtain the field definition referred to by this field reference. - When the containing type of the referenced specialized field definition is itself a specialized nested type of a generic type instance, - then the unspecialized field reference refers to the corresponding field definition from the unspecialized containing type definition. - (I.e. the unspecialized field reference always refers to a field definition that is not obtained via specialization.) - - - - - Represents reference specialized method. - - - - - A reference to the method definition that has been specialized to obtain the method definition referred to by this method reference. - When the containing type of the referenced specialized method definition is itself a specialized nested type of a generic type instance, - then the unspecialized method reference refers to the corresponding method definition from the unspecialized containing type definition. - (I.e. the unspecialized method reference always refers to a method definition that is not obtained via specialization.) - - - - - Represents the specialized property definition. - - - - - The property that has been specialized to obtain this property. When the containing type is an instance of type which is itself a specialized member (i.e. it is a nested - type of a generic type instance), then the unspecialized member refers to a member from the unspecialized containing type. (I.e. the unspecialized member always - corresponds to a definition that is not obtained via specialization.) - - - - - A reference to a method. - - - - - True if the call sites that references the method with this object supply extra arguments. - - - - - The number of generic parameters of the method. Zero if the referenced method is not generic. - - - - - True if the method has generic parameters; - - - - - The method being referred to. - - - - - Information about this types of the extra arguments supplied at the call sites that references the method with this object. - - - - - A reference to generic method instantiated with a list of type arguments. - - - - - The type arguments that were used to instantiate this.GenericMethod in order to create this method. - - - - - Returns the generic method of which this method is an instance. - - - - - Represents a global field in symbol table. - - - - - Represents a global method in symbol table. - - - - - The name of the method. - - - - - Returns a sequence of all blobs that represent the content of the builder. - - Content is not available, the builder has been linked with another one. - - - - Compares the current content of this writer with another one. - - Content is not available, the builder has been linked with another one. - - - Content is not available, the builder has been linked with another one. - - - Range specified by and falls outside of the bounds of the buffer content. - Content is not available, the builder has been linked with another one. - - - Content is not available, the builder has been linked with another one. - - - Range specified by and falls outside of the bounds of the buffer content. - Content is not available, the builder has been linked with another one. - - - is null. - Content is not available, the builder has been linked with another one. - - - is default(). - Content is not available, the builder has been linked with another one. - - - is null. - Content is not available, the builder has been linked with another one. - - - is null. - Builder is not writable, it has been linked with another one. - - - is null. - Builder is not writable, it has been linked with another one. - - - - Reserves a contiguous block of bytes. - - is negative. - Builder is not writable, it has been linked with another one. - - - is negative. - Builder is not writable, it has been linked with another one. - - - is null. - is negative. - Builder is not writable, it has been linked with another one. - - - is null. - is negative. - Builder is not writable, it has been linked with another one. - Bytes successfully written from the . - - - is null. - Builder is not writable, it has been linked with another one. - - - is null. - Range specified by and falls outside of the bounds of the . - Builder is not writable, it has been linked with another one. - - - is null. - Builder is not writable, it has been linked with another one. - - - is null. - Range specified by and falls outside of the bounds of the . - Builder is not writable, it has been linked with another one. - - - Builder is not writable, it has been linked with another one. - - - Builder is not writable, it has been linked with another one. - - - Builder is not writable, it has been linked with another one. - - - Builder is not writable, it has been linked with another one. - - - Builder is not writable, it has been linked with another one. - - - Builder is not writable, it has been linked with another one. - - - Builder is not writable, it has been linked with another one. - - - Builder is not writable, it has been linked with another one. - - - Builder is not writable, it has been linked with another one. - - - Builder is not writable, it has been linked with another one. - - - Builder is not writable, it has been linked with another one. - - - Builder is not writable, it has been linked with another one. - - - Builder is not writable, it has been linked with another one. - - - Builder is not writable, it has been linked with another one. - - - Builder is not writable, it has been linked with another one. - - - Builder is not writable, it has been linked with another one. - - - Builder is not writable, it has been linked with another one. - - - - Writes a reference to a heap (heap index) or a table (row id). - - - References may be small (2B) or large (4B). - - Builder is not writable, it has been linked with another one. - - - - Writes UTF16 (little-endian) encoded string at the current position. - - is null. - Builder is not writable, it has been linked with another one. - - - - Writes UTF16 (little-endian) encoded string at the current position. - - is null. - Builder is not writable, it has been linked with another one. - - - - Writes string in SerString format (see ECMA-335-II 23.3 Custom attributes): - The string is UTF8 encoded and prefixed by the its size in bytes. - Null string is represented as a single byte 0xFF. - - Builder is not writable, it has been linked with another one. - - - - Writes UTF8 encoded string at the current position. - - is null. - Builder is not writable, it has been linked with another one. - - - - Implements compressed signed integer encoding as defined by ECMA-335-II chapter 23.2: Blobs and signatures. - - - If the value lies between -64 (0xFFFFFFC0) and 63 (0x3F), inclusive, encode as a one-byte integer: - bit 7 clear, value bits 5 through 0 held in bits 6 through 1, sign bit (value bit 31) in bit 0. - - If the value lies between -8192 (0xFFFFE000) and 8191 (0x1FFF), inclusive, encode as a two-byte integer: - 15 set, bit 14 clear, value bits 12 through 0 held in bits 13 through 1, sign bit(value bit 31) in bit 0. - - If the value lies between -268435456 (0xF000000) and 268435455 (0x0FFFFFFF), inclusive, encode as a four-byte integer: - 31 set, 30 set, bit 29 clear, value bits 27 through 0 held in bits 28 through 1, sign bit(value bit 31) in bit 0. - - can't be represented as a compressed signed integer. - Builder is not writable, it has been linked with another one. - - - - Implements compressed unsigned integer encoding as defined by ECMA-335-II chapter 23.2: Blobs and signatures. - - - If the value lies between 0 (0x00) and 127 (0x7F), inclusive, - encode as a one-byte integer (bit 7 is clear, value held in bits 6 through 0). - - If the value lies between 28 (0x80) and 214 – 1 (0x3FFF), inclusive, - encode as a 2-byte integer with bit 15 set, bit 14 clear(value held in bits 13 through 0). - - Otherwise, encode as a 4-byte integer, with bit 31 set, bit 30 set, bit 29 clear (value held in bits 28 through 0). - - can't be represented as a compressed integer. - Builder is not writable, it has been linked with another one. - - - - Writes a constant value (see ECMA-335 Partition II section 22.9) at the current position. - - is not of a constant type. - Builder is not writable, it has been linked with another one. - - - - Table row counts. - - - - - Non-empty tables that are emitted into the metadata table stream. - - - - - Non-empty tables stored in an external metadata table stream that might be referenced from the metadata table stream being emitted. - - - - - Exact (unaligned) heap sizes. - - - - - Overall size of metadata stream storage (stream headers, table stream, heaps, additional streams). - Aligned to . - - - - - The size of metadata stream (#- or #~). Aligned. - Aligned to . - - - - - The size of #Pdb stream. Aligned. - - - - - The size of IL stream. - - - - - The size of mapped field data stream. - Aligned to . - - - - - The size of managed resource data stream. - Aligned to . - - - - - Size of strong name hash. - - - - - Metadata header size. - Includes: - - metadata storage signature - - storage header - - stream headers - - - - - Total size of metadata (header and all streams). - - - - - A visitor base class that traverses the object model in depth first, left to right order. - - - - - Use this routine, rather than ITypeReference.Dispatch, to call the appropriate derived overload of an ITypeReference. - The former routine will call Visit(INamespaceTypeDefinition) rather than Visit(INamespaceTypeReference), etc., - in the case where a definition is used as a reference to itself. - - A reference to a type definition. Note that a type definition can serve as a reference to itself. - - - - Use this routine, rather than IUnitReference.Dispatch, to call the appropriate derived overload of an IUnitReference. - The former routine will call Visit(IAssembly) rather than Visit(IAssemblyReference), etc. - in the case where a definition is used as the reference to itself. - - A reference to a unit. Note that a unit can serve as a reference to itself. - - - - A container for static helper methods that are used for manipulating and computing iterators. - - - - - True if the given enumerable is not null and contains at least one element. - - - - - True if the given enumerable is null or contains no elements - - - - - Returns the number of elements in the given enumerable. A null enumerable is allowed and results in 0. - - - - - A declarative specification of a security action applied to a set of permissions. Used by the CLR loader to enforce security restrictions. - Each security attribute represents a serialized permission or permission set for a specified security action. - The union of the security attributes with identical security action, define the permission set to which the security action applies. - - - - - Information about how values of managed types should be marshalled to and from unmanaged types. - - - - - or a string (usually a fully-qualified type name of a type implementing the custom marshaller, but Dev11 allows any string). - - - - - An argument string (cookie) passed to the custom marshaller at run time. - - - - - The unmanaged element type of the unmanaged array. - -1 if it should be omitted from the marshal blob. - - - - - Specifies the index of the parameter that contains the value of the Interface Identifier (IID) of the marshalled object. - -1 if it should be omitted from the marshal blob. - - - - - The unmanaged type to which the managed type will be marshalled. This can be UnmanagedType.CustomMarshaler, in which case the unmanaged type - is decided at runtime. - - - - - The number of elements in the fixed size portion of the unmanaged array. - -1 if it should be omitted from the marshal blob. - - - - - The zero based index of the parameter in the unmanaged method that contains the number of elements in the variable portion of unmanaged array. - If -1, the variable portion is of size zero, or the caller conveys the size of the variable portion of the array to the unmanaged method in some other way. - - - - - The type to which the variant values of all elements of the safe array must belong. See also SafeArrayElementUserDefinedSubtype. - (The element type of a safe array is VARIANT. The "sub type" specifies the value of all of the tag fields (vt) of the element values. ) - -1 if it should be omitted from the marshal blob. - - - - - A reference to the user defined type to which the variant values of all elements of the safe array must belong. - (The element type of a safe array is VARIANT. The tag fields will all be either VT_DISPATCH or VT_UNKNOWN or VT_RECORD. - The "user defined sub type" specifies the type of value the ppdispVal/ppunkVal/pvRecord fields of the element values may point to.) - - - - - Implemented by any entity that has a name. - - - - - The name of the entity. - - - - - The name of the entity depends on other metadata (tokens, signatures) originated from - PeWriter. - - - - - Method must be called before calling INamedEntity.Name. - - - - - Implemented by an entity that is always a member of a particular parameter list, such as an IParameterDefinition. - Provides a way to determine the position where the entity appears in the parameter list. - - - - - The position in the parameter list where this instance can be found. - - - - - This enum is used internally by BCL. It includes flags that are not in the metadata spec. - - - - - Information that describes how a method from the underlying Platform is to be invoked. - - - - - Module providing the method/field. - - - - - Name of the method providing the implementation. - - - - - Flags that determine marshalling behavior. - - - - - A resource file formatted according to Win32 API conventions and typically obtained from a Portable Executable (PE) file. - See the Win32 UpdateResource method for more details. - - - - - A string that identifies what type of resource this is. Only valid if this.TypeId < 0. - - - - - An integer tag that identifies what type of resource this is. If the value is less than 0, this.TypeName should be used instead. - - - - - The name of the resource. Only valid if this.Id < 0. - - - - - An integer tag that identifies this resource. If the value is less than 0, this.Name should be used instead. - - - - - The language for which this resource is appropriate. - - - - - The code page for which this resource is appropriate. - - - - - The data of the resource. - - - - - Represents a lexical scope that declares imports. - - - - - Zero or more used namespaces. These correspond to using directives in C# or Imports syntax in VB. - - - - - Parent import scope, or null. - - - - - Exception to enable callers to catch all of the exceptions originating - from writing PDBs. We resurface such exceptions as this type, to eventually - be reported as PDB-writing failure diagnostics to the user. - Unfortunately, an exception originating in a user-implemented - Stream derivation will come out of the symbol writer as a COMException - missing all of the original exception info. - - - - - A utility to log all operations and arguments to the native PDB writing - library, so that we can hash that log to generate a deterministic GUID and - timestamp. - - - - - Minimal size of PDB path in Debug Directory. We pad the path to this minimal size to - allow some tools to patch the path without the need to rewrite the entire image. - This is a workaround put in place until these tools are retired. - - - - - True if we should attempt to generate a deterministic output (no timestamps or random data). - - - - - Compute a deterministic Guid and timestamp based on the contents of the stream, and replace - the 16 zero bytes at the given position and one or two 4-byte values with that computed Guid and timestamp. - - PE stream. - Position in the stream of 16 zero bytes to be replaced by a Guid - Position in the stream of four zero bytes to be replaced by a timestamp - - - - The size of a single entry in the "Debug Directory (Image Only)" - - - - - The size of our debug directory: one entry for debug information, and an optional second one indicating - that the timestamp is deterministic (i.e. not really a timestamp) - - - - - Write one entry in the "Debug Directory (Image Only)" - See https://msdn.microsoft.com/en-us/windows/hardware/gg463119.aspx - section 5.1.1 (pages 71-72). - - - - - Write the entire "Debug Directory (Image Only)" along with data that it points to. - - - - - Special type <Module> - - - - - This interface models the metadata representation of an array type reference. - - - - - The type of the elements of this array. - - - - - This type of array is a single dimensional array with zero lower bound for index values. - - - - - A possibly empty list of lower bounds for dimension indices. When not explicitly specified, a lower bound defaults to zero. - The first lower bound in the list corresponds to the first dimension. Dimensions cannot be skipped. - - - - - The number of array dimensions. - - - - - A possible empty list of upper bounds for dimension indices. - The first upper bound in the list corresponds to the first dimension. Dimensions cannot be skipped. - An unspecified upper bound means that instances of this type can have an arbitrary upper bound for that dimension. - - - - - Modifies the set of allowed values for a type, or the semantics of operations allowed on those values. - Custom modifiers are not associated directly with types, but rather with typed storage locations for values. - - - - - If true, a language may use the modified storage location without being aware of the meaning of the modification. - - - - - A type used as a tag that indicates which type of modification applies to the storage location. - - - - - Information that describes a method or property parameter, but does not include all the information in a IParameterDefinition. - - - - - The list of custom modifiers, if any, associated with the parameter. Evaluate this property only if IsModified is true. - - - - - True if the parameter is passed by reference (using a managed pointer). - - - - - The CLI spec says that custom modifiers must precede the ByRef type code in the encoding of a parameter. - Unfortunately, the managed C++ compiler emits them in the reverse order. In order to avoid breaking - interop scenarios, we need to support such signatures. - - - - - The type of argument value that corresponds to this parameter. - - - - - The definition of a type parameter of a generic type or method. - - - - - A list of classes or interfaces. All type arguments matching this parameter must be derived from all of the classes and implement all of the interfaces. - - - - - True if all type arguments matching this parameter are constrained to be reference types. - - - - - True if all type arguments matching this parameter are constrained to be value types. - - - - - True if all type arguments matching this parameter are constrained to be value types or concrete classes with visible default constructors. - - - - - Indicates if the generic type or method with this type parameter is co-, contra-, or non variant with respect to this type parameter. - - - - - A reference to the definition of a type parameter of a generic type or method. - - - - - The definition of a type parameter of a generic method. - - - - - The generic method that defines this type parameter. - - - - - A reference to a type parameter of a generic method. - - - - - A reference to the generic method that defines the referenced type parameter. - - - - - A generic type instantiated with a list of type arguments - - - - - The type arguments that were used to instantiate this.GenericType in order to create this type. - - - - - Returns the generic type of which this type is an instance. - Equivalent to Symbol.OriginalDefinition - - - - - The definition of a type parameter of a generic type. - - - - - The generic type that defines this type parameter. - - - - - A reference to a type parameter of a generic type. - - - - - A reference to the generic type that defines the referenced type parameter. - - - - - A reference to a named type, such as an INamespaceTypeReference or an INestedTypeReference. - - - - - The number of generic parameters. Zero if the type is not generic. - - - - - If true, the persisted type name is mangled by appending "`n" where n is the number of type parameters, if the number of type parameters is greater than 0. - - - - - A named type definition, such as an INamespaceTypeDefinition or an INestedTypeDefinition. - - - - - A type definition that is a member of a namespace definition. - - - - - True if the type can be accessed from other assemblies. - - - - - Represents a namespace. - - - - - Containing namespace or null if this namespace is global. - - - - - A reference to a type definition that is a member of a namespace definition. - - - - - A reference to the unit that defines the referenced type. - - - - - Fully qualified name of the containing namespace. - - - - - A type definition that is a member of another type definition. - - - - - A type definition that is a member of another type definition. - - - - - A reference to a type definition that is a specialized nested type. - - - - - A reference to the nested type that has been specialized to obtain this nested type reference. When the containing type is an instance of type which is itself a specialized member (i.e. it is a nested - type of a generic type instance), then the unspecialized member refers to a member from the unspecialized containing type. (I.e. the unspecialized member always - corresponds to a definition that is not obtained via specialization.) - - - - - Models an explicit implementation or override of a base class virtual method or an explicit implementation of an interface method. - - - - - The type that is explicitly implementing or overriding the base class virtual method or explicitly implementing an interface method. - - - - - A reference to the method that provides the implementation. - - - - - The type that is explicitly implementing or overriding the base class virtual method or explicitly implementing an interface method. - - - - - A type reference that has custom modifiers associated with it. For example a reference to the target type of a managed pointer to a constant. - - - - - Returns the list of custom modifiers associated with the type reference. Evaluate this property only if IsModified is true. - - - - - An unmodified type reference. - - - - - This interface models the metadata representation of a pointer to a location in unmanaged memory. - - - - - The type of value stored at the target memory location. - - - - - This interface models the metadata representation of a managed pointer. - Remark: This should be only used in attributes. For other objects like Local variables etc - there is explicit IsReference field that should be used. - - - - - The type of value stored at the target memory location. - - - - - This interface models the metadata representation of a type. - - - - - The byte alignment that values of the given type ought to have. Must be a power of 2. If zero, the alignment is decided at runtime. - - - - - Returns null for interfaces and System.Object. - - - - - Zero or more events defined by this type. - - - - - Zero or more implementation overrides provided by the class. - - - - - Zero or more fields defined by this type. - - - - - Zero or more parameters that can be used as type annotations. - - - - - The number of generic parameters. Zero if the type is not generic. - - - - - True if this type has a non empty collection of SecurityAttributes or the System.Security.SuppressUnmanagedCodeSecurityAttribute. - - - - - Zero or more interfaces implemented by this type. - - - - - True if the type may not be instantiated. - - - - - Is type initialized anytime before first access to static field - - - - - Is this imported from COM type library - - - - - True if this type is parameterized (this.GenericParameters is a non empty collection). - - - - - True if the type is an interface. - - - - - True if this type gets special treatment from the runtime. - - - - - True if this type is serializable. - - - - - True if the type has special name. - - - - - True if the type is a Windows runtime type. - - - A type can me marked as a Windows runtime type in source by applying the WindowsRuntimeImportAttribute. - WindowsRuntimeImportAttribute is a pseudo custom attribute defined as an internal class in System.Runtime.InteropServices.WindowsRuntime namespace. - This is needed to mark Windows runtime types which are redefined in mscorlib.dll and System.Runtime.WindowsRuntime.dll. - These two assemblies are special as they implement the CLR's support for WinRT. - - - - - True if the type may not be subtyped. - - - - - Layout of the type. - - - - - Zero or more methods defined by this type. - - - - - Zero or more nested types defined by this type. - - - - - Zero or more properties defined by this type. - - - - - Declarative security actions for this type. Will be empty if this.HasSecurity is false. - - - - - Size of an object of this type. In bytes. If zero, the size is unspecified and will be determined at runtime. - - - - - Default marshalling of the Strings in this class. - - - - - A reference to a type. - - - - - True if the type is an enumeration (it extends System.Enum and is sealed). Corresponds to C# enum. - - - - - True if the type is a value type. - Value types are sealed and extend System.ValueType or System.Enum. - A type parameter for which MustBeValueType (the struct constraint in C#) is true also returns true for this property. - - - - - The type definition being referred to. - - - - - Unless the value of TypeCode is PrimitiveTypeCode.NotPrimitive, the type corresponds to a "primitive" CLR type (such as System.Int32) and - the type code identifies which of the primitive types it corresponds to. - - - - - TypeDefs defined in modules linked to the assembly being emitted are listed in the ExportedTypes table. - - - - - A enumeration of all of the value types that are built into the Runtime (and thus have specialized IL instructions that manipulate them). - - - - - A single bit. - - - - - An unsigned 16 bit integer representing a Unicode UTF16 code point. - - - - - A signed 8 bit integer. - - - - - A 32 bit IEEE floating point number. - - - - - A 64 bit IEEE floating point number. - - - - - A signed 16 bit integer. - - - - - A signed 32 bit integer. - - - - - A signed 64 bit integer. - - - - - A signed 32 bit integer or 64 bit integer, depending on the native word size of the underlying processor. - - - - - A pointer to fixed or unmanaged memory. - - - - - A reference to managed memory. - - - - - A string. - - - - - An unsigned 8 bit integer. - - - - - An unsigned 16 bit integer. - - - - - An unsigned 32 bit integer. - - - - - An unsigned 64 bit integer. - - - - - An unsigned 32 bit integer or 64 bit integer, depending on the native word size of the underlying processor. - - - - - A type that denotes the absence of a value. - - - - - Not a primitive type. - - - - - Type is a dummy type. - - - - - Enumerates the different kinds of levels of visibility a type member can have. - - - - - The visibility has not been specified. Use the applicable default. - - - - - The member is visible only within its own assembly. - - - - - The member is visible only within its own type and any subtypes. - - - - - The member is visible only within the intersection of its family (its own type and any subtypes) and assembly. - - - - - The member is visible only within the union of its family and assembly. - - - - - The member is visible only to the compiler producing its assembly. - - - - - The member is visible only within its own type. - - - - - The member is visible everywhere its declaring type is visible. - - - - - A mask that can be used to mask out flag bits when the latter are stored in the same memory word as this enumeration. - - - - - Enumerates the different kinds of variance a generic method or generic type parameter may have. - - - - - Two type or method instances are compatible only if they have exactly the same type argument for this parameter. - - - - - A type or method instance will match another instance if it has a type for this parameter that is the same or a subtype of the type the - other instance has for this parameter. - - - - - A type or method instance will match another instance if it has a type for this parameter that is the same or a supertype of the type the - other instance has for this parameter. - - - - - A mask that can be used to mask out flag bits when the latter are stored in the same memory word as the enumeration. - - - - - Represents a .NET assembly. - - - - - A list of the files that constitute the assembly. These are not the source language files that may have been - used to compile the assembly, but the files that contain constituent modules of a multi-module assembly as well - as any external resources. It corresponds to the File table of the .NET assembly file format. - - - - - A set of bits and bit ranges representing properties of the assembly. The value of can be set - from source code via the AssemblyFlags assembly custom attribute. The interpretation of the property depends on the target platform. - - - - - The public part of the key used to encrypt the SHA1 hash over the persisted form of this assembly. Empty or null if not specified. - This value is used by the loader to decrypt an encrypted hash value stored in the assembly, which it then compares with a freshly computed hash value - in order to verify the integrity of the assembly. - - - - - The contents of the AssemblySignatureKeyAttribute - - - - - A reference to a .NET assembly. - - - - - Identifies the culture associated with the assembly reference. Typically specified for satellite assemblies with localized resources. - Empty if not specified. - - - - - True if the implementation of the referenced assembly used at runtime is not expected to match the version seen at compile time. - - - - - Type of code contained in an assembly. Determines assembly binding model. - - - - - The hashed 8 bytes of the public key of the referenced assembly. - Empty if the referenced assembly does not have a public key. - - - - - The version of the assembly reference. - - - - - An object that represents a .NET module. - - - - - Used to distinguish which style to pick while writing native PDB information. - - - The PDB content for custom debug information is different between Visual Basic and CSharp. - E.g. C# always includes a CustomMetadata Header (MD2) that contains the namespace scope counts, where - as VB only outputs namespace imports into the namespace scopes. - C# defines forwards in that header, VB includes them into the scopes list. - - Currently the compiler doesn't allow mixing C# and VB method bodies. Thus this flag can be per module. - It is possible to move this flag to per-method basis but native PDB CDI forwarding would need to be adjusted accordingly. - - - - - Public types defined in other modules making up this assembly and to which other assemblies may refer to via this assembly. - - - - - A list of objects representing persisted instances of types that extend System.Attribute. Provides an extensible way to associate metadata - with this assembly. - - - - - A list of objects representing persisted instances of pairs of security actions and sets of security permissions. - These apply by default to every method reachable from the module. - - - - - A list of the assemblies that are referenced by this module. - - - - - A list of named byte sequences persisted with the assembly and used during execution, typically via .NET Framework helper classes. - - - - - CorLibrary assembly referenced by this module. - - - - - The Assembly that contains this module. If this module is main module then this returns this. - - - - - The method that will be called to start execution of this executable module. - - - - - Returns zero or more strings used in the module. If the module is produced by reading in a CLR PE file, then this will be the contents - of the user string heap. If the module is produced some other way, the method may return an empty enumeration or an enumeration that is a - subset of the strings actually used in the module. The main purpose of this method is to provide a way to control the order of strings in a - prefix of the user string heap when writing out a module as a PE file. - - - - - Returns all top-level (not nested) types defined in the current module. - - - - - The kind of metadata stored in this module. For example whether this module is an executable or a manifest resource file. - - - - - A list of objects representing persisted instances of types that extend System.Attribute. Provides an extensible way to associate metadata - with this module. - - - - - The name of the module. - - - - - A list of the modules that are referenced by this module. - - - - - A list of named byte sequences persisted with the module and used during execution, typically via the Win32 API. - A module will define Win32 resources rather than "managed" resources mainly to present metadata to legacy tools - and not typically use the data in its own code. - - - - - An alternate form the Win32 resources may take. These represent the rsrc$01 and rsrc$02 section data and relocs - from a COFF object file. - - - - - Builds symbol definition to location map used for emitting token -> location info - into PDB to be consumed by WinMdExp.exe tool (only applicable for /t:winmdobj) - - - - - Assembly reference aliases (C# only). - - - - - Linked assembly names to be stored to native PDB (VB only). - - - - - Project level imports (VB only, TODO: C# scripts). - - - - - Default namespace (VB only). - - - - - A reference to a .NET module. - - - - - The Assembly that contains this module. May be null if the module is not part of an assembly. - - - - - A unit of metadata stored as a single artifact and potentially produced and revised independently from other units. - Examples of units include .NET assemblies and modules, as well C++ object files and compiled headers. - - - - - A reference to a instance of . - - - - - Represents a single using directive (Imports clause). - - - - - This is a marker attribute that can be put on an interface to denote that only internal implementations - of that interface should exist. - - -
-
+ + + + Microsoft.CodeAnalysis + + + + + This is a bridge for APIs that are only available on CoreCLR or .NET 4.6 + and NOT on .NET 4.5. The compiler currently targets .NET 4.5 and CoreCLR + so this shim is necessary for switching on the dependent behavior. + + + + + This is a bridge for APIs that are only available on Desktop + and NOT on CoreCLR. The compiler currently targets .NET 4.5 and CoreCLR + so this shim is necessary for switching on the dependent behavior. + + + + + Given a path to an assembly, identifies files in the same directory + that could satisfy the assembly's dependencies. May throw. + + + Dependencies are identified by simply checking the name of an assembly + reference against a file name; if they match the file is considered a + dependency. Other factors, such as version, culture, public key, etc., + are not considered, and so the returned collection may include items that + cannot in fact satisfy the original assembly's dependencies. + + If the file at does not exist or cannot be accessed. + If the file is not an assembly or is somehow corrupted. + + + + Given a path to an assembly, returns its MVID (Module Version ID). + May throw. + + If the file at does not exist or cannot be accessed. + If the file is not an assembly or is somehow corrupted. + + + + Given a path to an assembly, finds the paths to all of its satellite + assemblies. + + If the file at does not exist or cannot be accessed. + If the file is not an assembly or is somehow corrupted. + + + + Given a path to an assembly and a set of paths to possible dependencies, + identifies which of the assembly's references are missing. May throw. + + If the files does not exist or cannot be accessed. + If one of the files is not an assembly or is somehow corrupted. + + + + Given a path to an assembly, returns the for the assembly. + May throw. + + If the file at does not exist or cannot be accessed. + If the file is not an assembly or is somehow corrupted. + + + + Very cheap trivial comparer that never matches the keys, + should only be used in empty dictionaries. + + + + + Compares string based upon their ordinal equality. + We use this comparer for string identifiers because it does exactly what we need and nothing more + The StringComparer.Ordinal as implemented by StringComparer is more complex to support + case sensitive and insensitive compares depending on flags. + It also defers to the default string hash function that might not be the best for our scenarios. + + + + + A simple, forward-only JSON writer to avoid adding dependencies to the compiler. + Used to generate /errorlogger output. + + Does not guarantee well-formed JSON if misused. It is the caller's reponsibility + to balance array/object start/end, to only write key-value pairs to objects and + elements to arrays, etc. + + Takes ownership of the given at construction and handles its disposal. + + + + + A set that returns the inserted values in insertion order. + The mutation operations are not thread-safe. + + + + + An enumerable that yields the set's elements in insertion order. + + + + + Attempts to read all of the requested bytes from the stream into the buffer + + + The number of bytes read. Less than will + only be returned if the end of stream is reached before all bytes can be read. + + + Unlike it is not guaranteed that + the stream position or the output buffer will be unchanged if an exception is + returned. + + + + + Parse the value provided to an MSBuild Feature option into a list of entries. This will + leave name=value in their raw form. + + + + + Find a instance by first probing the contract name and then the name as it + would exist in mscorlib. This helps satisfy both the CoreCLR and Desktop scenarios. + + + + + This type contains the light up scenarios for various platform and runtimes. Any function + in this type can, and is expected to, fail on various platforms. These are light up scenarios + only. + + + + + Full case-insensitive path. + + + + + Last write time (UTC). + + + + + Constructor. + + Full path. + Last write time (UTC). + + + + + + + Initialize the value referenced by in a thread-safe manner. + The value is changed to only if the current value is null. + + Type of value. + Reference to the target location. + The value to use if the target is currently null. + The new value referenced by . Note that this is + nearly always more useful than the usual return from + because it saves another read to . + + + + Initialize the value referenced by in a thread-safe manner. + The value is changed to only if the current value + is . + + Type of value. + Reference to the target location. + The value to use if the target is currently uninitialized. + The uninitialized value. + The new value referenced by . Note that this is + nearly always more useful than the usual return from + because it saves another read to . + + + + Initialize the immutable array referenced by in a thread-safe manner. + + Elemental type of the array. + Reference to the target location. + The value to use if the target is currently uninitialized (default). + The new value referenced by . Note that this is + nearly always more useful than the usual return from + because it saves another read to . + + + + Search a sorted integer array for the target value in O(log N) time. + + The array of integers which must be sorted in ascending order. + The target value. + An index in the array pointing to the position where should be + inserted in order to maintain the sorted order. All values to the right of this position will be + strictly greater than . Note that this may return a position off the end + of the array if all elements are less than or equal to . + + + + The actual number of bytes read can be fewer than the number of bytes requested + if an error occurs or if the end of the stream is reached during the read operation. + + + + + NOTE!!! adding duplicates will result in exceptions. + Being concurrent only allows accessing the dictionary without taking locks. + Duplicate keys are still not allowed in the hashtable. + If unsure about adding unique items use APIs such as TryAdd, GetOrAdd, etc... + + + + + A concurrent, simplified HashSet. + + + + + The default concurrency level is 2. That means the collection can cope with up to two + threads making simultaneous modifications without blocking. + Note ConcurrentDictionary's default concurrency level is dynamic, scaling according to + the number of processors. + + + + + Taken from ConcurrentDictionary.DEFAULT_CAPACITY + + + + + The backing dictionary. The values are never used; just the keys. + + + + + Construct a concurrent set with the default concurrency level. + + + + + Construct a concurrent set using the specified equality comparer. + + The equality comparer for values in the set. + + + + Obtain the number of elements in the set. + + The number of elements in the set. + + + + Determine whether the set is empty. + true if the set is empty; otherwise, false. + + + + Determine whether the given value is in the set. + + The value to test. + true if the set contains the specified value; otherwise, false. + + + + Attempts to add a value to the set. + + The value to add. + true if the value was added to the set. If the value already exists, this method returns false. + + + + Attempts to remove a value from the set. + + The value to remove. + true if the value was removed successfully; otherwise false. + + + + Clear the set + + + + + Obtain an enumerator that iterates through the elements in the set. + + An enumerator for the set. + + + + a simple Lisp-like immutable list. Good to use when lists are always accessed from the head. + + + + + Names of well-known XML attributes and elements. + + + + + This method is necessary to avoid an ambiguity between and . + + + + + This method is necessary to avoid an ambiguity between and . + + + + + Convert a boxed primitive (generally of the backing type of an enum) into a ulong. + + + + + + + Implements a few file name utilities that are needed by the compiler. + In general the compiler is not supposed to understand the format of the paths. + In rare cases it needs to check if a string is a valid file name or change the extension + (embedded resources, netmodules, output name). + The APIs are intentionally limited to cover just these rare cases. Do not add more APIs. + + + + + Returns true if the string represents an unqualified file name. + The name may contain any characters but directory and volume separators. + + Path. + + True if is a simple file name, false if it is null or includes a directory specification. + + + + + Returns the offset in where the dot that starts an extension is, or -1 if the path doesn't have an extension. + + + Returns 0 for path ".foo". + Returns -1 for path "foo.". + + + + + Returns an extension of the specified path string. + + + The same functionality as but doesn't throw an exception + if there are invalid characters in the path. + + + + + Removes extension from path. + + + Returns "foo" for path "foo.". + Returns "foo.." for path "foo...". + + + + + Returns path with the extension changed to . + + + Equivalent of + + If is null, returns null. + If path does not end with an extension, the new extension is appended to the path. + If extension is null, equivalent to . + + + + + Returns the position in given path where the file name starts. + + -1 if path is null. + + + + Get file name from path. + + Unlike doesn't check for invalid path characters. + + + + Invoke the underlying HashAlgorithm's TransformBlock operation on the provided data. + + + + + This is how VB Anonymous Types combine hash values for fields. + + + + + This is how VB Anonymous Types combine hash values for fields. + PERF: Do not use with enum types because that involves multiple + unnecessary boxing operations. Unfortunately, we can't constrain + T to "non-enum", so we'll use a more restrictive constraint. + + + + + The offset bias value used in the FNV-1a algorithm + See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + + + + + The generative factor used in the FNV-1a algorithm + See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + + + + + Compute the FNV-1a hash of a sequence of bytes + See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + + The sequence of bytes + The FNV-1a hash of + + + + Compute the FNV-1a hash of a sequence of bytes and determines if the byte + sequence is valid ASCII and hence the hash code matches a char sequence + encoding the same text. + See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + + The sequence of bytes that are likely to be ASCII text. + The length of the sequence. + True if the sequence contains only characters in the ASCII range. + The FNV-1a hash of + + + + Compute the FNV-1a hash of a sequence of bytes + See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + + The sequence of bytes + The FNV-1a hash of + + + + Compute the hashcode of a sub-string using FNV-1a + See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + Note: FNV-1a was developed and tuned for 8-bit sequences. We're using it here + for 16-bit Unicode chars on the understanding that the majority of chars will + fit into 8-bits and, therefore, the algorithm will retain its desirable traits + for generating hash codes. + + The input string + The start index of the first character to hash + The number of characters, beginning with to hash + The FNV-1a hash code of the substring beginning at and ending after characters. + + + + Compute the hashcode of a sub-string using FNV-1a + See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + + The input string + The start index of the first character to hash + The FNV-1a hash code of the substring beginning at and ending at the end of the string. + + + + Compute the hashcode of a string using FNV-1a + See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + + The input string + The FNV-1a hash code of + + + + Compute the hashcode of a string using FNV-1a + See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + + The input string + The FNV-1a hash code of + + + + Compute the hashcode of a sub string using FNV-1a + See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + + The input string as a char array + The start index of the first character to hash + The number of characters, beginning with to hash + The FNV-1a hash code of the substring beginning at and ending after characters. + + + + Compute the hashcode of a single character using the FNV-1a algorithm + See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + Note: In general, this isn't any more useful than "char.GetHashCode". However, + it may be needed if you need to generate the same hash code as a string or + substring with just a single character. + + The character to hash + The FNV-1a hash code of the character. + + + + Combine a string with an existing FNV-1a hash code + See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + + The accumulated hash code + The string to combine + The result of combining with using the FNV-1a algorithm + + + + Combine a char with an existing FNV-1a hash code + See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + + The accumulated hash code + The new character to combine + The result of combining with using the FNV-1a algorithm + + + + Represents a single item or many items. + + + Used when a collection usually contains a single item but sometimes might contain multiple. + + + + + Compares objects based upon their reference identity. + + + + + Checks if the given name is a sequence of valid CLR names separated by a dot. + + + + + Remove one set of leading and trailing double quote characters, if both are present. + + + + + This is basically a lossy cache of strings that is searchable by + strings, string sub ranges, character array ranges or string-builder. + + + + + Represents an ordered sequence of weak references. + + + + + Copies all live references from to . + Assumes that all references prior are alive. + + + + + Returns the number of weak references in this list. + Note that some of them might not point to live objects anymore. + + + + + A COM IStream implementation over memory. Supports just enough for DiaSymReader's PDB writing. + Also tuned for performance: + 1. SetSize (and Seek beyond the length) is very fast and doesn't re-allocate the underlying memory. + 2. Read and Write are optimized to avoid copying (see ) + 3. Allocates in chunks instead of a contiguous buffer to avoid re-alloc and copy costs when growing. + + + + + This is a re-definition of COM's IStream interface. The important change is that + the Read and Write methods take an instead of a byte[] to avoid the + allocation cost when called from native code. + + + + + Null or empty. + + + + + "file" + + + + + ".\file" + + + + + "..\file" + + + + + "\dir\file" + + + + + "C:dir\file" + + + + + "C:\file" or "\\machine" (UNC). + + + + + Get directory name from path. + + + Unlike it + doesn't check for invalid path characters, + + Prefix of path that represents a directory. + + + + Exposed for testing purposes only. + + + + + Returns true if given path is absolute and starts with a drive specification ("C:\"). + + + + + Combines an absolute path with a relative. + + Absolute root path. + Relative path. + + An absolute combined path, or null if is + absolute (e.g. "C:\abc", "\\machine\share\abc"), + relative to the current root (e.g. "\abc"), + or relative to a drive directory (e.g. "C:abc\def"). + + + + + + Combine two paths, the first of which may be absolute. + + First path: absolute, relative, or null. + Second path: relative and non-null. + null, if is null; a combined path, otherwise. + + + + + Determines whether an assembly reference is considered an assembly file path or an assembly name. + used, for example, on values of /r and #r. + + + + + Determines if "path" contains 'component' within itself. + i.e. asking if the path "c:\foo\bar\baz" has component "bar" would return 'true'. + On the other hand, if you had "c:\foo\bar1\baz" then it would not have "bar" as a + component. + + A path contains a component if any file name or directory name in the path + matches 'component'. As such, if you had something like "\\foo" then that would + not have "foo" as a component. That's because here "foo" is the server name portion + of the UNC path, and not an actual directory or file name. + + + + + Resolves relative path and returns absolute path. + The method depends only on values of its parameters and their implementation (for fileExists). + It doesn't itself depend on the state of the current process (namely on the current drive directories) or + the state of file system. + + + Path to resolve. + + + Base file path to resolve CWD-relative paths against. Null if not available. + + + Base directory to resolve CWD-relative paths against if isn't specified. + Must be absolute path. + Null if not available. + + + Sequence of paths used to search for unqualified relative paths. + + + Method that tests existence of a file. + + + The resolved path or null if the path can't be resolved or does not exist. + + + + + Normalizes an absolute path. + + Path to normalize. + + Normalized path. + + + + Used to create a file given a path specified by the user. + paramName - Provided by the Public surface APIs to have a clearer message. Internal API just rethrow the exception + + + + + + + + The 4.5 portable API surface area does not contain many of the APIs Roslyn needs to function. In + particular it lacks APIs to access the file system. The Roslyn project though is constrained + from moving to the 4.6 framework until post VS 2015. + + This puts us in a difficult position. These APIs are necessary for us to have our public API set + in the DLLS we prefer (non Desktop variants) but we can't use them directly when targeting + the 4.5 framework. Putting the APIs into the Desktop variants would create instant legacy for + the Roslyn project that we'd have to maintain forever (even if it was just as assemblies with + only type forward entries). This is not a place we'd like to be in. + + As a compromise we've decided to grab these APIs via reflection for the time being. This is a + *very* unfortunate path to be on but it's a short term solution that sets us up for long term + success. + + This is an unfortunate situation but it will all be removed fairly quickly after RTM and converted + to the proper 4.6 portable contracts. + + Note: Only portable APIs should be present here. + + + + + APIs contained here are proposed for CoreFX but not yet finalized. Their contracts are + subject to change. + + + + + A binder that gathers type/reader mappings during object writing + + + + + A binder that used a predetermine list of types and reader functions. + + + + + A class that reads both primitive values and non-cyclical object graphs from a stream that was constructed using + the ObjectWriter class. + + + + + Read a Boolean value from the stream. This value must have been written using . + + + + + Read a Byte value from the stream. This value must have been written using . + + + + + Read a Char value from the stream. This value must have been written using . + + + + + Read a Decimal value from the stream. This value must have been written using . + + + + + Read a Double value from the stream. This value must have been written using . + + + + + Read a Single value from the stream. This value must have been written using . + + + + + Read a Int32 value from the stream. This value must have been written using . + + + + + Read a Int64 value from the stream. This value must have been written using . + + + + + Read a SByte value from the stream. This value must have been written using . + + + + + Read a Int16 value from the stream. This value must have been written using . + + + + + Read a UInt32 value from the stream. This value must have been written using . + + + + + Read a UInt64 value from the stream. This value must have been written using . + + + + + Read a UInt16 value from the stream. This value must have been written using . + + + + + Read a DateTime value from the stream. This value must have been written using the . + + + + + Read a compressed 30-bit integer value from the stream. This value must have been written using . + + + + + Read a value from the stream. The value must have been written using ObjectWriter.WriteValue. + + + + + Read a String value from the stream. This value must have been written using ObjectWriter.WriteString. + + + + + A class that writes both primitive values and non-cyclical object graphs to a stream that may be + later read back using the ObjectReader class. + + + + + Writes a Boolean value to the stream. + + + + + Writes a Byte value to the stream. + + + + + Writes a Char value to the stream. + + + + + Writes a Decimal value to the stream. + + + + + Writes a Double value to the stream. + + + + + Writes a Single value to the stream. + + + + + Writes a Int32 value to the stream. + + + + + Writes a Int64 value to the stream. + + + + + Writes a SByte value to the stream. + + + + + Writes a Int16 value to the stream. + + + + + Writes a UInt32 value to the stream. + + + + + Writes a UInt64 value to the stream. + + + + + Writes a UInt16 value to the stream. + + + + + Writes a DateTime value to the stream. + + + + + Writes a compressed 30 bit integer to the stream. (not 32 bit) + + + + + Writes a String value to the stream. + + + + + Writes any value (primitive or object graph) to the stream. + + + + + A binder that gathers type/reader mappings during object writing + + + + + A binder that gathers type/reader mappings during object writing + + + + + Generic implementation of object pooling pattern with predefined pool size limit. The main + purpose is that limited number of frequently used objects can be kept in the pool for + further recycling. + + Notes: + 1) it is not the goal to keep all returned objects. Pool is not meant for storage. If there + is no space in the pool, extra returned objects will be dropped. + + 2) it is implied that if object was obtained from a pool, the caller will return it back in + a relatively short time. Keeping checked out objects for long durations is ok, but + reduces usefulness of pooling. Just new up your own. + + Not returning objects to the pool in not detrimental to the pool's work, but is a bad practice. + Rationale: + If there is no intent for reusing the object, do not use pool - just use "new". + + + + + Not using System.Func{T} because this file is linked into the (debugger) Formatter, + which does not have that type (since it compiles against .NET 2.0). + + + + + Produces an instance. + + + Search strategy is a simple linear probing which is chosen for it cache-friendliness. + Note that Free will try to store recycled objects close to the start thus statistically + reducing how far we will typically search. + + + + + Returns objects to the pool. + + + Search strategy is a simple linear probing which is chosen for it cache-friendliness. + Note that Free will try to store recycled objects close to the start thus statistically + reducing how far we will typically search in Allocate. + + + + + Removes an object from leak tracking. + + This is called when an object is returned to the pool. It may also be explicitly + called if an object allocated from the pool is intentionally not being returned + to the pool. This can be of use with pooled arrays if the consumer wants to + return a larger array to the pool than was originally allocated. + + + + + Represents a non source code file. + + + + + Path to the file. + + + + + Returns a with the contents of this file, or null if + there were errors reading the file. + + + + + Errors encountered when trying to read the additional file. Always empty if + has not been called. + + + + + If is set, then will be null. + The only arity in that case will be encoded in the symbol. + + + + + + + + + Case-insensitive operations (mostly comparison) on unicode strings. + + + + + ToLower implements the Unicode lowercase mapping + as described in ftp://ftp.unicode.org/Public/UNIDATA/UnicodeData.txt. + VB uses these mappings for case-insensitive comparison. + + + If is upper case, then this returns its Unicode lower case equivalent. Otherwise, is returned unmodified. + + + + This class seeks to perform the lowercase Unicode case mapping. + + + + + Returns a StringComparer that compares strings according the VB identifier comparison rules. + + + + + Returns a StringComparer that compares strings according the VB identifier comparison rules. + + + + + Determines if two VB identifiers are equal according to the VB identifier comparison rules. + + First identifier to compare + Second identifier to compare + true if the identifiers should be considered the same. + + + + Determines if the string 'value' end with string 'possibleEnd'. + + + + + + + + Compares two VB identifiers according to the VB identifier comparison rules. + + First identifier to compare + Second identifier to compare + -1 if < , 1 if > , 0 if they are equal. + + + + Gets a case-insensitive hash code for VB identifiers. + + identifier to get the hash code for + The hash code for the given identifier + + + + Convert a string to lower case per Unicode + + + + + + + In-place convert string in StringBuilder to lower case per Unicode rules + + + + + + Constructs and caches already created pseudo-methods. + Every compiled module is supposed to have one of this, created lazily + (multidimensional arrays are not common). + + + + + Acquires an array constructor for a given array type + + + + + Acquires an element getter method for a given array type + + + + + Acquires an element setter method for a given array type + + + + + Acquires an element referencer method for a given array type + + + + + Maps {array type, method kind} tuples to implementing pseudo-methods. + + + + + lazily fetches or creates a new array method. + + + + + "newobj ArrayConstructor" is equivalent of "newarr ElementType" + when working with multidimensional arrays + + + + + "call ArrayGet" is equivalent of "ldelem ElementType" + when working with multidimensional arrays + + + + + "call ArrayAddress" is equivalent of "ldelema ElementType" + when working with multidimensional arrays + + + + + "call ArraySet" is equivalent of "stelem ElementType" + when working with multidimensional arrays + + + + + Represents a parameter in an array pseudo-method. + + NOTE: It appears that only number of indices is used for verification, + types just have to be Int32. + Even though actual arguments can be native ints. + + + + + Represents the "value" parameter of the Set pseudo-method. + + NOTE: unlike index parameters, type of the value parameter must match + the actual element type. + + + + + Base of all array methods. They have a lot in common. + + + + + Block is not reachable or reachability analysis + has not been performed. + + + + + Block can be reached either falling through + from previous block or from branch. + + + + + Block is reachable from try or catch but + finally prevents falling through. + + + + + Returns true if this block has a branch label + and is not a "nop" branch. + + + + + Instructions that are not branches. + + + + + The block contains only the final branch or nothing at all + + + + + Updates position of the current block to account for shorter sizes of previous blocks. + + + + + + If possible, changes the branch code of the current block to the short version and + updates the delta correspondingly. + + Position delta created by previous block size reductions. + + + + replaces branches with more compact code if possible. + * same branch as in the next ===> nop + * branch to the next block ===> nop + * branch to ret block ===> ret + * cond branch over uncond branch ===> flip condition, skip next block + * cond branch to equivalent ===> pop args + nop + + + + + Blocks are identical if: + 1) have same regular instructions + 2) lead to unconditional control transfer (no fall through) + 3) branch with the same instruction to the same label + + + + + Returns reversed branch operation for the current block. + If no reverse opcode can be obtained Nop is returned. + + + + + Abstract Execution state. + If we know something interesting about IL stream we put it here. + + + + + Eval stack's high watermark. + + + + + Current evaluation stack depth. + + + + + Record effects of that currently emitted instruction on the eval stack. + + + + + In some cases we have to get a final IL offset during emit phase, for example for + proper emitting sequence points. The problem is that before the builder is realized we + don't know the actual IL offset, but only {block/offset-in-the-block} pair. + + Thus, whenever we need to mark some IL position we allocate a new marker id, store it + in allocatedILMarkers and reference this IL marker in the entity requiring the IL offset. + + IL markers will be 'materialized' when the builder is realized; the resulting offsets + will be put into allocatedILMarkers array. Note that only markers from reachable blocks + are materialized, the rest will have offset -1. + + + + + Realizes method body. + No more data can be added to the builder after this call. + + + + + Gets all scopes that contain variables. + + + + + Gets all scopes that contain variables. + + + + + IL opcodes emitted by this builder. + This includes branch instructions that end blocks except if they are fall-through NOPs. + + This count allows compilers to see if emitting a particular statement/expression + actually produced any instructions. + + Example: a label will not result in any code so when emitting debugging information + an extra NOP may be needed if we want to decorate the label with sequence point. + + + + + Marks blocks that are reachable. + + + + + Marks blocks that are recursively reachable from the given block. + + + + + If a label points to a block that does nothing other than passing to block X, + replaces target label's block with block X. + + + + + + Drops blocks that are not reachable + Returns true if any blocks were dropped + + + + + Marks all blocks unreachable. + + + + + Rewrite any block marked as BlockedByFinally as an "infinite loop". + + + Matches the code generated by the native compiler in + ILGENREC::AdjustBlockedLeaveTargets. + + + + + Returns true if the block has the signature of the special + labeled block that follows a complete try/catch or try/finally. + + + + + Returns true if any branches were optimized (that does not include shortening) + We need this because optimizing a branch may result in unreachable code that needs to be eliminated. + + === Example: + + x = 1; + + if (blah) + { + global = 1; + } + else + { + throw null; + } + + return x; + + === rewrites into + + push 1; + + if (blah) + { + global = 1; + ret; + } + else + { + throw null; + } + + // this ret unreachable now! + // even worse - empty stack is assumed thus the ret is illegal. + ret; + + + + + + Define a sequence point with the given syntax tree and span within it. + + + + + Defines a hidden sequence point. + The effect of this is that debugger will not associate following code + with any source (until it sees a lexically following sequence point). + + This is used for synthetic code that is reachable through labels. + + If such code is not separated from previous sequence point by the means of a hidden sequence point + It looks as a part of the statement that previous sequence point specifies. + As a result, when user steps through the code and goes through a jump to such label, + it will appear as if the jump landed at the beginning of the previous statement. + + NOTE: Also inserted as the first statement of a method that would not otherwise have a leading + sequence point so that step-into will find the method body. + + + + + Define a hidden sequence point at the first statement of + the method so that step-into will find the method body. + + + + + This is called when starting emitting a method for which there is some source. + It is done in case the first sequence point is a hidden point. + Even though hidden points do not have syntax, they need to associate with some document. + + + + + Marks the end of filter condition and start of the actual filter handler. + + + + + Puts local variable into current scope. + + + + + Puts local constant into current scope. + + + + + Mark current IL position with a label + + + + + Primary method for emitting string switch jump table + + switch case labels + fall through label for the jump table + Local holding the value to switch on. + This value has already been loaded onto the execution stack. + + Local holding the hash value of the key for emitting + hash table switch. Hash value has already been computed and loaded into keyHash. + This parameter is null if emitting non hash table switch. + + + Delegate to emit string compare call and conditional branch based on the compare result. + + + Delegate to compute string hash consistent with value of keyHash. + + + + + Primary method for emitting integer switch jump table. + + switch case labels + fall through label for the jump table. + Local or parameter holding the value to switch on. + This value has already been loaded onto the execution stack. + + Primitive type code of switch key. + + + + Finishes filter condition (and starts actual handler portion of the handler). + Returns the last block of the condition. + + + + + Generates code that creates an instance of multidimensional array + + + + + Generates code that loads an element of a multidimensional array + + + + + Generates code that loads an address of an element of a multidimensional array. + + + + + Generates code that stores an element of a multidimensional array. + + + + + Contains information about a label. + + + + + Sometimes we need to know if a label is targeted by conditional branches. + For example optimizer can do optimizations of branches into outer try scopes only + if they are unconditional (because there are no conditional Leave opcodes) + + + + + Used when we see a branch, but label is not yet marked. + + + + + Used when label is marked to the code. + + + + + Gets all scopes that contain variables. + + + + + Returns an ExceptionHandlerRegion for each exception handler clause + beneath the root scope. Each ExceptionHandlerRegion indicates the type + of clause (catch or finally) and the bounds of the try block and clause block. + + + + + Base class for IL scopes where a scope contains IL blocks and other nested + scopes. A scope may represent a scope for variable declarations, an exception + handler clause, or an entire exception handler (multiple clauses). + + + + + Recursively calculates the start and end of the given scope. + Only scopes with locals are actually dumped to the list. + + + + + Recursively calculates the start and end of the given scope. + Only scopes with locals are actually dumped to the list. + + + + + Free any basic blocks owned by this scope or sub-scopes. + + + + + Class that collects content of the scope (blocks, nested scopes, variables etc). + There is one for every opened scope. + + + + + A scope for a single try, catch, or finally clause. If the clause + is a catch clause, ExceptionType will be set. + + + + + A scope for an entire exception handler (a try block with either several + catches or a finally block). Unlike other scopes, this scope contains + nested scopes only, no IL blocks (although nested ExceptionHandlerScopes + for the clauses will contain IL blocks). + + + + + Compares scopes by their start (ascending) and then size (descending). + + + + + These opcodes represent control transfer. + They should not appear inside basic blocks. + + + + + Opcodes that represents a branch to a label. + + + + + Opcodes that represents a branch to a label. + + + + + Debug information maintained for each lambda. + + + The information is emitted to PDB in Custom Debug Information record for a method containing the lambda. + + + + + The syntax offset of the syntax node declaring the lambda (lambda expression) or its body (lambda in a query). + + + + + The ordinal of the closure frame the lambda belongs to, or + if the lambda is static, or + if the lambda is closed over "this" pointer only. + + + + + We need a CCI representation for local constants because they are emitted as locals in + PDB scopes to improve the debugging experience (see LocalScopeProvider.GetConstantsInScope). + + + + . + + + + Creates a new LocalDefinition. + + Local symbol, used by edit and continue only, null otherwise. + Name associated with the slot. + Type associated with the slot. + Slot position in the signature. + Contains the synthesized dynamic attributes of the local + Local kind. + Local id. + Value to emit in the attributes field in the PDB. + Specifies whether slot type should have pinned modifier and whether slot should have byref constraint. + Specifies if the type is Dynamic. + + + + At this level there are two kinds of local variables: + + + Locals - have identities by which consuming code refers to them. + Typical use is a local variable or a compiler generated temp that can be accessed in multiple operations. + Any object can be used as identity. Reference equality is used. + + + Temps - do not have identity. They are borrowed and returned to the free list. + Typical use is a scratch temporary or spilling storage. + + + + + + + Structure that represents a local signature (as in ECMA-335, Partition I, §8.6.1.3 Local signatures). + + + + + Retrieve a local slot by its symbol. + + + + + Release a local slot by its symbol. + Slot is not associated with symbol after this. + + + + + Gets a local slot. + + + + + Frees a local slot. + + + + + An expression that creates an array instance in metadata. Only for use in custom attributes. + + + + + The element type of the array. + + + + + The initial values of the array elements. May be empty. + + + + + An expression that represents a (name, value) pair and that is typically used in method calls, custom attributes and object initializers. + + + + + The name of the parameter or property or field that corresponds to the argument. + + + + + The value of the argument. + + + + + True if the named argument provides the value of a field. + + + + + An expression that results in a System.Type instance. + + + + + The type that will be represented by the System.Type instance. + + + + + Holds on to the method body data. + + + + + This is a list of the using directives that were in scope for this method body. + + + + + Unique identification of an emitted entity (method, lambda, closure) used for debugging purposes (EnC). + + + When used for a synthesized method the ordinal and generation numbers are included its name. + For user defined methods the ordinal is included in Custom Debug Information record attached to the method. + + + + + The index of the method in member list of the containing type, or if undefined. + + + + + The EnC generation the method was defined in (0 is the baseline build). + + + + + This class represents the PermissionSetAttribute specified in source which needs fixup during codegen. + + + PermissionSetAttribute needs fixup when it contains an assignment to the 'File' property as a single named attribute argument. + Fixup performed is ported from SecurityAttributes::FixUpPermissionSetAttribute at ndp\clr\src\vm\securityattributes.cpp. + It involves following steps: + 1) Verifying that the specified file name resolves to a valid path: This is done during binding. + 2) Reading the contents of the file into a byte array. + 3) Convert each byte in the file content into two bytes containing hexadecimal characters (see method ). + 4) Replacing the 'File = fileName' named argument with 'Hex = hexFileContent' argument, where hexFileContent is the converted output from step 3) above. + + + + + Zero or more positional arguments for the attribute constructor. + + + + + A reference to the constructor that will be used to instantiate this custom attribute during execution (if the attribute is inspected via Reflection). + + + + + Zero or more named arguments that specify values for fields and properties of the attribute. + + + + + The number of positional arguments. + + + + + The number of named arguments. + + + + + The type of the attribute. For example System.AttributeUsageAttribute. + + + + + Exception class to enable generating ERR_PermissionSetAttributeFileReadError while reading the file for PermissionSetAttribute fixup. + + + + + TypeDefinition that represents <PrivateImplementationDetails> class. + The main purpose of this class so far is to contain mapped fields and their types. + + + + + Simple struct type with explicit size and no members. + + + + + Definition of a simple field mapped to a metadata block + + + + + Just a default implementation of a type definition. + + + + + Represents a sequence point before translation by #line/ExternalSource directives. + + + + + Some features of the compiler (such as anonymous types, pay-as-you-go, NoPIA, ...) + rely on all referenced symbols to go through translate mechanism. Because by default + symbol translator does not translate some of indirectly referenced symbols, such as + type argument, we have to force translation here + + This class provides unified implementation for this functionality. + + + + + Scope of user-defined variable hoisted to state machine. + + + + + Maintains a list of sequence points in a space efficient way. Most of the time sequence points + occur in the same syntax tree, so optimize for that case. Store a sequence point as an offset, and + position in a syntax tree, then translate to CCI format only on demand. + + Use a ArrayBuilder{RawSequencePoint} to create. + + + + + Create a SequencePointList with the raw sequence points from an ArrayBuilder. + A linked list of instances for each syntax tree is created (almost always of length one). + + + + + Get all the sequence points, possibly mapping them using #line/ExternalSource directives, and mapping + file names to debug documents with the given mapping function. + + Function that maps file paths to CCI debug documents + where sequence points should be deposited + + + + Represents the combination of an IL offset and a source text span. + + + + + Handles storage of strings referenced via tokens in metadata. When items are stored + they are uniquely "associated" with fake token, which is basically a sequential number. + IL gen will use these fake tokens during codegen and later, when actual token values + are known the method bodies will be patched. + To support these two scenarios we need two maps - Item-->uint, and uint-->Item. (the second is really just a list). + + + + + Class for emitting the switch jump table for switch statements with integral governing type + + + + + Switch key for the jump table + + + + + Primitive type of the switch key + + + + + Fall through label for the jump table + + + + + Integral case labels sorted and indexed by their ConstantValue + + + + + Try to merge with the nextBucket. + If merge results in a better bucket than two original ones, merge and return true. + Else don't merge and return false. + + + + + Switch key for the jump table + + + + + Switch case labels + + + + + Fall through label for the jump table + + + + + Delegate to emit string compare call and conditional branch based on the compare result. + + Key to compare + Case constant to compare the key against + Target label to branch to if key = stringConstant + + + + Delegate to compute string hash code. + This piece is language-specific because VB treats "" and null as equal while C# does not. + + + + + Delegate to emit string compare call + + + + + Delegate to emit string hash + + + + + Local storing the key hash value, used for emitting hash table based string switch. + + + + + Dispenser of unique ordinals for synthesized variable names that have the same kind and syntax offset. + + + + + Handles storage of items referenced via tokens in metadata (strings or Symbols). + When items are stored they are uniquely "associated" with fake token, which is basically + a sequential number. + IL gen will use these fake tokens during codegen and later, when actual token values are known + the method bodies will be patched. + To support these two scenarios we need two maps - Item-->uint, and uint-->Item. (the second is really just a list). + + + + + + Returns an index of a slot that stores specified hoisted local variable in the previous generation. + + + + + Number of slots reserved for hoisted local variables. + + + Some of the slots might not be used anymore (a variable might have been deleted or its type changed). + Still, new hoisted variables are assigned slots starting with . + + + + + Returns true and an index of a slot that stores an awaiter of a specified type in the previous generation, if any. + + + + + Number of slots reserved for awaiters. + + + Some of the slots might not be used anymore (the type of an awaiter might have changed). + Still, new awaiters are assigned slots starting with . + + + + + The id of the method, or null if the method wasn't assigned one. + + + + + Finds a closure in the previous generation that corresponds to the specified syntax. + + + See LambdaFrame.AssertIsLambdaScopeSyntax for kinds of syntax nodes that represent closures. + + + + + Finds a lambda in the previous generation that corresponds to the specified syntax. + The is either a lambda syntax ( is false), + or lambda body syntax ( is true). + + + + + A local whose type is represented by a metadata signature instead of a type symbol. + + + Used when emitting a new version of a method during EnC for variables that are no longer used. + + + + + This temp is not interesting to the expression compiler. However, it + may be replaced by an interesting local in a later stage. + + + + + Id that associates an emitted user-defined or long-lived synthesized local variable + with a syntax node that defined it. If a syntax node defines multiple variables it + provides information necessary to identify which one of these variables is it. + + + + + We calculate a "syntax offset" for each user-defined and long-lived synthesized variable. + Every such variable symbol has to be associated with a syntax node (its declarator). + In usual cases this is the textual distance of the declarator from the start of the method body. + It gets a bit complicated when the containing method body is not contiguous (constructors). + If the variable is in the body of the constructor the definition of syntax offset is the same. + If the variable is defined in a constructor initializer or in a member initializer + (this is only possible when declaration expressions or closures in primary constructors are involved) + then the distance is a negative sum of the widths of all the initializers that succeed the declarator + of the variable in the emitted constructor body plus the relative offset of the declarator from + the start of the containing initializer. + + + + + If a single node is a declarator for multiple variables of the same synthesized kind (it can only happen for synthesized variables) + we calculate additional number "ordinal" for such variable. We assign the ordinals to the synthesized variables with the same kind + and syntax offset in the order as they appear in the lowered bound tree. It is important that a valid EnC edit can't change + the ordinal of a synthesized variable. If it could it would need to be assigned a different kind or associated with a different declarator node. + + + + + Stores the results of analyzer execution: + 1. Local and non-local diagnostics, per-analyzer. + 2. Analyzer execution times, if requested. + + + + + Analyzers corresponding to this analysis result. + + + + + Syntax diagnostics reported by the . + + + + + Semantic diagnostics reported by the . + + + + + Compilation diagnostics reported by the . + + + + + Analyzer telemetry info (register action counts and execution times). + + + + + Gets all the diagnostics reported by the given . + + + + + Gets all the diagnostics reported by all the . + + + + + Provides custom values associated with instances using the given computeValue delegate. + + + + + Provides values associated with instances using the given . + + Delegate to compute the value associated with a given instance. + Optional equality comparer to determine equivalent instances that have the same value. + If no comparer is provided, then is used by default. + + + + Provides custom values associated with instances using the given computeValue delegate. + + + + + Provides custom values associated with instances using the given . + + Delegate to compute the value associated with a given instance. + Optional equality comparer to determine equivalent instances that have the same value. + If no comparer is provided, then is used by default. + + + + Wrapper over the core which holds a strong reference to key-value pairs for the lifetime of a compilation that this provider is associated with. + This ensures that values are never re-computed for equivalent keys while analyzing each compilation, improving overall analyzer performance. + + + + + Driver to execute diagnostic analyzers for a given compilation. + It uses a of s to drive its analysis. + + + + + Cached semantic model for the compilation trees. + PERF: This cache enables us to re-use semantic model's bound node cache across analyzer execution and diagnostic queries. + + + + + GetSyntax() for the given SyntaxReference. + + + + + Topmost declaration node for analysis. + + + + + All member declarations within the declaration. + + + + + All descendant nodes for syntax node actions. + + + + + Flag indicating if this is a partial analysis. + + + + + Default analysis mode for generated code. + + + This mode should always guarantee that analyzer action callbacks are enabled for generated code, i.e. is set. + However, the default diagnostic reporting mode is liable to change in future. + + + + + Map from non-concurrent analyzers to the gate guarding callback into the analyzer. + + + + + Map from analyzers to their setting. + + + + + True if all analyzers need to analyze and report diagnostics in generated code - we can assume all code to be non-generated code. + + + + + True if no analyzer needs generated code analysis - we can skip all analysis on a generated code symbol/tree. + + + + + Lazily populated dictionary indicating whether a source file is a generated code file or not - we populate it lazily to avoid realizing all syntax trees in the compilation upfront. + + + + + Lazily populated dictionary from tree to declared symbols with GeneratedCodeAttribute. + + + + + Symbol for . + + + + + Driver task which initializes all analyzers. + This task is initialized and executed only once at start of analysis. + + + + + Flag to indicate if the was successfully started. + + + + + Primary driver task which processes all events, runs analyzer actions and signals completion of at the end. + + + + + Number of worker tasks processing compilation events and executing analyzer actions. + + + + + Events queue for analyzer execution. + + + + + that is fed the diagnostics as they are computed. + + + + + Create an analyzer driver. + + The set of analyzers to include in the analysis + AnalyzerManager to manage analyzers for analyzer host's lifetime. + Delegate to identify if the given trivia is a comment. + + + + Initializes the and related actions maps for the analyzer driver. + It kicks off the task for initialization. + Note: This method must be invoked exactly once on the driver. + + + + + Returns true if all analyzers need to analyze and report diagnostics in generated code - we can assume all code to be non-generated code. + + + + + Attaches a pre-populated event queue to the driver and processes all events in the queue. + + Compilation events to analyze. + Scope of analysis. + An optional object to track partial analysis state. + Cancellation token to abort analysis. + Driver must be initialized before invoking this method, i.e. method must have been invoked and must be non-null. + + + + Attaches event queue to the driver and start processing all events pertaining to the given analysis scope. + + Compilation events to analyze. + Scope of analysis. + Cancellation token to abort analysis. + Driver must be initialized before invoking this method, i.e. method must have been invoked and must be non-null. + + + + Create an and attach it to the given compilation. + + The compilation to which the new driver should be attached. + The set of analyzers to include in the analysis. + Options that are passed to analyzers. + AnalyzerManager to manage analyzers for the lifetime of analyzer host. + Delegate to add diagnostics generated for exceptions from third party analyzers. + Report additional information related to analyzers, such as analyzer execution time. + The new compilation with the analyzer driver attached. + A cancellation token that can be used to abort analysis. + A newly created analyzer driver + + Note that since a compilation is immutable, the act of creating a driver and attaching it produces + a new compilation. Any further actions on the compilation should use the new compilation. + + + + + Returns all diagnostics computed by the analyzers since the last time this was invoked. + If has been completed with all compilation events, then it waits for + task for the driver to finish processing all events and generate remaining analyzer diagnostics. + + + + + Return a task that completes when the driver is initialized. + + + + + Return a task that completes when the driver is done producing diagnostics. + + + + + Returns true if all the diagnostics that can be produced by this analyzer are suppressed through options. + + + + + this hold onto analyzer executor context which will be used later to put context information in analyzer exception if it occurs. + + + + + Contains information about the source of diagnostic suppression. + + + + + of the suppressed diagnostic. + + + + + If the diagnostic was suppressed by an attribute, then returns that attribute. + Otherwise, returns null. + + + + + Stores the results of analyzer execution: + 1. Local and non-local diagnostics, per-analyzer. + 2. Analyzer execution times, if requested. + + + + + Scope for analyzer execution. + This scope could either be the entire compilation for all analyzers (command line build) or + could be scoped to a specific tree/span and/or a subset of analyzers (CompilationWithAnalyzers). + + + + + Syntax trees on which we need to perform syntax analysis. + + + + + True if we need to categorize diagnostics into local and non-local diagnostics and track the analyzer reporting each diagnostic. + + + + + True if we need to perform only syntax analysis for a single tree. + + + + + True if we need to perform analysis for a single tree. + + + + + Stores the partial analysis state for analyzers executed on a specific compilation. + + + Stores the current partial analysis state for an analyzer. + + + + + Stores the partial analysis state for a specific event/symbol/tree for a specific analyzer. + + + + + Current state of analysis. + + + + + Set of completed actions. + + + + + Resets the from to . + This method must be invoked after successful analysis completion AND on analysis cancellation. + + + + + Per-analyzer analysis state map. + The integer value points to the index within the array. + + + + + Per-analyzer analysis state. + + + + + Compilation events corresponding to source tree, that are not completely processed for all analyzers. + Events are dropped as and when they are fully processed by all analyzers. + + + + + Compilation events corresponding to the compilation (compilation start and completed events), that are not completely processed for all analyzers. + + + + + Action counts per-analyzer. + + + + + Cached semantic model for the compilation trees. + PERF: This cache enables us to re-use semantic model's bound node cache across analyzer execution and diagnostic queries. + + + + + Invoke this method at completion of event processing for the given analysis scope. + It updates the analysis state of this event for each analyzer and if the event has been fully processed for all analyzers, then removes it from our event cache. + + + + + Gets pending events for given set of analyzers for the given syntax tree. + + + + + Gets pending events for given set of analyzers for the given syntax tree. + + + + + Gets all pending events for given set of analyzers. + + + Indicates if source events (symbol declared, compilation unit completed event) should be included. + Indicates if compilation wide events (compilation started and completed event) should be included. + + + + Returns true if we have any pending syntax analysis for given analysis scope. + + + + + Returns true if we have any pending symbol analysis for given analysis scope. + + + + + Attempts to start processing a compilation event for the given analyzer. + + + Returns false if the event has already been processed for the analyzer OR is currently being processed by another task. + If true, then it returns a non-null representing partial analysis state for the given event for the given analyzer. + + + + + Marks the given event as fully analyzed for the given analyzer. + + + + + Marks the given event as fully analyzed for the given analyzers. + + + + + Attempts to start processing a symbol for the given analyzer's symbol actions. + + + Returns false if the symbol has already been processed for the analyzer OR is currently being processed by another task. + If true, then it returns a non-null representing partial analysis state for the given symbol for the given analyzer. + + + + + Marks the given symbol as fully analyzed for the given analyzer. + + + + + Attempts to start processing a symbol declaration for the given analyzer's syntax node and code block actions. + + + Returns false if the declaration has already been processed for the analyzer OR is currently being processed by another task. + If true, then it returns a non-null representing partial analysis state for the given declaration for the given analyzer. + + + + + True if the given symbol declaration is fully analyzed. + + + + + Marks the given symbol declaration as fully analyzed for the given analyzer. + + + + + Marks the given symbol declaration as fully analyzed for the given analyzers. + + + + + Marks all the symbol declarations for the given symbol as fully analyzed for all the given analyzers. + + + + + Attempts to start processing a syntax tree for the given analyzer's syntax tree actions. + + + Returns false if the tree has already been processed for the analyzer OR is currently being processed by another task. + If true, then it returns a non-null representing partial syntax analysis state for the given tree for the given analyzer. + + + + + Marks the given tree as fully syntactically analyzed for the given analyzer. + + + + + Marks the given tree as fully syntactically analyzed for the given analyzers. + + + + + State kind of per-analyzer tracking an analyzer's partial analysis state. + An analysis state object can be in one of the following states: + 1. Completely unprocessed: + 2. Currently being processed: + 3. Partially processed by one or more older requests that was either completed or cancelled: + 4. Fully processed: . + + + + + Ready for processing. + Indicates it is either completely unprocessed or partially processed by one or more older requests that was either completed or cancelled. + + + + + Currently being processed. + + + + + Fully processed. + + + + + Stores the partial analysis state for a specific symbol declaration for a specific analyzer. + + + + + Partial analysis state for code block actions executed on the declaration. + + + + + Partial analysis state for operation block actions executed on the declaration. + + + + + Stores the partial analysis state for syntax node actions executed on the declaration. + + + + + Stores the partial analysis state for operation actions executed on the declaration. + + + + + Stores the partial analysis state for code block actions or operation block actions executed on the declaration. + + + + + Stores the partial analysis state for code block actions executed on the declaration. + + + + + Stores the partial analysis state for operation block actions executed on the declaration. + + + + + Contains telemetry info for a specific analyzer, such as count of registered actions, the total execution time, etc. + + + + + Count of registered compilation start actions. + + + + + Count of registered compilation end actions. + + + + + Count of registered compilation actions. + + + + + Count of registered syntax tree actions. + + + + + Count of registered semantic model actions. + + + + + Count of registered symbol actions. + + + + + Count of registered syntax node actions. + + + + + Count of registered code block start actions. + + + + + Count of registered code block end actions. + + + + + Count of registered code block actions. + + + + + Count of registered operation actions. + + + + + Count of registered operation block start actions. + + + + + Count of registered operation block end actions. + + + + + Count of registered operation block actions. + + + + + Total execution time. + + + + + Contains the counts of registered actions for an analyzer. + + + + + Count of registered compilation start actions. + + + + + Count of registered compilation end actions. + + + + + Count of registered compilation actions. + + + + + Count of registered syntax tree actions. + + + + + Count of registered semantic model actions. + + + + + Count of registered symbol actions. + + + + + Count of registered syntax node actions. + + + + + Count of code block start actions. + + + + + Count of code block end actions. + + + + + Count of code block actions. + + + + + Count of Operation actions. + + + + + Count of Operation block start actions. + + + + + Count of Operation block end actions. + + + + + Count of Operation block actions. + + + + + Returns true if there are any actions that need to run on executable code. + + + + + Contains the core execution logic for callbacks into analyzers. + + + + + Creates to execute analyzer actions with given arguments + + Compilation to be used in the analysis. + Analyzer options. + Optional delegate to add non-categorized analyzer diagnostics. + + Optional delegate which is invoked when an analyzer throws an exception. + Delegate can do custom tasks such as report the given analyzer exception diagnostic, report a non-fatal watson for the exception, etc. + + + Optional delegate which is invoked when an analyzer throws an exception as an exception filter. + Delegate can do custom tasks such as crash hosting process to create a dump. + + Delegate to determine if the given analyzer is compiler analyzer. + We need to special case the compiler analyzer at few places for performance reasons. + Analyzer manager to fetch supported diagnostics. + + Delegate to fetch the gate object to guard all callbacks into the analyzer. + It should return a unique gate object for the given analyzer instance for non-concurrent analyzers, and null otherwise. + All analyzer callbacks for non-concurrent analyzers will be guarded with a lock on the gate. + + Delegate to identify if analysis should be skipped on generated code. + Delegate to identify if diagnostic reported while analyzing generated code should be suppressed. + Flag indicating whether we need to log analyzer execution time. + Optional delegate to add categorized local analyzer diagnostics. + Optional delegate to add categorized non-local analyzer diagnostics. + Cancellation token. + + + + Creates to fetch . + + + Optional delegate which is invoked when an analyzer throws an exception. + Delegate can do custom tasks such as report the given analyzer exception diagnostic, report a non-fatal watson for the exception, etc. + + Analyzer manager to fetch supported diagnostics. + Flag indicating whether we need to log analyzer execution time. + Cancellation token. + + + + Executes the for the given analyzer. + + Analyzer to get session wide analyzer actions. + Session scope to store register session wide analyzer actions. + + Note that this API doesn't execute any registered by the Initialize invocation. + Use API + to get execute these actions to get the per-compilation analyzer actions. + + + + + Executes the compilation start actions. + + whose compilation start actions are to be executed. + Compilation scope to store the analyzer actions. + + + + Executes compilation actions or compilation end actions. + + Compilation actions to be executed. + Analyzer whose actions are to be executed. + Compilation event. + Scope for analyzer execution. + An optional object to track analysis state. + + + + Executes the symbol actions on the given symbol. + + Symbol actions to be executed. + Analyzer whose actions are to be executed. + Symbol event to be analyzed. + Delegate to get topmost declaration node for a symbol declaration reference. + Scope for analyzer execution. + An optional object to track analysis state. + Flag indicating if this is a generated code symbol. + + + + Executes the semantic model actions on the given semantic model. + + Semantic model actions to be executed. + Analyzer whose actions are to be executed. + Semantic model to analyze. + Compilation event for semantic model analysis. + Scope for analyzer execution. + An optional object to track analysis state. + Flag indicating if the syntax tree being analyzed is generated code. + + + + Executes the syntax tree actions on the given syntax tree. + + Syntax tree actions to be executed. + Analyzer whose actions are to be executed. + Syntax tree to analyze. + Scope for analyzer execution. + An optional object to track analysis state. + Flag indicating if the syntax tree being analyzed is generated code. + + + + Manages properties of analyzers (such as registered actions, supported diagnostics) for analyzer host's lifetime + and executes the callbacks into the analyzers. + + It ensures the following for the lifetime of analyzer host: + 1) is invoked only once per-analyzer. + 2) is invoked only once per-analyzer. + 3) registered during Initialize are invoked only once per-compilation per- + + + TODO: Consider moving and relevant APIs + out of the AnalyzerManager and into analyzer drivers. + + + + + Gets the default instance of the AnalyzerManager for the lifetime of the analyzer host process. + + + + + Cache descriptors for each diagnostic analyzer. We do this since is + a property rather than metadata. We expect it to be cheap and immutable, but we can't force them to be so, we cache them + and ask only once. + + + + + Get all the analyzer actions to execute for the given analyzer against a given compilation. + The returned actions include the actions registered during method as well as + the actions registered during for the given compilation. + + + + + Returns true if the given analyzer has enabled concurrent execution by invoking . + + + + + Returns for the given analyzer. + If an analyzer hasn't configured generated code analysis, returns . + + + + + Compute and exception handler for the given . + + + + + Return of given . + + + + + This method should be invoked when the analyzer host is disposing off the analyzers. + It unregisters the exception handler hooked up to the descriptors' LocalizableString fields and subsequently removes the cached descriptors for the analyzers. + + + + + Returns true if all the diagnostics that can be produced by this analyzer are suppressed through options. + + + + + The last event placed into a compilation's event queue. + + + + + Flush any cached data in this to minimize space usage (at the possible expense of time later). + The principal effect of this is to free cached information on events that have a . + + + + + The first event placed into a compilation's event queue. + + + + + Options to configure analyzer execution within . + + + + + Options passed to s. + + + + + An optional delegate to be invoked when an analyzer throws an exception. + + + + + An optional delegate to be invoked when an analyzer throws an exception as an exception filter. + + + + + Flag indicating whether analysis can be performed concurrently on multiple threads. + + + + + Flag indicating whether analyzer execution time should be logged. + + + + + Flag indicating whether analyzer diagnostics with should be reported. + + + + + Creates a new . + + Options that are passed to analyzers. + Action to invoke if an analyzer throws an exception. + Flag indicating whether analysis can be performed concurrently on multiple threads. + Flag indicating whether analyzer execution time should be logged. + + + + Creates a new . + + Options that are passed to analyzers. + Action to invoke if an analyzer throws an exception. + Flag indicating whether analysis can be performed concurrently on multiple threads. + Flag indicating whether analyzer execution time should be logged. + Flag indicating whether analyzer diagnostics with should be reported. + + + + Creates a new . + + Options that are passed to analyzers. + Action to invoke if an analyzer throws an exception. + Action to invoke if an analyzer throws an exception as an exception filter. + Flag indicating whether analysis can be performed concurrently on multiple threads. + Flag indicating whether analyzer execution time should be logged. + Flag indicating whether analyzer diagnostics with should be reported. + + + + Queue to store analyzer diagnostics on the . + + + + + Simple diagnostics queue: maintains all diagnostics reported by all analyzers in a single queue. + + + + + Categorized diagnostics queue: maintains separate set of simple diagnostic queues for local semantic, local syntax and non-local diagnostics for every analyzer. + + + + + Scope for setting up analyzers for an entire session, automatically associating actions with analyzers. + + + + + Scope for setting up analyzers for a compilation, automatically associating actions with analyzers. + + + + + Scope for setting up analyzers for a code block, automatically associating actions with analyzers. + + + + + Scope for setting up analyzers for an operation block, automatically associating actions with analyzers. + + + + + Scope for setting up analyzers for an entire session, capable of retrieving the actions. + + + + + Scope for setting up analyzers for a compilation, capable of retrieving the actions. + + + + + Scope for setting up analyzers for a code block, capable of retrieving the actions. + + + + + Actions registered by a particular analyzer. + + + + + Append analyzer actions from to actions from this instance. + + Analyzer actions to append. + + + + An event for each declaration in the program (namespace, type, method, field, parameter, etc). + Note that some symbols may have multiple declarations (namespaces, partial types) and may therefore + have multiple events. + + + + + Lockable object only instance is knowledgeable about. + + + + + Represents analyzers stored in an analyzer assembly file. + + + Analyzer are read from the file, owned by the reference, and doesn't change + since the reference is accessed until the reference object is garbage collected. + + If you need to manage the lifetime of the analyzer reference (and the file stream) explicitly use . + + + + + Creates an AnalyzerFileReference with the given and . + + Full path of the analyzer assembly. + Loader for obtaining the from the + + + + Adds the of of + for all languages defined in this assembly reference. + + + + + Adds the of defined in this assembly reference of given . + + + + + Opens the analyzer dll with the metadata reader and builds a map of language -> analyzer type names. + + The PE image format is invalid. + IO error reading the metadata. + + + + If a specific analyzer failed to load the namespace-qualified name of its type, null otherwise. + + + + + Error message. + + + + + Error code. + + + + + Exception that was thrown while loading the analyzer. May be null. + + + + + DiagnosticAnalyzer for compiler's syntax/semantic/compilation diagnostics. + + + + + Per-compilation DiagnosticAnalyzer for compiler's syntax/semantic/compilation diagnostics. + + + + + Driver to execute diagnostic analyzers for a given compilation. + It uses a of s to drive its analysis. + + + + + Create an analyzer driver. + + The set of analyzers to include in the analysis + A delegate that returns the language-specific kind for a given syntax node + AnalyzerManager to manage analyzers for the lifetime of analyzer host. + Delegate to identify if the given trivia is a comment. + + + + Represents an in-memory analyzer reference image. + + + + + Options passed to . + + + + + A set of additional non-code text files that can be used by analyzers. + + + + + Creates analyzer options to be passed to . + + A set of additional non-code text files that can be used by analyzers. + + + + Returns analyzer options with the given . + + + + + Represents an analyzer assembly reference that contains diagnostic analyzers. + + + Represents a logical location of the analyzer reference, not the content of the reference. + The content might change in time. A snapshot is taken when the compiler queries the reference for its analyzers. + + + + + Full path describing the location of the analyzer reference, or null if the reference has no location. + + + + + Path or name used in error messages to identity the reference. + + + Should not be null. + + + + + A unique identifier for this analyzer reference. + + + Should not be null. + Note that this and serve different purposes. An analyzer reference may not + have a path, but it always has an ID. Further, two analyzer references with different paths may + represent two copies of the same analyzer, in which case the IDs should also be the same. + + + + + Gets all the diagnostic analyzers defined in this assembly reference, irrespective of the language supported by the analyzer. + Use this method only if you need all the analyzers defined in the assembly, without a language context. + In most instances, either the analyzer reference is associated with a project or is being queried for analyzers in a particular language context. + If so, use method. + + + + + Gets all the diagnostic analyzers defined in this assembly reference for the given . + + Language name. + + + + Pool of s used for analyzer execution. + + + + + Contains the partial analysis state per-analyzer. It tracks: + 1. Global set of pending compilation events. This is used to populate the event queue for analyzer execution. + 2. Per-analyzer set of pending compilation events, symbols, declarations, etc. Each of these pending entities has a state object to track partial analysis. + + + + + Builder for storing current, possibly partial, analysis results: + 1. Diagnostics reported by analyzers. + 2. AnalyzerTelemetryInfo. + + + + + Set of exception diagnostics reported for exceptions thrown by the analyzers. + + + + + Lock to track the set of active tasks computing tree diagnostics and task computing compilation diagnostics. + + + + + Used to generate a unique token for each tree diagnostics request. + The token is used to determine the priority of each request. + Each new tree diagnostic request gets an incremented token value and has higher priority over other requests for the same tree. + Compilation diagnostics requests always have the lowest priority. + + + + + Map from active tasks computing tree diagnostics to their token number. + + + + + Pool of event queues to serve each diagnostics request. + + + + + Underlying with a non-null , used to drive analyzer execution. + + + + + Analyzers to execute on the compilation. + + + + + Options to configure analyzer execution. + + + + + An optional cancellation token which can be used to cancel analysis. + Note: This token is only used if the API invoked to get diagnostics doesn't provide a cancellation token. + + + + + Creates a new compilation by attaching diagnostic analyzers to an existing compilation. + + The original compilation. + The set of analyzers to include in future analyses. + Options that are passed to analyzers. + A cancellation token that can be used to abort analysis. + + + + Creates a new compilation by attaching diagnostic analyzers to an existing compilation. + + The original compilation. + The set of analyzers to include in future analyses. + Options to configure analyzer execution. + + + + Returns diagnostics produced by all . + + + + + Returns diagnostics produced by all . + + + + + Returns diagnostics produced by given . + + Analyzers whose diagnostics are required. All the given analyzers must be from the analyzers passed into the constructor of . + Cancellation token. + + + + Executes all and returns the corresponding with all diagnostics and telemetry info. + + + + + Executes the given and returns the corresponding with all diagnostics and telemetry info. + + Analyzers whose analysis results are required. All the given analyzers must be from the analyzers passed into the constructor of . + Cancellation token. + + + + Returns all diagnostics produced by compilation and by all . + + + + + Returns all diagnostics produced by compilation and by all . + + + + + Returns diagnostics produced by compilation actions of all . + + + + + Returns diagnostics produced by compilation actions of given . + + Analyzers whose diagnostics are required. All the given analyzers must be from the analyzers passed into the constructor of . + Cancellation token. + + + + Returns syntax diagnostics produced by all from analyzing the given . + Depending on analyzers' behavior, returned diagnostics can have locations outside the tree, + and some diagnostics that would be reported for the tree by an analysis of the complete compilation + can be absent. + + Syntax tree to analyze. + Cancellation token. + + + + Returns syntax diagnostics produced by given from analyzing the given . + Depending on analyzers' behavior, returned diagnostics can have locations outside the tree, + and some diagnostics that would be reported for the tree by an analysis of the complete compilation + can be absent. + + Syntax tree to analyze. + Analyzers whose diagnostics are required. All the given analyzers must be from the analyzers passed into the constructor of . + Cancellation token. + + + + Returns semantic diagnostics produced by all from analyzing the given , optionally scoped to a . + Depending on analyzers' behavior, returned diagnostics can have locations outside the tree, + and some diagnostics that would be reported for the tree by an analysis of the complete compilation + can be absent. + + Semantic model representing the syntax tree to analyze. + An optional span within the tree to scope analysis. + Cancellation token. + + + + Returns semantic diagnostics produced by all from analyzing the given , optionally scoped to a . + Depending on analyzers' behavior, returned diagnostics can have locations outside the tree, + and some diagnostics that would be reported for the tree by an analysis of the complete compilation + can be absent. + + Semantic model representing the syntax tree to analyze. + An optional span within the tree to scope analysis. + Analyzers whose diagnostics are required. All the given analyzers must be from the analyzers passed into the constructor of . + Cancellation token. + + + + Core method for executing analyzers. + + + + + Given a set of compiler or generated , returns the effective diagnostics after applying the below filters: + 1) specified for the given . + 2) specified for the given . + 3) Diagnostic suppression through applied . + 4) Pragma directives for the given . + + + + + Given a set of compiler or generated , returns the effective diagnostics after applying the below filters: + 1) specified for the given . + 2) specified for the given . + 3) Diagnostic suppression through applied . + 4) Pragma directives for the given . + + + + + Returns true if all the diagnostics that can be produced by this analyzer are suppressed through options. + Analyzer to be checked for suppression. + Compilation options. + + Optional delegate which is invoked when an analyzer throws an exception. + Delegate can do custom tasks such as report the given analyzer exception diagnostic, report a non-fatal watson for the exception, etc. + + + + + + This method should be invoked when the analyzer host is disposing off the given . + It clears the cached internal state (supported descriptors, registered actions, exception handlers, etc.) for analyzers. + + Analyzers whose state needs to be cleared. + + + + Gets telemetry info for the given analyzer, such as count of registered actions, the total execution time (if is true), etc. + + + + + Gets the count of registered actions for the analyzer. + + + + + Gets the execution time for the given analyzer. + + + + + Returns a new compilation with attached diagnostic analyzers. + + Compilation to which analyzers are to be added. + The set of analyzers to include in future analyses. + Options that are passed to analyzers. + A cancellation token that can be used to abort analysis. + + + + Returns a new compilation with attached diagnostic analyzers. + + Compilation to which analyzers are to be added. + The set of analyzers to include in future analyses. + Options to configure analyzer execution within . + + + + Represents an analyzer reference that can't be resolved. + + + For error reporting only, can't be used to reference an analyzer assembly. + + + + + Context for initializing an analyzer. + Analyzer initialization can use an to register actions to be executed at any of: + + + compilation start, + + + compilation end, + + + completion of parsing a code document, + + + completion of semantic analysis of a code document, + + + completion of semantic analysis of a symbol, + + + start of semantic analysis of a method body or an expression appearing outside a method body, + + + completion of semantic analysis of a method body or an expression appearing outside a method body, or + + + completion of semantic analysis of a syntax node. + + + + + + + Register an action to be executed at compilation start. + A compilation start action can register other actions and/or collect state information to be used in diagnostic analysis, + but cannot itself report any s. + + Action to be executed at compilation start. + + + + Register an action to be executed for a complete compilation. + A compilation action reports s about the . + + Action to be executed at compilation end. + + + + Register an action to be executed at completion of semantic analysis of a document, + which will operate on the of the document. A semantic model action + reports s about the model. + + Action to be executed for a document's . + + + + Register an action to be executed at completion of semantic analysis of an with an appropriate Kind. + A symbol action reports s about s. + + Action to be executed for an . + Action will be executed only if an 's Kind matches one of the values. + + + + Register an action to be executed at completion of semantic analysis of an with an appropriate Kind. + A symbol action reports s about s. + + Action to be executed for an . + Action will be executed only if an 's Kind matches one of the values. + + + + Register an action to be executed at the start of semantic analysis of a method body or an expression appearing outside a method body. + A code block start action can register other actions and/or collect state information to be used in diagnostic analysis, + but cannot itself report any s. + + Enum type giving the syntax node kinds of the source language for which the action applies. + Action to be executed at the start of semantic analysis of a code block. + + + + Register an action to be executed after semantic analysis of a method body or an expression appearing outside a method body. + A code block action reports s about code blocks. + + Action to be executed for a code block. + + + + Register an action to be executed at completion of parsing of a code document. + A syntax tree action reports s about the of a document. + + Action to be executed at completion of parsing of a document. + + + + Register an action to be executed at completion of semantic analysis of a with an appropriate Kind. + A syntax node action can report s about s, and can also collect + state information to be used by other syntax node actions or code block end actions. + + Enum type giving the syntax node kinds of the source language for which the action applies. + Action to be executed at completion of semantic analysis of a . + Action will be executed only if a 's Kind matches one of the syntax kind values. + + + + Register an action to be executed at completion of semantic analysis of a with an appropriate Kind. + A syntax node action can report s about s, and can also collect + state information to be used by other syntax node actions or code block end actions. + + Enum type giving the syntax node kinds of the source language for which the action applies. + Action to be executed at completion of semantic analysis of a . + Action will be executed only if a 's Kind matches one of the syntax kind values. + + + + Register an action to be executed at the start of semantic analysis of a method body or an expression appearing outside a method body. + An operation block start action can register other actions and/or collect state information to be used in diagnostic analysis, + but cannot itself report any s. + + Action to be executed at the start of semantic analysis of an operation block. + + + + Register an action to be executed after semantic analysis of a method body or an expression appearing outside a method body. + An operation block action reports s about operation blocks. + + Action to be executed for an operation block. + + + + Register an action to be executed at completion of semantic analysis of an with an appropriate Kind. + An operation action can report s about s, and can also collect + state information to be used by other operation actions or code block end actions. + + Action to be executed at completion of semantic analysis of an . + Action will be executed only if an 's Kind matches one of the operation kind values. + + + + Register an action to be executed at completion of semantic analysis of an with an appropriate Kind. + An operation action can report s about s, and can also collect + state information to be used by other operation actions or code block end actions. + + Action to be executed at completion of semantic analysis of an . + Action will be executed only if an 's Kind matches one of the operation kind values. + + + + Enable concurrent execution of analyzer actions registered by this analyzer. + An analyzer that registers for concurrent execution can have better performance than a non-concurrent analyzer. + However, such an analyzer must ensure that its actions can execute correctly in parallel. + + + Even when an analyzer registers for concurrent execution, certain related actions are *never* executed concurrently. + For example, end actions registered on any analysis unit (compilation, code block, operation block, etc.) are by definition semantically dependent on analysis from non-end actions registered on the same analysis unit. + Hence, end actions are never executed concurrently with non-end actions operating on the same analysis unit. + + + + + Configure analysis mode of generated code for this analyzer. + Non-configured analyzers will default to an appropriate default mode for generated code. + It is recommended for the analyzer to invoke this API with the required setting. + + + + + Attempts to compute or get the cached value provided by the given for the given . + Note that the pair {, } acts as the key. + Reusing the same instance across analyzer actions and/or analyzer instances can improve the overall analyzer performance by avoiding recomputation of the values. + + The type of the value associated with the key. + for which the value is queried. + Provider that computes the underlying value. + Value associated with the key. + Returns true on success, false otherwise. + + + + Flags to configure mode of generated code analysis. + + + + + Disable analyzer action callbacks and diagnostic reporting for generated code. + Analyzer driver will not make callbacks into the analyzer for entities (source files, symbols, etc.) that it classifies as generated code. + Additionally, any diagnostic reported by the analyzer with location in generated code will not be reported. + + + + + Enable analyzer action callbacks for generated code. + Analyzer driver will make callbacks into the analyzer for all entities (source files, symbols, etc.) in the compilation, including generated code. + + + + + Enable reporting diagnostics on generated code. + Analyzer driver will not suppress any analyzer diagnostic based on whether or not it's location is in generated code. + + + + + Context for a compilation start action. + A compilation start action can use a to register actions to be executed at any of: + + + compilation end, + + + completion of parsing a code document, + + + completion of semantic analysis of a code document, + + + completion of semantic analysis of a symbol, + + + start of semantic analysis of a method body or an expression appearing outside a method body, + + + completion of semantic analysis of a method body or an expression appearing outside a method body, or + + + completion of semantic analysis of a syntax node. + + + + + + + that is the subject of the analysis. + + + + + Options specified for the analysis. + + + + + Token to check for requested cancellation of the analysis. + + + + + Register an action to be executed at compilation end. + A compilation end action reports s about the . + + Action to be executed at compilation end. + + + + Register an action to be executed at completion of semantic analysis of a document, + which will operate on the of the document. A semantic model action + reports s about the model. + + Action to be executed for a document's . + + + + Register an action to be executed at completion of semantic analysis of an with an appropriate Kind. + A symbol action reports s about s. + + Action to be executed for an . + Action will be executed only if an 's Kind matches one of the values. + + + + Register an action to be executed at completion of semantic analysis of an with an appropriate Kind. + A symbol action reports s about s. + + Action to be executed for an . + Action will be executed only if an 's Kind matches one of the values. + + + + Register an action to be executed at the start of semantic analysis of a method body or an expression appearing outside a method body. + A code block start action can register other actions and/or collect state information to be used in diagnostic analysis, + but cannot itself report any s. + + Enum type giving the syntax node kinds of the source language for which the action applies. + Action to be executed at the start of semantic analysis of a code block. + + + + Register an action to be executed at the end of semantic analysis of a method body or an expression appearing outside a method body. + A code block action reports s about code blocks. + + Action to be executed for a code block. + + + + Register an action to be executed at the start of semantic analysis of a method body or an expression appearing outside a method body. + An operation block start action can register other actions and/or collect state information to be used in diagnostic analysis, + but cannot itself report any s. + + Action to be executed at the start of semantic analysis of an operation block. + + + + Register an action to be executed after semantic analysis of a method body or an expression appearing outside a method body. + An operation block action reports s about operation blocks. + + Action to be executed for an operation block. + + + + Register an action to be executed at completion of parsing of a code document. + A syntax tree action reports s about the of a document. + + Action to be executed at completion of parsing of a document. + + + + Register an action to be executed at completion of semantic analysis of a with an appropriate Kind. + A syntax node action can report s about s, and can also collect + state information to be used by other syntax node actions or code block end actions. + + Enum type giving the syntax node kinds of the source language for which the action applies. + Action to be executed at completion of semantic analysis of a . + Action will be executed only if a 's Kind matches one of the syntax kind values. + + + + Register an action to be executed at completion of semantic analysis of a with an appropriate Kind. + A syntax node action can report s about s, and can also collect + state information to be used by other syntax node actions or code block end actions. + + Enum type giving the syntax node kinds of the source language for which the action applies. + Action to be executed at completion of semantic analysis of a . + Action will be executed only if a 's Kind matches one of the syntax kind values. + + + + Register an action to be executed at completion of semantic analysis of an with an appropriate Kind. + An operation action can report s about s, and can also collect + state information to be used by other operation actions or code block end actions. + + Action to be executed at completion of semantic analysis of an . + Action will be executed only if an 's Kind matches one of the operation kind values. + + + + Register an action to be executed at completion of semantic analysis of an with an appropriate Kind. + An operation action can report s about s, and can also collect + state information to be used by other operation actions or code block end actions. + + Action to be executed at completion of semantic analysis of an . + Action will be executed only if an 's Kind matches one of the operation kind values. + + + + Attempts to compute or get the cached value provided by the given for the given . + Note that the pair {, } acts as the key. + Reusing the same instance across analyzer actions and/or analyzer instances can improve the overall analyzer performance by avoiding recomputation of the values. + + The type of the value associated with the key. + for which the value is queried. + Provider that computes the underlying value. + Value associated with the key. + Returns true on success, false otherwise. + + + + Attempts to compute or get the cached value provided by the given for the given . + Note that the pair {, } acts as the key. + Reusing the same instance across analyzer actions and/or analyzer instances can improve the overall analyzer performance by avoiding recomputation of the values. + + The type of the value associated with the key. + instance for which the value is queried. + Provider that computes the underlying value. + Value associated with the key. + Returns true on success, false otherwise. + + + + Context for a compilation action or compilation end action. + A compilation action or compilation end action can use a to report s about a . + + + + + that is the subject of the analysis. + + + + + Options specified for the analysis. + + + + + Token to check for requested cancellation of the analysis. + + + + + Report a about a . + + to be reported. + + + + Attempts to compute or get the cached value provided by the given for the given . + Note that the pair {, } acts as the key. + Reusing the same instance across analyzer actions and/or analyzer instances can improve the overall analyzer performance by avoiding recomputation of the values. + + The type of the value associated with the key. + for which the value is queried. + Provider that computes the underlying value. + Value associated with the key. + Returns true on success, false otherwise. + + + + Attempts to compute or get the cached value provided by the given for the given . + Note that the pair {, } acts as the key. + Reusing the same instance across analyzer actions and/or analyzer instances can improve the overall analyzer performance by avoiding recomputation of the values. + + The type of the value associated with the key. + for which the value is queried. + Provider that computes the underlying value. + Value associated with the key. + Returns true on success, false otherwise. + + + + Context for a semantic model action. + A semantic model action operates on the of a code document, and can use a to report s about the model. + + + + + that is the subject of the analysis. + + + + + Options specified for the analysis. + + + + + Token to check for requested cancellation of the analysis. + + + + + Report a about a . + + to be reported. + + + + Context for a symbol action. + A symbol action can use a to report s about an . + + + + + that is the subject of the analysis. + + + + + containing the . + + + + + Options specified for the analysis. + + + + + Token to check for requested cancellation of the analysis. + + + + + Report a about an . + + to be reported. + + + + Context for a code block start action. + A code block start action can use a to register actions to be executed + at any of: + + + completion of semantic analysis of a method body or an expression appearing outside a method body, or + + + completion of semantic analysis of a syntax node. + + + + + + + Method body or expression subject to analysis. + + + + + for which the code block provides a definition or value. + + + + + that can provide semantic information about the s in the code block. + + + + + Options specified for the analysis. + + + + + Token to check for requested cancellation of the analysis. + + + + + Register an action to be executed at the end of semantic analysis of a method body or an expression appearing outside a method body. + A code block end action reports s about code blocks. + + Action to be executed at the end of semantic analysis of a code block. + + + + Register an action to be executed at completion of semantic analysis of a with an appropriate Kind. + A syntax node action can report s about s, and can also collect + state information to be used by other syntax node actions or code block end actions. + + Action to be executed at completion of semantic analysis of a . + Action will be executed only if a 's Kind matches one of the syntax kind values. + + + + Register an action to be executed at completion of semantic analysis of a with an appropriate Kind. + A syntax node action can report s about s, and can also collect + state information to be used by other syntax node actions or code block end actions. + + Action to be executed at completion of semantic analysis of a . + Action will be executed only if a 's Kind matches one of the syntax kind values. + + + + Context for a code block action or code block end action. + A code block action or code block end action can use a to report s about a code block. + + + + + Code block that is the subject of the analysis. + + + + + for which the code block provides a definition or value. + + + + + that can provide semantic information about the s in the code block. + + + + + Options specified for the analysis. + + + + + Token to check for requested cancellation of the analysis. + + + + + Report a about a code block. + + to be reported. + + + + Context for an operation block start action. + An operation block start action can use an to register actions to be executed + at any of: + + + completion of semantic analysis of a method body or an expression appearing outside a method body, or + + + completion of semantic analysis of an operation. + + + + + + + Method body and/or expressions subject to analysis. + + + + + for which the code block provides a definition or value. + + + + + containing the operation block. + + + + + Options specified for the analysis. + + + + + Token to check for requested cancellation of the analysis. + + + + + Register an action to be executed at the end of semantic analysis of a method body or an expression appearing outside a method body. + A code block end action reports s about code blocks. + + Action to be executed at the end of semantic analysis of a code block. + + + + Register an action to be executed at completion of semantic analysis of an operation with an appropriate Kind. + An operation action can report s about s, and can also collect + state information to be used by other operation actions or operation block end actions. + + Action to be executed at completion of semantic analysis of an . + Action will be executed only if an 's Kind matches one of the operation kind values. + + + + Register an action to be executed at completion of semantic analysis of an with an appropriate Kind. + An operation action can report s about s, and can also collect + state information to be used by other operation actions or operation block end actions. + + Action to be executed at completion of semantic analysis of an . + Action will be executed only if an 's Kind matches one of the operation kind values. + + + + Context for an operation block action or operation block end action. + An operation block action or operation block end action can use an to report s about an operation block. + + + + + Code block that is the subject of the analysis. + + + + + for which the code block provides a definition or value. + + + + + containing the operation block. + + + + + Options specified for the analysis. + + + + + Token to check for requested cancellation of the analysis. + + + + + Report a about a code block. + + to be reported. + + + + Context for a syntax tree action. + A syntax tree action can use a to report s about a for a code document. + + + + + that is the subject of the analysis. + + + + + Options specified for the analysis. + + + + + Token to check for requested cancellation of the analysis. + + + + + Report a about a . + + to be reported. + + + + Context for a syntax node action. + A syntax node action can use a to report s for a . + + + + + that is the subject of the analysis. + + + + + for the declaration containing the syntax node. + + + + + that can provide semantic information about the . + + + + + containing the . + + + + + Options specified for the analysis. + + + + + Token to check for requested cancellation of the analysis. + + + + + Report a about a . + + to be reported. + + + + Context for an operation action. + An operation action can use an to report s for an . + + + + + that is the subject of the analysis. + + + + + for the declaration containing the operation. + + + + + containing the . + + + + + Options specified for the analysis. + + + + + Token to check for requested cancellation of the analysis. + + + + + Report a about a . + + to be reported. + + + + The base type for diagnostic analyzers. + + + + + Returns a set of descriptors for the diagnostics that this analyzer is capable of producing. + + + + + Called once at session start to register actions in the analysis context. + + + + + + A queue whose enqueue and dequeue operations can be performed in parallel. + + The type of values kept by the queue. + + + + The number of unconsumed elements in the queue. + + + + + Adds an element to the tail of the queue. This method will throw if the queue + is completed. + + The queue is already completed. + The value to add. + + + + Tries to add an element to the tail of the queue. This method will return false if the queue + is completed. + + The value to add. + + + + Attempts to dequeue an existing item and return whether or not it was available. + + + + + Gets a value indicating whether the queue has completed. + + + + + Signals that no further elements will be enqueued. All outstanding and future + Dequeue Task will be cancelled. + + The queue is already completed. + + + + Same operation as except it will not + throw if the queue is already completed. + + Whether or not the operation succeeded. + + + + Gets a task that transitions to a completed state when or + is called. This transition will not happen synchronously. + + This Task will not complete until it has completed all existing values returned + from . + + + + + Gets a task whose result is the element at the head of the queue. If the queue + is empty, the returned task waits for an element to be enqueued. If + is called before an element becomes available, the returned task is cancelled. + + + + + + Note: The early cancellation behavior is intentional. + + + + + Place this attribute onto a type to cause it to be considered a diagnostic analyzer. + + + + + The source languages to which this analyzer applies. See . + + + + + Attribute constructor used to specify automatic application of a diagnostic analyzer. + + One language to which the analyzer applies. + Additional languages to which the analyzer applies. See . + + + + Implements a map from an assembly identity to a value. The map allows to look up the value by an identity + that either exactly matches the original identity key, or corresponds to a key with the lowest version among identities + with higher version than the requested identity key. + + + + + Represents a visitor that visits only the single IOperation + passed into its Visit method. + + + + + Represents a visitor that visits only the single IOperation + passed into its Visit method with an additional argument of the type specified by the + parameter and produces a value of the type specified by + the parameter. + + + The type of the additional argument passed to this visitor's Visit method. + + + The type of the return value of this visitor's Visit method. + + + + + Represents a that descends an entire tree + visiting each IOperation and its child IOperation nodes in depth-first order. + + + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Arguments of the invocation, excluding the instance argument. Arguments are in parameter order, + and params/ParamArray arguments have been collected into arrays. Default values are supplied for + optional arguments missing in source. + + + + + Find the argument supplied for a given parameter of the target method. + + Parameter of the target method. + Argument corresponding to the parameter. + + + + Represents a C# or VB method invocation. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Method to be invoked. + + + + + 'This' or 'Me' instance to be supplied to the method, or null if the method is static. + + + + + True if the invocation uses a virtual mechanism, and false otherwise. + + + + + Arguments of the invocation, excluding the instance argument. Arguments are in the order specified in source, + and params/ParamArray arguments have been collected into arrays. Arguments are not present + unless supplied in source. + + + + + Represents an argument in a method invocation. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Kind of argument. + + + + + Parameter the argument matches. + + + + + Value supplied for the argument. + + + + + Conversion applied to the argument value passing it into the target method. Applicable only to VB Reference arguments. + + + + + Conversion applied to the argument value after the invocation. Applicable only to VB Reference arguments. + + + + + Kinds of arguments. + + + + + Argument is specified positionally and matches the parameter of the same ordinality. + + + + + Argument is specified by name and matches the parameter of the same name. + + + + + Argument becomes an element of an array that matches a trailing C# params or VB ParamArray parameter. + + + + + Argument was omitted in source but has a default value supplied automatically. + + + + + Represents a reference to an array element. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Array to be indexed. + + + + + Indices that specify an individual element. + + + + + Represents a reference through a pointer. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Pointer to be dereferenced. + + + + + Represents a reference to a declared local variable. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Referenced local variable. + + + + + Represents a reference to a parameter. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Referenced parameter. + + + + + Represents a reference to a local variable synthesized by language analysis. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Kind of the synthetic local. + + + + + Statement defining the lifetime of the synthetic local. + + + + + Kinds of synthetic local references. + + + + + Created to capture the step value of a VB for loop. + + + + + Created to capture the limit value of a VB for loop. + + + + + Represents a C# this or base expression, or a VB Me, MyClass, or MyBase expression. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + + Kind of instance reference. + + + + Indicates an implicit this or Me expression. + + + Indicates an explicit this or Me expression. + + + Indicates an explicit base or MyBase expression. + + + Indicates an explicit MyClass expression. + + + + Represents a reference to a member of a class, struct, or interface. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Instance of the type. Null if the reference is to a static/shared member. + + + + + Referenced member. + + + + + Represents a reference to a field. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Referenced field. + + + + + Represents a reference to a method other than as the target of an invocation. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Referenced method. + + + + + Indicates whether the reference uses virtual semantics. + + + + + Represents a reference to a property. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Referenced property. + + + + + Represents a reference to an indexed property. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Represents a reference to an event. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Referenced event. + + + + + Represents a binding of an event. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Event being bound. + + + + + Instance used to refer to the event being bound. + + + + + Handler supplied for the event. + + + + + True for adding a binding, false for removing one. + + + + + Represents an expression that includes a ? or ?. conditional access instance expression. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Expression to be evaluated if the conditional instance is non null. + + + + + Expresson that is conditionally accessed. + + + + + Represents the value of a conditionally-accessed expression within an expression containing a conditional access. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Represents a general placeholder when no more specific kind of placeholder is available. + A placeholder is an expression whose meaning is inferred from context. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Represents a unary, binary, relational, or conversion operation that can use an operator method. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + True if and only if the operation is performed by an operator method. + + + + + Operation method used by the operation, null if the operation does not use an operator method. + + + + + Represents an operation with one operand. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Kind of unary operation. + + + + + Single operand. + + + + + Kinds of unary operations. + + + + + Represents an operation with two operands that produces a result with the same type as at least one of the operands. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Kind of binary operation. + + + + + Left operand. + + + + + Right operand. + + + + + Kinds of binary operations. + + + + + Get unary operation kind independent of data type. + + + + + Get unary operation kind independent of data type. + + + + + Get unary operand kind. + + + + + Get unary operand kind. + + + + + Get binary operation kind independent of data type. + + + + + Get binary operation kind independent of data type. + + + + + Get binary operand kinds. + + + + + Get binary operand kinds. + + + + + Represents a conversion operation. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Value to be converted. + + + + + Kind of conversion. + + + + + True if and only if the conversion is indicated explicity by a cast operation in the source code. + + + + + Kinds of conversions. + + + + + Conversion is defined by the underlying type system and throws an exception if it fails. + + + + + Conversion is defined by the underlying type system and produces a null result if it fails. + + + + + Conversion has VB-specific semantics. + + + + + Conversion has C#-specific semantics. + + + + + Conversion is implemented by a conversion operator method. + + + + + Conversion is invalid. + + + + + Represents a C# ?: or VB If expression. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Condition to be tested. + + + + + Value evaluated if the Condition is true. + + + + + Value evaluated if the Condition is false. + + + + + Represents a null-coalescing expression. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Value to be unconditionally evaluated. + + + + + Value to be evaluated if Primary evaluates to null/Nothing. + + + + + Represents an expression that tests if a value is of a specific type. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Value to test. + + + + + Type for which to test. + + + + + Represents an expression operating on a type. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Type operand. + + + + + Represents a SizeOf expression. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Represents a TypeOf expression. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Represents a lambda expression. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Signature of the lambda. + + + + + Body of the lambda. + + + + + Represents a textual literal numeric, string, etc. expression. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Textual representation of the literal. + + + + + Represents an await expression. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Value to be awaited. + + + + + Represents an expression that creates a pointer value by taking the address of a reference. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Addressed reference. + + + + + Represents a new/New expression. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Constructor to be invoked on the created instance. + + + + + Explicitly-specified member initializers. + + + + + Represents an initializer for a field, property, or parameter. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Represents an initialization of a field. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Initialized fields. There can be multiple fields for Visual Basic fields declared with As New. + + + + + Represents an initialization of a property. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Set method used to initialize the property. + + + + + Represents an initialization of a parameter at the point of declaration. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Initialized parameter. + + + + + Represents the creation of an array instance. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Element type of the created array instance. + + + + + Sizes of the dimensions of the created array instance. + + + + + Values of elements of the created array instance. + + + + + Represents the initialization of an array instance. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Values to initialize array elements. + + + + + Represents an assignment expression. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Target of the assignment. + + + + + Value to be assigned to the target of the assignment. + + + + + Represents an assignment expression that includes a binary operation. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Kind of binary operation. + + + + + Represents an increment expression. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Kind of increment. + + + + + Represents a parenthesized expression. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Operand enclosed in parentheses. + + + + + Represents a late-bound reference to a member of a class or struct. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Instance used to bind the member reference. + + + + + Name of the member. + + + + + Represents an argument value that has been omitted in an invocation. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Represents a block scope. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Statements contained within the block. + + + + + Local declarations contained within the block. + + + + + Represents a local variable declaration statement. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Variables declared by the statement. + + + + + Represents a local variable declaration. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Variable declared by the declaration. + + + + + Initializer of the variable. + + + + + Represents a C# switch or VB Select Case statement. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Value to be switched upon. + + + + + Cases of the switch. + + + + + Represents a C# case or VB Case statement. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Clauses of the case. For C# there is one clause per case, but for VB there can be multiple. + + + + + Statements of the case. + + + + + Represents a clause of a C# case or a VB Case. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Kind of the clause. + + + + + Kinds of cases. + + + + + Indicates case x in C# or Case x in VB. + + + + + Indicates Case Is op x in VB. + + + + + Indicates Case x To Y in VB. + + + + + Indicates default in C# or Case Else in VB. + + + + + Represents case x in C# or Case x in VB. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Case value. + + + + + Relational operator used to compare the switch value with the case value. + + + + + Represents Case Is op x in VB. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Case value. + + + + + Relational operator used to compare the switch value with the case value. + + + + + Represents Case x To y in VB. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Minimum value of the case range. + + + + + Maximum value of the case range. + + + + + Represents an if statement in C# or an If statement in VB. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Condition of the if statement. For C# there is naturally one clause per if, but for VB If statements with multiple clauses are rewritten to have only one. + + + + + Statement executed if the condition is true. + + + + + Statement executed if the condition is false. + + + + + Represents a C# while, for, foreach, or do statement, or a VB While, For, For Each, or Do statement. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Kind of the loop. + + + + + Body of the loop. + + + + + Kinds of loops. + + + + + Indicates a C# while or do loop, or a VB While or Do loop. + + + + + Indicates a C# for loop or a VB For loop. + + + + + Indicates a C# foreach loop or a VB For Each loop. + + + + + Represents a C# while, for, or do statement, or a VB While, For, or Do statement. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Condition of the loop. + + + + + Represents a C# while or do statement, or a VB While or Do statement. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + True if the loop test executes at the top of the loop; false if the loop test executes at the bottom of the loop. + + + + + True if the loop is a while loop; false if the loop is an until loop. + + + + + Represents a C# for statement or a VB For statement. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Statements to execute before entry to the loop. For C# these come from the first clause of the for statement. For VB these initialize the index variable of the For statement. + + + + + Statements to execute at the bottom of the loop. For C# these come from the third clause of the for statement. For VB these increment the index variable of the For statement. + + + + + Declarations local to the loop. + + + + + Represents a C# foreach statement or a VB For Each staement. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Iteration variable of the loop. + + + + + Collection value over which the loop iterates. + + + + + Represents a C# or VB label statement. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Label that can be the target of branches. + + + + + Statement that has been labeled. + + + + + Represents a C# goto, break, or continue statement, or a VB GoTo, Exit ***, or Continue *** statement + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Label that is the target of the branch. + + + + + Kind of the branch. + + + + + Represents a C# throw or a VB Throw statement. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Value to be thrown. + + + + + Represents a C# return or a VB Return statement. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Value to be returned. + + + + + Represents a C# lock or a VB SyncLock statement. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Value to be locked. + + + + + Body of the lock, to be executed while holding the lock. + + + + + Represents a C# try or a VB Try statement. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Body of the try, over which the handlers are active. + + + + + Catch clauses of the try. + + + + + Finally handler of the try. + + + + + Represents a C# catch or VB Catch clause. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Body of the exception handler. + + + + + Type of exception to be handled. + + + + + Filter expression to be executed to determine whether to handle the exception. + + + + + Symbol for the local catch variable bound to the caught exception. + + + + + Represents a C# using or VB Using statement. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Body of the using, over which the resources of the using are maintained. + + + + + Declaration introduced by the using statement. Null if the using statement does not declare any variables. + + + + + Resource held by the using. Can be null if Declaration is not null. + + + + + Represents a C# fixed staement. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Variables to be fixed. + + + + + Body of the fixed, over which the variables are fixed. + + + + + Represents a C# or VB statement that consists solely of an expression. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Expression of the statement. + + + + + Represents a VB With statement. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Body of the with. + + + + + Value to whose members leading-dot-qualified references within the with body bind. + + + + + Reprsents an empty statement. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Represents a VB Stop statement. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Represents a VB End statemnt. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Represents a syntactically or semantically invalid C# or VB statement. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + A set of utilities for converting from a decimal floating-point literal string to its IEEE float + or double representation, which coniders all digits signficant and correctly rounds according to + the IEEE round-to-nearest-ties-to-even mode. This code does not support a leading sign character, + as that is not part of the C# or VB floating-point literal lexical syntax. + + If you change this code, please run the set of long-running random tests in the solution + RandomRealParserTests.sln. That solution is not included in Roslyn.sln as it is Windows-specific. + + + + + Try parsing a correctly-formatted double floating-point literal into the nearest representable double + using IEEE round-to-nearest-ties-to-even rounding mode. Behavior is not defined for inputs that are + not valid C# floating-point literals. + + The decimal floating-point constant's string + The nearest double value, if conversion succeeds + True if the input was converted; false if there was an overflow + + + + Try parsing a correctly-formatted float floating-point literal into the nearest representable float + using IEEE round-to-nearest-ties-to-even rounding mode. Behavior is not defined for inputs that are + not valid C# floating-point literals. + + The float floating-point constant's string + The nearest float value, if conversion succeeds + True if the input was converted; false if there was an overflow + + + + Properties of an IEEE floating-point representation. + + + + + Converts the floating point value 0.mantissa * 2^exponent into the + correct form for the FloatingPointType and stores the bits of the resulting value + into the result object. + The caller must ensure that the mantissa and exponent are correctly computed + such that either [1] the most significant bit of the mantissa is in the + correct position for the FloatingType, or [2] the exponent has been correctly + adjusted to account for the shift of the mantissa that will be required. + + This function correctly handles range errors and stores a zero or infinity in + the result object on underflow and overflow errors, respectively. This + function correctly forms denormal numbers when required. + + If the provided mantissa has more bits of precision than can be stored in the + result object, the mantissa is rounded to the available precision. Thus, if + possible, the caller should provide a mantissa with at least one more bit of + precision than is required, to ensure that the mantissa is correctly rounded. + (The caller should not round the mantissa before calling this function.) + + The bits of the mantissa + The exponent + Whether there are any nonzero bits past the supplied mantissa + Where the bits of the floating-point number are stored + A status indicating whether the conversion succeeded and why + + + + Properties of a C# float. + + + + + Properties of a C# double. + + + + + This type is used to hold a partially-parsed string representation of a + floating point number. The number is stored in the following form: +
+                0.Mantissa * 10^Exponent
+             
+ The Mantissa buffer stores the mantissa digits as characters in a string. + The MantissaCount gives the number of digits present in the Mantissa buffer. + There shall be neither leading nor trailing zero digits in the Mantissa. + Note that this represents only nonnegative floating-point literals; the + negative sign in C# and VB is actually a separate unary negation operator. +
+
+ + + Create a DecimalFloatingPointString from a string representing a floating-point literal. + + The text of the floating-point literal + + + + Convert a DecimalFloatingPointString to the bits of the given floating-point type. + + + + + This function is part of the fast track for integer floating point strings. + It takes an integer stored as an array of bytes (lsb first) and converts the value into its FloatingType + representation, storing the bits into "result". If the value is not + representable, +/-infinity is stored and overflow is reported (since this + function only deals with integers, underflow is impossible). + + the bits of the integer, least significant bits first + the number of bits of precision in integerValueAsBytes + whether there are nonzero digits after the decimal + the kind of real number to build + the result + An indicator of the kind of result + + + + Parse a sequence of digits into a BigInteger. + + The DecimalFloatingPointString containing the digits in its Mantissa + The index of the first digit to convert + The index just past the last digit to convert + The BigInteger result + + + + Return the number of significant bits set. + + + + + Return the number of significant bits set. + + + + + Return the number of significant bits set. + + + + + Return the number of significant bits set. + + + + + Computes value / 2^shift, then rounds the result according to the current + rounding mode. By the time we call this function, we will already have + discarded most digits. The caller must pass true for has_zero_tail if + all discarded bits were zeroes. + + The value to shift + The amount of shift + Whether there are any less significant nonzero bits in the value + + + + + Determines whether a mantissa should be rounded up in the + round-to-nearest-ties-to-even mode given [1] the value of the least + significant bit of the mantissa, [2] the value of the next bit after + the least significant bit (the "round" bit) and [3] whether any + trailing bits after the round bit are set. + + The mantissa is treated as an unsigned integer magnitude. + + For this function, "round up" is defined as "increase the magnitude" of the + mantissa. + + the least-significant bit of the representable value + the bit following the least-significant bit + true if there are any (less significant) bits set following roundBit + + + + + Multiply a BigInteger by the given power of two. + + The BigInteger to multiply by a power of two and replace with the product + The power of two to multiply it by + + + + Multiply a BigInteger by the given power of ten. + + The BigInteger to multiply by a power of ten and replace with the product + The power of ten to multiply it by + + + + Convert a float value to the bits of its representation + + + + + Convert the bits of its representation to a float + + + + + A union used to convert between a float and the bits of its representation + + + + + Adds aliases of a specified reference to the merged set of aliases. + Consider the following special cases: + + o {} + {} = {} + If neither reference has any aliases then the result has no aliases. + + o {A} + {} = {A, global} + {} + {A} = {A, global} + + If one and only one of the references has aliases we add the global alias since the + referenced declarations should now be accessible both via existing aliases + as well as unqualified. + + o {A, A} + {A, B, B} = {A, A, B, B} + We preserve dups in each alias array, but avoid making more dups when merging. + + + + + Try to retrieve the public key from a crypto blob. + + + Can be either a PUBLICKEYBLOB or PRIVATEKEYBLOB. The BLOB must /// be unencrypted. + + + + + Represents a source assembly symbol exposed by the compiler. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Interface implemented by any node that is the root 'CompilationUnit' of a . i.e. + any node returned by where + is true will implement this interface. + + This interface provides a common way to both easily find the root of a + given any , as well as a common way for handling the special + that is needed to store all final trivia in a + that is not owned by any other . + + + + + Represents the end of the source file. This may have + (whitespace, comments, directives) attached to it. + + + + + Represents structured trivia that contains skipped tokens. This is implemented by + and + . + + + + + Append chunk to writer (may reuse char array) + + + + + Encoding to use when there is no byte order mark (BOM) on the stream. This encoder may throw a + if the stream contains invalid UTF-8 bytes. + + + + + Encoding to use when UTF-8 fails. We try to find the following, in order, if available: + 1. The default ANSI codepage + 2. CodePage 1252. + 3. Latin1. + + + + + Initializes an instance of from the provided stream. This version differs + from in two ways: + 1. It attempts to minimize allocations by trying to read the stream into a byte array. + 2. If is null, it will first try UTF8 and, if that fails, it will + try CodePage 1252. If CodePage 1252 is not available on the system, then it will try Latin1. + + The stream containing encoded text. + + Specifies an encoding to be used if the actual encoding can't be determined from the stream content (the stream doesn't start with Byte Order Mark). + If not specified auto-detect heuristics are used to determine the encoding. If these heuristics fail the decoding is assumed to be Encoding.Default. + Note that if the stream starts with Byte Order Mark the value of is ignored. + + Hash algorithm used to calculate document checksum. + + The stream content can't be decoded using the specified , or + is null and the stream appears to be a binary file. + + An IO error occurred while reading from the stream. + + + + Try to create a from the given stream using the given encoding. + + The input stream containing the encoded text. The stream will not be closed. + The expected encoding of the stream. The actual encoding used may be different if byte order marks are detected. + The checksum algorithm to use. + Throw if binary (non-text) data is detected. + The decoded from the stream. + The decoder was unable to decode the stream with the given encoding. + + internal for unit testing + + + + + Some streams are easily represented as byte arrays. + + The stream + + The contents of as a byte array or null if the stream can't easily + be read into a byte array. + + + + + If the MemoryStream was created with publiclyVisible=true, then we can access its buffer + directly and save allocations in StreamReader. The input MemoryStream is not closed on exit. + + True if a byte array could be created. + + + + Read the contents of a FileStream into a byte array. + + The FileStream with encoded text. + A byte array filled with the contents of the file. + True if a byte array could be created. + + + + Computes line starts faster given already computed line starts from text before the change. + + + + + A composite of a sequence of s. + + + + + Validates the arguments passed to against the published contract. + + True if should bother to proceed with copying. + + + + Reduces the number of segments toward the target number of segments, + if the number of regments is deemed to be too large (beyond the maximum). + + + + + Determines the segment size to use for call to CombineSegments, that will result in the segment count + being reduced to less than or equal to the target segment count. + + + + + Determines the segment count that would result if the segments of size less than or equal to + the specified segment size were to be combined. + + + + + Combines contiguous segments with lengths that are each less than or equal to the specified segment size. + + + + + Compute total text length and total size of storage buffers held + + + + + Trim excessive inaccessible text. + + + + + A optimized for very large sources. The text is stored as + a list of chunks (char arrays). + + + + + internal for unit testing + + + + + Check for occurrence of two consecutive NUL (U+0000) characters. + This is unlikely to appear in genuine text, so it's a good heuristic + to detect binary files. + + + + + Called from to initialize the . Thereafter, + the collection is cached. + + A new representing the individual text lines. + + + + Immutable representation of a line number and position within a SourceText instance. + + + + + A that represents position 0 at line 0. + + + + + Initializes a new instance of a with the given line and character. + + + The line of the line position. The first line in a file is defined as line 0 (zero based line numbering). + + + The character position in the line. + + or is less than zero. + + + + The line number. The first line in a file is defined as line 0 (zero based line numbering). + + + + + The character position within the line. + + + + + Determines whether two are the same. + + + + + Determines whether two are different. + + + + + Determines whether two are the same. + + The object to compare. + + + + Determines whether two are the same. + + The object to compare. + + + + Provides a hash function for . + + + + + Provides a string representation for . + + 0,10 + + + + Immutable span represented by a pair of line number and index within the line. + + + + + Creates . + + Start position. + End position. + precedes . + + + + Gets the start position of the span. + + + + + Gets the end position of the span. + + + + + Provides a string representation for . + + (0,0)-(5,6) + + + + Specifies a hash algorithms used for hashing source files. + + + + + No algorithm specified. + + + + + Secure Hash Algorithm 1. + + + + + Secure Hash Algorithm 2 with a hash size of 256 bits. + + + + + An abstraction of source text. + + + + + Constructs a from text in a string. + + Text. + + Encoding of the file that the was read from or is going to be saved to. + null if the encoding is unspecified. + If the encoding is not specified the resulting isn't debuggable. + If an encoding-less is written to a file a shall be used as a default. + + + Hash algorithm to use to calculate checksum of the text that's saved to PDB. + + is null. + is not supported. + + + + Constructs a from stream content. + + Stream. The stream must be seekable. + + Data encoding to use if the stream doesn't start with Byte Order Mark specifying the encoding. + if not specified. + + + Hash algorithm to use to calculate checksum of the text that's saved to PDB. + + If the decoded text contains at least two consecutive NUL + characters, then an is thrown. + is null. + + doesn't support reading or seeking. + is not supported. + + If the given encoding is set to use a throwing decoder as a fallback + Two consecutive NUL characters were detected in the decoded text and was true. + An I/O error occurs. + Reads from the beginning of the stream. Leaves the stream open. + + + + Constructs a from a byte array. + + The encoded source buffer. + The number of bytes to read from the buffer. + + Data encoding to use if the encoded buffer doesn't start with Byte Order Mark. + if not specified. + + + Hash algorithm to use to calculate checksum of the text that's saved to PDB. + + If the decoded text contains at least two consecutive NUL + characters, then an is thrown. + The decoded text. + The is null. + The is negative or longer than the . + is not supported. + If the given encoding is set to use a throwing decoder as a fallback + Two consecutive NUL characters were detected in the decoded text and was true. + + + + Decode text from a stream. + + The stream containing encoded text. + The encoding to use if an encoding cannot be determined from the byte order mark. + The actual encoding used. + The decoded text. + If the given encoding is set to use a throwing decoder as a fallback + + + + Decode text from a byte array. + + The byte array containing encoded text. + The count of valid bytes in . + The encoding to use if an encoding cannot be determined from the byte order mark. + The actual encoding used. + The decoded text. + If the given encoding is set to use a throwing decoder as a fallback + + + + Check for occurrence of two consecutive NUL (U+0000) characters. + This is unlikely to appear in genuine text, so it's a good heuristic + to detect binary files. + + + internal for unit testing + + + + + Hash algorithm to use to calculate checksum of the text that's saved to PDB. + + + + + Encoding of the file that the text was read from or is going to be saved to. + null if the encoding is unspecified. + + + If the encoding is not specified the source isn't debuggable. + If an encoding-less is written to a file a shall be used as a default. + + + + + The length of the text in characters. + + + + + The size of the storage representation of the text (in characters). + This can differ from length when storage buffers are reused to represent fragments/subtext. + + + + + Returns a character at given position. + + The position to get the character from. + The character. + When position is negative or + greater than . + + + + Copy a range of characters from this SourceText to a destination array. + + + + + The container of this . + + + + + Gets a that contains the characters in the specified span of this text. + + + + + Returns a that has the contents of this text including and after the start position. + + + + + Write this to a text writer. + + + + + Write a span of text to a text writer. + + + + + Provides a string representation of the SourceText. + + + + + Gets a string containing the characters in specified span. + + When given span is outside of the text range. + + + + Constructs a new SourceText from this text with the specified changes. + + + + + Constructs a new SourceText from this text with the specified changes. + + + + + Returns a new SourceText with the specified span of characters replaced by the new text. + + + + + Returns a new SourceText with the specified range of characters replaced by the new text. + + + + + Gets the set of that describe how the text changed + between this text an older version. This may be multiple detailed changes + or a single change encompassing the entire text. + + + + + Gets the set of that describe how the text changed + between this text and an older version. This may be multiple detailed changes + or a single change encompassing the entire text. + + + + + The collection of individual text lines. + + + + + Called from to initialize the . Thereafter, + the collection is cached. + + A new representing the individual text lines. + + + + Compares the content with content of another . + + + + + Implements equality comparison of the content of two different instances of . + + + + + Detect an encoding by looking for byte order marks. + + A buffer containing the encoded text. + The length of valid data in the buffer. + The length of any detected byte order marks. + The detected encoding or null if no recognized byte order mark was present. + + + + An object that contains an instance of an SourceText and raises events when its current instance + changes. + + + + + The current text instance. + + + + + Raised when the current text instance changes. + + + + + A read-only, non-seekable over a . + + + + + Implementation of based on a input + + + + + Underlying string on which this SourceText instance is based + + + + + Underlying string which is the source of this SourceText instance + + + + + The length of the text represented by . + + + + + Returns a character at given position. + + The position to get the character from. + The character. + When position is negative or + greater than . + + + + Provides a string representation of the StringBuilderText located within given span. + + When given span is outside of the text range. + + + + Implementation of SourceText based on a input + + + + + Underlying string which is the source of this instance + + + + + The length of the text represented by . + + + + + Returns a character at given position. + + The position to get the character from. + The character. + When position is negative or + greater than . + + + + Provides a string representation of the StringText located within given span. + + When given span is outside of the text range. + + + + An that represents a subrange of another . + + + + + Describes a single change when a particular span is replaced with a new text. + + + + + The original span of the changed text. + + + + + The new text. + + + + + Initializes a new instance of + + The original span of the changed text. + The new text. + + + + Provides a string representation for . + + + + + Converts a to a . + + + + + + An empty set of changes. + + + + + Represents state for a TextChanged event. + + + + + Initializes an instance of . + + The text before the change. + The text after the change. + A non-empty set of ranges for the change. + + + + Initializes an instance of . + + The text before the change. + The text after the change. + A non-empty set of ranges for the change. + + + + Gets the text before the change. + + + + + Gets the text after the change. + + + + + Gets the set of ranges for the change. + + + + + Represents the change to a span of text. + + + + + The span of text before the edit which is being changed + + + + + Width of the span after the edit. A 0 here would represent a delete + + + + + Initializes a new instance of . + + + + + + + Compares current instance of to another. + + + + + Compares current instance of to another. + + + + + Provides hash code for current instance of . + + + + + + Determines if two instances of are same. + + + + + Determines if two instances of are different. + + + + + An empty set of changes. + + + + + Collapse a set of s into a single encompassing range. If + the set of ranges provided is empty, an empty range is returned. + + + + + Information about the character boundaries of a single line of text. + + + + + Creates a instance. + + The source text. + The span of the line. + An instance of . + The span does not represent a text line. + + + + Gets the source text. + + + + + Gets the zero-based line number. + + + + + Gets the start position of the line. + + + + + Gets the end position of the line not including the line break. + + + + + Gets the end position of the line including the line break. + + + + + Gets the line span not including the line break. + + + + + Gets the line span including the line break. + + + + + Abstract base class for collections. + + + + + The count of items in the collection + + + + + Gets the item at the specified index. + + + + + The index of the TextLine that encompasses the character position. + + + + + Gets a that encompasses the character position. + + + + + + + Gets a corresponding to a character position. + + + + + Convert a to a . + + + + + Convert a to a position. + + + + + Convert a to . + + + + + Immutable abstract representation of a span of text. For example, in an error diagnostic that reports a + location, it could come from a parsed string, text from a tool editor buffer, etc. + + + + + Creates a TextSpan instance beginning with the position Start and having the Length + specified with . + + + + + Start point of the span. + + + + + End of the span. + + + + + Length of the span. + + + + + Determines whether or not the span is empty. + + + + + Determines whether the position lies within the span. + + + The position to check. + + + true if the position is greater than or equal to Start and strictly less + than End, otherwise false. + + + + + Determines whether falls completely within this span. + + + The span to check. + + + true if the specified span falls completely within this span, otherwise false. + + + + + Determines whether overlaps this span. Two spans are considered to overlap + if they have positions in common and neither is empty. Empty spans do not overlap with any + other span. + + + The span to check. + + + true if the spans overlap, otherwise false. + + + + + Returns the overlap with the given span, or null if there is no overlap. + + + The span to check. + + + The overlap of the spans, or null if the overlap is empty. + + + + + Determines whether intersects this span. Two spans are considered to + intersect if they have positions in common or the end of one span + coincides with the start of the other span. + + + The span to check. + + + true if the spans intersect, otherwise false. + + + + + Determines whether intersects this span. + A position is considered to intersect if it is between the start and + end positions (inclusive) of this span. + + + The position to check. + + + true if the position intersects, otherwise false. + + + + + Returns the intersection with the given span, or null if there is no intersection. + + + The span to check. + + + The intersection of the spans, or null if the intersection is empty. + + + + + Creates a new from and positions as opposed to a position and length. + + The returned TextSpan contains the range with inclusive, + and exclusive. + + + + + Determines if two instances of are the same. + + + + + Determines if two instances of are different. + + + + + Determines if current instance of is equal to another. + + + + + Determines if current instance of is equal to another. + + + + + Produces a hash code for . + + + + + Provides a string representation for . + + + + + Compares current instance of with another. + + + + + Holder for common Text Utility functions and values + + + + + Return startLineBreak = index-1, lengthLineBreak = 2 if there is a \r\n at index-1 + Return startLineBreak = index, lengthLineBreak = 1 if there is a 1-char newline at index + Return startLineBreak = index+1, lengthLineBreak = 0 if there is no newline at index. + + + + + Determine if the character in question is any line break character + + + + + Defines a set of helper methods to classify Unicode characters. + + + + + Returns true if the Unicode character can be a part of an identifier. + + The Unicode character. + + + + Check that the name is a valid Unicode identifier. + + + + + Returns true if the Unicode character is a formatting character (Unicode class Cf). + + The Unicode character. + + + + Returns true if the Unicode character is a formatting character (Unicode class Cf). + + The Unicode character. + + + + A strongly-typed resource class, for looking up localized strings, etc. + + + + + Returns the cached ResourceManager instance used by this class. + + + + + Overrides the current thread's CurrentUICulture property for all + resource lookups using this strongly typed resource class. + + + + + Looks up a localized string similar to Absolute path expected.. + + + + + Looks up a localized string similar to Analyzer Driver Failure. + + + + + Looks up a localized string similar to Analyzer driver threw an exception of type '{0}' with message '{1}'.. + + + + + Looks up a localized string similar to Analyzer driver threw the following exception: + '{0}'.. + + + + + Looks up a localized string similar to Time (s). + + + + + Looks up a localized string similar to Analyzer. + + + + + Looks up a localized string similar to Total analyzer execution time: {0} seconds.. + + + + + Looks up a localized string similar to Argument cannot be empty.. + + + + + Looks up a localized string similar to Argument cannot have a null element.. + + + + + Looks up a localized string similar to Arrays with more than one dimension cannot be serialized.. + + + + + Looks up a localized string similar to assembly. + + + + + Looks up a localized string similar to Assembly file not found. + + + + + Looks up a localized string similar to Assembly must have at least one module.. + + + + + Looks up a localized string similar to Assembly signing not supported.. + + + + + Looks up a localized string similar to Can't alias a module.. + + + + + Looks up a localized string similar to Can't create a reference to a module.. + + + + + Looks up a localized string similar to Can't create a reference to a submission.. + + + + + Looks up a localized string similar to Can't embed interop types from module.. + + + + + Looks up a localized string similar to Can't create a module reference to an assembly.. + + + + + Looks up a localized string similar to Can't create a metadata reference to an assembly without location.. + + + + + Looks up a localized string similar to Can't create a metadata reference to a dynamic assembly.. + + + + + Looks up a localized string similar to The changes must be ordered and not overlapping.. + + + + + Looks up a localized string similar to class. + + + + + Looks up a localized string similar to Win32 resources, assumed to be in COFF object format, have one or more invalid relocation header values.. + + + + + Looks up a localized string similar to Win32 resources, assumed to be in COFF object format, have an invalid section size.. + + + + + Looks up a localized string similar to Win32 resources, assumed to be in COFF object format, have one or more invalid symbol values.. + + + + + Looks up a localized string similar to Win32 resources, assumed to be in COFF object format, are missing one or both of sections '.rsrc$01' and '.rsrc$02'. + + + + + Looks up a localized string similar to Compilation options must not have errors.. + + + + + Looks up a localized string similar to The compilation references multiple assemblies whose versions only differ in auto-generated build and/or revision numbers.. + + + + + Looks up a localized string similar to Analyzer Failure. + + + + + Looks up a localized string similar to Analyzer '{0}' threw an exception of type '{1}' with message '{2}'.. + + + + + Looks up a localized string similar to Analyzer '{0}' threw the following exception: + '{1}'.. + + + + + Looks up a localized string similar to constructor. + + + + + Looks up a localized string similar to delegate. + + + + + Looks up a localized string similar to A DiagnosticDescriptor must have an Id that is neither null nor an empty string nor a string that only contains white space.. + + + + + Looks up a localized string similar to Argument contains duplicate analyzer instances.. + + + + + Looks up a localized string similar to A key in the pathMap is empty.. + + + + + Looks up a localized string similar to Empty or invalid file name. + + + + + Looks up a localized string similar to Empty or invalid resource name. + + + + + Looks up a localized string similar to 'end' must not be less than 'start'. + + + + + Looks up a localized string similar to enum. + + + + + Looks up a localized string similar to event. + + + + + Looks up a localized string similar to Exception occurred with following context: + {0}. + + + + + Looks up a localized string similar to Expected non-empty public key. + + + + + Looks up a localized string similar to Could not locate the rule set file '{0}'.. + + + + + Looks up a localized string similar to field. + + + + + Looks up a localized string similar to File not found.. + + + + + Looks up a localized string similar to File size exceeds maximum allowed size of a valid metadata file.. + + + + + Looks up a localized string similar to {0}.GetMetadata() must return an instance of {1}.. + + + + + Looks up a localized string similar to Icon stream is not in the expected format.. + + + + + Looks up a localized string similar to Inconsistent language versions. + + + + + Looks up a localized string similar to <in-memory assembly>. + + + + + Looks up a localized string similar to <in-memory module>. + + + + + Looks up a localized string similar to interface. + + + + + Looks up a localized string similar to Invalid alias.. + + + + + Looks up a localized string similar to Invalid assembly name: '{0}'. + + + + + Looks up a localized string similar to Invalid characters in assembly culture name. + + + + + Looks up a localized string similar to Invalid characters in assembly name. + + + + + Looks up a localized string similar to Invalid compilation options -- submission can't be signed.. + + + + + Looks up a localized string similar to Invalid content type. + + + + + Looks up a localized string similar to Invalid culture name: '{0}'. + + + + + Looks up a localized string similar to Invalid data at offset {0}: {1}{2}*{3}{4}. + + + + + Looks up a localized string similar to Reported diagnostic has an ID '{0}', which is not a valid identifier.. + + + + + Looks up a localized string similar to Reported diagnostic '{0}' has a source location in file '{1}', which is not part of the compilation being analyzed.. + + + + + Looks up a localized string similar to Invalid hash.. + + + + + Looks up a localized string similar to Invalid module name specified in metadata module '{0}': '{1}'. + + + + + Looks up a localized string similar to Node to track is not a descendant of the root.. + + + + + Looks up a localized string similar to Invalid output kind for submission. DynamicallyLinkedLibrary expected.. + + + + + Looks up a localized string similar to Invalid public key.. + + + + + Looks up a localized string similar to Invalid public key token.. + + + + + Looks up a localized string similar to An error occurred while loading the included rule set file {0} - {1}. + + + + + Looks up a localized string similar to Invalid size of public key token.. + + + + + Looks up a localized string similar to Syntax tree doesn't belong to the underlying 'Compilation'.. + + + + + Looks up a localized string similar to Feature 'IOperation' is disabled.. + + + + + Looks up a localized string similar to Argument to '/keepalive' option is not a 32-bit integer.. + + + + + Looks up a localized string similar to Arguments to '/keepalive' option below -1 are invalid.. + + + + + Looks up a localized string similar to '/keepalive' option is only valid with '/shared' option.. + + + + + Looks up a localized string similar to A key in the pathMap ends with a path separator.. + + + + + Looks up a localized string similar to method. + + + + + Looks up a localized string similar to Roslyn compiler server reports different protocol version than build task.. + + + + + Looks up a localized string similar to Missing argument for '/keepalive' option.. + + + + + Looks up a localized string similar to The item specified is not the element of a list.. + + + + + Looks up a localized string similar to module. + + + + + Looks up a localized string similar to Module copy can't be used to create an assembly metadata.. + + + + + Looks up a localized string similar to NOTE: Elapsed time may be less than analyzer execution time because analyzers can run concurrently.. + + + + + Looks up a localized string similar to Name cannot be empty.. + + + + + Looks up a localized string similar to Name cannot start with whitespace.. + + + + + Looks up a localized string similar to Name contains invalid characters.. + + + + + Looks up a localized string similar to No analyzers found. + + + + + Looks up a localized string similar to Cannot deserialize type '{0}', no binder supplied.. + + + + + Looks up a localized string similar to A node or token is out of sequence.. + + + + + Looks up a localized string similar to Cannot deserialize type '{0}', it has no deserialization reader.. + + + + + Looks up a localized string similar to The type '{0}' cannot be written, it does not implement IObjectWritable. + + + + + Looks up a localized string similar to A value in the pathMap is null.. + + + + + Looks up a localized string similar to Output kind not supported.. + + + + + Looks up a localized string similar to parameter. + + + + + Looks up a localized string similar to Path returned by {0}.ResolveMetadataFile must be absolute: '{1}'. + + + + + Looks up a localized string similar to Path returned by {0}.ResolveStrongNameKeyFile must be absolute: '{1}'. + + + + + Looks up a localized string similar to PE image doesn't contain managed metadata.. + + + + + Looks up a localized string similar to PE image not available.. + + + + + Looks up a localized string similar to Previous submission has errors.. + + + + + Looks up a localized string similar to property, indexer. + + + + + Looks up a localized string similar to Reference resolver should return readable non-null stream.. + + + + + Looks up a localized string similar to Resource data provider should return non-null stream. + + + + + Looks up a localized string similar to Resource stream ended at {0} bytes, expected {1} bytes.. + + + + + Looks up a localized string similar to Resource stream provider should return non-null stream.. + + + + + Looks up a localized string similar to return. + + + + + Looks up a localized string similar to Return type can't be a value type, pointer, by-ref or open generic type. + + + + + Looks up a localized string similar to Return type can't be void, by-ref or open generic type. + + + + + Looks up a localized string similar to The attribute {0} has an invalid value of {1}.. + + + + + Looks up a localized string similar to The rule set file has duplicate rules for '{0}' with differing actions '{1}' and '{2}'.. + + + + + Looks up a localized string similar to The element {0} is missing an attribute named {1}.. + + + + + Looks up a localized string similar to Value for argument '/shared:' must not be empty. + + + + + Looks up a localized string similar to Size has to be positive.. + + + + + Looks up a localized string similar to The span does not include the end of a line.. + + + + + Looks up a localized string similar to The span does not include the start of a line.. + + + + + Looks up a localized string similar to 'start' must not be negative. + + + + + Looks up a localized string similar to Stream must support read and seek operations.. + + + + + Looks up a localized string similar to Stream must be writable.. + + + + + Looks up a localized string similar to struct. + + + + + Looks up a localized string similar to Windows PDB writer is not available -- could not find Microsoft.DiaSymReader.Native.{0}.dll. + + + + + Looks up a localized string similar to Windows PDB writer doesn't support deterministic compilation -- could not find Microsoft.DiaSymReader.Native.{0}.dll. + + + + + Looks up a localized string similar to type must be a subclass of SyntaxAnnotation.. + + + + + Looks up a localized string similar to Type must be same as host object type of previous submission.. + + + + + Looks up a localized string similar to type parameter. + + + + + Looks up a localized string similar to A node in the list is not of the expected type.. + + + + + Looks up a localized string similar to Unresolved: . + + + + + Looks up a localized string similar to Argument contains an analyzer instance that does not belong to the 'Analyzers' for this CompilationWithAnalyzers instance.. + + + + + Looks up a localized string similar to Reported diagnostic with ID '{0}' is not supported by the analyzer.. + + + + + Looks up a localized string similar to Unsupported hash algorithm.. + + + + + Looks up a localized string similar to Value too large to be represented as a 30 bit unsigned integer.. + + + + + Looks up a localized string similar to WindowsRuntime identity can't be retargetable. + + + + + Looks up a localized string similar to References to XML documents are not supported.. + + + + + Maps an array builder to immutable array. + + + + The array to map + The mapping delegate + If the items's length is 0, this will return an empty immutable array + + + + Maps an array builder to immutable array. + + + + + The sequence to map + The mapping delegate + The extra input used by mapping delegate + If the items's length is 0, this will return an empty immutable array. + + + + Create BitArray with at least the specified number of bits. + + + + + return a bit array with all bits set from index 0 through bitCount-1 + + + + + + + Make a copy of a bit array. + + + + + + Is the given bit array null? + + + + + Modify this bit vector by bitwise AND-ing each element with the other bit vector. + For the purposes of the intersection, any bits beyond the current length will be treated as zeroes. + Return true if any changes were made to the bits of this bit vector. + + + + + Modify this bit vector by '|'ing each element with the other bit vector. + + + + + + The CachingLookup class provides a convenient representation of an ILookup that is based + upon a potentially slow lookup, and caches lookup results so that subsequent lookups are + fast. Internally a ConcurrentDictionary is used to cache lookup results. The client provides + two delegates to perform lookups: One that maps a key to a IEnumerable of values, and one + that provides all keys. + + The client must provide an IEqualityComparer used for comparing keys. Failed lookups are + cached, but that has the disadvantage that every different failed lookup will consume a + small amount of extra memory. However, that memory can be reclaimed by forcing a full + population of the cache. + + Thread safe. + + + + + Create a CachingLookup. + + A function that takes a key, and returns an IEnumerable of values that + correspond to that key. If no values correspond, the function may either return null or an empty + IEnumerable. + A function that returns an IEnumerable of all keys that have associated values. + A IEqualityComparer used to compare keys. + + + + Does this key have one or more associated values? + + + + + Get the values associated with a key. + + Key to look up. + All values associated with key. Returns an empty IEnumerable if + no values are associated. Never returns null. + + + + Get the number of distinct keys. + Forces a full population of the cache. + + + + + Enumerate all the keys. + Forces a full population of the cache. + + + + + Add the values from all keys to a flat array. + Forces a full population of the cache. + + + + + + Create an instance of the concurrent dictionary. + + The concurrent dictionary + + + + Create a dictionary instance suitable for use as the fully populated map. + + A new, empty dictionary, suitable for use as the fully populated map. + + + + Use the underlying (possibly slow) functions to get the values associated with a key. + + + + + Add a new value with the given key to the given concurrent map. + + The concurrent map to augment. + The key of the new entry. + The added entry. If there was a race, and another thread beat this one, then this returns the previously added entry. + + + + Determines if the given map is fully populated. + + The map to test. + true if the map is fully populated. + + + + Create the fully populated map from an existing map and the key generator. + + The existing map which may be null or a ConcurrentDictionary. + + + + + Fully populate the underlying dictionary. Once this returns, the dictionary is guaranteed + to have every key in it. + + + + + A MultiDictionary that allows only adding, and preserves the order of values added to the + dictionary. Thread-safe for reading, but not for adding. + + + Always uses the default comparer. + + + + + Add a value to the dictionary. + + + + + Get all values associated with K, in the order they were added. + Returns empty read-only array if no values were present. + + + + + Get a collection of all the keys. + + + + + Each value is either a single V or an . + Never null. + + + + + The usage is: + var inst = PooledStringBuilder.GetInstance(); + var sb = inst.builder; + ... Do Stuff... + ... sb.ToString() ... + inst.Free(); + + + + + A set of ints that is small, thread-safe and lock free. + Several assumptions have been made that allow it to be small and fast: + 1. Deletes never happen. + 2. The size is small. In dogfooding experiments, 89% had 4 or fewer elements and + 98% had 8 or fewer elements. The largest size was 17. + 3. As a result of assumption 2, linear look-up is good enough. + 4. One value, in this case int.MinValue, is used as a sentinel and may never appear in the set. + + + + + Determine if the given integer appears in the set. + + The value to look up. + true if appears in the set. false otherwise. + + + + Insert the given value into the set. + + The value to insert + true if was added. false if it was already present. + + + + If the given slot is unoccupied, then try to replace it with a new value. + + The slot to examine. + The new value to insert if the slot is unoccupied. + An out param indicating whether the slot was successfully updated. + true if the value in the slot either now contains, or already contained . false otherwise. + + + + Extension methods associated with ConsList. + + + + + Returns the only element of specified sequence if it has exactly one, and default(TSource) otherwise. + Unlike doesn't throw if there is more than one element in the sequence. + + + + + A simple class to implement IGrouping. + + + + + A dictionary that maps strings to all known spellings of that string. Can be used to + efficiently store the set of known type names for a module for both VB and C# while also + answering questions like "do you have a type called Foo" in either a case sensitive or + insensitive manner. + + + + + The collection of extension methods for the type + + + + + Converts a sequence to an immutable array. + + Elemental type of the sequence. + The sequence to convert. + An immutable copy of the contents of the sequence. + If items is null (default) + If the sequence is null, this will throw + + + + Converts a sequence to an immutable array. + + Elemental type of the sequence. + The sequence to convert. + An immutable copy of the contents of the sequence. + If the sequence is null, this will return an empty array. + + + + Converts a sequence to an immutable array. + + Elemental type of the sequence. + The sequence to convert. + An immutable copy of the contents of the sequence. + If the sequence is null, this will return the default (null) array. + + + + Converts an array to an immutable array. The array must not be null. + + + The sequence to convert + + + + + Converts a array to an immutable array. + + + The sequence to convert + + If the sequence is null, this will return the default (null) array. + + + + Converts an array to an immutable array. + + + The sequence to convert + If the array is null, this will return an empty immutable array. + + + + Reads bytes from specified . + + The stream. + Read-only content of the stream. + + + + Maps an immutable array to another immutable array. + + + + The array to map + The mapping delegate + If the items's length is 0, this will return an empty immutable array + + + + Maps an immutable array to another immutable array. + + + + + The sequence to map + The mapping delegate + The extra input used by mapping delegate + If the items's length is 0, this will return an empty immutable array. + + + + Maps an immutable array to another immutable array. + + + + + The sequence to map + The mapping delegate + The extra input used by mapping delegate + If the items's length is 0, this will return an empty immutable array. + + + + Creates a new immutable array based on filtered elements by the predicate. The array must not be null. + + + The array to process + The delegate that defines the conditions of the element to search for. + + + + + Casts the immutable array of a Type to an immutable array of its base type. + + + + + Determines whether this instance and another immutable array are equal. + + + + + The comparer to determine if the two arrays are equal. + True if the two arrays are equal + + + + Returns an empty array if the input array is null (default) + + + + + Returns an array of distinct elements, preserving the order in the original array. + If the array has no duplicates, the original array is returned. The original array must not be null. + + + + + Describes a command line analyzer assembly specification. + + + + + Assembly file path. + + + + + Describes a command line metadata reference (assembly or netmodule) specification. + + + + + Metadata file path or an assembly display name. + + + + + Metadata reference properties. + + + + + Describes a source file specification stored on command line arguments. + + + + + Resolved absolute path of the source file (does not contain wildcards). + + + Although this path is absolute it may not be normalized. That is, it may contain ".." and "." in the middle. + + + + + True if the file should be treated as a script file. + + + + + The base class for representing command line arguments to a + . + + + + + Drop to an interactive loop. If a script is specified in executes the script first. + + + + + Directory used to resolve relative paths stored in the arguments. + + + Except for paths stored in , all + paths stored in the properties of this class are resolved and + absolute. This is the directory that relative paths specified on + command line were resolved against. + + + + + A list of pairs of paths. This stores the value of the command-line compiler + option /pathMap:X1=Y1;X2=Y2... which causes a prefix of X1 followed by a path + separator to be replaced by Y1 followed by a path separator, and so on for each following pair. + + + This option is used to help get build-to-build determinism even when the build + directory is different from one build to the next. The prefix matching is case sensitive. + + + + + Sequence of absolute paths used to search for references. + + + + + Sequence of absolute paths used to search for sources specified as #load directives. + + + + + Sequence of absolute paths used to search for key files. + + + + + If true, use UTF8 for output. + + + + + Compilation name or null if not specified. + + + + + Gets the emit options. + + + + + Name of the output file or null if not specified. + + + + + Path of the PDB file or null if same as output binary path with .pdb extension. + + + + + True to emit PDB file. + + + + + Absolute path of the output directory. + + + + + Absolute path of the documentation comment XML file or null if not specified. + + + + + Absolute path of the error log file or null if not specified. + + + + + An absolute path of the app.config file or null if not specified. + + + + + Errors while parsing the command line arguments. + + + + + References to metadata supplied on the command line. + Includes assemblies specified via /r and netmodules specified via /addmodule. + + + + + References to analyzers supplied on the command line. + + + + + A set of additional non-code text files that can be used by analyzers. + + + + + Report additional information related to analyzers, such as analyzer execution time. + + + + + If true, prepend the command line header logo during + . + + + + + If true, append the command line help during + + + + + + The path to a Win32 resource. + + + + + The path to a .ico icon file. + + + + + The path to a Win32 manifest file to embed + into the output portable executable (PE) file. + + + + + If true, do not embed any Win32 manifest, including + one specified by or any + default manifest. + + + + + Resources specified as arguments to the compilation. + + + + + Encoding to be used for source files or 'null' for autodetect/default. + + + + + Hash algorithm to use to calculate source file debug checksums. + + + + + Arguments following a script file or separator "--". Null if the command line parser is not interactive. + + + + + Source file paths. + + + Includes files specified directly on command line as well as files matching patterns specified + on command line using '*' and '?' wildcards or /recurse option. + + + + + Full path of a log of file paths accessed by the compiler, or null if file logging should be suppressed. + + + Two log files will be created: + One with path and extension ".read" logging the files read, + and second with path and extension ".write" logging the files written to during compilation. + + + + + If true, prints the full path of the file containing errors or + warnings in diagnostics. + + + + + Options to the . + + + + + + Options to the . + + + + + Specify the preferred output language name. + + + + + Resolves metadata references stored in using given file resolver and metadata provider. + + to use for assembly name and relative path resolution. + Yields resolved metadata references or . + is null. + + + + Resolves metadata references stored in using given file resolver and metadata provider. + If a non-null diagnostic bag is provided, it catches exceptions that may be generated while reading the metadata file and + reports appropriate diagnostics. + Otherwise, if is null, the exceptions are unhandled. + + + called by CommonCompiler with diagnostics and message provider + + + + + Resolves analyzer references stored in using given file resolver. + + Load an assembly from a file path + Yields resolved or . + + + + Enumerates files in the specified directory and subdirectories whose name matches the given pattern. + + Full path of the directory to enumerate. + File name pattern. May contain wildcards '*' (matches zero or more characters) and '?' (matches any character). + Specifies whether to search the specified only, or all its subdirectories as well. + Sequence of file paths. + + + + Parses a command line. + + A collection of strings representing the command line arguments. + The base directory used for qualifying file locations. + The directory to search for mscorlib, or null if not available. + A string representing additional reference paths. + a object representing the parsed command line. + + + + Trims all '.' and whitespace from the end of the path + + + + + Returns false if any of the client arguments are invalid and true otherwise. + + + The original args to the client. + + + The original args minus the client args, if no errors were encountered. + + + Only defined if no errors were encountered. + True if '/shared' was an argument, false otherwise. + + + Only defined if no errors were encountered. + The value to the '/keepalive' argument if one was specified, null otherwise. + + + Only defined if errors were encountered. + The error message for the encountered error. + + + Only specified if is true and the session key + was provided. Can be null + + + + + Parse a response file into a set of arguments. Errors opening the response file are output into "errors". + + + + + Take a string of lines from a response file, remove comments, + and split into a set of command line arguments. + + + + + Split a command line by the same rules as Main would get the commands except the original + state of backslashes and quotes are preserved. For example in normal Windows command line + parsing the following command lines would produce equivalent Main arguments: + + - /r:a,b + - /r:"a,b" + + This method will differ as the latter will have the quotes preserved. The only case where + quotes are removed is when the entire argument is surrounded by quotes without any inner + quotes. + + + Rules for command line parsing, according to MSDN: + + Arguments are delimited by white space, which is either a space or a tab. + + A string surrounded by double quotation marks ("string") is interpreted + as a single argument, regardless of white space contained within. + A quoted string can be embedded in an argument. + + A double quotation mark preceded by a backslash (\") is interpreted as a + literal double quotation mark character ("). + + Backslashes are interpreted literally, unless they immediately precede a + double quotation mark. + + If an even number of backslashes is followed by a double quotation mark, + one backslash is placed in the argv array for every pair of backslashes, + and the double quotation mark is interpreted as a string delimiter. + + If an odd number of backslashes is followed by a double quotation mark, + one backslash is placed in the argv array for every pair of backslashes, + and the double quotation mark is "escaped" by the remaining backslash, + causing a literal double quotation mark (") to be placed in argv. + + + + + Remove the extraneous quotes and slashes from the argument. This function is designed to have + compat behavior with the native compiler. + + + Mimics the function RemoveQuotes from the native C# compiler. The native VB equivalent of this + function is called RemoveQuotesAndSlashes. It has virtually the same behavior except for a few + quirks in error cases. + + + + + Mimic behavior of the native function by the same name. + + + + + Split a string, based on whether "splitHere" returned true on each character. + + + + + Split a string by a set of separators, taking quotes into account. + + + + + Tries to parse a UInt64 from string in either decimal, octal or hex format. + + The string value. + The result if parsing was successful. + true if parsing was successful, otherwise false. + + + + Tries to parse a UInt16 from string in either decimal, octal or hex format. + + The string value. + The result if parsing was successful. + true if parsing was successful, otherwise false. + + + + Base class for csc.exe, csi.exe, vbc.exe and vbi.exe implementations. + + + + + This implementation of will delay the creation + of the PE / PDB file until the compiler determines the compilation has succeeded. This prevents + the compiler from deleting output from the previous compilation when a new compilation + fails. + + + + + Resolves metadata references stored in command line arguments and reports errors for those that can't be resolved. + + + + + Reads content of a source file. + + Source file information. + Storage for diagnostics. + File content or null on failure. + + + + Reads content of a source file. + + Source file information. + Storage for diagnostics. + If given opens successfully, set to normalized absolute path of the file, null otherwise. + File content or null on failure. + + + + csc.exe and vbc.exe entry point. + + + + + Given a compilation and a destination directory, determine three names: + 1) The name with which the assembly should be output (default = null, which indicates that the compilation output name should be used). + 2) The path of the assembly/module file (default = destination directory + compilation output name). + 3) The path of the pdb file (default = assembly/module path with ".pdb" extension). + + + C# has a special implementation that implements idiosyncratic behavior of csc. + + + + + Test hook for intercepting File.Open. + + + + + When overridden by a derived class, this property can override the current thread's + CurrentUICulture property for diagnostic message resource lookups. + + + + + The string returned from this function represents the inputs to the compiler which impact determinism. It is + meant to be inline with the specification here: + + - https://github.com/dotnet/roslyn/blob/master/docs/compilers/Deterministic%20Inputs.md + + Issue #8193 tracks filling this out to the full specification. + + https://github.com/dotnet/roslyn/issues/8193 + + + + + Looks for metadata references among the assembly file references given to the compilation when constructed. + When scripts are included into a project we don't want #r's to reference other assemblies than those + specified explicitly in the project references. + + + + + Used for logging all compiler diagnostics into a given . + This logger is responsible for closing the given stream on . + It is incorrect to use the logger concurrently from multiple threads. + + The log format is SARIF (Static Analysis Results Interchange Format) + https://sarifweb.azurewebsites.net + https://github.com/sarif-standard/sarif-spec + + + + + Represents a distinct set of s and provides unique string keys + to distinguish them. + + The first added with a given + value is given that value as its unique key. Subsequent adds with the same ID will have .NNN + apppended to their with an auto-incremented numeric value. + + + + + The total number of descriptors in the set. + + + + + Adds a descriptor to the set if not already present. + + + The unique key assigned to the given descriptor. + + + + + Converts the set to a list of (key, descriptor) pairs sorted by key. + + + + + Compares descriptors by the values that we write to the log and nothing else. + + We cannot just use 's built-in implementation + of for two reasons: + + 1. is part of that built-in + equatability, but we do not write it out, and so descriptors differing only + by MessageFormat (common) would lead to duplicate rule metadata entries in + the log. + + 2. is *not* part of that built-in + equatability, but we do write them out, and so descriptors differening only + by CustomTags (rare) would cause only one set of tags to be reported in the + log. + + + + + Used for logging all the paths which are "touched" (used) in any way + in the process of compilation. + + + + + Adds a fully-qualified path to the Logger for a read file. + Semantics are undefined after a call to . + + + + + Adds a fully-qualified path to the Logger for a written file. + Semantics are undefined after a call to . + + + + + Adds a fully-qualified path to the Logger for a read and written + file. Semantics are undefined after a call to + . + + + + + Writes all of the paths the TouchedFileLogger to the given + TextWriter in upper case. After calling this method the + logger is in an undefined state. + + + + + Writes all of the paths the TouchedFileLogger to the given + TextWriter in upper case. After calling this method the + logger is in an undefined state. + + + + + The compilation object is an immutable representation of a single invocation of the + compiler. Although immutable, a compilation is also on-demand, and will realize and cache + data as necessary. A compilation can produce a new compilation from existing compilation + with the application of small deltas. In many cases, it is more efficient than creating a + new compilation from scratch, as the new compilation can reuse information from the old + compilation. + + + The compilation object is an immutable representation of a single invocation of the + compiler. Although immutable, a compilation is also on-demand, and will realize and cache + data as necessary. A compilation can produce a new compilation from existing compilation + with the application of small deltas. In many cases, it is more efficient than creating a + new compilation from scratch, as the new compilation can reuse information from the old + compilation. + + + + + Abstraction that allows the caller to delay the creation of the values + until they are actually needed. + + + + + Returns an existing open stream or null if no stream has been open. + + + + + This method will be called once during Emit at the time the Compilation needs + to create a stream for writing. It will not be called in the case of + user errors in code. Shall not be called when returns non-null. + + + + + Returns true if this is a case sensitive compilation, false otherwise. Case sensitivity + affects compilation features such as name lookup as well as choosing what names to emit + when there are multiple different choices (for example between a virtual method and an + override). + + + + + Used for test purposes only to emulate missing members. + + + + + Used for test purposes only to emulate missing members. + + + + + Gets the source language ("C#" or "Visual Basic"). + + + + + Checks options passed to submission compilation constructor. + Throws an exception if the options are not applicable to submissions. + + + + + Creates a new compilation equivalent to this one with different symbol instances. + + + + + Returns a new compilation with a given event queue. + + + + + Gets a new for the specified syntax tree. + + The specified syntax tree. + + True if the SemanticModel should ignore accessibility rules when answering semantic questions. + + + + + Returns a new INamedTypeSymbol representing an error type with the given name and arity + in the given optional container. + + + + + Simple assembly name, or null if not specified. + + + The name is used for determining internals-visible-to relationship with referenced assemblies. + + If the compilation represents an assembly the value of is its simple name. + + Unless specifies otherwise the module name + written to metadata is with an extension based upon . + + + + + Creates a compilation with the specified assembly name. + + The new assembly name. + A new compilation. + + + + Gets the options the compilation was created with. + + + + + Creates a new compilation with the specified compilation options. + + The new options. + A new compilation. + + + + True if the compilation represents an interactive submission. + + + + + Gets or allocates a runtime submission slot index for this compilation. + + Non-negative integer if this is a submission and it or a previous submission contains code, negative integer otherwise. + + + + The type object that represents the type of submission result the host requested. + + + + + The type of the globals object or null if not specified for this compilation. + + + + + Gets the syntax trees (parsed from source code) that this compilation was created with. + + + + + Creates a new compilation with additional syntax trees. + + The new syntax trees. + A new compilation. + + + + Creates a new compilation with additional syntax trees. + + The new syntax trees. + A new compilation. + + + + Creates a new compilation without the specified syntax trees. Preserves metadata info for use with trees + added later. + + The new syntax trees. + A new compilation. + + + + Creates a new compilation without the specified syntax trees. Preserves metadata info for use with trees + added later. + + The new syntax trees. + A new compilation. + + + + Creates a new compilation without any syntax trees. Preserves metadata info for use with + trees added later. + + + + + Creates a new compilation with an old syntax tree replaced with a new syntax tree. + Reuses metadata from old compilation object. + + The new tree. + The old tree. + A new compilation. + + + + Returns true if this compilation contains the specified tree. False otherwise. + + A syntax tree. + + + + The event queue that this compilation was created with. + + + + + Metadata references passed to the compilation constructor. + + + + + Unique metadata references specified via #r directive in the source code of this compilation. + + + + + All reference directives used in this compilation. + + + + + Maps values of #r references to resolved metadata references. + + + + + All metadata references -- references passed to the compilation + constructor as well as references specified via #r directives. + + + + + Creates a metadata reference for this compilation. + + + Optional aliases that can be used to refer to the compilation root namespace via extern alias directive. + + + Embed the COM types from the reference so that the compiled + application no longer requires a primary interop assembly (PIA). + + + + + Creates a new compilation with the specified references. + + + The new references. + + A new compilation. + + + + Creates a new compilation with the specified references. + + The new references. + A new compilation. + + + + Creates a new compilation with the specified references. + + + + + Creates a new compilation with additional metadata references. + + The new references. + A new compilation. + + + + Creates a new compilation with additional metadata references. + + The new references. + A new compilation. + + + + Creates a new compilation without the specified metadata references. + + The new references. + A new compilation. + + + + Creates a new compilation without the specified metadata references. + + The new references. + A new compilation. + + + + Creates a new compilation without any metadata references. + + + + + Creates a new compilation with an old metadata reference replaced with a new metadata + reference. + + The new reference. + The old reference. + A new compilation. + + + + Gets the or for a metadata reference used to create this + compilation. + + The target reference. + + Assembly or module symbol corresponding to the given reference or null if there is none. + + + + + Gets the that corresponds to the assembly symbol. + + The target symbol. + + + + Assembly identities of all assemblies directly referenced by this compilation. + + + Includes identities of references passed in the compilation constructor + as well as those specified via directives in source code. + + + + + The that represents the assembly being created. + + + + + Gets the for the module being created by compiling all of + the source code. + + + + + The root namespace that contains all namespaces and types defined in source code or in + referenced metadata, merged into a single namespace hierarchy. + + + + + Gets the corresponding compilation namespace for the specified module or assembly namespace. + + + + + Returns the Main method that will serves as the entry point of the assembly, if it is + executable (and not a script). + + + + + Get the symbol for the predefined type from the Cor Library referenced by this + compilation. + + + + + Returns true if the type is System.Type. + + + + + Returns true if the specified type is equal to or derives from System.Attribute well-known type. + + + + + The INamedTypeSymbol for the .NET System.Object type, which could have a TypeKind of + Error if there was no COR Library in this Compilation. + + + + + The TypeSymbol for the type 'dynamic' in this Compilation. + + + + + A symbol representing the implicit Script class. This is null if the class is not + defined in the compilation. + + + + + Returns a new ArrayTypeSymbol representing an array type tied to the base types of the + COR Library in this Compilation. + + + + + Returns a new PointerTypeSymbol representing a pointer type tied to a type in this + Compilation. + + + + + Gets the type within the compilation's assembly and all referenced assemblies (other than + those that can only be referenced via an extern alias) using its canonical CLR metadata name. + + Null if the type can't be found. + + Since VB does not have the concept of extern aliases, it considers all referenced assemblies. + + + + + Gets the diagnostics produced during the parsing stage. + + + + + Gets the diagnostics produced during symbol declaration. + + + + + Gets the diagnostics produced during the analysis of method bodies and field initializers. + + + + + Gets all the diagnostics for the compilation, including syntax, declaration, and + binding. Does not include any diagnostics that might be produced during emit, see + . + + + + Bag to which filtered diagnostics will be added. + Diagnostics to be filtered. + True if there were no errors or warnings-as-errors. + + + + Create a stream filled with default win32 resources. + + + + + Constructs the module serialization properties out of the compilation options of this compilation. + + + + + The value is not used by Windows loader, but the OS appcompat infrastructure uses it to identify apps. + It is useful for us to have a mechanism to identify the compiler that produced the binary. + This is the appropriate value to use for that. That is what it was invented for. + We don't want to have the high bit set for this in case some users perform a signed comparison to + determine if the value is less than some version. The C++ linker is at 0x0B. + We'll start our numbering at 0x30 for C#, 0x50 for VB. + + + + + Return true if the compilation contains any code or types. + + + + + Emit the IL for the compiled source code into the specified stream. + + Stream to which the compilation will be written. + Stream to which the compilation's debug info will be written. Null to forego PDB generation. + Stream to which the compilation's XML documentation will be written. Null to forego XML generation. + Stream from which the compilation's Win32 resources will be read (in RES format). + Null to indicate that there are none. The RES format begins with a null resource entry. + List of the compilation's managed resources. Null to indicate that there are none. + Emit options. + To cancel the emit process. + + + + Emit the IL for the compiled source code into the specified stream. + + Stream to which the compilation will be written. + Stream to which the compilation's debug info will be written. Null to forego PDB generation. + Stream to which the compilation's XML documentation will be written. Null to forego XML generation. + Stream from which the compilation's Win32 resources will be read (in RES format). + Null to indicate that there are none. The RES format begins with a null resource entry. + List of the compilation's managed resources. Null to indicate that there are none. + Emit options. + + Debug entry-point of the assembly. The method token is stored in the generated PDB stream. + + When a program launches with a debugger attached the debugger places the first breakpoint to the start of the debug entry-point method. + The CLR starts executing the static Main method of type. When the first breakpoint is hit + the debugger steps thru the code statement by statement until user code is reached, skipping methods marked by , + and taking other debugging attributes into consideration. + + By default both entry points in an executable program (, , ) + are the same method (Main). A non-executable program has no entry point. Runtimes that implement a custom loader may specify debug entry-point + to force the debugger to skip over complex custom loader logic executing at the beginning of the .exe and thus improve debugging experience. + + Unlike ordinary entry-point which is limited to a non-generic static method of specific signature, there are no restrictions on the + method other than having a method body (extern, interface, or abstract methods are not allowed). + + To cancel the emit process. + + + + This overload is only intended to be directly called by tests that want to pass . + The map is used for storing a list of methods and their associated IL. + + True if emit succeeded. + + + + Emit the differences between the compilation and the previous generation + for Edit and Continue. The differences are expressed as added and changed + symbols, and are emitted as metadata, IL, and PDB deltas. A representation + of the current compilation is returned as an EmitBaseline for use in a + subsequent Edit and Continue. + + + + + Emit the differences between the compilation and the previous generation + for Edit and Continue. The differences are expressed as added and changed + symbols, and are emitted as metadata, IL, and PDB deltas. A representation + of the current compilation is returned as an EmitBaseline for use in a + subsequent Edit and Continue. + + + + + This overload is only intended to be directly called by tests that want to pass . + The map is used for storing a list of methods and their associated IL. + + True if emit succeeded. + + + + The compiler needs to define an ordering among different partial class in different syntax trees + in some cases, because emit order for fields in structures, for example, is semantically important. + This function defines an ordering among syntax trees in this compilation. + + + + + Compare two source locations, using their containing trees, and then by Span.First within a tree. + Can be used to get a total ordering on declarations, for example. + + + + + Return the lexically first of two locations. + + + + + Return the lexically first of multiple locations. + + + + + Return true if there is a source declaration symbol name that meets given predicate. + + + + + Return source declaration symbols whose name meets given predicate. + + + + + The list of RetargetingAssemblySymbol objects created for this Compilation. + RetargetingAssemblySymbols are created when some other compilation references this one, + but the other references provided are incompatible with it. For example, compilation C1 + references v1 of Lib.dll and compilation C2 references C1 and v2 of Lib.dll. In this + case, in context of C2, all types from v1 of Lib.dll leaking through C1 (through method + signatures, etc.) must be retargeted to the types from v2 of Lib.dll. This is what + RetargetingAssemblySymbol is responsible for. In the example above, modules in C2 do not + reference C1.AssemblySymbol, but reference a special RetargetingAssemblySymbol created + for C1 by ReferenceManager. + + WeakReference is used to allow RetargetingAssemblySymbol to be collected when they become unused. + + Guarded by . + + + + + Adds given retargeting assembly for this compilation into the cache. + must be locked while calling this method. + + + + + Adds cached retargeting symbols into the given list. + must be locked while calling this method. + + + + + Indicate what kinds of declaration symbols will be included + + + + + None + + + + + include namespace symbols + + + + + include type symbols + + + + + include member symbols such as method, event, property, field + + + + + include type and member + + + + + include all namespace, type and member + + + + + Policy to be used when matching assembly reference to an assembly definition across platforms. + + + + + Converts to . + + Major, minor, build or revision number are less than 0 or greater than 0xFFFF. + + + Assembly portability policy, usually provided through an app.config file. + + + + Loads information from XML with app.config schema. + + The stream doesn't contain a well formed XML. + is null. + + Tries to find supportPortability elements in the given XML: + + + + + + + + + ]]> + + Keeps the stream open. + + + + + Returns true if the identity is a Framework 4.5 or lower assembly. + + + + + Provides strong name and signs source assemblies. + + + + + Creates an instance of . + + + An ordered set of fully qualified paths which are searched when locating a cryptographic key file. + + + + + Resolves assembly strong name key file path. + Internal for testing. + + Normalized key file path or null if not found. + + + + + + + + + + + + + + Handles loading analyzer assemblies and their dependencies. + + Before an analyzer assembly is loaded with , + its location and the location of all of its dependencies must first be specified + by calls to . + + + To the extent possible, implementations should remain consistent in the face + of exceptions and allow the caller to handle them. This allows the caller to + decide how to surface issues to the user and whether or not they are fatal. For + example, if asked to load an a non-existent or inaccessible file a command line + tool may wish to exit immediately, while an IDE may wish to keep going and give + the user a chance to correct the issue. + + + + + Given the full path to an assembly on disk, loads and returns the + corresponding object. + + + Multiple calls with the same path should return the same + instance. + + + + + Adds a file to consider when loading an analyzer or its dependencies. + + + + + A localizable resource string that may possibly be formatted differently depending on culture. + + + + + Creates a localizable resource string with no formatting arguments. + + nameof the resource that needs to be localized. + for the calling assembly. + Type handling assembly's resource management. Typically, this is the static class generated for the resources file from which resources are accessed. + + + + Creates a localizable resource string that may possibly be formatted differently depending on culture. + + nameof the resource that needs to be localized. + for the calling assembly. + Type handling assembly's resource management. Typically, this is the static class generated for the resources file from which resources are accessed. + Optional arguments for formatting the localizable resource string. + + + + A string that may possibly be formatted differently depending on culture. + NOTE: Types implementing must be serializable. + + + + + FixedLocalizableString representing an empty string. + + + + + Fired when an exception is raised by any of the public methods of . + If the exception handler itself throws an exception, that exception is ignored. + + + + + Formats the value of the current instance using the optionally specified format. + + + + + Formats the value of the current instance using the optionally specified format. + Provides the implementation of ToString. ToString will provide a default value + if this method throws an exception. + + + + + Provides the implementation of GetHashCode. GetHashCode will provide a default value + if this method throws an exception. + + + + + + Provides the implementation of Equals. Equals will provide a default value + if this method throws an exception. + + + + + + Represents compilation emit options. + + + + + True to emit an assembly excluding executable code such as method bodies. + + + + + Tolerate errors, producing a PE stream and a success result even in the presence of (some) errors. + + + + + Unless set (private) members that don't affect the language semantics of the resulting assembly will be excluded + when emitting with on. + + + Has no effect when is false. + + + + + Subsystem version + + + + + Specifies the size of sections in the output file. + + + Valid values are 0, 512, 1024, 2048, 4096 and 8192. + If the value is 0 the file alignment is determined based upon the value of . + + + + + True to enable high entropy virtual address space for the output binary. + + + + + Specifies the preferred base address at which to load the output DLL. + + + + + Debug information format. + + + + + Assembly name override - file name and extension. If not specified the compilation name is used. + + + By default the name of the output assembly is . Only in rare cases it is necessary + to override the name. + + CAUTION: If this is set to a (non-null) value other than the existing compilation output name, then internals-visible-to + and assembly references may not work as expected. In particular, things that were visible at bind time, based on the + name of the compilation, may not be visible at runtime and vice-versa. + + + + + The name of the PDB file to be embedded in the PE image, or null to use the default. + + + If not specified the file name of the source module with an extension changed to "pdb" is used. + + + + + Runtime metadata version. + + + + + Sets the byte alignment for portable executable file sections. + + Can be one of the following values: 0, 512, 1024, 2048, 4096, 8192 + + + + No change. + + + + + Node value was updated. + + + + + Node was inserted. + + + + + Node was deleted. + + + + + Debugging information associated with the specified method that is emitted by the compiler to support Edit and Continue. + + + + + Deserializes Edit and Continue method debug information from specified blobs. + + Local variable slot map. + Lambda and closure map. + Invalid data. + + + Invalid data. + + + + Merges synthesized members generated during lowering of the current compilation with aggregate synthesized members + from all previous source generations (gen >= 1). + + + Suppose {S -> {A, B, D}, T -> {E, F}} are all synthesized members in previous generations, + and {S' -> {A', B', C}, U -> {G, H}} members are generated in the current compilation. + + Where X matches X' via this matcher, i.e. X' is from the new compilation and + represents the same metadata entity as X in the previous compilation. + + Then the resulting collection shall have the following entries: + {S' -> {A', B', C, D}, U -> {G, H}, T -> {E, F}} + + + + + The result of the Compilation.Emit method. + + + + + True if the compilation successfully produced an executable. + If false then the diagnostics should include at least one error diagnostic + indicating the cause of the failure. + + + + + A list of all the diagnostics associated with compilations. This include parse errors, declaration errors, + compilation errors, and emitting errors. + + + + + Name of the anonymous type field. + + + + + True if the anonymous type field was marked as 'Key' in VB. + + + + + is case insensitive. + + + + + Return tokens for all modified debuggable methods. + + + + + Add an item from a previous generation + that has been updated in this generation. + + + + + Represents a module from a previous compilation. Used in Edit and Continue + to emit the differences in a subsequent compilation. + + + + + A map of the assembly identities of the baseline compilation to the identities of the original metadata AssemblyRefs. + Only includes identities that differ between these two. + + + + + Creates an from the metadata of the module before editing + and from a function that maps from a method to an array of local names. + + The metadata of the module before editing. + + A function that for a method handle returns Edit and Continue debug information emitted by the compiler into the PDB. + The function shall throw if the debug information can't be read for the specified method. + This exception is caught and converted to an emit diagnostic. Other exceptions are passed through. + + An for the module. + + Only the initial baseline is created using this method; subsequent baselines are created + automatically when emitting the differences in subsequent compilations. + + When an active method (one for which a frame is allocated on a stack) is updated the values of its local variables need to be preserved. + The mapping of local variable names to their slots in the frame is not included in the metadata and thus needs to be provided by + . + + The is only needed for the initial generation. The mapping for the subsequent generations + is carried over through . The compiler assigns slots to named local variables (including named temporary variables) + it the order in which they appear in the source code. This property allows the compiler to reconstruct the local variable mapping + for the initial generation. A subsequent generation may add a new variable in between two variables of the previous generation. + Since the slots of the previous generation variables need to be preserved the only option is to add these new variables to the end. + The slot ordering thus no longer matches the syntax ordering. It is therefore necessary to pass + to the next generation (rather than e.g. create new s from scratch based on metadata produced by subsequent compilations). + + + + + The original metadata of the module. + + + + + Metadata generation ordinal. Zero for + full metadata and non-zero for delta. + + + + + Unique Guid for this delta, or default(Guid) + if full metadata. + + + + + EnC metadata for methods added or updated since the initial generation, indexed by method row id. + + + + + Reads EnC debug information of a method from the initial baseline PDB. + The function shall throw if the debug information can't be read for the specified method. + This exception is caught and converted to an emit diagnostic. Other exceptions are passed through. + + + + + No change to symbol or members. + + + + + No change to symbol but may contain changed symbols. + + + + + Symbol updated. + + + + + Symbol added. + + + + + True if the symbol is a source symbol added during EnC session. + The symbol may be declared in any source compilation in the current solution. + + + + + Returns true if the symbol or some child symbol has changed and needs to be compiled. + + + + + Calculate the set of changes up to top-level types. The result + will be used as a filter when traversing the module. + + Note that these changes only include user-defined source symbols, not synthesized symbols since those will be + generated during lowering of the changed user-defined symbols. + + + + + Return the symbol that contains this symbol as far + as changes are concerned. For instance, an auto property + is considered the containing symbol for the backing + field and the accessor methods. By default, the containing + symbol is simply Symbol.ContainingSymbol. + + + + + Error type symbols should be replaced with an object of this class + in the translation layer for emit. + + + + + For the name we will use a word "Error" followed by a guid, generated on the spot. + + + + + A fake containing assembly for an ErrorType object. + + + + + For the name we will use a word "Error" followed by a guid, generated on the spot. + + + + + This is only used for testing. + + + + + This is only used for testing. + + + + + This is only used for testing. + + + + + Returns null if member doesn't belong to an embedded NoPia type. + + + + + Common base class for C# and VB PE module builder. + + + + + EnC generation. + + + + + Captures the set of synthesized definitions that should be added to a type + during emit process. + + + + + Returns null if there are no compiler generated types. + + + + + Returns null if there are no synthesized methods. + + + + + Returns null if there are no synthesized properties. + + + + + Returns null if there are no synthesized fields. + + + + + Builds symbol definition to location map used for emitting token -> location info + into PDB to be consumed by WinMdExp.exe tool (only applicable for /t:winmdobj) + + + + + Describes a symbol edit between two compilations. + For example, an addition of a method, an update of a method, removal of a type, etc. + + + + + The type of edit. + + + + + The symbol from the earlier compilation, + or null if the edit represents an addition. + + + + + The symbol from the later compilation, + or null if the edit represents a deletion. + + + + + A map from syntax node in the later compilation to syntax node in the previous compilation, + or null if is false and the map is not needed or + the source of the current method is the same as the source of the previous method. + + + The map does not need to map all syntax nodes in the active method, only those syntax nodes + that declare a local or generate a long lived local. + + + + + True if the edit is an update of the active method and local values + should be preserved; false otherwise. + + + + + Initializes an instance of . + + The type of edit. + + The symbol from the earlier compilation, or null if the edit represents an addition. + + + The symbol from the later compilation, or null if the edit represents a deletion. + + + A map from syntax node in the later compilation to syntax node in the previous compilation, + or null if is false and the map is not needed or + the source of the current method is the same as the source of the previous method. + + + True if the edit is an update of an active method and local values should be preserved; false otherwise. + + + or is null and the edit isn't an or , respectively. + + + is not a valid kind. + + + + + Emit the IL for the compilation into the specified stream. + + Compilation. + Path of the file to which the compilation will be written. + Path of the file to which the compilation's debug info will be written. + Also embedded in the output file. Null to forego PDB generation. + + Path of the file to which the compilation's XML documentation will be written. Null to forego XML generation. + Path of the file from which the compilation's Win32 resources will be read (in RES format). + Null to indicate that there are none. + List of the compilation's managed resources. Null to indicate that there are none. + To cancel the emit process. + Compilation or path is null. + Path is empty or invalid. + An error occurred while reading or writing a file. + + + + APIs for constructing documentation comment id's, and finding symbols that match ids. + + + + + Creates an id string used by external documentation comment files to identify declarations + of types, namespaces, methods, properties, etc. + + + + + Creates an id string used to reference type symbols (not strictly declarations, includes + arrays, pointers, type parameters, etc.) + + + + + Gets all declaration symbols that match the declaration id string + + + + + Try to get all the declaration symbols that match the declaration id string. + Returns true if at least one symbol matches. + + + + + Gets the first declaration symbol that matches the declaration id string, order undefined. + + + + + Gets the symbols that match the reference id string. + + + + + Try to get all symbols that match the reference id string. + Returns true if at least one symbol matches. + + + + + Gets the first symbol that matches the reference id string, order undefined. + + + + + Checks for the given ; if the is true, + immediately terminates the process without running any pending finally blocks or finalizers + and causes a crash dump to be collected (if the system is configured to do so). + Otherwise, the process continues normally. + + The conditional expression to evaluate. + An optional message to be recorded in the dump in case of failure. Can be null. + + + + Dictionary designed to hold small number of items. + Compared to the regular Dictionary, average overhead per-item is roughly the same, but + unlike regular dictionary, this one is based on an AVL tree and as such does not require + rehashing when items are added. + It does require rebalancing, but that is allocation-free. + + Major caveats: + 1) There is no Remove method. (can be added, but we do not seem to use Remove that much) + 2) foreach [keys|values|pairs] may allocate a small array. + 3) Performance is no longer O(1). At a certain count it becomes slower than regular Dictionary. + In comparison to regular Dictionary on my machine: + On trivial number of elements (5 or so) it is more than 2x faster. + The break even count is about 120 elements for read and 55 for write operations (with unknown initial size). + At UShort.MaxValue elements, this dictionary is 6x slower to read and 4x slower to write + + Generally, this dictionary is a win if number of elements is small, not known beforehand or both. + + If the size of the dictionary is known at creation and it is likely to contain more than 10 elements, + then regular Dictionary is a better choice. + + + + + Implements a readonly collection over a set of existing collections. This can be used to + prevent having to copy items from one collection over to another (thus bloating space). + + Note: this is a *collection*, not a *set*. There is no removal of duplicated elements. This + allows us to be able to efficiently do operations like CopyTo, Count, etc. in O(c) time + instead of O(n) (where 'c' is the number of collections and 'n' is the number of elements). + If you have a few collections with many elements in them, then this is an appropriate + collection for you. + + + + + Indicates the reasons why a candidate (or set of candidate) symbols were not considered + correct in SemanticInfo. Higher values take precedence over lower values, so if, for + example, there a symbol with a given name that was inaccessible, and other with the wrong + arity, only the inaccessible one would be reported in the SemanticInfo. + + + + + No CandidateSymbols. + + + + + Only a type or namespace was valid in the given location, but the candidate symbols was + of the wrong kind. + + + + + Only an event was valid in the given location, but the candidate symbols was + of the wrong kind. + + + + + The candidate symbol must be a WithEvents member, but it was not. + + + + + Only an attribute type was valid in the given location, but the candidate symbol was + of the wrong kind. + + + + + The candidate symbol takes a different number of type parameters that was required. + + + + + The candidate symbol existed, but was not allowed to be created in a new expression. + For example, interfaces, static classes, and unconstrained type parameters. + + + + + The candidate symbol existed, but was not allowed to be referenced. For example, the + "get_XXX" method used to implement a property named "XXX" may not be directly + referenced. Similarly, the type "System.Void" can not be directly referenced. + Also occurs if "this" is used in a context (static method or field initializer) + where "this" is not available. + + + + + The candidate symbol had an accessibility modifier (private, protected, ...) that made + it inaccessible. + + + + + The candidate symbol was in a place where a value was required, but was not a value + (e.g., was a type or namespace). + + + + + The candidate symbol was in a place where a variable (or sometimes, a property) was + required, but was not allowed there because it isn't a symbol that can be assigned to. + For example, the left hand side of an assignment, or a ref or out parameter. + + + + + The candidate symbol was used in a way that an invocable member (method, or variable of + delegate type) was required, but the candidate symbol was not invocable. + + + + + The candidate symbol must be an instance variable, but was used as static, or the + reverse. + + + + + Overload resolution did not choose a method. The candidate symbols are the methods there + were considered during overload resolution (which may or may not be applicable methods). + + + + + Method could not be selected statically. + The candidate symbols are the methods there were considered during overload resolution + (which may or may not be applicable methods). + + + + + Multiple ambiguous symbols were available with the same name. This can occur if "using" + statements bring multiple namespaces into scope, and the same type is available in + multiple. This can also occur if multiple properties of the same name are available in a + multiple interface inheritance situation. + + + + + CandidateSymbols are members of a group of results. This is used when there isn't a problem, + but there is more than one result, for example nameof(int.ToString). + + + + + Represents compilation options common to C# and VB. + + + + + The kind of assembly generated when emitted. + + + + + Name of the primary module, or null if a default name should be used. + + + The name usually (but not necessarily) includes an extension, e.g. "MyModule.dll". + + If is null the actual name written to metadata + is derived from the name of the compilation () + by appending a default extension for . + + + + + The full name of a global implicit class (script class). This class implicitly encapsulates top-level statements, + type declarations, and member declarations. Could be a namespace qualified name. + + + + + The full name of a type that declares static Main method. Must be a valid non-generic namespace-qualified name. + Null if any static Main method is a candidate for an entry point. + + + + + Specifies public key used to generate strong name for the compilation assembly, or empty if not specified. + + + If specified the values of and + must be null. If is true the assembly is marked as fully signed + but only signed with the public key (aka "OSS signing"). + + + + + The name of the file containing the public and private keys to use to generate strong name of the + compilation assembly and to sign it. + + + + To sign the output supply either one of or . + but not both. If both are specified is ignored. + + + If is also set, must be the absolute + path to key file. + + + + + + The CSP container containing the key with which to sign the output. + + + + To sign the output supply either one of or . + but not both. If both are specified is ignored. + + + This setting is obsolete and only supported on Microsoft Windows platform. + Use to generate assemblies with strong name and + a signing tool (Microsoft .NET Framework Strong Name Utility (sn.exe) or equivalent) to sign them. + + + + + + Mark the compilation assembly as delay-signed. + + + If true the resulting assembly is marked as delay signed. + + If false and , , or is specified + or attribute System.Reflection.AssemblyKeyFileAttribute or System.Reflection.AssemblyKeyNameAttribute is applied to the + compilation assembly in source the resulting assembly is signed accordingly to the specified values/attributes. + + If null the semantics is specified by the value of attribute System.Reflection.AssemblyDelaySignAttribute + applied to the compilation assembly in source. If the attribute is not present the value defaults to "false". + + + + + Mark the compilation assembly as fully signed, but only sign with the public key. + + + + If true, the assembly is marked as signed, but is only signed with the public key. + + + The key must be provided through either an absolute path in + or directly via . + + + + + + Whether bounds checking on integer arithmetic is enforced by default or not. + + + + + Specifies which version of the common language runtime (CLR) can run the assembly. + + + + + Specifies whether or not optimizations should be performed on the output IL. + This is independent of whether or not PDB information is generated. + + + + + Global warning report option + + + + + Global warning level (from 0 to 4). + + + + + Specifies whether building compilation may use multiple threads. + + + + + Specifies whether the compilation should be deterministic. + + + + + Used for time-based version generation when contains a wildcard. + If equal to default() the actual current local time will be used. + + + + + Emit extended custom debug information to the PDB file. + + + + + Emit mode that favors debuggability. + + + + + Import internal/private members from all references regardless of "internals-visible-to" relationship. + + + + + Apply additional disambiguation rules during resolution of referenced assemblies. + + + + + Modifies the incoming diagnostic, for example escalating its severity, or discarding it (returning null) based on the compilation options. + + + The modified diagnostic, or null + + + + Warning report option for each warning. + + + + + Whether diagnostics suppressed in source, i.e. is true, should be reported. + + + + + Resolves paths to metadata references specified in source via #r directives. + Null if the compilation can't contain references to metadata other than those explicitly passed to its factory (such as #r directives in sources). + + + + + Gets the resolver for resolving XML document references for the compilation. + Null if the compilation is not allowed to contain XML file references, such as XML doc comment include tags and permission sets stored in an XML file. + + + + + Gets the resolver for resolving source document references for the compilation. + Null if the compilation is not allowed to contain source file references, such as #line pragmas and #load directives. + + + + + Provides strong name and signature the source assembly. + Null if assembly signing is not supported. + + + + + Used to compare assembly identities. May implement unification and portability policies specific to the target platform. + if not specified. + + + + + A set of strings designating experimental compiler features that are to be enabled. + + + + + Creates a new options instance with the specified general diagnostic option. + + + + + Creates a new options instance with the specified diagnostic-specific options. + + + + + Creates a new options instance with the specified diagnostic-specific options. + + + + + Creates a new options instance with the specified suppressed diagnostics reporting option. + + + + + Creates a new options instance with the deterministic property set accordingly. + + + + + Creates a new options instance with the specified output kind. + + + + + Creates a new options instance with the specified platform. + + + + + Creates a new options instance with the specified public sign setting. + + + + + Creates a new options instance with optimizations enabled or disabled. + + + + + Performs validation of options compatibilities and generates diagnostics if needed + + + + + Errors collection related to an incompatible set of compilation options + + + + + Represents the possible compilation stages for which it is possible to get diagnostics + (errors). + + + + + Provides information about statements which transfer control in and out of a region. This + information is returned from a call to . + + + + + The set of statements inside the region what are the + destination of branches outside the region. + + + + + The set of statements inside a region that jump to locations outside + the region. + + + + + Indicates whether a region completes normally. Return true if and only if the end of the + last statement in a region is reachable or the region contains no statements. + + + + + The set of return statements found within a region. + + + + + Returns true iff analysis was successful. Analysis can fail if the region does not properly span a single expression, + a single statement, or a contiguous series of statements within the enclosing block. + + + + + Provides information about how data flows into and out of a region. This information is + returned from a call to + , or one of its language-specific overloads, + where you pass the first and last statements of the region as parameters. + "Inside" means those statements or ones between them. "Outside" are any other statements of the same method. + + + + + The set of local variables that are declared within a region. Note + that the region must be bounded by a method's body or a field's initializer, so + parameter symbols are never included in the result. + + + + + The set of local variables which are assigned a value outside a region + that may be used inside the region. + + + + + The set of local variables which are assigned a value inside a region + that may be used outside the region. + + + + + The set of local variables for which a value is always assigned inside + a region. + + + + + The set of local variables that are read inside a region. + + + + + The set of local variables that are written inside a region. + + + + + The set of the local variables that are read outside a region. + + + + + The set of local variables that are written outside a region. + + + + + The set of the local variables that have been referenced in anonymous + functions within a region and therefore must be moved to a field of a frame class. + + + + + The set of non-constant local variables and parameters that have had their + address (or the address of one of their fields) taken. + + + + + Returns true iff analysis was successful. Analysis can fail if the region does not + properly span a single expression, a single statement, or a contiguous series of + statements within the enclosing block. + + + + + Gets symbol information about a syntax node. + + + The syntax node to get semantic information for. + A cancellation token that can be used to cancel the + process of obtaining the semantic info. + + + + Binds the node in the context of the specified location and get semantic information + such as type, symbols and diagnostics. This method is used to get semantic information + about an expression that did not actually appear in the source code. + + + A character position used to identify a declaration scope and + accessibility. This character position must be within the FullSpan of the Root syntax + node in this SemanticModel. + + A syntax node that represents a parsed expression. This syntax + node need not and typically does not appear in the source code referred to SemanticModel + instance. + Indicates whether to binding the expression as a full expressions, + or as a type or namespace. If SpeculativeBindingOption.BindAsTypeOrNamespace is supplied, then + expression should derive from TypeSyntax. + The semantic information for the topmost node of the expression. + The passed in expression is interpreted as a stand-alone expression, as if it + appeared by itself somewhere within the scope that encloses "position". + + + + Gets type information about a syntax node. + + + The syntax node to get semantic information for. + A cancellation token that can be used to cancel the + process of obtaining the semantic info. + + + + If "nameSyntax" resolves to an alias name, return the IAliasSymbol corresponding + to A. Otherwise return null. + + + Name to get alias info for. + A cancellation token that can be used to cancel the + process of obtaining the alias information. + + + + Binds the name in the context of the specified location and sees if it resolves to an + alias name. If it does, return the AliasSymbol corresponding to it. Otherwise, return null. + + + A character position used to identify a declaration scope and + accessibility. This character position must be within the FullSpan of the Root syntax + node in this SemanticModel. + + A syntax node that represents a name. This syntax + node need not and typically does not appear in the source code referred to by the + SemanticModel instance. + Indicates whether to binding the name as a full expression, + or as a type or namespace. If SpeculativeBindingOption.BindAsTypeOrNamespace is supplied, then + expression should derive from TypeSyntax. + The passed in name is interpreted as a stand-alone name, as if it + appeared by itself somewhere within the scope that encloses "position". + + + + Binds the node in the context of the specified location and get semantic information + such as type, symbols and diagnostics. This method is used to get semantic information + about an expression that did not actually appear in the source code. + + + A character position used to identify a declaration scope and + accessibility. This character position must be within the FullSpan of the Root syntax + node in this SemanticModel. + + A syntax node that represents a parsed expression. This syntax + node need not and typically does not appear in the source code referred to SemanticModel + instance. + Indicates whether to binding the expression as a full expressions, + or as a type or namespace. If SpeculativeBindingOption.BindAsTypeOrNamespace is supplied, then + expression should derive from TypeSyntax. + The semantic information for the topmost node of the expression. + The passed in expression is interpreted as a stand-alone expression, as if it + appeared by itself somewhere within the scope that encloses "position". + + + + Gets the symbol associated with a declaration syntax node. + + + A syntax node that is a declaration. This can be any type + derived from MemberDeclarationSyntax, TypeDeclarationSyntax, EnumDeclarationSyntax, + NamespaceDeclarationSyntax, ParameterSyntax, TypeParameterSyntax, or the alias part of a + UsingDirectiveSyntax + The cancellation token. + The symbol declared by the node or null if the node is not a declaration. + + + + Gets a list of method or indexed property symbols for a syntax node. + + + The syntax node to get semantic information for. + The cancellation token. + + + + Analyze control-flow within a part of a method body. + + + + + Analyze control-flow within a part of a method body. + + + + + Analyze data-flow within a part of a method body. + + + + + Analyze data-flow within a part of a method body. + + + + + Root type for representing the abstract semantics of C# and VB statements and expressions. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Identifies the kind of the operation. + + + + + Indicates whether the operation is invalid, either semantically or syntactically. + + + + + Syntax that was analyzed to produce the operation. + + + + + Result type of the operation, or null if the operation does not produce a result. + + + + + If the operation is an expression that evaluates to a constant value, is true and is the value of the expression. Otherwise, is false. + + + + + All of the kinds of operations, including statements and expressions. + + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + + Determines the level of optimization of the generated code. + + + + + Disables all optimizations and instruments the generated code to improve debugging experience. + + + The compiler prefers debuggability over performance. Do not use for code running in a production environment. + + JIT optimizations are disabled via assembly level attribute (). + Edit and Continue is enabled. + Slots for local variables are not reused, lifetime of local variables is extended to make the values available during debugging. + + + Corresponds to command line argument /optimize-. + + + + + + Enables all optimizations, debugging experience might be degraded. + + + The compiler prefers performance over debuggability. Use for code running in a production environment. + + JIT optimizations are enabled via assembly level attribute (). + Edit and Continue is disabled. + Sequence points may be optimized away. As a result it might not be possible to place or hit a breakpoint. + User-defined locals might be optimized away. They might not be available while debugging. + + + Corresponds to command line argument /optimize+. + + + + + + Represents parse options common to C# and VB. + + + + + Specifies whether to parse as regular code files, script files or interactive code. + + + + + Gets a value indicating whether the documentation comments are parsed. + + true if documentation comments are parsed, false otherwise. + + + + Creates a new options instance with the specified source code kind. + + + + + Creates a new options instance with the specified documentation mode. + + + + + Enable some experimental language features for testing. + + + + + Returns the experimental features. + + + + + Names of defined preprocessor symbols. + + + + + AnyCPU (default) compiles the assembly to run on any platform. + + + + + x86 compiles the assembly to be run by the 32-bit, x86-compatible common language runtime. + + + + + x64 compiles the assembly to be run by the 64-bit common language runtime on a computer that supports the AMD64 or EM64T instruction set. + + + + + Itanium compiles the assembly to be run by the 64-bit common language runtime on a computer with an Itanium processor. + + + + + Compiles your assembly to run on any platform. Your application runs in 32-bit mode on systems that support both 64-bit and 32-bit applications. + + + + + Compiles your assembly to run on a computer that has an Advanced RISC Machine (ARM) processor. + + + + + The symbol that was referred to by the identifier, if any. + + + + + Returns true if this preprocessing symbol is defined at the identifier position. + + + + + Allows asking semantic questions about a tree of syntax nodes in a Compilation. Typically, + an instance is obtained by a call to GetBinding on a Compilation or Compilation. + + + An instance of SemanticModel caches local symbols and semantic information. Thus, it + is much more efficient to use a single instance of SemanticModel when asking multiple + questions about a syntax tree, because information from the first question may be reused. + This also means that holding onto an instance of SemanticModel for a long time may keep a + significant amount of memory from being garbage collected. + + + When an answer is a named symbol that is reachable by traversing from the root of the symbol + table, (that is, from an AssemblySymbol of the Compilation), that symbol will be returned + (i.e. the returned value will be reference-equal to one reachable from the root of the + symbol table). Symbols representing entities without names (e.g. array-of-int) may or may + not exhibit reference equality. However, some named symbols (such as local variables) are + not reachable from the root. These symbols are visible as answers to semantic questions. + When the same SemanticModel object is used, the answers exhibit reference-equality. + + + + + + Gets the source language ("C#" or "Visual Basic"). + + + + + The compilation this model was obtained from. + + + + + The compilation this model was obtained from. + + + + + The syntax tree this model was obtained from. + + + + + The syntax tree this model was obtained from. + + + + + Gets the operation corresponding to the expression or statement syntax node. + + The expression or statement syntax node. + An optional cancellation token. + + + + + Returns true if this is a SemanticModel that ignores accessibility rules when answering semantic questions. + + + + + Gets symbol information about a syntax node. + + The syntax node to get semantic information for. + A cancellation token that can be used to cancel the + process of obtaining the semantic info. + + + + Gets symbol information about a syntax node. + + The syntax node to get semantic information for. + A cancellation token that can be used to cancel the + process of obtaining the semantic info. + + + + Binds the node in the context of the specified location and get semantic information + such as type, symbols and diagnostics. This method is used to get semantic information + about an expression that did not actually appear in the source code. + + A character position used to identify a declaration scope and + accessibility. This character position must be within the FullSpan of the Root syntax + node in this SemanticModel. + + A syntax node that represents a parsed expression. This syntax + node need not and typically does not appear in the source code referred to SemanticModel + instance. + Indicates whether to binding the expression as a full expressions, + or as a type or namespace. If SpeculativeBindingOption.BindAsTypeOrNamespace is supplied, then + expression should derive from TypeSyntax. + The semantic information for the topmost node of the expression. + The passed in expression is interpreted as a stand-alone expression, as if it + appeared by itself somewhere within the scope that encloses "position". + + + + Binds the node in the context of the specified location and get semantic information + such as type, symbols and diagnostics. This method is used to get semantic information + about an expression that did not actually appear in the source code. + + A character position used to identify a declaration scope and + accessibility. This character position must be within the FullSpan of the Root syntax + node in this SemanticModel. + + A syntax node that represents a parsed expression. This syntax + node need not and typically does not appear in the source code referred to SemanticModel + instance. + Indicates whether to binding the expression as a full expressions, + or as a type or namespace. If SpeculativeBindingOption.BindAsTypeOrNamespace is supplied, then + expression should derive from TypeSyntax. + The semantic information for the topmost node of the expression. + The passed in expression is interpreted as a stand-alone expression, as if it + appeared by itself somewhere within the scope that encloses "position". + + + + Binds the node in the context of the specified location and get semantic information + such as type, symbols and diagnostics. This method is used to get semantic information + about an expression that did not actually appear in the source code. + + A character position used to identify a declaration scope and + accessibility. This character position must be within the FullSpan of the Root syntax + node in this SemanticModel. + + A syntax node that represents a parsed expression. This syntax + node need not and typically does not appear in the source code referred to SemanticModel + instance. + Indicates whether to binding the expression as a full expressions, + or as a type or namespace. If SpeculativeBindingOption.BindAsTypeOrNamespace is supplied, then + expression should derive from TypeSyntax. + The semantic information for the topmost node of the expression. + The passed in expression is interpreted as a stand-alone expression, as if it + appeared by itself somewhere within the scope that encloses "position". + + + + Binds the node in the context of the specified location and get semantic information + such as type, symbols and diagnostics. This method is used to get semantic information + about an expression that did not actually appear in the source code. + + A character position used to identify a declaration scope and + accessibility. This character position must be within the FullSpan of the Root syntax + node in this SemanticModel. + + A syntax node that represents a parsed expression. This syntax + node need not and typically does not appear in the source code referred to SemanticModel + instance. + Indicates whether to binding the expression as a full expressions, + or as a type or namespace. If SpeculativeBindingOption.BindAsTypeOrNamespace is supplied, then + expression should derive from TypeSyntax. + The semantic information for the topmost node of the expression. + The passed in expression is interpreted as a stand-alone expression, as if it + appeared by itself somewhere within the scope that encloses "position". + + + + Gets type information about a syntax node. + + The syntax node to get semantic information for. + A cancellation token that can be used to cancel the + process of obtaining the semantic info. + + + + Gets type information about a syntax node. + + The syntax node to get semantic information for. + A cancellation token that can be used to cancel the + process of obtaining the semantic info. + + + + If "nameSyntax" resolves to an alias name, return the IAliasSymbol corresponding + to A. Otherwise return null. + + Name to get alias info for. + A cancellation token that can be used to cancel the + process of obtaining the alias information. + + + + If "nameSyntax" resolves to an alias name, return the IAliasSymbol corresponding + to A. Otherwise return null. + + Name to get alias info for. + A cancellation token that can be used to cancel the + process of obtaining the alias information. + + + + Returns true if this is a speculative semantic model created with any of the TryGetSpeculativeSemanticModel methods. + + + + + If this is a speculative semantic model, returns the original position at which the speculative model was created. + Otherwise, returns 0. + + + + + If this is a speculative semantic model, then returns its parent semantic model. + Otherwise, returns null. + + + + + If this is a speculative semantic model, then returns its parent semantic model. + Otherwise, returns null. + + + + + Binds the name in the context of the specified location and sees if it resolves to an + alias name. If it does, return the AliasSymbol corresponding to it. Otherwise, return null. + + A character position used to identify a declaration scope and + accessibility. This character position must be within the FullSpan of the Root syntax + node in this SemanticModel. + + A syntax node that represents a name. This syntax + node need not and typically does not appear in the source code referred to by the + SemanticModel instance. + Indicates whether to binding the name as a full expression, + or as a type or namespace. If SpeculativeBindingOption.BindAsTypeOrNamespace is supplied, then + expression should derive from TypeSyntax. + The passed in name is interpreted as a stand-alone name, as if it + appeared by itself somewhere within the scope that encloses "position". + + + + Binds the name in the context of the specified location and sees if it resolves to an + alias name. If it does, return the AliasSymbol corresponding to it. Otherwise, return null. + + A character position used to identify a declaration scope and + accessibility. This character position must be within the FullSpan of the Root syntax + node in this SemanticModel. + + A syntax node that represents a name. This syntax + node need not and typically does not appear in the source code referred to by the + SemanticModel instance. + Indicates whether to binding the name as a full expression, + or as a type or namespace. If SpeculativeBindingOption.BindAsTypeOrNamespace is supplied, then + expression should derive from TypeSyntax. + The passed in name is interpreted as a stand-alone name, as if it + appeared by itself somewhere within the scope that encloses "position". + + + + Get all of the syntax errors within the syntax tree associated with this + object. Does not get errors involving declarations or compiling method bodies or initializers. + + Optional span within the syntax tree for which to get diagnostics. + If no argument is specified, then diagnostics for the entire tree are returned. + A cancellation token that can be used to cancel the + process of obtaining the diagnostics. + + + + Get all of the declaration errors within the syntax tree associated with this + object. Does not get errors involving incorrect syntax, compiling method bodies or initializers. + + Optional span within the syntax tree for which to get diagnostics. + If no argument is specified, then diagnostics for the entire tree are returned. + A cancellation token that can be used to cancel the + process of obtaining the diagnostics. + The declaration errors for a syntax tree are cached. The first time this method + is called, all declarations are analyzed for diagnostics. Calling this a second time + will return the cached diagnostics. + + + + + Get all of the method body and initializer errors within the syntax tree associated with this + object. Does not get errors involving incorrect syntax or declarations. + + Optional span within the syntax tree for which to get diagnostics. + If no argument is specified, then diagnostics for the entire tree are returned. + A cancellation token that can be used to cancel the + process of obtaining the diagnostics. + The method body errors for a syntax tree are not cached. The first time this method + is called, all method bodies are analyzed for diagnostics. Calling this a second time + will repeat this work. + + + + + Get all the errors within the syntax tree associated with this object. Includes errors + involving compiling method bodies or initializers, in addition to the errors returned by + GetDeclarationDiagnostics. + + Optional span within the syntax tree for which to get diagnostics. + If no argument is specified, then diagnostics for the entire tree are returned. + A cancellation token that can be used to cancel the + process of obtaining the diagnostics. + + Because this method must semantically bind all method bodies and initializers to check + for diagnostics, it may take a significant amount of time. Unlike + GetDeclarationDiagnostics, diagnostics for method bodies and initializers are not + cached, any semantic information used to obtain the diagnostics is discarded. + + + + + Gets the symbol associated with a declaration syntax node. + + A syntax node that is a declaration. This can be any type + derived from MemberDeclarationSyntax, TypeDeclarationSyntax, EnumDeclarationSyntax, + NamespaceDeclarationSyntax, ParameterSyntax, TypeParameterSyntax, or the alias part of a + UsingDirectiveSyntax + The cancellation token. + The symbol declared by the node or null if the node is not a declaration. + + + + Gets the symbol associated with a declaration syntax node. + + A syntax node that is a declaration. This can be any type + derived from MemberDeclarationSyntax, TypeDeclarationSyntax, EnumDeclarationSyntax, + NamespaceDeclarationSyntax, ParameterSyntax, TypeParameterSyntax, or the alias part of a + UsingDirectiveSyntax + The cancellation token. + The symbol declared by the node or null if the node is not a declaration. + + + + Gets the symbol associated with a declaration syntax node. Unlike , + this method returns all symbols declared by a given declaration syntax node. Specifically, in the case of field declaration syntax nodes, + which can declare multiple symbols, this method returns all declared symbols. + + A syntax node that is a declaration. This can be any type + derived from MemberDeclarationSyntax, TypeDeclarationSyntax, EnumDeclarationSyntax, + NamespaceDeclarationSyntax, ParameterSyntax, TypeParameterSyntax, or the alias part of a + UsingDirectiveSyntax + The cancellation token. + The symbols declared by the node. + + + + Gets the symbol associated with a declaration syntax node. Unlike , + this method returns all symbols declared by a given declaration syntax node. Specifically, in the case of field declaration syntax nodes, + which can declare multiple symbols, this method returns all declared symbols. + + A syntax node that is a declaration. This can be any type + derived from MemberDeclarationSyntax, TypeDeclarationSyntax, EnumDeclarationSyntax, + NamespaceDeclarationSyntax, ParameterSyntax, TypeParameterSyntax, or the alias part of a + UsingDirectiveSyntax + The cancellation token. + The symbols declared by the node. + + + + Gets the available named symbols in the context of the specified location and optional container. Only + symbols that are accessible and visible from the given location are returned. + + The character position for determining the enclosing declaration scope and + accessibility. + The container to search for symbols within. If null then the enclosing declaration + scope around position is used. + The name of the symbol to find. If null is specified then symbols + with any names are returned. + Consider (reduced) extension methods. + A list of symbols that were found. If no symbols were found, an empty list is returned. + + The "position" is used to determine what variables are visible and accessible. Even if "container" is + specified, the "position" location is significant for determining which members of "containing" are + accessible. + + Labels are not considered (see ). + + Non-reduced extension methods are considered regardless of the value of . + + + + + Backing implementation of . + + + + + Gets the available base type members in the context of the specified location. Akin to + calling with the container set to the immediate base type of + the type in which occurs. However, the accessibility rules + are different: protected members of the base type will be visible. + + Consider the following example: + + public class Base + { + protected void M() { } + } + + public class Derived : Base + { + void Test(Base b) + { + b.M(); // Error - cannot access protected member. + base.M(); + } + } + + Protected members of an instance of another type are only accessible if the instance is known + to be "this" instance (as indicated by the "base" keyword). + + The character position for determining the enclosing declaration scope and + accessibility. + The name of the symbol to find. If null is specified then symbols + with any names are returned. + A list of symbols that were found. If no symbols were found, an empty list is returned. + + The "position" is used to determine what variables are visible and accessible. + + Non-reduced extension methods are considered, but reduced extension methods are not. + + + + + Backing implementation of . + + + + + Gets the available named static member symbols in the context of the specified location and optional container. + Only members that are accessible and visible from the given location are returned. + + Non-reduced extension methods are considered, since they are static methods. + + The character position for determining the enclosing declaration scope and + accessibility. + The container to search for symbols within. If null then the enclosing declaration + scope around position is used. + The name of the symbol to find. If null is specified then symbols + with any names are returned. + A list of symbols that were found. If no symbols were found, an empty list is returned. + + The "position" is used to determine what variables are visible and accessible. Even if "container" is + specified, the "position" location is significant for determining which members of "containing" are + accessible. + + Essentially the same as filtering instance members out of the results of an analogous call. + + + + + Backing implementation of . + + + + + Gets the available named namespace and type symbols in the context of the specified location and optional container. + Only members that are accessible and visible from the given location are returned. + + The character position for determining the enclosing declaration scope and + accessibility. + The container to search for symbols within. If null then the enclosing declaration + scope around position is used. + The name of the symbol to find. If null is specified then symbols + with any names are returned. + A list of symbols that were found. If no symbols were found, an empty list is returned. + + The "position" is used to determine what variables are visible and accessible. Even if "container" is + specified, the "position" location is significant for determining which members of "containing" are + accessible. + + Does not return INamespaceOrTypeSymbol, because there could be aliases. + + + + + Backing implementation of . + + + + + Gets the available named label symbols in the context of the specified location and optional container. + Only members that are accessible and visible from the given location are returned. + + The character position for determining the enclosing declaration scope and + accessibility. + The name of the symbol to find. If null is specified then symbols + with any names are returned. + A list of symbols that were found. If no symbols were found, an empty list is returned. + + The "position" is used to determine what variables are visible and accessible. Even if "container" is + specified, the "position" location is significant for determining which members of "containing" are + accessible. + + + + + Backing implementation of . + + + + + Analyze control-flow within a part of a method body. + + The first node to be included within the analysis. + The last node to be included within the analysis. + An object that can be used to obtain the result of the control flow analysis. + The span is not with a method + body. + + The first and last nodes must be fully inside the same method body. + + + + + Analyze control-flow within a part of a method body. + + The first node to be included within the analysis. + The last node to be included within the analysis. + An object that can be used to obtain the result of the control flow analysis. + The span is not with a method + body. + + The first and last nodes must be fully inside the same method body. + + + + + Analyze control-flow within a part of a method body. + + The statement to be analyzed. + An object that can be used to obtain the result of the control flow analysis. + The span is not with a method + body. + + The statement must be fully inside the same method body. + + + + + Analyze control-flow within a part of a method body. + + The statement to be analyzed. + An object that can be used to obtain the result of the control flow analysis. + The span is not with a method + body. + + The statement must be fully inside the same method body. + + + + + Analyze data-flow within a part of a method body. + + The first node to be included within the analysis. + The last node to be included within the analysis. + An object that can be used to obtain the result of the data flow analysis. + The span is not with a method + body. + + The first and last nodes must be fully inside the same method body. + + + + + Analyze data-flow within a part of a method body. + + The first node to be included within the analysis. + The last node to be included within the analysis. + An object that can be used to obtain the result of the data flow analysis. + The span is not with a method + body. + + The first and last nodes must be fully inside the same method body. + + + + + Analyze data-flow within a part of a method body. + + The statement or expression to be analyzed. + An object that can be used to obtain the result of the data flow analysis. + The statement or expression is not with a method + body or field or property initializer. + + The statement or expression must be fully inside a method body. + + + + + Analyze data-flow within a part of a method body. + + The statement or expression to be analyzed. + An object that can be used to obtain the result of the data flow analysis. + The statement or expression is not with a method + body or field or property initializer. + + The statement or expression must be fully inside a method body. + + + + + If the node provided has a constant value an Optional value will be returned with + HasValue set to true and with Value set to the constant. If the node does not have an + constant value, an Optional will be returned with HasValue set to false. + + + + + If the node provided has a constant value an Optional value will be returned with + HasValue set to true and with Value set to the constant. If the node does not have an + constant value, an Optional will be returned with HasValue set to false. + + + + + When getting information for a symbol that resolves to a method group or property group, + from which a method is then chosen; the chosen method or property is present in Symbol; + all methods in the group that was consulted are placed in this property. + + + + + When getting information for a symbol that resolves to a method group or property group, + from which a method is then chosen; the chosen method or property is present in Symbol; + all methods in the group that was consulted are placed in this property. + + + + + Given a position in the SyntaxTree for this SemanticModel returns the innermost Symbol + that the position is considered inside of. + + + + + Given a position in the SyntaxTree for this SemanticModel returns the innermost Symbol + that the position is considered inside of. + + + + + Determines if the symbol is accessible from the specified location. + + A character position used to identify a declaration scope and + accessibility. This character position must be within the FullSpan of the Root syntax + node in this SemanticModel. + + The symbol that we are checking to see if it accessible. + + True if "symbol is accessible, false otherwise. + + This method only checks accessibility from the point of view of the accessibility + modifiers on symbol and its containing types. Even if true is returned, the given symbol + may not be able to be referenced for other reasons, such as name hiding. + + + + + Determines if the symbol is accessible from the specified location. + + A character position used to identify a declaration scope and + accessibility. This character position must be within the FullSpan of the Root syntax + node in this SemanticModel. + + The symbol that we are checking to see if it accessible. + + True if "symbol is accessible, false otherwise. + + This method only checks accessibility from the point of view of the accessibility + modifiers on symbol and its containing types. Even if true is returned, the given symbol + may not be able to be referenced for other reasons, such as name hiding. + + + + + Field-like events can be used as fields in types that can access private + members of the declaring type of the event. + + + Always false for VB events. + + + + + Field-like events can be used as fields in types that can access private + members of the declaring type of the event. + + + Always false for VB events. + + + + + If is an identifier name syntax node, return the corresponding + to it. + + The nameSyntax node to get semantic information for. + + + + If is an identifier name syntax node, return the corresponding + to it. + + The nameSyntax node to get semantic information for. + + + + Gets the for all the declarations whose span overlaps with the given . + + Span to get declarations. + Flag indicating whether should be computed for the returned declaration infos. + If false, then is always null. + Builder to add declarations. + Cancellation token. + + + + Takes a node and returns a set of declarations that overlap the node's span. + + + + + Takes a Symbol and syntax for one of its declaring syntax reference and returns the topmost syntax node to be used by syntax analyzer. + + + + + Resolves references to source documents specified in the source. + + + + + Normalizes specified source path with respect to base file path. + + The source path to normalize. May be absolute or relative. + Path of the source file that contains the (may also be relative), or null if not available. + Normalized path, or null if can't be normalized. The resulting path doesn't need to exist. + + + + Resolves specified path with respect to base file path. + + The path to resolve. May be absolute or relative. + Path of the source file that contains the (may also be relative), or null if not available. + Normalized path, or null if the file can't be resolved. + + + + Opens a that allows reading the content of the specified file. + + Path returned by . + is null. + is not a valid absolute path. + Error reading file . See for details. + + + + Reads the contents of and returns a . + + Path returned by . + + + + Describes the kind of binding to be performed in one of the SemanticModel + speculative binding methods. + + + + + Binds the given expression using the normal expression binding rules + that would occur during normal binding of expressions. + + + + + Binds the given expression as a type or namespace only. If this option + is selected, then the given expression must derive from TypeSyntax. + + + + + Represents subsystem version, see /subsystemversion command line + option for details and valid values. + + The following table lists common subsystem versions of Windows. + + Windows version Subsystem version + - Windows 2000 5.00 + - Windows XP 5.01 + - Windows Vista 6.00 + - Windows 7 6.01 + - Windows 8 Release Preview 6.02 + + + + + Major subsystem version + + + + + Minor subsystem version + + + + + Subsystem version not specified + + + + + Subsystem version: Windows 2000 + + + + + Subsystem version: Windows XP + + + + + Subsystem version: Windows Vista + + + + + Subsystem version: Windows 7 + + + + + Subsystem version: Windows 8 + + + + + Try parse subsystem version in "x.y" format. Note, no spaces are allowed in string representation. + + String to parse + the value if successfully parsed or None otherwise + true if parsed successfully, false otherwise + + + + Create a new instance of subsystem version with specified major and minor values. + + major subsystem version + minor subsystem version + subsystem version with provided major and minor + + + + Subsystem version default for the specified output kind and platform combination + + Output kind + Platform + Subsystem version + + + + True if the subsystem version has a valid value + + + + + The symbol that was referred to by the syntax node, if any. Returns null if the given + expression did not bind successfully to a single symbol. If null is returned, it may + still be that case that we have one or more "best guesses" as to what symbol was + intended. These best guesses are available via the CandidateSymbols property. + + + + + If the expression did not successfully resolve to a symbol, but there were one or more + symbols that may have been considered but discarded, this property returns those + symbols. The reason that the symbols did not successfully resolve to a symbol are + available in the CandidateReason property. For example, if the symbol was inaccessible, + ambiguous, or used in the wrong context. + + + + + If the expression did not successfully resolve to a symbol, but there were one or more + symbols that may have been considered but discarded, this property describes why those + symbol or symbols were not considered suitable. + + + + + The type of the expression represented by the syntax node. For expressions that do not + have a type, null is returned. If the type could not be determined due to an error, then + an IErrorTypeSymbol is returned. + + + + + The type of the expression after it has undergone an implicit conversion. If the type + did not undergo an implicit conversion, returns the same as Type. + + + + + Resolves references to XML documents specified in source code. + + + + + Resolves specified XML reference with respect to base file path. + + The reference path to resolve. May be absolute or relative path. + Path of the source file that contains the (may also be relative), or null if not available. + Path to the XML artifact, or null if the file can't be resolved. + + + + Opens a that allows reading the content of the specified file. + + Path returned by . + is null. + is not a valid absolute path. + Error reading file . See for details. + + + + Parses .RES a file into its constituent resource elements. + Mostly translated from cvtres.cpp. + + + + + Assume that 3 WORDs preceded this string and that they began 32-bit aligned. + Given the string length compute the number of bytes that should be written to end + the buffer on a 32-bit boundary + + + + + + assuming the length of bytes submitted began on a 32-bit boundary, + round up this length as necessary so that it ends at a 32-bit boundary. + + + + + + + compute number of chars needed to end up on a 32-bit boundary assuming that three + WORDS preceded this string. + + + + + + + Represents a non source code file. + + + + + Path to the text. + + + + + Retrieves a with the contents of this file. + + + + + Abstracts the ability to classify and load messages for error codes. Allows the error + infrastructure to be reused between C# and VB. + + + + + Given an error code, get the severity (warning or error) of the code. + + + + + Load the message for the given error code. If the message contains + "fill-in" placeholders, those should be expressed in standard string.Format notation + and be in the string. + + + + + Get an optional localizable title for the given diagnostic code. + + + + + Get an optional localizable description for the given diagnostic code. + + + + + Get a localizable message format string for the given diagnostic code. + + + + + Get an optional help link for the given diagnostic code. + + + + + Get the diagnostic category for the given diagnostic code. + Default category is . + + + + + Get the text prefix (e.g., "CS" for C#) used on error messages. + + + + + Get the warning level for warnings (e.g., 1 through 4 for C#). VB does not have warning + levels and always uses 1. Errors should return 0. + + + + + Type that defines error codes. For testing purposes only. + + + + + Create a simple language specific diagnostic for given error code. + + + + + Create a simple language specific diagnostic for given error code. + + + + + Given a message identifier (e.g., CS0219), severity, warning as error and a culture, + get the entire prefix (e.g., "error CS0219: Warning as Error:" for C# or "error BC42024:" for VB) used on error messages. + + + + + Convert given symbol to string representation. + + + + + Given an error code (like 1234) return the identifier (CS1234 or BC1234). + + + + + Produces the filtering action for the diagnostic based on the options passed in. + + + A new with new effective severity based on the options or null if the + diagnostic has been suppressed. + + + + + Filter a based on the compilation options so that /nowarn and /warnaserror etc. take effect.options + + A with effective severity based on option or null if suppressed. + + + + Represents a diagnostic, such as a compiler error or a warning, along with the location where it occurred. + + + A diagnostic (such as a compiler error or a warning), along with the location where it occurred. + + + + + Highest valid warning level for non-error diagnostics. + + + + + Creates a instance. + + A describing the diagnostic + An optional primary location of the diagnostic. If null, will return . + Arguments to the message of the diagnostic + The instance. + + + + Creates a instance. + + A describing the diagnostic. + An optional primary location of the diagnostic. If null, will return . + + An optional set of name-value pairs by means of which the analyzer that creates the diagnostic + can convey more detailed information to the fixer. If null, will return + . + + Arguments to the message of the diagnostic. + The instance. + + + + Creates a instance. + + A describing the diagnostic. + An optional primary location of the diagnostic. If null, will return . + + An optional set of additional locations related to the diagnostic. + Typically, these are locations of other items referenced in the message. + If null, will return an empty list. + + Arguments to the message of the diagnostic. + The instance. + + + + Creates a instance. + + A describing the diagnostic. + An optional primary location of the diagnostic. If null, will return . + + An optional set of additional locations related to the diagnostic. + Typically, these are locations of other items referenced in the message. + If null, will return an empty list. + + + An optional set of name-value pairs by means of which the analyzer that creates the diagnostic + can convey more detailed information to the fixer. If null, will return + . + + Arguments to the message of the diagnostic. + The instance. + + + + Creates a instance which is localizable. + + An identifier for the diagnostic. For diagnostics generated by the compiler, this will be a numeric code with a prefix such as "CS1001". + The category of the diagnostic. For diagnostics generated by the compiler, the category will be "Compiler". + The diagnostic message text. + The diagnostic's effective severity. + The diagnostic's default severity. + True if the diagnostic is enabled by default + The warning level, between 1 and 4 if severity is ; otherwise 0. + An optional short localizable title describing the diagnostic. + An optional longer localizable description for the diagnostic. + An optional hyperlink that provides more detailed information regarding the diagnostic. + An optional primary location of the diagnostic. If null, will return . + + An optional set of additional locations related to the diagnostic. + Typically, these are locations of other items referenced in the message. + If null, will return an empty list. + + + An optional set of custom tags for the diagnostic. See for some well known tags. + If null, will return an empty list. + + + An optional set of name-value pairs by means of which the analyzer that creates the diagnostic + can convey more detailed information to the fixer. If null, will return + . + + The instance. + + + + Creates a instance which is localizable. + + An identifier for the diagnostic. For diagnostics generated by the compiler, this will be a numeric code with a prefix such as "CS1001". + The category of the diagnostic. For diagnostics generated by the compiler, the category will be "Compiler". + The diagnostic message text. + The diagnostic's effective severity. + The diagnostic's default severity. + True if the diagnostic is enabled by default + The warning level, between 1 and 4 if severity is ; otherwise 0. + Flag indicating whether the diagnostic is suppressed by a source suppression. + An optional short localizable title describing the diagnostic. + An optional longer localizable description for the diagnostic. + An optional hyperlink that provides more detailed information regarding the diagnostic. + An optional primary location of the diagnostic. If null, will return . + + An optional set of additional locations related to the diagnostic. + Typically, these are locations of other items referenced in the message. + If null, will return an empty list. + + + An optional set of custom tags for the diagnostic. See for some well known tags. + If null, will return an empty list. + + + An optional set of name-value pairs by means of which the analyzer that creates the diagnostic + can convey more detailed information to the fixer. If null, will return + . + + The instance. + + + + Gets the diagnostic descriptor, which provides a description about a . + + + + + Gets the diagnostic identifier. For diagnostics generated by the compiler, this will be a numeric code with a prefix such as "CS1001". + + + + + Gets the category of diagnostic. For diagnostics generated by the compiler, the category will be "Compiler". + + + + + Get the culture specific text of the message. + + + + + Gets the default of the diagnostic's . + + + To get the effective severity of the diagnostic, use . + + + + + Gets the effective of the diagnostic. + + + To get the default severity of diagnostic's , use . + To determine if this is a warning treated as an error, use . + + + + + Gets the warning level. This is 0 for diagnostics with severity , + otherwise an integer between 1 and 4. + + + + + Returns true if the diagnostic has a source suppression, i.e. an attribute or a pragma suppression. + + + + + Gets the for suppressed diagnostics, i.e. = true. + Otherwise, returns null. + + + + + Returns true if this diagnostic is enabled by default by the author of the diagnostic. + + + + + Returns true if this is a warning treated as an error; otherwise false. + + + True implies = + and = . + + + + + Gets the primary location of the diagnostic, or if no primary location. + + + + + Gets an array of additional locations related to the diagnostic. + Typically these are the locations of other items referenced in the message. + + + + + Gets custom tags for the diagnostic. + + + + + Gets property bag for the diagnostic. it will return if there is no entry. + This can be used to put diagnostic specific information you want to pass around. for example, to corresponding fixer. + + + + + Create a new instance of this diagnostic with the Location property changed. + + + + + Create a new instance of this diagnostic with the Severity property changed. + + + + + Create a new instance of this diagnostic with the suppression info changed. + + + + + Returns true if the diagnostic location (or any additional location) is within the given tree and intersects with the filterSpanWithinTree, if non-null. + + + + + Returns true if a diagnostic is not configurable, i.e. cannot be suppressed or filtered or have its severity changed. + For example, compiler errors are always non-configurable. + + + + + Indicates that the diagnostic is related to some unnecessary source code. + + + + + Indicates that the diagnostic is related to edit and continue. + + + + + Indicates that the diagnostic is related to build. + + + + + Indicates that the diagnostic is reported by the compiler. + + + + + Indicates that the diagnostic can be used for telemetry + + + + + Indicates that the diagnostic is not configurable, i.e. it cannot be suppressed or filtered or have its severity changed. + + + + + Indicates that the diagnostic is related to an exception thrown by a . + + + + + Represents a mutable bag of diagnostics. You can add diagnostics to the bag, + and also get all the diagnostics out of the bag (the bag implements + IEnumerable<Diagnostics>. Once added, diagnostics cannot be removed, and no ordering + is guaranteed. + + It is ok to Add diagnostics to the same bag concurrently on multiple threads. + It is NOT ok to Add concurrently with Clear or Free operations. + + The bag is optimized to be efficient when containing zero errors. + + + + Return true if the bag is completely empty - not even containing void diagnostics. + + + This exists for short-circuiting purposes. Use + to get a resolved Tuple(Of NamedTypeSymbol, ImmutableArray(Of Diagnostic)) (i.e. empty after eliminating void diagnostics). + + + + + Returns true if the bag has any diagnostics with Severity=Error. Does not consider warnings or informationals. + + + Resolves any lazy diagnostics in the bag. + + Generally, this should only be called by the creator (modulo pooling) of the bag (i.e. don't use bags to communicate - + if you need more info, pass more info). + + + + + Returns true if the bag has any non-lazy diagnostics with Severity=Error. + + + Does not resolve any lazy diagnostics in the bag. + + Generally, this should only be called by the creator (modulo pooling) of the bag (i.e. don't use bags to communicate - + if you need more info, pass more info). + + + + + Add a diagnostic to the bag. + + + + + Add multiple diagnostics to the bag. + + + + + Add multiple diagnostics to the bag. + + + + + Add another DiagnosticBag to the bag. + + + + + Add another DiagnosticBag to the bag and free the argument. + + + + + Seal the bag so no further errors can be added, while clearing it and returning the old set of errors. + Return the bag to the pool. + + + + + Generally, this should only be called by the creator (modulo pooling) of the bag (i.e. don't use bags to communicate - + if you need more info, pass more info). + + + + + Using an iterator to avoid copying the list. If perf is a problem, + create an explicit enumerator type. + + + + + Get the underlying concurrent storage, creating it on demand if needed. + NOTE: Concurrent Adding to the bag is supported, but concurrent Clearing is not. + If one thread adds to the bug while another clears it, the scenario is + broken and we cannot do anything about it here. + + + + NOTE: Concurrent Adding to the bag is supported, but concurrent Clearing is not. + If one thread adds to the bug while another clears it, the scenario is + broken and we cannot do anything about it here. + + + + Provides a description about a + + + + + An unique identifier for the diagnostic. + + + + + A short localizable title describing the diagnostic. + + + + + An optional longer localizable description for the diagnostic. + + + + + An optional hyperlink that provides more detailed information regarding the diagnostic. + + + + + A localizable format message string, which can be passed as the first argument to when creating the diagnostic message with this descriptor. + + + + + + The category of the diagnostic (like Design, Naming etc.) + + + + + The default severity of the diagnostic. + + + + + Returns true if the diagnostic is enabled by default. + + + + + Custom tags for the diagnostic. + + + + + Create a DiagnosticDescriptor, which provides description about a . + NOTE: For localizable , and/or , + use constructor overload . + + A unique identifier for the diagnostic. For example, code analysis diagnostic ID "CA1001". + A short title describing the diagnostic. For example, for CA1001: "Types that own disposable fields should be disposable". + A format message string, which can be passed as the first argument to when creating the diagnostic message with this descriptor. + For example, for CA1001: "Implement IDisposable on '{0}' because it creates members of the following IDisposable types: '{1}'." + The category of the diagnostic (like Design, Naming etc.). For example, for CA1001: "Microsoft.Design". + Default severity of the diagnostic. + True if the diagnostic is enabled by default. + An optional longer description of the diagnostic. + An optional hyperlink that provides a more detailed description regarding the diagnostic. + Optional custom tags for the diagnostic. See for some well known tags. + + + + Create a DiagnosticDescriptor, which provides description about a . + + A unique identifier for the diagnostic. For example, code analysis diagnostic ID "CA1001". + A short localizable title describing the diagnostic. For example, for CA1001: "Types that own disposable fields should be disposable". + A localizable format message string, which can be passed as the first argument to when creating the diagnostic message with this descriptor. + For example, for CA1001: "Implement IDisposable on '{0}' because it creates members of the following IDisposable types: '{1}'." + The category of the diagnostic (like Design, Naming etc.). For example, for CA1001: "Microsoft.Design". + Default severity of the diagnostic. + True if the diagnostic is enabled by default. + An optional longer localizable description of the diagnostic. + An optional hyperlink that provides a more detailed description regarding the diagnostic. + Optional custom tags for the diagnostic. See for some well known tags. + Example descriptor for rule CA1001: + internal static DiagnosticDescriptor Rule = new DiagnosticDescriptor(RuleId, + new LocalizableResourceString(nameof(FxCopRulesResources.TypesThatOwnDisposableFieldsShouldBeDisposable), FxCopRulesResources.ResourceManager, typeof(FxCopRulesResources)), + new LocalizableResourceString(nameof(FxCopRulesResources.TypeOwnsDisposableFieldButIsNotDisposable), FxCopRulesResources.ResourceManager, typeof(FxCopRulesResources)), + FxCopDiagnosticCategory.Design, + DiagnosticSeverity.Warning, + isEnabledByDefault: true, + helpLinkUri: "http://msdn.microsoft.com/library/ms182172.aspx", + customTags: DiagnosticCustomTags.Microsoft); + + + + + Gets the effective severity of diagnostics created based on this descriptor and the given . + + Compilation options + + + + Returns true if diagnostic descriptor is not configurable, i.e. cannot be suppressed or filtered or have its severity changed. + For example, compiler errors are always non-configurable. + + + + + Formats messages. + + + + + Formats the message using the optional . + + The diagnostic. + The formatter; or null to use the default formatter. + The formatted message. + + + + A DiagnosticInfo object has information about a diagnostic, but without any attached location information. + + + More specialized diagnostics with additional information (e.g., ambiguity errors) can derive from this class to + provide access to additional information about the error, such as what symbols were involved in the ambiguity. + + + + + The error code, as an integer. + + + + + Returns the effective severity of the diagnostic: whether this diagnostic is informational, warning, or error. + If IsWarningsAsError is true, then this returns , while returns . + + + + + Returns whether this diagnostic is informational, warning, or error by default, based on the error code. + To get diagnostic's effective severity, use . + + + + + Gets the warning level. This is 0 for diagnostics with severity , + otherwise an integer between 1 and 4. + + + + + Returns true if this is a warning treated as an error. + + + True implies = and + = . + + + + + Get the diagnostic category for the given diagnostic code. + Default category is . + + + + + If a derived class has additional information about other referenced symbols, it can + expose the locations of those symbols in a general way, so they can be reported along + with the error. + + + + + Get the message id (for example "CS1001") for the message. This includes both the error number + and a prefix identifying the source. + + + + + Get the text of the message in the given language. + + + + + For a DiagnosticInfo that is lazily evaluated, this method evaluates it + and returns a non-lazy DiagnosticInfo. + + + + + Describes how severe a diagnostic is. + + + + + Something that is an issue, as determined by some authority, + but is not surfaced through normal means. + There may be different mechanisms that act on these issues. + + + + + Information that does not indicate a problem (i.e. not prescriptive). + + + + + Something suspicious but allowed. + + + + + Something not allowed by the rules of the language or other authority. + + + + + Values for severity that are used internally by the compiler but are not exposed. + + + + + An unknown severity diagnostic is something whose severity has not yet been determined. + + + + + If an unknown diagnostic is resolved and found to be unnecessary then it is + treated as a "Void" diagnostic + + + + + Values for ErrorCode/ERRID that are used internally by the compiler but are not exposed. + + + + + The code has yet to be determined. + + + + + The code was lazily determined and does not need to be reported. + + + + + A diagnostic (such as a compiler error or a warning), along with the location where it occurred. + + + + + Get the information about the diagnostic: the code, severity, message, etc. + + + + + True if the DiagnosticInfo for this diagnostic requires (or required - this property + is immutable) resolution. + + + + + Represents a span of text in a source code file in terms of file name, line number, and offset within line. + However, the file is actually whatever was passed in when asked to parse; there may not really be a file. + + + + + Path, or null if the span represents an invalid value. + + + Path may be if not available. + + + + + True if the is a mapped path. + + + A mapped path is a path specified in source via #line (C#) or #ExternalSource (VB) directives. + + + + + Gets the of the start of the span. + + + + + + Gets the of the end of the span. + + + + + + Gets the span. + + + + + Initializes the instance. + + The file identifier - typically a relative or absolute path. + The start line position. + The end line position. + is null. + + + + Initializes the instance. + + The file identifier - typically a relative or absolute path. + The span. + is null. + + + + Returns true if the span represents a valid location. + + + + + Determines if two FileLinePositionSpan objects are equal. + + + The path is treated as an opaque string, i.e. a case-sensitive comparison is used. + + + + + Determines if two FileLinePositionSpan objects are equal. + + + + + Serves as a hash function for FileLinePositionSpan. + + The hash code. + + The path is treated as an opaque string, i.e. a case-sensitive hash is calculated. + + + + + Returns a that represents FileLinePositionSpan. + + The string representation of FileLinePositionSpan. + Path: (0,0)-(5,6) + + + + A program location in source code. + + + + + Indicates that the implementing type can be serialized via + for diagnostic message purposes. + + + Not appropriate on types that require localization, since localization should + happen after serialization. + + + + + A program location in source code. + + + + + Location kind (None/SourceFile/MetadataFile). + + + + + Returns true if the location represents a specific location in a source code file. + + + + + Returns true if the location is in metadata. + + + + + The syntax tree this location is located in or null if not in a syntax tree. + + + + + Returns the metadata module the location is associated with or null if the module is not available. + + + Might return null even if returns true. The module symbol might not be available anymore, + for example, if the location is serialized and deserialized. + + + + + The location within the syntax tree that this location is associated with. + + + If returns False this method returns an empty which starts at position 0. + + + + + Gets the location in terms of path, line and column. + + + that contains path, line and column information. + + Returns an invalid span (see ) if the information is not available. + + The values are not affected by line mapping directives (#line in C# or #ExternalSource in VB). + + + + + Gets the location in terms of path, line and column after applying source line mapping directives + (#line in C# or #ExternalSource in VB). + + + that contains file, line and column information, + or an invalid span (see ) if not available. + + + + + A location of kind LocationKind.None. + + + + + Creates an instance of a for a span in a . + + + + + Creates an instance of a for a span in a file. + + + + + Specifies the kind of location (source vs. metadata). + + + + + Unspecified location. + + + + + The location represents a position in a source file. + + + + + The location represents a metadata file. + + + + + The location represents a position in an XML file. + + + + + The location in some external file. + + + + + A program location in metadata. + + + + + A class that represents no location at all. Useful for errors in command line options, for example. + + + + + + Describes how to report a warning diagnostic. + + + + + Report a diagnostic by default. + + + + + Report a diagnostic as an error. + + + + + Report a diagnostic as a warning even though /warnaserror is specified. + + + + + Report a diagnostic as an info. + + + + + Report a diagnostic as hidden. + + + + + Suppress a diagnostic. + + + + + A program location in source code. + + + + + A program location in an XML file. + + + + + WARN: This is a test hook - do not take a dependency on this. + + + + + + + + + + A class used to provide XML documentation to the compiler for members from metadata. A + custom implementation of this class should be returned from a DocumentationResolver to provide XML + documentation comments from custom caches or locations. + + + + + Fetches a documentation comment for the given member ID. + + The documentation member ID of the item to fetch. + The preferred culture to receive a comment in. Null if + there is no preference. This is a preference only, and providers may choose to provide + results from another culture if the preferred culture was unavailable. + A cancellation token for the search. + A DocumentationComment. + + + + DocumentationProviders are compared when determining whether an AssemblySymbol can be reused. + Hence, if multiple instances can represent the same documentation, it is imperative that + Equals (and GetHashCode) be overridden to capture this fact. Otherwise, it is possible to end + up with multiple AssemblySymbols for the same assembly, which plays havoc with the type hierarchy. + + + + + DocumentationProviders are compared when determining whether an AssemblySymbol can be reused. + Hence, if multiple instances can represent the same documentation, it is imperative that + GetHashCode (and Equals) be overridden to capture this fact. Otherwise, it is possible to end + up with multiple AssemblySymbols for the same assembly, which plays havoc with the type hierarchy. + + + + + A trivial DocumentationProvider which never returns documentation. + + + + + Used by the DocumentationCommentCompiler(s) to check doc comments for XML parse errors. + As a performance optimization, this class tries to re-use the same underlying instance + when possible. + + + + + Current text to validate. + + + + + We use to validate XML doc comments. Unfortunately it cannot be reset and thus can't be pooled. + Each time we need to validate a fragment of XML we "append" it to the underlying text reader, implemented by this class, + and advance the reader. By the end of the fragment validation, we keep the reader open in a state + that is ready for the next fragment validation unless the fragment was invalid, in which case we need to create a new XmlReader. + That is why pretends that the stream has extra spaces + at the end. That should be sufficient for to not reach the end of this reader before the next + fragment is appended, unless the current fragment is malformed in one way or another. + + + + + Specifies the different documentation comment processing modes. + + + Order matters: least processing to most processing. + + + + + Treats documentation comments as regular comments. + + + + + Parses documentation comments as structured trivia, but do not report any diagnostics. + + + + + Parses documentation comments as structured trivia and report diagnostics. + + + + + Maps an async/iterator method to the synthesized state machine type that implements the method. + + + + + Generate a ConstantValue of the same integer type as the argument + and offset by the given non-negative amount. Return ConstantValue.Bad + if the generated constant would be outside the valid range of the type. + + + + + Set by the host to a fail fast trigger, + if the host desires to crash the process on a fatal exception. + + + + + Set by the host to a fail fast trigger, + if the host desires to NOT crash the process on a non fatal exception. + + + + + Use in an exception filter to report a fatal error. + Unless the exception is + it calls . The exception is passed through (the method returns false). + + False to avoid catching the exception. + + + + Use in an exception filter to report a non fatal error. + Unless the exception is + it calls . The exception isn't passed through (the method returns true). + + True to catch the exception. + + + + Use in an exception filter to report a fatal error. + Unless the exception is + it calls . The exception is passed through (the method returns false). + + False to avoid catching the exception. + + + + Use in an exception filter to report a fatal error. + Calls and passes the exception through (the method returns false). + + False to avoid catching the exception. + + + + Use in an exception filter to report a non fatal error. + Calls and doesn't pass the exception through (the method returns true). + + True to catch the exception. + + + + Cache with a fixed size that evicts the least recently used members. + Thread-safe. + + + + + Create cache from an array. The cache capacity will be the size + of the array. All elements of the array will be added to the + cache. If any duplicate keys are found in the array a + will be thrown. + + + + + For testing. Very expensive. + + + + + Expects non-empty cache. Does not lock. + + + + + Doesn't lock. + + + + + Doesn't lock. + + + + + Represents an optional bool as a single byte. + + + + + Structure that describes a member of a type. + + + + + Id/token of containing type, usually value from some enum. + For example from SpecialType enum. + I am not using SpecialType as the type for this field because + VB runtime types are not part of SpecialType. + + So, the implication is that any type ids we use outside of the SpecialType + (either for the VB runtime classes, or types like System.Task etc.) will need + to use IDs that are all mutually disjoint. + + + + + Signature of the field or method, similar to metadata signature, + but with the following exceptions: + 1) Truncated on the left, for methods starts at [ParamCount], for fields at [Type] + 2) Type tokens are not compressed + 3) BOOLEAN | CHAR | I1 | U1 | I2 | U2 | I4 | U4 | I8 | U8 | R4 | R8 | I | U | Void types are encoded by + using VALUETYPE+typeId notation. + 4) array bounds are not included. + 5) modifiers are not included. + 6) (CLASS | VALUETYPE) are omitted after GENERICINST + + + + + Helper class to match signatures in format of + MemberDescriptor.Signature to members. + + + + + Returns true if signature matches signature of the field. + Signature should be in format described in MemberDescriptor. + + + + + Returns true if signature matches signature of the property. + Signature should be in format described in MemberDescriptor. + + + + + Returns true if signature matches signature of the method. + Signature should be in format described in MemberDescriptor. + + + + + Does pretty much the same thing as MetadataDecoder.DecodeType only instead of + producing a type symbol it compares encoded type to the target. + + Signature should be in format described in MemberDescriptor. + + + + + Should return null in case of error. + + + + + Should return null in case of error. + + + + + Should only accept Pointer types. + Should return null in case of error. + + + + + Should return null in case of error. + + + + + Should only accept multi-dimensional arrays. + + + + + Should only accept multi-dimensional arrays. + Should return null in case of error. + + + + If the encoded type is invalid. + An exception from metadata reader. + + + If the encoded type is invalid. + An exception from metadata reader. + + + If the encoded type is invalid. + An exception from metadata reader. + + + An exception from metadata reader. + + + If the encoded type is invalid. + An exception from metadata reader. + + + If the encoded local variable type is invalid. + An exception from metadata reader. + + + If the encoded local variable type is invalid. + An exception from metadata reader. + + + + Used to decode signatures of local constants returned by SymReader. + + + + + Returns the local info for all locals indexed by slot. + + + + If the encoded parameter type is invalid. + + + An exception from metadata reader. + + + + Decodes attribute parameter type from method signature. + + If the encoded parameter type is invalid. + An exception from metadata reader. + + + + Decodes attribute argument type from attribute blob (called FieldOrPropType in the spec). + + If the encoded argument type is invalid. + An exception from metadata reader. + + + If the encoded attribute argument is invalid. + An exception from metadata reader. + + + If the encoded attribute argument is invalid. + An exception from metadata reader. + + + If the encoded attribute argument is invalid. + An exception from metadata reader. + + + If the given is invalid. + An exception from metadata reader. + + + If the encoded named argument is invalid. + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + + Find the methods that a given method explicitly overrides. + + + Methods may be on class or interfaces. + Containing classes/interfaces will be supertypes of the implementing type. + + TypeDef handle of the implementing type. + MethodDef handle of the implementing method. + The type symbol for the implementing type. + Array of implemented methods. + + + + Search for the corresponding to the given MethodDef token. Search amongst + the supertypes (classes and interfaces) of a designated type. + + + Generally, the type will be a type that explicitly implements an interface and the method will be the + implemented method (i.e. on the interface). + + TypeDef token of the type from which the search should begin. + MethodDef token of the target method. + Corresponding or null, if none is found. + + + + Enqueue the interfaces implemented and the type extended by a given TypeDef. + + Queue of TypeDefs to search. + Queue of TypeSymbols (representing typeRefs to search). + Handle of the TypeDef for which we want to enqueue supertypes. + An exception from metadata reader. + + + + Helper method for enqueuing a type token in the right queue. + Def -> typeDefsToSearch + Ref -> typeSymbolsToSearch + null -> neither + + + + + Enqueue the interfaces implemented and the type extended by a given TypeDef. + + Queue of TypeDefs to search. + Queue of TypeSymbols (representing typeRefs to search). + Symbol for which we want to enqueue supertypes. + + + + Enqueue the given type as either a def or a ref. + + Queue of TypeDefs to search. + Queue of TypeSymbols (representing typeRefs to search). + Symbol to enqueue. + + + + Search the members of a TypeSymbol to find the one that matches a given MethodDef token. + + Type to search for method. + MethodDef handle of the method to find. + The corresponding MethodSymbol or null. + + + + Search the members of a TypeSymbol to find the one that matches a given FieldDef token. + + Type to search for field. + FieldDef handle of the field to find. + The corresponding FieldSymbol or null. + + + + Given a MemberRef token for a method, we can find a corresponding MethodSymbol by + searching for the name and signature. + + A MemberRef token for a method. + Scope the search to supertypes of the implementing type. + True to only return method symbols, null if the token resolves to a field. + The corresponding MethodSymbol or null. + + + + Given a method symbol, return the MethodDef token, if it is defined in + this module, or a nil token, otherwise. + + The method symbol for which to return a MethodDef token. + A MethodDef token or nil. + + + + Returns a symbol that given token resolves to or null of the token represents an entity that isn't represented by a symbol, + such as vararg MemberRef. + + + + + Given a MemberRef token, return the TypeSymbol for its Class field. + + + + + Checks whether signatures match where the signatures are either from a property + and an accessor or two accessors. When comparing a property or getter to setter, the + setter signature must be the second argument and 'comparingToSetter' must be true. + + + Signature of the property containing the accessor, or the getter (type, then parameters). + + + Signature of the accessor when comparing property and accessor, + or the setter when comparing getter and setter (return type and then parameters). + + + True when comparing a property or getter to a setter, false otherwise. + + + True if differences in IsByRef for parameters should be treated as significant. + + + True if differences in return type (or value parameter for setter) should be treated as significant. + + True if the accessor signature is appropriate for the containing property. + + + + Check whether an event accessor has an appropriate signature. + + Type of the event containing the accessor. + Signature of the accessor (return type and then parameters). + True if the accessor signature is appropriate for the containing event. + + + + Decodes a serialized type name in its canonical form. The canonical name is its full type name, followed + optionally by the assembly where it is defined, its version, culture and public key token. If the assembly + name is omitted, the type name is in the current assembly otherwise it is in the referenced assembly. The + full type name is the fully qualified metadata type name. + + + + + Decodes a type name. A type name is a string which is terminated by the end of the string or one of the + delimiters '+', ',', '[', ']'. '+' separates nested classes. '[' and ']' + enclosed generic type arguments. ',' separates types. + + + + + Decodes a generic name. This is a type name followed optionally by a type parameter count + + + + + An ImmutableArray representing the single string "System" + + + + + Calculates information about types and namespaces immediately contained within a namespace. + + + Is current namespace a global namespace? + + + Length of the fully-qualified name of this namespace. + + + The sequence of groups of TypeDef row ids for types contained within the namespace, + recursively including those from nested namespaces. The row ids must be grouped by the + fully-qualified namespace name in case-sensitive manner. + Key of each IGrouping is a fully-qualified namespace name, which starts with the name of + this namespace. There could be multiple groups for each fully-qualified namespace name. + + The groups must be sorted by the keys in a manner consistent with comparer passed in as + nameComparer. Therefore, all types immediately contained within THIS namespace, if any, + must be in several IGrouping at the very beginning of the sequence. + + + Equality comparer to compare namespace names. + + + Output parameter, never null: + A sequence of groups of TypeDef row ids for types immediately contained within this namespace. + + + Output parameter, never null: + A sequence with information about namespaces immediately contained within this namespace. + For each pair: + Key - contains simple name of a child namespace. + Value – contains a sequence similar to the one passed to this function, but + calculated for the child namespace. + + + + + + Extract a simple name of a top level child namespace from potentially qualified namespace name. + + + Parent namespace name length plus the dot. + + + Fully qualified namespace name. + + + Simple name of a top level child namespace, the left-most name following parent namespace name + in the fully qualified name. + + + + + Determines whether given string can be used as a non-empty metadata identifier (a NUL-terminated UTF8 string). + + + + + True if the string doesn't contain incomplete surrogates. + + + + + Checks that the specified name is a valid metadata String and a file name. + The specification isn't entirely consistent and complete but it mentions: + + 22.19.2: "Name shall index a non-empty string in the String heap. It shall be in the format {filename}.{extension} (e.g., 'foo.dll', but not 'c:\utils\foo.dll')." + 22.30.2: "The format of Name is {file name}.{file extension} with no path or drive letter; on POSIX-compliant systems Name contains no colon, no forward-slash, no backslash." + As Microsoft specific constraint. + + A reasonable restriction seems to be a valid UTF8 non-empty string that doesn't contain '\0', '\', '/', ':' characters. + + + + + Determine if the given namespace and type names combine to produce the given fully qualified name. + + The namespace part of the split name. + The type name part of the split name. + The fully qualified name to compare with. + true if the combination of and equals the fully-qualified name given by + + + + Given an input string changes it to be acceptable as a part of a type name. + + + + + Specifies what symbols to import from metadata. + + + + + Only import public and protected symbols. + + + + + Import public, protected and internal symbols. + + + + + Import all symbols. + + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + + Helper structure to encapsulate/cache various information about metadata name of a type and + name resolution options. + Also, allows us to stop using strings in the APIs that accept only metadata names, + making usage of them less bug prone. + + + + + Full metadata name of a type, includes namespace name for top level types. + + + + + Namespace name for top level types. + + + + + Name of the type without namespace prefix, but possibly with generic arity mangling present. + + + + + Name of the type without namespace prefix and without generic arity mangling. + + + + + Arity of the type inferred based on the name mangling. It doesn't have to match the actual + arity of the type. + + + + + While resolving the name, consider only types with this arity. + (-1) means allow any arity. + If forcedArity >= 0 and useCLSCompliantNameArityEncoding, lookup may + fail because forcedArity doesn't match the one encoded in the name. + + + + + While resolving the name, consider only types following + CLS-compliant generic type names and arity encoding (ECMA-335, section 10.7.2). + I.e. arity is inferred from the name and matching type must have the same + emitted name and arity. + TODO: PERF: Encode this field elsewhere to save 4 bytes + + + + + Individual parts of qualified namespace name. + + + + + Full metadata name of a type, includes namespace name for top level types. + + + + + Namespace name for top level types, empty string for nested types. + + + + + Name of the type without namespace prefix, but possibly with generic arity mangling present. + + + + + Name of the type without namespace prefix and without generic arity mangling. + + + + + Arity of the type inferred based on the name mangling. It doesn't have to match the actual + arity of the type. + + + + + Does name include arity mangling suffix. + + + + + While resolving the name, consider only types following + CLS-compliant generic type names and arity encoding (ECMA-335, section 10.7.2). + I.e. arity is inferred from the name and matching type must have the same + emitted name and arity. + + + + + While resolving the name, consider only types with this arity. + (-1) means allow any arity. + If ForcedArity >= 0 and UseCLSCompliantNameArityEncoding, lookup may + fail because ForcedArity doesn't match the one encoded in the name. + + + + + Individual parts of qualified namespace name. + + + + + A digest of MetadataTypeName's fully qualified name which can be used as the key in a dictionary + + + + + Returns true if the nested type should be imported. + + + + + Returns true if the field should be imported. Visibility + and the value of are considered + + + + + Returns true if the flags represent a field that should be imported. + Visibility and the value of are considered + + + + + Returns true if the method should be imported. Returns false for private methods that are not + explicit interface implementations. For other methods, visibility and the value of + are considered. + + + + + Returns 0 if method name doesn't represent a v-table gap. + Otherwise, returns the gap size. + + + + + All assemblies this assembly references. + + + A concatenation of assemblies referenced by each module in the order they are listed in . + + + + + The number of assemblies referenced by each module in . + + + + + Assembly identity read from Assembly table, or null if the table is empty. + + + + + Using for atomicity. + + + + + We need to store reference to the assembly metadata to keep the metadata alive while + symbols have reference to PEAssembly. + + + + + + + + A set of helpers for extracting elements from metadata. + This type is not responsible for managing the underlying storage + backing the PE image. + + + + + We need to store reference to the module metadata to keep the metadata alive while + symbols have reference to PEModule. + + + + + Using as a type for atomicity. + + + + + If bitmap is not null, each bit indicates whether a TypeDef + with corresponding RowId has been checked if it is a NoPia + local type. If the bit is 1, local type will have an entry + in m_lazyTypeDefToTypeIdentifierMap. + + + + + For each TypeDef that has 1 in m_lazyNoPiaLocalTypeCheckBitMap, + this map stores corresponding TypeIdentifier AttributeInfo. + + + + + Target architecture of the machine. + + + + + Indicates that this PE file makes Win32 calls. See CorPEKind.pe32BitRequired for more information (http://msdn.microsoft.com/en-us/library/ms230275.aspx). + + + + An exception from metadata reader. + + + + Returns the names of linked managed modules. + + An exception from metadata reader. + + + + Returns names of referenced modules. + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + + The function groups types defined in the module by their fully-qualified namespace name. + The case-sensitivity of the grouping depends upon the provided StringComparer. + + The sequence is sorted by name by using provided comparer. Therefore, if there are multiple + groups for a namespace name (e.g. because they differ in case), the groups are going to be + adjacent to each other. + + Empty string is used as namespace name for types in the Global namespace. Therefore, all types + in the Global namespace, if any, should be in the first group (assuming a reasonable StringComparer). + + Comparer to sort the groups. + + + A sorted list of TypeDef row ids, grouped by fully-qualified namespace name. + An exception from metadata reader. + + + + Groups together the RowIds of types in a given namespaces. The types considered are + those defined in this module. + + An exception from metadata reader. + + + + Supplements the namespace-to-RowIDs map with the namespaces of forwarded types. + These types will not have associated row IDs (represented as null, for efficiency). + These namespaces are important because we want lookups of missing forwarded types + to succeed far enough that we can actually find the type forwarder and provide + information about the target assembly. + + For example, consider the following forwarded type: + + .class extern forwarder Namespace.Type {} + + If this type is referenced in source as "Namespace.Type", then dev10 reports + + error CS1070: The type name 'Namespace.Name' could not be found. This type has been + forwarded to assembly 'pe2, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'. + Consider adding a reference to that assembly. + + If we did not include "Namespace" as a child of the global namespace of this module + (the forwarding module), then Roslyn would report that the type "Namespace" was not + found and say nothing about "Name" (because of the diagnostic already attached to + the qualifier). + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + + Returns a collection of interfaces implemented by given type. + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + + Determine if custom attribute application is + NoPia TypeIdentifier. + + + An index of the target constructor signature in + signaturesOfTypeIdentifierAttribute array, -1 if + this is not NoPia TypeIdentifier. + + + + + Determines if a custom attribute matches a namespace and name. + + Handle of the custom attribute. + The custom attribute's namespace in metadata format (case sensitive) + The custom attribute's type name in metadata format (case sensitive) + Constructor of the custom attribute. + Should case be ignored for name comparison? + true if match is found + + + + Determines if a custom attribute matches a namespace and name. + + The metadata reader. + Handle of the custom attribute. + The custom attribute's namespace in metadata format (case sensitive) + The custom attribute's type name in metadata format (case sensitive) + Constructor of the custom attribute. + Should case be ignored for name comparison? + true if match is found + + + + Returns MetadataToken for assembly ref matching name + + The assembly name in metadata format (case sensitive) + Matching assembly ref token or nil (0) + + + + Returns MetadataToken for type ref matching resolution scope and name + + The resolution scope token + The namespace name in metadata format (case sensitive) + The type name in metadata format (case sensitive) + Matching type ref token or nil (0) + + + An exception from metadata reader. + + + + Determine if custom attribute matches the target attribute. + + + Handle of the custom attribute. + + The attribute to match. + + An index of the target constructor signature in + signatures array, -1 if + this is not the target attribute. + + + + + Determine if custom attribute matches the target attribute. + + + The metadata reader. + + + Handle of the custom attribute. + + The attribute to match. + + An index of the target constructor signature in + signatures array, -1 if + this is not the target attribute. + + + + + Given a token for a constructor, return the token for the constructor's type and the blob containing the + constructor's signature. + + True if the function successfully returns the type and signature. + + + + Given a token for a constructor, return the token for the constructor's type and the blob containing the + constructor's signature. + + True if the function successfully returns the type and signature. + + + + Given a token for a type, return the type's name and namespace. Only works for top level types. + namespaceHandle will be NamespaceDefinitionHandle for defs and StringHandle for refs. + + True if the function successfully returns the name and namespace. + + + + Given a token for a type, return the type's name and namespace. Only works for top level types. + namespaceHandle will be NamespaceDefinitionHandle for defs and StringHandle for refs. + + True if the function successfully returns the name and namespace. + + + + For testing purposes only!!! + + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + + Returns an array of tokens for type constraints. Null reference if none. + + + + An array of tokens for type constraints. Null reference if none. + + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + + Returns true if method IL can be retrieved from the module. + + + + + Returns true if the full image of the module is available. + + + + Invalid metadata. + + + + Produce unbound generic type symbol if the type is a generic type. + + + + + Produce constructed type symbol. + + + + Symbol for generic type. + + + Generic type arguments, including those for containing types. + + + Flags for arguments. Each item indicates whether corresponding argument refers to NoPia local types. + + + + + Extracts information from TypeDef flags. + Returns 0 if the value is invalid. + + + + + Lookup a type defined in this module. + + + + + Lookup a type defined in referenced assembly. + + + + + Given the identity of an assembly referenced by this module, finds + the index of that assembly in the list of assemblies referenced by + the current module. + + + + + Represents an identity of an assembly as defined by CLI metadata specification. + + + May represent assembly definition or assembly reference identity. + + + Represents an identity of an assembly as defined by CLI metadata specification. + + + May represent assembly definition or assembly reference identity. + + + + + Constructs an from its constituent parts. + + The simple name of the assembly. + The version of the assembly. + + The name of the culture to associate with the assembly. + Specify null, , or "neutral" (any casing) to represent . + The name can be an arbitrary string that doesn't contain NUL character, the legality of the culture name is not validated. + + The public key or public key token of the assembly. + Indicates whether represents a public key. + Indicates whether the assembly is retargetable. + Specifies the binding model for how this object will be treated in comparisons. + If is null, empty or contains a NUL character. + If contains a NUL character. + is not a value of the enumeration. + contains values that are not greater than or equal to zero and less than or equal to ushort.MaxValue. + is true and is not set. + is false and + contains a value that is not the size of a public key token, 8 bytes. + + + + The simple name of the assembly. + + + + + The version of the assembly. + + + + + The culture name of the assembly, or empty if the culture is neutral. + + + + + The AssemblyNameFlags. + + + + + Specifies assembly binding model for the assembly definition or reference; + that is how assembly references are matched to assembly definitions. + + + + + True if the assembly identity includes full public key. + + + + + Full public key or empty. + + + + + Low 8 bytes of SHA1 hash of the public key, or empty. + + + + + True if the assembly identity has a strong name, ie. either a full public key or a token. + + + + + Gets the value which specifies if the assembly is retargetable. + + + + + Determines whether two instances are equal. + + The operand appearing on the left side of the operator. + The operand appearing on the right side of the operator. + + + + Determines whether two instances are not equal. + + The operand appearing on the left side of the operator. + The operand appearing on the right side of the operator. + + + + Determines whether the specified instance is equal to the current instance. + + The object to be compared with the current instance. + + + + Determines whether the specified instance is equal to the current instance. + + The object to be compared with the current instance. + + + + Returns the hash code for the current instance. + + + + + + Returns true (false) if specified assembly identities are (not) equal + regardless of unification, retargeting or other assembly binding policies. + Returns null if these policies must be consulted to determine name equivalence. + + + + + Retrieves assembly definition identity from given runtime assembly. + + The runtime assembly. + Assembly definition identity. + is null. + + + + Returns the display name of the assembly identity. + + True if the full public key should be included in the name. Otherwise public key token is used. + The display name. + + Characters ',', '=', '"', '\'', '\' occurring in the simple name are escaped by backslash in the display name. + Any character '\t' is replaced by two characters '\' and 't', + Any character '\n' is replaced by two characters '\' and 'n', + Any character '\r' is replaced by two characters '\' and 'r', + The assembly name in the display name is enclosed in double quotes if it starts or ends with + a whitespace character (' ', '\t', '\r', '\n'). + + + + + Returns the display name of the current instance. + + + + + Parses display name filling defaults for any basic properties that are missing. + + Display name. + A full assembly identity. + + Parts of the assembly identity that were specified in the display name, + or 0 if the parsing failed. + + True if display name parsed correctly. + + The simple name has to be non-empty. + A partially specified version might be missing build and/or revision number. The default value for these is 65535. + The default culture is neutral ( is . + If neither public key nor token is specified the identity is considered weak. + + is null. + + + + Compares assembly identities. + Derived types may implement platform specific unification and portability policies. + + + + + A set of possible outcomes of comparison. + + + + + Reference doesn't match definition. + + + + + Strongly named reference matches strongly named definition (strong identity is identity with public key or token), + Or weak reference matches weak definition. + + + + + Reference matches definition except for version (reference version is lower or higher than definition version). + + + + + Compares assembly reference name (possibly partial) with definition identity. + + Partial or full assembly display name. + Full assembly display name. + True if the reference name matches the definition identity. + + + + Compares assembly reference identity with definition identity. + + Reference assembly identity. + Full assembly display name. + True if the reference identity matches the definition identity. + + + + Compares reference assembly identity with definition identity and returns their relationship. + + Reference identity. + Definition identity. + + + + Represents an immutable snapshot of assembly CLI metadata. + + + + + Factory that provides the for additional modules (other than ) of the assembly. + Shall only throw or . + Null of all modules were specified at construction time. + + + + + Modules the was created with, in case they are eagerly allocated. + + + + + Cached assembly symbols. + + + Guarded by . + + + + + Creates a single-module assembly. + + + Manifest module image. + + is null. + + + + Creates a single-module assembly. + + + Manifest module image. + + is null. + The PE image format is invalid. + + + + Creates a single-module assembly. + + Manifest module PE image stream. + False to close the stream upon disposal of the metadata. + The PE image format is invalid. + + + + Creates a single-module assembly. + + Manifest module PE image stream. + False to close the stream upon disposal of the metadata. + The PE image format is invalid. + + + + Finds all modules of an assembly on a specified path and builds an instance of that represents them. + + The full path to the assembly on disk. + is null. + is invalid. + Error reading file . See for details. + Reading from a file path is not supported by the platform. + + + + Creates a single-module assembly. + + + Manifest module. + + This object disposes it when it is itself disposed. + + + + Creates a multi-module assembly. + + + Modules comprising the assembly. The first module is the manifest module of the assembly. + This object disposes the elements of it when it is itself . + is default value. + contains null elements. + is empty or contains a module that doesn't own its image (was created via ). + + + + Creates a multi-module assembly. + + + Modules comprising the assembly. The first module is the manifest module of the assembly. + This object disposes the elements of it when it is itself . + is default value. + contains null elements. + is empty or contains a module that doesn't own its image (was created via ). + + + + Creates a multi-module assembly. + + Modules comprising the assembly. The first module is the manifest module of the assembly. + This object disposes the elements of it when it is itself . + is default value. + contains null elements. + is empty or contains a module that doesn't own its image (was created via ). + + + + Creates a shallow copy of contained modules and wraps them into a new instance of . + + + The resulting copy shares the metadata images and metadata information read from them with the original. + It doesn't own the underlying metadata images and is not responsible for its disposal. + + This is used, for example, when a metadata cache needs to return the cached metadata to its users + while keeping the ownership of the cached metadata object. + + + + + Modules comprising this assembly. The first module is the manifest module. + + The PE image format is invalid. + IO error reading the metadata. See for details. + The object has been disposed. + + + The PE image format is invalid. + IO error while reading the metadata. See for details. + The object has been disposed. + + + The PE image format is invalid. + IO error while reading the metadata. See for details. + The object has been disposed. + + + + Disposes all modules contained in the assembly. + + + + + Checks if the first module has a single row in Assembly table and that all other modules have none. + + The PE image format is invalid. + IO error reading the metadata. See for details. + The object has been disposed. + + + + Returns the metadata kind. + + + + + Creates a reference to the assembly metadata. + + Provider of XML documentation comments for the metadata symbols contained in the module. + Aliases that can be used to refer to the assembly from source code (see "extern alias" directive in C#). + True to embed interop types from the referenced assembly to the referencing compilation. Must be false for a module. + Path describing the location of the metadata, or null if the metadata have no location. + Display string used in error messages to identity the reference. + A reference to the assembly metadata. + + + + Reference to another C# or VB compilation. + + + + + Returns an instance of the reference with specified aliases. + + The new aliases for the reference. + Alias is invalid for the metadata kind. + + + + Returns an instance of the reference with specified aliases. + + The new aliases for the reference. + Alias is invalid for the metadata kind. + + + + Returns an instance of the reference with specified interop types embedding. + + The new value for . + Interop types can't be embedded from modules. + + + + Returns an instance of the reference with specified properties, or this instance if properties haven't changed. + + The new properties for the reference. + Specified values not valid for this reference. + + + + An Id that can be used to identify a metadata instance. If two metadata instances + have the same id then they are guaranteed to have the same content. If two metadata + instances have different ids, then the contents may or may not be the same. As such, + the id is useful as a key in a cache when a client wants to share data for a metadata + reference as long as it has not changed. + + + + + Represents immutable assembly or module CLI metadata. + + + + + The id for this metadata instance. If two metadata instances have the same id, then + they have the same content. If they have different ids they may or may not have the + same content. + + + + + Retrieves the for this instance. + + + + + Releases any resources associated with this instance. + + + + + Creates a copy of this object. + + + + + The kind of metadata a PE file image contains. + + + + + The PE file is an assembly. + + + + + The PE file is a module. + + + + + Represents an in-memory Portable-Executable image. + + + + + Represents metadata image reference. + + + Represents a logical location of the image, not the content of the image. + The content might change in time. A snapshot is taken when the compiler queries the reference for its metadata. + + + + + Path or name used in error messages to identity the reference. + + + + + Returns true if this reference is an unresolved reference. + + + + + Returns an instance of the reference with specified aliases. + + The new aliases for the reference. + Alias is invalid for the metadata kind. + + + + Returns an instance of the reference with specified interop types embedding. + + The new value for . + Interop types can't be embedded from modules. + + + + Returns an instance of the reference with specified aliases. + + The new aliases for the reference. + Alias is invalid for the metadata kind. + + + + Returns an instance of the reference with specified properties, or this instance if properties haven't changed. + + The new properties for the reference. + Specified values not valid for this reference. + + + + Creates a reference to a single-module assembly or a standalone module stored in memory. + + Assembly image. + Reference properties (extern aliases, type embedding, ). + Provides XML documentation for symbol found in the reference. + Optional path that describes the location of the metadata. The file doesn't need to exist on disk. The path is opaque to the compiler. + + Performance considerations: + + It is recommended to use or + API when creating multiple references to the same metadata. + Reusing object to create multiple references allows for sharing data across these references. + + + The method pins in managed heap. The pinned memory is released + when the resulting reference becomes unreachable and GC collects it. To control the lifetime of the pinned memory + deterministically use + to create an metadata object and + to get a reference to it. + + + The method creates a reference to a single-module assembly. To create a reference to a multi-module assembly or a stand-alone module use + and . + + + is null. + + + + Creates a reference to a single-module assembly or a standalone module stored in memory. + + Assembly image. + Reference properties (extern aliases, type embedding, ). + Provides XML documentation for symbol found in the reference. + Optional path that describes the location of the metadata. The file doesn't need to exist on disk. The path is opaque to the compiler. + + Performance considerations: + + It is recommended to use or + API when creating multiple references to the same metadata. + Reusing object to create multiple references allows for sharing data across these references. + + + The method makes a copy of the data and pins it. To avoid making a copy use an overload that takes an . + The pinned memory is released when the resulting reference becomes unreachable and GC collects it. To control the lifetime of the pinned memory + deterministically use + to create an metadata object and + to get a reference to it. + to get a reference to it. + + + is null. + + + + Creates a reference to a single-module assembly or a stand-alone module from data in specified stream. + Reads the content of the stream into memory and closes the stream upon return. + + Assembly image. + Reference properties (extern aliases, type embedding, ). + Provides XML documentation for symbol found in the reference. + Optional path that describes the location of the metadata. The file doesn't need to exist on disk. The path is opaque to the compiler. + doesn't support read and seek operations. + is null. + An error occurred while reading the stream. + + Performance considerations: + + It is recommended to use or + API when creating multiple references to the same metadata. + Reusing object to create multiple references allows for sharing data across these references. + + + The method eagerly reads the entire content of into native heap. The native memory block is released + when the resulting reference becomes unreachable and GC collects it. To decrease memory footprint of the reference and/or manage + the lifetime deterministically use + to create an metadata object and + to get a reference to it. + to get a reference to it. + + + + + + Creates a reference to an assembly or standalone module stored in a file. + Reads the content of the file into memory. + + Path to the assembly file. + Reference properties (extern aliases, type embedding, ). + Provides XML documentation for symbol found in the reference. + is null. + is invalid. + An error occurred while reading the file. + + Performance considerations: + + It is recommended to use or + API when creating multiple references to the same file. + Reusing object allows for sharing data across these references. + + + The method eagerly reads the entire content of the file into native heap. The native memory block is released + when the resulting reference becomes unreachable and GC collects it. To decrease memory footprint of the reference and/or manage + the lifetime deterministically use + to create an metadata object and + + to get a reference to it. + + + + + + Creates a reference to a loaded assembly. + + Path to the module file. + is null. + is dynamic, doesn't have a location, or the platform doesn't support reading from the location. + + Performance considerations: + + It is recommended to use API when creating multiple references to the same assembly. + Reusing object allows for sharing data across these references. + + + + + + Creates a reference to a loaded assembly. + + Path to the module file. + Reference properties (extern aliases, type embedding). + Provides XML documentation for symbol found in the reference. + is null. + . is not . + is dynamic, doesn't have a location, or the platform doesn't support reading from the location. + + Performance considerations: + + It is recommended to use API when creating multiple references to the same assembly. + Reusing object allows for sharing data across these references. + + + + + + Information about a metadata reference. + + + + + Default properties for a module reference. + + + + + Default properties for an assembly reference. + + + + + Initializes reference properties. + + The image kind - assembly or module. + Assembly aliases. Can't be set for a module. + True to embed interop types from the referenced assembly to the referencing compilation. Must be false for a module. + + + + Returns with specified aliases. + + + is , as modules can't be aliased. + + + + + Returns with specified aliases. + + + is , as modules can't be aliased. + + + + + Returns with set to specified value. + + is , as interop types can't be embedded from modules. + + + + Returns with set to specified value. + + + + + The image kind (assembly or module) the reference refers to. + + + + + Alias that represents a global declaration space. + + + Namespaces in references whose contain are available in global declaration space. + + + + + Aliases for the metadata reference. Empty if the reference has no aliases. + + + In C# these aliases can be used in "extern alias" syntax to disambiguate type names. + + + + + True if interop types defined in the referenced metadata should be embedded into the compilation referencing the metadata. + + + + + True to apply recursively on the target assembly and on all its transitive dependencies. + False to apply only on the target assembly. + + + + + Resolves references to metadata specified in the source (#r directives). + + + + + True to instruct the compiler to invoke for each assembly reference that + doesn't match any of the assemblies explicitly referenced by the (via , or #r directives. + + + + + Resolves a missing assembly reference. + + The metadata definition (assembly or module) that declares assembly reference in its list of dependencies. + Identity of the assembly reference that couldn't be resolved against metadata references explicitly specified to in the compilation. + Resolved reference or null if the identity can't be resolved. + + + + Represents an immutable snapshot of module CLI metadata. + + This object may allocate significant resources or lock files depending upon how it is constructed. + + + + Create metadata module from a raw memory pointer to metadata directory of a PE image or .cormeta section of an object file. + Only manifest modules are currently supported. + + Pointer to the start of metadata block. + The size of the metadata block. + is null. + is not positive. + + + + Create metadata module from a raw memory pointer to a PE image or an object file. + + Pointer to the DOS header ("MZ") of a portable executable image. + The size of the image pointed to by . + is null. + is not positive. + + + + Create metadata module from a sequence of bytes. + + The portable executable image beginning with the DOS header ("MZ"). + is null. + + + + Create metadata module from a byte array. + + Portable executable image beginning with the DOS header ("MZ"). + is null. + + + + Create metadata module from a stream. + + Stream containing portable executable image. Position zero should contain the first byte of the DOS header ("MZ"). + + False to close the stream upon disposal of the metadata (the responsibility for disposal of the stream is transferred upon entry of the constructor + unless the arguments given are invalid). + + is null. + The stream doesn't support seek operations. + + + + Create metadata module from a stream. + + Stream containing portable executable image. Position zero should contain the first byte of the DOS header ("MZ"). + + Options specifying how sections of the PE image are read from the stream. + Unless is specified, the responsibility for disposal of the stream is transferred upon entry of the constructor + unless the arguments given are invalid. + + is null. + The stream doesn't support read and seek operations. + has an invalid value. + + or is specified and the PE headers of the image are invalid. + + + or is specified and an error occurs while reading the stream. + + + + + Creates metadata module from a file containing a portable executable image. + + File path. + + The file might remain mapped (and read-locked) until this object is disposed. + The memory map is only created for large files. Small files are read into memory. + + is null. + is invalid. + Error opening file . See for details. + File not found. + Reading from a file path is not supported by the platform. + + + + Creates a shallow copy of this object. + + + The resulting copy shares the metadata image and metadata information read from it with the original. + It doesn't own the underlying metadata image and is not responsible for its disposal. + + This is used, for example, when a metadata cache needs to return the cached metadata to its users + while keeping the ownership of the cached metadata object. + + + + + Frees memory and handles allocated for the module. + + + + + Name of the module. + + Invalid metadata. + Module has been disposed. + + + + Version of the module content. + + Invalid metadata. + Module has been disposed. + + + + Returns the for this instance. + + + + + Returns the file names of linked managed modules. + + When an invalid module name is encountered. + Module has been disposed. + + + + Returns the metadata reader. + + Module has been disposed. + When an invalid module name is encountered. + + + + Creates a reference to the module metadata. + + Provider of XML documentation comments for the metadata symbols contained in the module. + Path describing the location of the metadata, or null if the metadata have no location. + Display string used in error messages to identity the reference. + A reference to the module metadata. + + + + Reference to metadata stored in the standard ECMA-335 metadata format. + + + + + Display string used in error messages to identity the reference. + + + + + Path describing the location of the metadata, or null if the metadata have no location. + + + + + XML documentation comments provider for the reference. + + + + + Create documentation provider for the reference. + + + Called when the compiler needs to read the documentation for the reference. + This method can be called multiple times from different threads. The result of one of the calls + is cached on the reference object. + + + + + Returns an instance of the reference with specified aliases. + + The new aliases for the reference. + Alias is invalid for the metadata kind. + + + + Returns an instance of the reference with specified aliases. + + The new aliases for the reference. + Alias is invalid for the metadata kind. + + + + Returns an instance of the reference with specified interop types embedding. + + The new value for . + Interop types can't be embedded from modules. + + + + Returns an instance of the reference with specified properties, or this instance if properties haven't changed. + + The new properties for the reference. + Specified values not valid for this reference. + + + + Returns an instance of the reference with specified properties. + + The new properties for the reference. + Specified values not supported. + Only invoked if the properties changed. + + + + Get metadata representation for the PE file. + + If the PE image format is invalid. + The metadata image content can't be read. + The metadata image is stored in a file that can't be found. + + Called when the needs to read the reference metadata. + + The listed exceptions are caught and converted to compilation diagnostics. + Any other exception is considered an unexpected error in the implementation and is not caught. + + objects may cache information decoded from the PE image. + Reusing instances across metadata references will result in better performance. + + The calling doesn't take ownership of the objects returned by this method. + The implementation needs to retrieve the object from a provider that manages their lifetime (such as metadata cache). + The object is kept alive by the that called + and by all compilations created from it via calls to With- factory methods on , + other than overloads. A compilation created using + will call to again. + + + + + Returns a copy of the object this + contains. This copy does not need to be d. + + If the PE image format is invalid. + The metadata image content can't be read. + The metadata image is stored in a file that can't be found. + + + + Represents the value of #r reference along with its source location. + + + + + Represents a metadata reference that can't be or is not yet resolved. + + + For error reporting only, can't be used to reference a metadata file. + + + + + Initializes a new instance of the class. + + An ordered set of fully qualified + paths which are searched when resolving assembly names. + Directory used when resolving relative paths. + + + + Represents errors that occur while parsing RuleSet files. + + + + + Represents a set of rules as specified in a ruleset file. + + + + + The file path of the ruleset file. + + + + + The global option specified by the IncludeAll tag. + + + + + Individual rule ids and their associated actions. + + + + + List of rulesets included by this ruleset. + + + + + Create a RuleSet. + + + + + Create a RuleSet with a global effective action applied on it. + + + + + Get the effective ruleset after resolving all the included rulesets. + + + + + Get all the files involved in resolving this ruleset. + + + + + Returns true if the action1 is stricter than action2. + + + + + Load the ruleset from the specified file. This ruleset will contain + all the rules resolved from the includes specified in the ruleset file + as well. See also: . + + + A ruleset that contains resolved rules or null if there were errors. + + + + + Get the paths to all files contributing rules to the ruleset from the specified file. + See also: . + + + The full paths to included files, or an empty array if there were errors. + + + + + Parses the ruleset file at the given and returns the following diagnostic options from the parsed file: + 1) A map of from rule ID to option. + 2) A global option for all rules in the ruleset file. + + + + + Represents a Include tag in a RuleSet file. + + + + + The path of the included file. + + + + + The effective action to apply on this included ruleset. + + + + + Create a RuleSetInclude given the include path and the effective action. + + + + + Gets the RuleSet associated with this ruleset include + + The parent of this ruleset include + + + + Returns a full path to the include file. Relative paths are expanded relative to the current rule set file. + + The parent of this rule set include + + + + This type is responsible for parsing a ruleset xml file and producing a object. + + + + + Creates and loads the rule set from a file + + The file path to load the rule set + + + + Load the rule set from the XML node + + The rule set node from which to create a rule set object + The file path to the rule set file + A rule set object with data from the given XML node + + + + Load the rules from the XML node + + The rules node from which to loop through each child rule node + A list of rule objects with data from the given XML node + + + + Load the rule from the XML node + + The rule node from which to create a rule object + The analyzer this rule belongs to + The namespace this rule belongs to + A rule object with data from the given XML node + + + + Load the included rule set from the XML node + + The include node from which to create a RuleSetInclude object + A RuleSetInclude object with data from the given XML node + + + + Reads the action from the given node + + The node to read the action, it can be a rule node or an include node. + Whether or not the default value is allowed. + The rule action + + + + Load the IncludedAll from the XML node + + The IncludeAll node from which to create a IncludeAll object + A IncludeAll object with data from the given XML node + + + + Reads an attribute from a node and validates that it is not empty. + + The XML node that contains the attribute + The name of the attribute to read + The attribute value + + + + Gets the default settings to read the ruleset xml file. + + + + + Resolves references to source files specified in source code. + + + + + Determines if a flag is set on the enum. + + The value to check. + An enum field that specifies the flag. + Whether the is set on the . + + + + Specifies the options for how generics are displayed in the description of a symbol. + + + + + Format object using default options. + + + + + In C#, include the numeric code point before character literals. + + + + + Whether or not to include type suffix for applicable integral literals. + + + + + Whether or not to display integral literals in hexadecimal. + + + + + Whether or not to quote character and string literals. + + + + + In C#, replace non-printable (e.g. control) characters with dedicated (e.g. \t) or unicode (\u0001) escape sequences. + In Visual Basic, replace non-printable characters with calls to ChrW and vb* constants. + + + + + Represents a value type that can be assigned null. + + + + + + Initializes a new instance to the specified value. + + + + + + Gets a value indicating whether the current object has a value. + + + + + + Gets the value of the current object. + + + + + + Creates a new object initialized to a specified value. + + + + + + Specifies output assembly kinds generated by compiler. + + + + + An .exe with an entry point and a console. + + + + + An .exe with an entry point but no console. + + + + + A .dll file. + + + + + A .netmodule file. + + + + + A .winmdobj file. + + + + + An .exe that can run in an app container. + + + Equivalent to a WindowsApplication, but with an extra bit set in the Portable Executable file + so that the application can only be run in an app container. + Also known as a "Windows Store app". + + + + + The base class for language specific assembly managers. + + Language specific representation for a compilation + Language specific representation for an assembly symbol. + + + + Information about an assembly, used as an input for the Binder class. + + + + + Identity of the assembly. + + + + + Identity of assemblies referenced by this assembly. + References should always be returned in the same order. + + + + + The sequence of AssemblySymbols the Binder can choose from. + + + + + Check if provided AssemblySymbol is created for assembly described by this instance. + This method is expected to return true for every AssemblySymbol returned by + AvailableSymbols property. + + + The AssemblySymbol to check. + + Boolean. + + + + Resolve assembly references against assemblies described by provided AssemblyData objects. + In other words, match assembly identities returned by AssemblyReferences property against + assemblies described by provided AssemblyData objects. + + An array of AssemblyData objects to match against. + Used to compare assembly identities. + + For each assembly referenced by this assembly () + a description of how it binds to one of the input assemblies. + + + + + Get the source compilation backing this assembly, if one exists. + Returns null otherwise. + + + + + Result of binding an AssemblyRef to an AssemblyDef. + + + + + Failed binding. + + + + + Successful binding. + + + + + Returns true if the reference was matched with the identity of the assembly being built. + + + + + True if the definition index is available (reference was successfully matched with the definition). + + + + + 0 if the reference is equivalent to the definition. + -1 if version of the matched definition is lower than version of the reference, but the reference otherwise matches the definition. + +1 if version of the matched definition is higher than version of the reference, but the reference otherwise matches the definition. + + Undefined unless is true. + + + + + Index into assembly definition list. + Undefined unless is true. + + + + + Private helper class to capture information about AssemblySymbol instance we + should check for suitability. Used by the Bind method. + + + + + An index of the AssemblyData object in the input array. AssemblySymbol instance should + be checked for suitability against assembly described by that object, taking into account + assemblies described by other AssemblyData objects in the input array. + + + + + AssemblySymbol instance to check for suitability. + + + + + Convenience constructor to initialize fields of this structure. + + + + + Result of binding an input assembly and its references. + + + + + Suitable AssemblySymbol instance for the corresponding assembly, + null reference if none is available/found. + + + + + For each AssemblyRef of this AssemblyDef specifies which AssemblyDef matches the reference. + + + Result of resolving assembly references of the corresponding assembly + against provided set of assemblies. Essentially, this is an array returned by + AssemblyData.BindAssemblyReferences method. + + Each element describes the assembly the corresponding reference of the input assembly + is bound to. + + + + + For the given set of AssemblyData objects, do the following: + 1) Resolve references from each assembly against other assemblies in the set. + 2) Choose suitable AssemblySymbol instance for each AssemblyData object. + + The first element (index==0) of the assemblies array represents the assembly being built. + One can think about the rest of the items in assemblies array as assembly references given to the compiler to + build executable for the assembly being built. + + Compilation. + + An array of objects describing assemblies, for which this method should + resolve references and find suitable AssemblySymbols. The first slot contains the assembly being built. + + + An array of objects describing standalone modules referenced by the compilation. + + + An array of references passed to the compilation and resolved from #r directives. + May contain references that were skipped during resolution (they don't have a corresponding explicit assmebly). + + + Maps index to to an index of a resolved assembly or module in or modules. + + + Reference resolver used to look up missing assemblies. + + + Hide lower versions of dependencies that have multiple versions behind an alias. + + + Used to filter out assemblies that have the same strong or weak identity. + Maps simple name to a list of identities. The highest version of each name is the first. + + + Import options applied to implicitly resolved references. + + + Updated array with resolved implicitly referenced assemblies appended. + + + Implicitly resolved references. + + + Maps indices of implicitly resolved references to the corresponding indices of resolved assemblies in (explicit + implicit). + + + Any diagnostics reported while resolving missing assemblies. + + + True if the assembly being compiled is indirectly referenced through some of its own references. + + + The definition index of the COR library. + + + An array of structures describing the result. It has the same amount of items as + the input assemblies array, for each input AssemblyData object resides + at the same position. + + Each contains the following data: + + - Suitable AssemblySymbol instance for the corresponding assembly, + null reference if none is available/found. Always null for the first element, which corresponds to the assembly being built. + + - Result of resolving assembly references of the corresponding assembly + against provided set of assembly definitions. Essentially, this is an array returned by + method. + + + + + Determines if it is possible that gives internals + access to assembly . It does not make a conclusive + determination of visibility because the compilation's strong name key is not supplied. + + + + + Return AssemblySymbols referenced by the input AssemblySymbol. The AssemblySymbols must correspond + to the AssemblyNames returned by AssemblyData.AssemblyReferences property. If reference is not + resolved, null reference should be returned in the corresponding item. + + + The target AssemblySymbol instance. + + An array of AssemblySymbols referenced by the input AssemblySymbol. + Implementers may return cached array, Binder does not mutate it. + + + + + Return collection of assemblies involved in canonical type resolution of + NoPia local types defined within target assembly. In other words, all + references used by previous compilation referencing the target assembly. + + + + + Assembly is /l-ed by compilation that is using it as a reference. + + + + + Get Assembly used as COR library for the candidate. + + + + + Checks if the properties of are compatible with properties of . + Reports inconsistencies to the given diagnostic bag. + + True if the properties are compatible and hence merged, false if the duplicate reference should not merge it's properties with primary reference. + + + + Called to compare two weakly named identities with the same name. + + + + + Aliases that should be applied to the referenced assembly. + Empty array means {"global"} (all namespaces and types in the global namespace of the assembly are accessible without qualification). + Null if not applicable (the reference only has recursive aliases). + + + + + Aliases that should be applied recursively to all dependent assemblies. + Empty array means {"global"} (all namespaces and types in the global namespace of the assembly are accessible without qualification). + Null if not applicable (the reference only has simple aliases). + + + + + default() is considered skipped. + + + + + Index into an array of assemblies (not including the assembly being built) or an array of modules, depending on . + + + + + non-negative: Index into the array of all (explicitly and implicitly) referenced assemblies. + negative: ExplicitlyReferencedAssemblies.Count + RelativeAssemblyIndex is an index into the array of assemblies. + + + + + Resolves given metadata references to assemblies and modules. + + The compilation whose references are being resolved. + + Used to filter out assemblies that have the same strong or weak identity. + Maps simple name to a list of identities. The highest version of each name is the first. + + List where to store resolved references. References from #r directives will follow references passed to the compilation constructor. + Maps #r values to successfully resolved metadata references. Does not contain values that failed to resolve. + Unique metadata references resolved from #r directives. + List where to store information about resolved assemblies to. + List where to store information about resolved modules to. + Diagnostic bag where to report resolution errors. + + Maps index to to an index of a resolved assembly or module in or , respectively. + + + + + Creates or gets metadata for PE reference. + + + If any of the following exceptions: , , , + are thrown while reading the metadata file, the exception is caught and an appropriate diagnostic stored in . + + + + + Determines whether references are the same. Compilation references are the same if they refer to the same compilation. + Otherwise, references are represented by their object identities. + + + + + Merges aliases of the first observed reference () with aliases specified for an equivalent reference (). + Empty alias list is considered to be the same as a list containing "global", since in both cases C# allows unqualified access to the symbols. + + + + + Caller is responsible for freeing any allocated ArrayBuilders. + + + + + Caller is responsible for freeing any allocated ArrayBuilders. + + + + + Returns null if an assembly of an equivalent identity has not been added previously, otherwise returns the reference that added it. + Two identities are considered equivalent if + - both assembly names are strong (have keys) and are either equal or FX unified + - both assembly names are weak (no keys) and have the same simple name. + + + + + For each given directive return a bound PE reference, or null if the binding fails. + + + + + Used to match AssemblyRef with AssemblyDef. + + Array of definition identities to match against. + An index of the first definition to consider, preceding this index are ignored. + Reference identity to resolve. + Assembly identity comparer. + + Returns an index the reference is bound. + + + + + If the compilation being built represents an assembly its assembly name. + If the compilation being built represents a module, the name of the + containing assembly or + if not specified (/moduleassemblyname command line option). + + + + + Used to compares assembly identities. + May implement unification and portability policies specific to the target platform. + + + + + Metadata observed by the compiler. + May be shared across multiple Reference Managers. + Access only under lock(). + + + + + Once this is non-zero the state of the manager is fully initialized and immutable. + + + + + True if the compilation has a reference that refers back to the assembly being compiled. + + + If we have a circular reference the bound references can't be shared with other compilations. + + + + + A map from a metadata reference to an index to array. Do not access + directly, use property instead. + + + + + A map from a net-module metadata reference to the index of the corresponding module + symbol in the source assembly symbol for the current compilation. + + + Subtract one from the index (for the manifest module) to find the corresponding elements + of and . + + + + + Maps (containing syntax tree file name, reference string) of #r directive to a resolved metadata reference. + If multiple #r's in the same tree use the same value as a reference the resolved metadata reference is the same as well. + + + + + Array of unique bound #r references. + + + The references are in the order they appear in syntax trees. This order is currently preserved + as syntax trees are added or removed, but we might decide to share reference manager between compilations + with different order of #r's. It doesn't seem this would be an issue since all #r's within the compilation + have the same "priority" with respect to each other. + + + + + Diagnostics produced during reference resolution and binding. + + + When reporting diagnostics be sure not to include any information that can't be shared among + compilations that share the same reference manager (such as full identity of the compilation, + simple assembly name is ok). + + + + + COR library symbol, or null if the compilation itself is the COR library. + + + If the compilation being built is the COR library we don't want to store its source assembly symbol + here since we wouldn't be able to share the state among subsequent compilations that are derived from it + (each of them has its own source assembly symbol). + + + + + Standalone modules referenced by the compilation (doesn't include the manifest module of the compilation). + + + [i] corresponds to [i]. + + + + + References of standalone modules referenced by the compilation (doesn't include the manifest module of the compilation). + + + [i] corresponds to [i]. + + + + + Assemblies referenced directly by the source module of the compilation. + + + + + Assemblies referenced directly by the source module of the compilation. + + + Aliases [i] are of an assembly [i]. + + + + + Unified assemblies referenced directly by the source module of the compilation. + + + + + Call only while holding . + + + + + Call only while holding . + + + + + Global namespaces of assembly references that have been superseded by an assembly reference with a higher version are + hidden behind to avoid ambiguity when they are accessed from source. + All existing aliases of a superseded assembly are discarded. + + + + + Calculates map from the identities of specified symbols to the corresponding identities in the original EnC baseline metadata. + The map only includes an entry for identities that differ, i.e. for symbols representing assembly references of the current compilation that have different identities + than the corresponding identity in baseline metadata AssemblyRef table. The key comparer of the map ignores build and revision parts of the version number, + since these might change if the original version included wildcard. + + Assembly symbols for references of the current compilation. + Identities in the baseline. [i] corresponds to [i]. + + + + Gets the that corresponds to the assembly symbol. + + + + + Must be acquired whenever the following data are about to be modified: + - Compilation.lazyAssemblySymbol + - Compilation.referenceManager + - ReferenceManager state + - + - + + All the above data should be updated at once while holding this lock. + Once lazyAssemblySymbol is set the Compilation.referenceManager field and ReferenceManager + state should not change. + + + + + Enumerates all referenced assemblies. + + + + + Enumerates all referenced assemblies and their aliases. + + + + + A record of the assemblies referenced by a module (their identities, symbols, and unification). + + + + + Identities of referenced assemblies (those that are or will be emitted to metadata). + + + Names[i] is the identity of assembly Symbols[i]. + + + + + Assembly symbols that the identities are resolved against. + + + Names[i] is the identity of assembly Symbols[i]. + Unresolved references are represented as MissingAssemblySymbols. + + + + + A subset of that correspond to references with non-matching (unified) + version along with unification details. + + + + + Assembly symbol referenced by a AssemblyRef for which we couldn't find a matching + compilation reference but we found one that differs in version. + Created only for assemblies that require runtime binding redirection policy, + i.e. not for Framework assemblies. + + + + + Original reference that was unified to the identity of the . + + + + + Representation of a resource whose contents are to be embedded in the output assembly. + + + + + Creates a representation of a resource whose contents are to be embedded in the output assembly. + + Resource name. + The callers will dispose the result after use. + This allows the resources to be opened and read one at a time. + + True if the resource is public. + + Returns a stream of the data to embed. + + + + + Creates a representation of a resource whose file name will be recorded in the assembly. + + Resource name. + File name with an extension to be stored in metadata. + The callers will dispose the result after use. + This allows the resources to be opened and read one at a time. + + True if the resource is public. + + Function returning a stream of the resource content (used to calculate hash). + + + + + Specifies the C# or VB source code kind. + + + + + No scripting. Used for .cs/.vb file parsing. + + + + + Allows top-level statements, declarations, and optional trailing expression. + Used for parsing .csx/.vbx and interactive submissions. + + + + + The same as . + + + + + Specifies the Ids of special runtime types. + + + Only types explicitly mentioned in "Co-located core types" spec + (https://github.com/dotnet/roslyn/blob/master/docs/compilers/Co-located%20core%20types.md) + can be in this enum. + The following things should be in sync: + 1) SpecialType enum + 2) names in SpecialTypes.EmittedNames array. + + + + + Indicates a non-special type (default value). + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Count of special types. This is not a count of enum members. + + + + + Checks if a type is considered a "built-in integral" by CLR. + + + + + Checks if a type is a primitive of a fixed size. + + + + + These special types are structs that contain fields of the same type + (e.g. System.Int32 contains a field of type System.Int32). + + + + + Array of names for types from Cor Library. + The names should correspond to ids from TypeId enum so + that we could use ids to index into the array + + + + + + Gets the name of the special type as it would appear in metadata. + + + + + The strong name key associated with the identity of this assembly. + This contains the contents of the user-supplied key file exactly as extracted. + + + + + Determines source assembly identity. + + + + + A diagnostic created in the process of determining the key. + + + + + The CSP key container containing the public key used to produce the key, + or null if the key was retrieved from . + + + The original value as specified by or + . + + + + + Original key file path, or null if the key is provided by the . + + + The original value as specified by or + + + + + + True if the compilation can be signed using these keys. + + + + + True if a strong name can be created for the compilation using these keys. + + + + + Provides strong name and signs source assemblies. + + + + + Contains helper methods for switch statement label constants + + + + + Method used to compare ConstantValues for switch statement case labels + + + + A value that indicates the relative order of the objects being compared. The return value has these meanings: + Less than zero: first instance precedes second in the sort order. + Zero: first instance occurs in the same position in the sort order as second. + Greater than zero: first instance follows second in the sort order. + + + + + Append a default argument (i.e. the default argument of an optional parameter). + Assumed to be non-null. + + + + + Check if the given type is an enum with System.FlagsAttribute. + + + TODO: Can/should this be done using WellKnownAttributes? + + + + + This class associates a symbol with particular format for display. + It can be passed as an argument for an error message in place where symbol display should go, + which allows to defer building strings and doing many other things (like loading metadata) + associated with that until the error message is actually requested. + + + + + None + + + + + ".ctor" instead of "Foo" + + + + + "List`1" instead of "List<T>" ("List(of T)" in VB). Overrides GenericsOptions on + types. + + + + + Append "[Missing]" to missing Metadata types (for testing). + + + + + Include the Script type when qualifying type names. + + + + + Include custom modifiers (e.g. modopt([mscorlib]System.Runtime.CompilerServices.IsConst)) on + the member (return) type and parameters. + + + CONSIDER: custom modifiers are part of the public API, so we might want to move this to SymbolDisplayMemberOptions. + + + + + For a type written as "int[][,]" in C#, then + a) setting this option will produce "int[,][]", and + b) not setting this option will produce "int[][,]". + + + + + Specifies how to display delegates (just the name or the name with the signature). + + + + + Shows only the name of the delegate (e.g. "SomeDelegate"). + + + + + Shows the name and the parameters of the delegate (e.g. "SomeDelegate(int x)"). + + + The format of the parameters will be determined by the other flags passed. + + + + + Shows the name and the signature of the delegate (e.g. "void SomeDelegate(int x)"). + + + The format of the signature will be determined by the other flags passed. + + + + + Specifies how to display extension methods. + + + + + Displays the extension method based on its . + + + + + Displays the extension method in the form of an instance method. + For example, IEnumerable<TSource>.ElementAt<TSource>(int index). + + + + + Displays the extension method as a static method. + For example, Enumerable.ElementAt<TSource>(this IEnumerable<TSource> source, int index). + + + + + Exposes extension methods for displaying symbol descriptions. + + + + + Converts an immutable array of s to a string. + + The array of parts. + The concatenation of the parts into a single string. + + + + Determines if a flag is set on the enum. + + The value to check. + An enum field that specifies the flag. + Whether the is set on the . + + + + Determines if a flag is set on the enum. + + The value to check. + An enum field that specifies the flag. + Whether the is set on the . + + + + Determines if a flag is set on the enum. + + The value to check. + An enum field that specifies the flag. + Whether the is set on the . + + + + Determines if a flag is set on the enum. + + The value to check. + An enum field that specifies the flag. + Whether the is set on the . + + + + Determines if a flag is set on the enum. + + The value to check. + An enum field that specifies the flag. + Whether the is set on the . + + + + Determines if a flag is set on the enum. + + The value to check. + An enum field that specifies the flag. + Whether the is set on the . + + + + Determines if a flag is set on the enum. + + The value to check. + An enum field that specifies the flag. + Whether the is set on the . + + + + Describes the formatting rules that should be used when displaying symbols. + + + + + Formats a symbol description as in a C# compiler error message. + + + + + Formats a symbol description as in a C# compiler short error message. + + + + + Formats a symbol description as in a Visual Basic compiler error message. + + + + + Formats a symbol description as in a Visual Basic compiler short error message. + + + + + Formats the names of all types and namespaces in a fully qualified style (including the global alias). + + + + + Formats a symbol description in a form that suits . + + + + + A verbose format for displaying symbols (useful for testing). + + + + + this.QualifiedNameOnly = containingSymbol.QualifiedNameOnly + "." + this.Name + + + + + this.QualifiedNameArity = containingSymbol.QualifiedNameArity + "." + this.Name + "`" + this.Arity + + + + + A succinct format for displaying symbols. + + + + + The format used for displaying symbols when visualizing IL. + + + + + Used to normalize explicit interface implementation member names. + Only expected to be applied to interface types (and their type arguments). + + + + + Determines how the global namespace is displayed. + + + + + Determines how types are qualified (e.g. Nested vs Containing.Nested vs Namespace.Containing.Nested). + + + + + Determines how generics (on types and methods) should be described (i.e. the level of detail). + + + + + Determines how fields, properties, events, and methods are displayed. + + + + + Determines how parameters (of methods, properties/indexers, and delegates) are displayed. + + + + + Determines how delegates are displayed (e.g. name vs full signature). + + + + + Determines how extension methods are displayed. + + + + + Determines how properties are displayed. + For example, "Prop" vs "Prop { get; set; }" in C# or "Prop" vs. "ReadOnly Prop" in Visual Basic. + + + + + Determines how local variables are displayed. + + + + + Determines which kind keywords should be included when displaying symbols. + + + + + Determines other characteristics of how symbols are displayed. + + + + + Flags that can only be set within the compiler. + + + + + Constructs a new instance of accepting a variety of optional parameters. + + + The settings that determine how the global namespace is displayed. + + + The settings that determine how types are qualified (e.g. Nested vs Containing.Nested vs Namespace.Containing.Nested). + + + The settings that determine how generics (on types and methods) should be described (i.e. the level of detail). + + + The settings that determine how fields, properties, events, and methods are displayed. + + + The settings that determine how delegates are displayed (e.g. name vs full signature). + + + The settings that determine how extension methods are displayed. + + + The settings that determine how parameters (of methods, properties/indexers, and delegates) are displayed. + + + The settings that determine how properties are displayed. + For example, "Prop" vs "Prop { get; set; }" in C# or "Prop" vs. "ReadOnly Prop" in Visual Basic. + + + The settings that determine how local variables are displayed. + + + The settings that determine which kind keywords should be included when displaying symbols. + + + The settings that determine other characteristics of how symbols are displayed. + + + + + This version also accepts . + + + + + Creates a copy of the SymbolDisplayFormat but with replaced set of . + + + An object representing how miscellaneous symbols will be formatted. + + A duplicate of the SymbolDisplayFormat, with a replaced set of . + + + + Creates a copy of the SymbolDisplayFormat but with an additional set of . + + + An object specifying additional parameters for how miscellaneous symbols will be formatted. + + A duplicate of the SymbolDisplayFormat, with an additional set of . + + + + Creates a copy of the SymbolDisplayFormat but with replaced set of . + + + An object specifying how generic symbols will be formatted. + + A duplicate of the SymbolDisplayFormat, with a replaced set of . + + + + Creates a copy of the SymbolDisplayFormat but with an additional set of . + + + An object specifying additional parameters for how generic symbols will be formatted. + + A duplicate of the SymbolDisplayFormat, with an additional set of . + + + + Creates a copy of the SymbolDisplayFormat but with replaced set of . + + + An object specifying how members will be formatted. + + A duplicate of the SymbolDisplayFormat, with a replaced set of . + + + + Creates a copy of the SymbolDisplayFormat but with an additional set of . + + + An object specifying additional parameters for how members will be formatted. + + + A duplicate of the SymbolDisplayFormat, with an additional set of . + + + + + Creates a copy of the SymbolDisplayFormat but with a set of stripped away from the original object. + + + An object specifying which parameters should not be applied to how members will be formatted. + + + A duplicate of the SymbolDisplayFormat, with a set of stripped away from the original object. + + + + + Creates a copy of the SymbolDisplayFormat but with replaced set of . + + + An object specifying parameters with which symbols belonging to kind keywords should be formatted. + + + A duplicate of the SymbolDisplayFormat, with a replaced set of . + + + + + Creates a copy of the SymbolDisplayFormat but with an additional set of . + + + An object specifying additional parameters with which symbols belonging to kind keywords should be formatted. + + + A duplicate of the SymbolDisplayFormat, with an additional set of . + + + + + Creates a copy of the SymbolDisplayFormat but with a set of stripped away from the original object. + + + The settings that determine other characteristics of how symbols are displayed. + + + A duplicate of the SymbolDisplayFormat, with a set of stripped away from the original object. + + + + + Creates a copy of the SymbolDisplayFormat but with replaced set of . + + + An object specifying how parameters should be formatted. + + A duplicate of the SymbolDisplayFormat, with a replaced set of . + + + + Creates a copy of the SymbolDisplayFormat but with an additional set of . + + + An object specifying additional parameters on how parameters should be formatted. + + + A duplicate of the SymbolDisplayFormat, with an additional set of . + + + + + Creates a copy of the SymbolDisplayFormat but with a set of stripped away from the original object. + + + An object specifying parameters that should not be applied when formatting parameters. + + + A duplicate of the SymbolDisplayFormat, with a set of stripped away from the original object. + + + + + Creates a copy of the SymbolDisplayFormat but with replaced . + + + An object specifying parameters on how namespace symbols should be formatted. + + A duplicate of the SymbolDisplayFormat, with a replaced set of . + + + + Creates a copy of the SymbolDisplayFormat but with replaced set of . + + + An object specifying parameters on how symbols belonging to locals should be formatted. + + A duplicate of the SymbolDisplayFormat, with a replaced set of . + + + + Creates a copy of the SymbolDisplayFormat but with an additional set of . + + + An object specifying additional parameters on how symbols belonging to locals should be formatted. + + + A duplicate of the SymbolDisplayFormat, with an additional set of . + + + + + Specifies the options for how generics are displayed in the description of a symbol. + + + + + Omits the type parameter list entirely. + + + + + Includes the type parameters. + For example, "Foo<T>" in C# or "Foo(Of T)" in Visual Basic. + + + + + Includes type parameters and constraints. + For example, "where T : new()" in C# or "Of T as New" in Visual Basic. + + + + + Includes in or out keywords before variant type parameters. + For example, "Foo<out T>" in C# or (Foo Of Out T" in Visual Basic. + + + + + Specifies the options for how to display the global namespace in the description of a symbol. + + + Any of these styles may be overridden by . + + + + + Omits the global namespace, unconditionally. + + + + + Omits the global namespace if it is being displayed as a containing symbol (i.e. not on its own). + + + + + Include the global namespace, unconditionally. + + + + + Specifies which kind keywords should be included when displaying symbols. + + + + + Omits all kind keywords. + + + + + Includes the namespace keyword before namespaces. + For example, "namespace System", rather than "System". + + + + + Includes the type keyword before types. + For example, "class C" in C# or "Structure S" in Visual Basic. + + + + + Include the member keyword before members (if one exists). + For example, "event D E" in C# or "Function MyFun()" in Visual Basic. + + + + + Specifies the options for how locals are displayed in the description of a symbol. + + + + + Shows only the name of the local. + For example, "x". + + + + + Shows the type of the local in addition to its name. + For example, "int x" in C# or "x As Integer" in Visual Basic. + + + + + Shows the constant value of the local, if there is one, in addition to its name. + For example "x = 1". + + + + + Specifies the options for how members are displayed in the description of a symbol. + + + + + Includes only the name of the member. + + + + + Includes the (return) type of the method/field/property/event. + + + + + Includes the modifiers of the member. + For example, "static readonly" in C# or "Shared ReadOnly" in Visual Basic. + + + Accessibility modifiers are controlled separately by . + + + + + Includes the accessibility modifiers of the member. + For example, "public" in C# or "Public" in Visual Basic. + + + + + Includes the name of corresponding interface on members that explicitly implement + interface members. + For example, "IFoo.Bar { get; }". + + + This option has no effect in Visual Basic. + + + + + Includes the parameters of methods and properties/indexers. + + + See for finer-grained settings. + + + + + Includes the name of the type containing the member. + + + The format of the containing type is determined by . + + + + + Includes the value of the member if is a constant. + + + + + Specifies miscellaneous options about the format of symbol descriptions. + + + + + Specifies that no miscellaneous options should be applied. + + + + + Uses keywords for predefined types. + For example, "int" instead of "System.Int32" in C# + or "Integer" instead of "System.Integer" in Visual Basic. + + + + + Escapes identifiers that are also keywords. + For example, "@true" instead of "true" in C# or + "[True]" instead of "True" in Visual Basic. + + + + + Displays asterisks between commas in multi-dimensional arrays. + For example, "int[][*,*]" instead of "int[][,]" in C# or + "Integer()(*,*)" instead of "Integer()(*,*) in Visual Basic. + + + + + Displays "?" for erroneous types that lack names (perhaps due to faulty metadata). + + + + + Displays attributes names without the "Attribute" suffix, if possible. + + + Has no effect outside and only applies + if the context location is one where an attribute ca be referenced without the suffix. + + + + + Displays as a normal generic type, rather than with + the special question mark syntax. + + + + + Specifies how parameters are displayed in the description of a (member, property/indexer, or delegate) symbol. + + + + + Omits parameters from symbol descriptions. + + + If this option is combined with , then only + the parentheses will be shown (e.g. M()). + + + + + Includes the this keyword before the first parameter of an extension method in C#. + + + This option has no effect in Visual Basic. + + + + + Includes the params, ref, out, ByRef, ByVal keywords before parameters. + + + + + Includes parameter types in symbol descriptions. + + + + + Includes parameter names in symbol descriptions. + + + + + Includes parameter default values in symbol descriptions. + + Ignored if is not set. + + + + Includes square brackets around optional parameters. + + + + + A single element of a symbol description. For example, a keyword, a punctuation character or + a class name. + + + + + + + + Gets the kind of this display part. + + + + + Gets the symbol associated with this display part, if there is one. + For example, the associated with a class name. + + + + + + Construct a non-formattable (i.e. with a fixed string value). + + The kind of the display part. + An optional associated symbol. + The fixed string value of the part. + + + + Returns the string value of this symbol display part. + + + + + Specifies the kinds of a piece of classified text (SymbolDisplayPart). + + + + The name of an alias. + + + The name of an assembly. + + + The name of a class. + + + The name of a delegate. + + + The name of an enum. + + + The name of an error type. + + + + The name of an event. + + + The name of a field. + + + The name of an interface. + + + A language keyword. + + + The name of a label. + + + A line-break (i.e. whitespace). + + + A numeric literal. + Typically for the default values of parameters and the constant values of fields. + + + A string literal. + Typically for the default values of parameters and the constant values of fields. + + + The name of a local. + + + The name of a method. + + + The name of a module. + + + The name of a namespace. + + + The symbol of an operator (e.g. "+"). + + + The name of a parameter. + + + The name of a property. + + + A punctuation character (e.g. "(", ".", ",") other than an . + + + A single space character. + + + The name of a struct (structure in Visual Basic). + + + A keyword-like part for anonymous types (not actually a keyword). + + + An unclassified part. + Never returned - only set in user-constructed parts. + + + The name of a type parameter. + + + The name of a query range variable.. + + + + Specifies the options for how properties are displayed in symbol descriptions. + + + + + Shows only the names of properties. + + + + + + Indicates whether the property is readable and/or writable. + In C#, this is accomplished by including accessors. + In Visual Basic, this is accomplished by including the ReadOnly or WriteOnly + keyword, as appropriate. + + + + + Specifies how much qualification is used in symbol descriptions. + + + + + Shows only the name of the symbol. + + + + + Shows the name of the symbol and the names of all containing types. + + + + + Shows the name of the symbol the names of all containing types and namespaces. + + + + + Enumeration for common accessibility combinations. + + + + + No accessibility specified. + + + + + We should not see new anonymous types from source after we finished emit phase. + If this field is true, the collection is sealed; in DEBUG it also is used to check the assertion. + + + + + Collection of anonymous type templates is sealed + + + + + True if the method is a source method implemented as an iterator. + + + + + Default attribute usage for attribute types: + (a) Valid targets: AttributeTargets.All + (b) AllowMultiple: false + (c) Inherited: true + + + + + Information decoded from well-known custom attributes applied on an assembly. + + + + + Raw assembly version as specified in the AssemblyVersionAttribute, or Nothing if none specified. + If the string passed to AssemblyVersionAttribute contains * the version build and/or revision numbers are set to . + + + + + Returns data decoded from security attributes or null if there are no security attributes. + + + + + The attribute class. + + + + + The constructor on the attribute class. + + + + + Constructor arguments on the attribute. + + + + + Named (property value) arguments on the attribute. + + + + + Attribute is conditionally omitted if it is a source attribute and both the following are true: + (a) It has at least one applied conditional attribute AND + (b) None of conditional symbols are true at the attribute source location. + + + + + Checks if an applied attribute with the given attributeType matches the namespace name and type name of the given early attribute's description + and the attribute description has a signature with parameter count equal to the given attributeArgCount. + NOTE: We don't allow early decoded attributes to have optional parameters. + + + + + Returns the value of a constructor argument as type . + Throws if no constructor argument exists or the argument cannot be converted to the type. + + + + + Returns named attribute argument with the given as type . + If there is more than one named argument with this name, it returns the last one. + If no named argument is found then the is returned. + + The metadata property or field name. This name is case sensitive (both VB and C#). + SpecialType of the named argument. + Default value for the named argument. + + For user defined attributes VB allows duplicate named arguments and uses the last value. + Dev11 reports an error for pseudo-custom attributes when emitting metadata. We don't. + + + + + Decode the arguments to ObsoleteAttribute. ObsoleteAttribute can have 0,1 or 2 arguments. + + + + + Decode the arguments to DeprecatedAttribute. DeprecatedAttribute can have 3 or 4 arguments. + + + + + Used to determine if two instances are identical, + i.e. they have the same attribute type, attribute constructor and have identical arguments. + + + + + Information decoded from early well-known custom attributes applied on an event. + + + + + Information decoded from well-known custom attributes applied on an event. + + + + + Information decoded from early well-known custom attributes applied on a field. + + + + + Information decoded from well-known custom attributes applied on a field. + + + + + Returns marshalling data or null of MarshalAs attribute isn't applied on the field. + + + + + Information decoded from early well-known custom attributes applied on a method. + + + + + Information decoded from well-known custom attributes applied on a method. + + + + + Returns data decoded from security attributes or null if there are no security attributes. + + + + + Information decoded from well-known custom attributes applied on a module. + + + + + Information decoded from early well-known custom attributes applied on a parameter. + + + + + Information decoded from well-known custom attributes applied on a parameter. + + + + + Returns marshalling data or null of MarshalAs attribute isn't applied on the parameter. + + + + + Information decoded from early well-known custom attributes applied on a property. + + + + + Information decoded from well-known custom attributes applied on a property. + + + + + Information decoded from well-known custom attributes applied on a method return value. + + + + + Returns marshalling data or null of MarshalAs attribute isn't applied on the return value. + + + + + Information decoded from early well-known custom attributes applied on a type. + + + + + Information decoded from well-known custom attributes applied on a type. + + + + + Returns data decoded from security attributes or null if there are no security attributes. + + + + + Represents a bag of custom attributes and the associated decoded well-known attribute data. + + + + + Instance representing sealed custom attribute bag with no attributes. + + + + + Returns a non-sealed custom attribute bag with null initialized , null initialized and uninitialized . + + + + + Sets the early decoded well-known attribute data on the bag in a thread safe manner. + Stored early decoded data is immutable and cannot be updated further. + + Returns true if early decoded data were stored into the bag on this thread. + + + + Sets the decoded well-known attribute data (except the early data) on the bag in a thread safe manner. + Stored decoded data is immutable and cannot be updated further. + + Returns true if decoded data were stored into the bag on this thread. + + + + Sets the bound attributes on the bag in a thread safe manner. + If store succeeds, it seals the bag and makes the bag immutable. + + Returns true if bound attributes were stored into the bag on this thread. + + + + Gets the stored bound attributes in the bag. + + This property can only be accessed on a sealed bag. + + + + Gets the decoded well-known attribute data (except the early data) in the bag. + + This property can only be accessed on the bag after has been invoked. + + + + Gets the early decoded well-known attribute data in the bag. + + This property can only be accessed on the bag after has been invoked. + + + + Return whether early decoded attribute data has been computed and stored on the bag and it is safe to access from this bag. + Return value of true doesn't guarantee that bound attributes or remaining decoded attribute data has also been initialized. + + + + + Return whether all decoded attribute data has been computed and stored on the bag and it is safe to access from this bag. + Return value of true doesn't guarantee that bound attributes have also been initialized. + + + + + Enum representing the current state of attribute binding/decoding for a corresponding CustomAttributeBag. + + + + + Bag has been created, but no decoded data or attributes have been stored. + CustomAttributeBag is in this state during early decoding phase. + + + + + Early decoded attribute data has been computed and stored on the bag, but bound attributes or remaining decoded attribute data is not stored. + Only can be accessed from this bag. + + + + + All decoded attribute data has been computed and stored on the bag, but bound attributes are not yet stored. + Both and can be accessed from this bag. + + + + + Bound attributes have been computed and stored on this bag. + + + + + CustomAttributeBag is completely initialized and immutable. + + + + + Contains common arguments to Symbol.DecodeWellKnownAttribute method in both the language compilers. + + + + + Object to store the decoded data from bound well-known attributes. + Created lazily only when some decoded data needs to be stored, null otherwise. + + + + + Gets or creates the decoded data object. + + + This method must be called only when some decoded data will be stored into it subsequently. + + + + + Returns true if some decoded data has been stored into . + + + + + Gets the stored decoded data. + + + Assumes is true. + + + + + Syntax of the attribute to decode. Might be null when the attribute information is not coming + from syntax. For example, an assembly attribute propagated from added module to the resulting assembly. + + + + + Bound attribute to decode. + + + + + The index of the attribute in the list of attributes to decode. + + + + + Total count of attributes to decode. + + + + + Diagnostic bag. + + + + + Specific part of the symbol to which the attributes apply, or AttributeLocation.None if the attributes apply to the symbol itself. + Used e.g. for return type attributes of a method symbol. + + + + + Contains common arguments to Symbol.EarlyDecodeWellKnownAttribute method in both the language compilers. + + + + + Object to store the decoded data from early bound well-known attributes. + Created lazily only when some decoded data needs to be stored, null otherwise. + + + + + Gets or creates the decoded data object. + + + This method must be called only when some decoded data will be stored into it subsequently. + + + + + Returns true if some decoded data has been stored into . + + + + + Gets the stored decoded data. + + + Assumes is true. + + + + + Binder to bind early well-known attributes. + + + + + Bound type of the attribute to decode. + + + + + Syntax of the attribute to decode. + + + + + Specific part of the symbol to which the attributes apply, or AttributeLocation.None if the attributes apply to the symbol itself. + Used e.g. for return type attributes of a method symbol. + + + + + Base class for storing information decoded from early well-known custom attributes. + + + CONSIDER: Should we remove this class and let the sub-classes derived from WellKnownAttributeData? + + + + + Information decoded from . + + + + + Returns an instance of with all types replaced by types returned by specified translator. + Returns this instance if it doesn't hold on any types. + + + + + Information decoded from . + + + + + True if an error should be thrown for the . Default is false in which case + a warning is thrown. + + + + + The message that will be shown when an error/warning is created for . + + + + + Information decoded from security attributes, i.e. attributes derived from well-known SecurityAttribute, applied on a method/type/assembly. + + + + + Used for retrieving applied source security attributes, i.e. attributes derived from well-known SecurityAttribute. + + + + + Base class for storing information decoded from well-known custom attributes. + + + + + Used to distinguish cases when attribute is applied with null value and when attribute is not applied. + For some well-known attributes, the latter case will return string stored in + field. + + + + + If true, a language may use the modified storage location without + being aware of the meaning of the modification, modopt vs. modreq. + + + + + A type used as a tag that indicates which type of modification applies. + + + + + Represents a using alias (Imports alias in Visual Basic). + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Gets the for the + namespace or type referenced by the alias. + + + + + Represents an array. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Gets the number of dimensions of this array. A regular single-dimensional array + has rank 1, a two-dimensional array has rank 2, etc. + + + + + Gets the type of the elements stored in the array. + + + + + Custom modifiers associated with the array type, or an empty array if there are none. + + + + + Represents a .NET assembly, consisting of one or more modules. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + True if the assembly contains interactive code. + + + + + Gets the name of this assembly. + + + + + Gets the merged root namespace that contains all namespaces and types defined in the modules + of this assembly. If there is just one module in this assembly, this property just returns the + GlobalNamespace of that module. + + + + + Gets the modules in this assembly. (There must be at least one.) The first one is the main module + that holds the assembly manifest. + + + + + Gets the set of type identifiers from this assembly. + + + + + Gets the set of namespace names from this assembly. + + + + + Gets a value indicating whether this assembly gives + access to internal symbols + + + + Lookup a type within the assembly using the canonical CLR metadata name of the type. + + Type name. + Symbol for the type or null if type cannot be found or is ambiguous. + + + + Determines if the assembly might contain extension methods. + If false, the assembly does not contain extension methods. + + + + + Returns the type symbol for a forwarded type based its canonical CLR metadata name. + The name should refer to a non-nested type. If type with this name is not forwarded, + null is returned. + + + + + If this symbol represents a metadata assembly returns the underlying . + + Otherwise, this returns null. + + + + + Represents the 'dynamic' type in C#. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + An IErrorTypeSymbol is used when the compiler cannot determine a symbol object to return because + of an error. For example, if a field is declared "Foo x;", and the type "Foo" cannot be + found, an IErrorTypeSymbol is returned when asking the field "x" what it's type is. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + When constructing this type, there may have been symbols that seemed to + be what the user intended, but were unsuitable. For example, a type might have been + inaccessible, or ambiguous. This property returns the possible symbols that the user + might have intended. It will return no symbols if no possible symbols were found. + See the CandidateReason property to understand why the symbols were unsuitable. + + + This only applies if this INamedTypeSymbol has TypeKind TypeKind.Error. + If not, an empty ImmutableArray is returned. + + + + + If CandidateSymbols returns one or more symbols, returns the reason that those + symbols were not chosen. Otherwise, returns None. + + + + + Represents an event. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + The type of the event. + + + + + Returns true if the event is a WinRT type event. + + + + + The 'add' accessor of the event. Null only in error scenarios. + + + + + The 'remove' accessor of the event. Null only in error scenarios. + + + + + The 'raise' accessor of the event. Null if there is no raise method. + + + + + The original definition of the event. If the event is constructed from another + symbol by type substitution, OriginalDefinition gets the original symbol, as it was + defined in source or metadata. + + + + + Returns the overridden event, or null. + + + + + Returns interface properties explicitly implemented by this event. + + + Properties imported from metadata can explicitly implement more than one event. + + + + + Represents a field in a class, struct or enum. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + If this field serves as a backing variable for an automatically generated + property or a field-like event, returns that + property/event. Otherwise returns null. + Note, the set of possible associated symbols might be expanded in the future to + reflect changes in the languages. + + + + + Returns true if this field was declared as "const" (i.e. is a constant declaration). + Also returns true for an enum member. + + + + + Returns true if this field was declared as "readonly". + + + + + Returns true if this field was declared as "volatile". + + + + + Gets the type of this field. + + + + + Returns false if the field wasn't declared as "const", or constant value was omitted or erroneous. + True otherwise. + + + + + Gets the constant value of this field + + + + + Returns custom modifiers associated with the field, or an empty array if there are none. + + + + + Get the original definition of this symbol. If this symbol is derived from another + symbol by (say) type substitution, this gets the original symbol, as it was defined in + source or metadata. + + + + + Represents a label in method body + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Gets the immediately containing of this . + + + + + Represents a local variable in method body. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Gets the type of this local variable. + + + + + Returns true if this local variable was declared as "const" (i.e. is a constant declaration). + Also returns true for an enum member. + + + + + Returns false if the local variable wasn't declared as "const", or constant value was omitted or erroneous. + True otherwise. + + + + + Gets the constant value of this local variable. + + + + + Represents a method or method-like symbol (including constructor, + destructor, operator, or property/event accessor). + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Gets what kind of method this is. There are several different kinds of things in the + C# language that are represented as methods. This property allow distinguishing those things + without having to decode the name of the method. + + + + + Returns the arity of this method, or the number of type parameters it takes. + A non-generic method has zero arity. + + + + + Returns whether this method is generic; i.e., does it have any type parameters? + + + + + Returns true if this method is an extension method. + + + + + Returns true if this method is an async method + + + + + Returns whether this method is using CLI VARARG calling convention. This is used for + C-style variable argument lists. This is used extremely rarely in C# code and is + represented using the undocumented "__arglist" keyword. + + Note that methods with "params" on the last parameter are indicated with the "IsParams" + property on ParameterSymbol, and are not represented with this property. + + + + + Returns whether this built-in operator checks for integer overflow. + + + + + Returns true if this method hides base methods by name. This cannot be specified directly + in the C# language, but can be true for methods defined in other languages imported from + metadata. The equivalent of the "hidebyname" flag in metadata. + + + + + Returns true if this method has no return type; i.e., returns "void". + + + + + Gets the return type of the method. + + + + + Returns the type arguments that have been substituted for the type parameters. + If nothing has been substituted for a given type parameter, + then the type parameter itself is consider the type argument. + + + + + Get the type parameters on this method. If the method has not generic, + returns an empty list. + + + + + Gets the parameters of this method. If this method has no parameters, returns + an empty list. + + + + + Returns the method symbol that this method was constructed from. The resulting + method symbol + has the same containing type (if any), but has type arguments that are the same + as the type parameters (although its containing type might not). + + + + + Get the original definition of this symbol. If this symbol is derived from another + symbol by (say) type substitution, this gets the original symbol, as it was defined in + source or metadata. + + + + + If this method overrides another method (because it both had the override modifier + and there correctly was a method to override), returns the overridden method. + + + + + If this method can be applied to an object, returns the type of object it is applied to. + + + + + If this method is a reduced extension method, returns the definition of extension + method from which this was reduced. Otherwise, returns null. + + + + + If this method is a reduced extension method, returns a type inferred during reduction process for the type parameter. + + Type parameter of the corresponding method. + Inferred type or Nothing if nothing was inferred. + If this is not a reduced extension method. + If is null. + If doesn't belong to the corresponding method. + + + + If this is an extension method that can be applied to a receiver of the given type, + returns a reduced extension method symbol thus formed. Otherwise, returns null. + + + + + Returns interface methods explicitly implemented by this method. + + + Methods imported from metadata can explicitly implement more than one method, + that is why return type is ImmutableArray. + + + + + Returns the list of custom modifiers, if any, associated with the returned value. + + + + + Returns the list of custom attributes, if any, associated with the returned value. + + + + + Returns a symbol (e.g. property, event, etc.) associated with the method. + + + If this method has of or , + returns the property that this method is the getter or setter for. + If this method has of or , + returns the event that this method is the adder or remover for. + Note, the set of possible associated symbols might be expanded in the future to + reflect changes in the languages. + + + + + Returns a constructed method given its type arguments. + + The immediate type arguments to be replaced for type + parameters in the method. + + + + If this is a partial method implementation part, returns the corresponding + definition part. Otherwise null. + + + + + If this is a partial method declaration without a body, and the method is + implemented with a body, returns that implementing definition. Otherwise + null. + + + + + Platform invoke information, or null if the method isn't a P/Invoke. + + + + + If this method is a Lambda method (MethodKind = MethodKind.LambdaMethod) and + there is an anonymous delegate associated with it, returns this delegate. + + Returns null if the symbol is not a lambda or if it does not have an + anonymous delegate associated with it. + + + + + Represents a module within an assembly. Every assembly contains one or more modules. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Returns a NamespaceSymbol representing the global (root) namespace, with + module extent, that can be used to browse all of the symbols defined in this module. + + + + + Given a namespace symbol, returns the corresponding module specific namespace symbol + + + + + Returns an array of assembly identities for assemblies referenced by this module. + Items at the same position from ReferencedAssemblies and from ReferencedAssemblySymbols + correspond to each other. + + + + + Returns an array of AssemblySymbol objects corresponding to assemblies referenced + by this module. Items at the same position from ReferencedAssemblies and + from ReferencedAssemblySymbols correspond to each other. + + + + + If this symbol represents a metadata module returns the underlying . + + Otherwise, this returns null. + + + + + Represents a type other than an array, a pointer, a type parameter. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Returns the arity of this type, or the number of type parameters it takes. + A non-generic type has zero arity. + + + + + True if this type or some containing type has type parameters. + + + + + True if this is a reference to an unbound generic type. A generic type is + considered unbound if all of the type argument lists in its fully qualified + name are empty. Note that the type arguments of an unbound generic type will be + returned as error types because they do not really have type arguments. An unbound + generic type yields null for its BaseType and an empty result for its Interfaces. + + + + + Returns true if the type is a Script class. + It might be an interactive submission class or a Script class in a csx file. + + + + + Returns true if the type is the implicit class that holds onto invalid global members (like methods or + statements in a non script file). + + + + + Returns collection of names of members declared within this type. + + + + + Returns the type parameters that this type has. If this is a non-generic type, + returns an empty ImmutableArray. + + + + + Returns the type arguments that have been substituted for the type parameters. + If nothing has been substituted for a give type parameters, + then the type parameter itself is consider the type argument. + + + + + Get the original definition of this type symbol. If this symbol is derived from another + symbol by (say) type substitution, this gets the original symbol, as it was defined in + source or metadata. + + + + + For delegate types, gets the delegate's invoke method. Returns null on + all other kinds of types. Note that it is possible to have an ill-formed + delegate type imported from metadata which does not have an Invoke method. + Such a type will be classified as a delegate but its DelegateInvokeMethod + would be null. + + + + + For enum types, gets the underlying type. Returns null on all other + kinds of types. + + + + + Returns the type symbol that this type was constructed from. This type symbol + has the same containing type (if any), but has type arguments that are the same + as the type parameters (although its containing type might not). + + + + + Returns a constructed type given its type arguments. + + The immediate type arguments to be replaced for type + parameters in the type. + + + + Returns an unbound generic type of this named type. + + + + + Get the instance constructors for this type. + + + + + Get the static constructors for this type. + + + + + Get the both instance and static constructors for this type. + + + + + For implicitly declared delegate types returns the EventSymbol that caused this + delegate type to be generated. + For all other types returns null. + Note, the set of possible associated symbols might be expanded in the future to + reflect changes in the languages. + + + + + Determines if the symbol might contain extension methods. + If false, the symbol does not contain extension methods. + + + + + Represents either a namespace or a type. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Get all the members of this symbol. + + An ImmutableArray containing all the members of this symbol. If this symbol has no members, + returns an empty ImmutableArray. Never returns Null. + + + + Get all the members of this symbol that have a particular name. + + An ImmutableArray containing all the members of this symbol with the given name. If there are + no members with this name, returns an empty ImmutableArray. Never returns Null. + + + + Get all the members of this symbol that are types. + + An ImmutableArray containing all the types that are members of this symbol. If this symbol has no type members, + returns an empty ImmutableArray. Never returns null. + + + + Get all the members of this symbol that are types that have a particular name, of any arity. + + An ImmutableArray containing all the types that are members of this symbol with the given name. + If this symbol has no type members with this name, + returns an empty ImmutableArray. Never returns null. + + + + Get all the members of this symbol that are types that have a particular name and arity + + An ImmutableArray containing all the types that are members of this symbol with the given name and arity. + If this symbol has no type members with this name and arity, + returns an empty ImmutableArray. Never returns null. + + + + Returns true if this symbol is a namespace. If it is not a namespace, it must be a type. + + + + + Returns true if this symbols is a type. If it is not a type, it must be a namespace. + + + + + Represents a namespace. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Get all the members of this symbol. + + + + + Get all the members of this symbol that have a particular name. + + + + + Get all the members of this symbol that are namespaces. + + + + + Returns whether this namespace is the unnamed, global namespace that is + at the root of all namespaces. + + + + + The kind of namespace: Module, Assembly or Compilation. + Module namespaces contain only members from the containing module that share the same namespace name. + Assembly namespaces contain members for all modules in the containing assembly that share the same namespace name. + Compilation namespaces contain all members, from source or referenced metadata (assemblies and modules) that share the same namespace name. + + + + + The containing compilation for compilation namespaces. + + + + + If a namespace is an assembly or compilation namespace, it may be composed of multiple + namespaces that are merged together. If so, ConstituentNamespaces returns + all the namespaces that were merged. If this namespace was not merged, returns + an array containing only this namespace. + + + + + Represents a parameter of a method or property. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Whether the parameter passed by value or by reference. + + + + + Returns true if the parameter was declared as a parameter array. + + + + + Returns true if the parameter is optional. + + + + + Returns true if the parameter is the hidden 'this' ('Me' in Visual Basic) parameter. + + + + + Gets the type of the parameter. + + + + + Custom modifiers associated with the parameter, or an empty array if there are none. + + + + + Gets the ordinal position of the parameter. The first parameter has ordinal zero. + The 'this' parameter ('Me' in Visual Basic) has ordinal -1. + + + + + Returns true if the parameter specifies a default value to be passed + when no value is provided as an argument to a call. The default value + can be obtained with the DefaultValue property. + + + + + Returns the default value of the parameter. + + + Returns null if the parameter type is a struct and the default value of the parameter + is the default value of the struct type. + + The parameter has no default value. + + + + Get the original definition of this symbol. If this symbol is derived from another + symbol by (say) type substitution, this gets the original symbol, as it was defined in + source or metadata. + + + + + Represents a pointer type such as "int *". Pointer types + are used only in unsafe code. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Gets the type of the storage location that an instance of the pointer type points to. + + + + + Custom modifiers associated with the pointer type, or an empty array if there are none. + + + Some managed languages may represent special information about the pointer type + as a custom modifier on either the pointer type or the element type, or + both. + + + + + Represents a preprocessing conditional compilation symbol. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Represents a property or indexer. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Returns whether the property is really an indexer. + + + + + True if this is a read-only property; that is, a property with no set accessor. + + + + + True if this is a write-only property; that is, a property with no get accessor. + + + + + Returns true if this property is an auto-created WithEvents property that takes place of + a field member when the field is marked as WithEvents. + + + + + The type of the property. + + + + + The parameters of this property. If this property has no parameters, returns + an empty list. Parameters are only present on indexers, or on some properties + imported from a COM interface. + + + + + The 'get' accessor of the property, or null if the property is write-only. + + + + + The 'set' accessor of the property, or null if the property is read-only. + + + + + The original definition of the property. If the property is constructed from another + symbol by type substitution, OriginalDefinition gets the original symbol, as it was + defined in source or metadata. + + + + + Returns the overridden property, or null. + + + + + Returns interface properties explicitly implemented by this property. + + + Properties imported from metadata can explicitly implement more than one property. + + + + + The list of custom modifiers, if any, associated with the type of the property. + + + + + Represents a range variable in a query expression. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Represents a symbol (namespace, class, method, parameter, etc.) + exposed by the compiler. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Gets the indicating what kind of symbol it is. + + + + + Gets the source language ("C#" or "Visual Basic"). + + + + + Gets the symbol name. Returns the empty string if unnamed. + + + + + Gets the name of a symbol as it appears in metadata. Most of the time, this + is the same as the Name property, with the following exceptions: + 1) The metadata name of generic types includes the "`1", "`2" etc. suffix that + indicates the number of type parameters (it does not include, however, names of + containing types or namespaces). + 2) The metadata name of explicit interface names have spaces removed, compared to + the name property. + 3) The length of names is limited to not exceed metadata restrictions. + + + + + Gets the for the immediately containing symbol. + + + + + Gets the for the containing assembly. Returns null if the + symbol is shared across multiple assemblies. + + + + + Gets the for the containing module. Returns null if the + symbol is shared across multiple modules. + + + + + Gets the for the containing type. Returns null if the + symbol is not contained within a type. + + + + + Gets the for the nearest enclosing namespace. Returns null if the + symbol isn't contained in a namespace. + + + + + Gets a value indicating whether the symbol is the original definition. Returns false + if the symbol is derived from another symbol, by type substitution for instance. + + + + + Gets a value indicating whether the symbol is static. + + + + + Gets a value indicating whether the symbol is virtual. + + + + + Gets a value indicating whether the symbol is an override of a base class symbol. + + + + + Gets a value indicating whether the symbol is abstract. + + + + + Gets a value indicating whether the symbol is sealed. + + + + + Gets a value indicating whether the symbol is defined externally. + + + + + Returns true if this symbol was automatically created by the compiler, and does not have + an explicit corresponding source code declaration. + + + This is intended for symbols that are ordinary symbols in the language sense, and may be + used by code, but that are simply declared implicitly rather than with explicit language + syntax. + + Examples include (this list is not exhaustive): + the default constructor for a class or struct that is created if one is not provided, + the BeginInvoke/Invoke/EndInvoke methods for a delegate, + the generated backing field for an auto property or a field-like event, + the "this" parameter for non-static methods, + the "value" parameter for a property setter, + the parameters on indexer accessor methods (not on the indexer itself), + methods in anonymous types + + + + + Returns true if this symbol can be referenced by its name in code. + + + + + Gets the locations where the symbol was originally defined, either in source or + metadata. Some symbols (for example, partial classes) may be defined in more than one + location. + + + + + Get the syntax node(s) where this symbol was declared in source. Some symbols (for example, + partial classes) may be defined in more than one location. This property should return + one or more syntax nodes only if the symbol was declared in source code and also was + not implicitly declared (see the IsImplicitlyDeclared property). + + Note that for namespace symbol, the declaring syntax might be declaring a nested namespace. + For example, the declaring syntax node for N1 in "namespace N1.N2 {...}" is the entire + NamespaceDeclarationSyntax for N1.N2. For the global namespace, the declaring syntax will + be the CompilationUnitSyntax. + + + The syntax node(s) that declared the symbol. If the symbol was declared in metadata + or was implicitly declared, returns an empty read-only array. + + + + + Gets the attributes for the symbol. Returns an empty + if there are no attributes. + + + + + Gets a indicating the declared accessibility for the symbol. + Returns NotApplicable if no accessibility is declared. + + + + + Gets the for the original definition of the symbol. + If this symbol is derived from another symbol, by type substitution for instance, + this gets the original symbol, as it was defined in source or metadata. + + + + + Returns the Documentation Comment ID for the symbol, or null if the symbol doesn't + support documentation comments. + + + + + Gets the XML (as text) for the comment associated with the symbol. + + Preferred culture or null for the default. + Optionally, expand <include> elements. No impact on non-source documentation comments. + Token allowing cancellation of request. + The XML that would be written to the documentation file for the symbol. + + + + Converts the symbol to a string representation. + + Format or null for the default. + A formatted string representation of the symbol. + + + + Convert a symbol to an array of string parts, each of which has a kind. Useful for + colorizing the display string. + + Formatting rules - null implies + SymbolDisplayFormat.ErrorMessageFormat. + A read-only array of string parts. + + + + Convert a symbol to a string that can be displayed to the user. May be tailored to a + specific location in the source code. + + Binding information (for determining names appropriate to + the context). + A position in the source code (context). + Formatting rules - null implies + SymbolDisplayFormat.MinimallyQualifiedFormat. + A formatted string that can be displayed to the user. + + + + Convert a symbol to an array of string parts, each of which has a kind. May be tailored + to a specific location in the source code. Useful for colorizing the display string. + + Binding information (for determining names appropriate to + the context). + A position in the source code (context). + Formatting rules - null implies + SymbolDisplayFormat.MinimallyQualifiedFormat. + A read-only array of string parts. + + + + Indicates that this symbol uses metadata that cannot be supported by the language. + + Examples include: + - Pointer types in VB + - ByRef return type + - Required custom modifiers + + This is distinguished from, for example, references to metadata symbols defined in assemblies that weren't referenced. + Symbols where this returns true can never be used successfully, and thus should never appear in any IDE feature. + + This is set for metadata symbols, as follows: + Type - if a type is unsupported (e.g., a pointer type, etc.) + Method - parameter or return type is unsupported + Field - type is unsupported + Event - type is unsupported + Property - type is unsupported + Parameter - type is unsupported + + + + + Returns the constructed form of the ReducedFrom property, + including the type arguments that were either inferred during reduction or supplied at the call site. + + + + + Synthesized symbol that implements a method body feature (iterator, async, lambda, etc.) + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + The symbol whose body lowering produced this synthesized symbol, + or null if the symbol is synthesized based on declaration. + + + + + True if this symbol body needs to be updated when the body is updated. + False if is null. + + + + + Represents a type parameter in a generic type or generic method. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + The ordinal position of the type parameter in the parameter list which declares + it. The first type parameter has ordinal zero. + + + + + The variance annotation, if any, of the type parameter declaration. Type parameters may be + declared as covariant (out), contravariant (in), or neither. + + + + + The type parameter kind of this type parameter. + + + + + The method that declares the type parameter, or null. + + + + + The type that declares the type parameter, or null. + + + + + True if the reference type constraint (class) was specified for the type parameter. + + + + + True if the value type constraint (struct)was specified for the type parameter. + + + + + True if the parameterless constructor constraint (new()) was specified for the type parameter. + + + + + The types that were directly specified as constraints on the type parameter. + + + + + Get the original definition of this type symbol. If this symbol is derived from another + symbol by (say) type substitution, this gets the original symbol, as it was defined in + source or metadata. + + + + + If this is a type parameter of a reduced extension method, gets the type parameter definition that + this type parameter was reduced from. Otherwise, returns Nothing. + + + + + Represents a type. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + An enumerated value that identifies whether this type is an array, pointer, enum, and so on. + + + + + The declared base type of this type, or null. The object type, interface types, + and pointer types do not have a base type. The base type of a type parameter + is its effective base class. + + + + + Gets the set of interfaces that this type directly implements. This set does not include + interfaces that are base interfaces of directly implemented interfaces. This does + include the interfaces declared as constraints on type parameters. + + + + + The list of all interfaces of which this type is a declared subtype, excluding this type + itself. This includes all declared base interfaces, all declared base interfaces of base + types, and all declared base interfaces of those results (recursively). This also is the effective + interface set of a type parameter. Each result + appears exactly once in the list. This list is topologically sorted by the inheritance + relationship: if interface type A extends interface type B, then A precedes B in the + list. This is not quite the same as "all interfaces of which this type is a proper + subtype" because it does not take into account variance: AllInterfaces for + ]]> will not include ]]>; + + + + + True if this type is known to be a reference type. It is never the case that + and both return true. However, for an unconstrained type + parameter, and will both return false. + + + + + True if this type is known to be a value type. It is never the case that + and both return true. However, for an unconstrained type + parameter, and will both return false. + + + + + Is this a symbol for an anonymous type (including anonymous VB delegate). + + + + + The original definition of this symbol. If this symbol is constructed from another + symbol by type substitution then gets the original symbol as it was defined in + source or metadata. + + + + + An enumerated value that identifies certain 'special' types such as . + Returns if the type is not special. + + + + + Returns the corresponding symbol in this type or a base type that implements + interfaceMember (either implicitly or explicitly), or null if no such symbol exists + (which might be either because this type doesn't implement the container of + interfaceMember, or this type doesn't supply a member that successfully implements + interfaceMember). + + + Must be a non-null interface property, method, or event. + + + + + A class that provides constants for common language names. + + + + + The common name used for the C# language. + + + + + The common name used for the Visual Basic language. + + + + + Enumeration for possible kinds of method symbols. + + + + + An anonymous method or lambda expression + + + + + Method is a constructor. + + + + + Method is a conversion. + + + + + Method is a delegate invoke. + + + + + Method is a destructor. + + + + + Method is an event add. + + + + + Method is an event raise. + + + + + Method is an event remove. + + + + + Method is an explicit interface implementation. + + + + + Method is an operator. + + + + + Method is an ordinary method. + + + + + Method is a property get. + + + + + Method is a property set. + + + + + An extension method with the "this" parameter removed. + + + + + Method is a static constructor. + + + + + A built-in operator. + + + + + Declare Sub or Function. + + + + + Describes the kind of the namespace extent. + + + + + Information that describes how a method from the underlying Platform is to be invoked. + + + + + Module name. Null if value specified in the attribute is not valid. + + + + + Name of the native entry point or null if not specified (the effective name is the same as the name of the target method). + + + + + Controls whether the field causes the common language runtime + to search an unmanaged DLL for entry-point names other than the one specified. + + + + + Indicates how to marshal string parameters and controls name mangling. + + + + + Indicates whether the callee calls the SetLastError Win32 API function before returning from the attributed method. + + + + + Indicates the calling convention of an entry point. + + + + + Enables or disables best-fit mapping behavior when converting Unicode characters to ANSI characters. + Null if not specified (the setting for the containing type or assembly should be used, ). + + + + + Enables or disables the throwing of an exception on an unmappable Unicode character that is converted to an ANSI "?" character. + Null if not specified. + + + + + Denotes the kind of reference parameter. + + + + + Indicates a "value" parameter. + + + + + Indicates a "ref" parameter. + + + + + Indicates an "out" parameter. + + + + + Specifies the possible kinds of symbols. + + + + + Symbol is an alias. + + + + + Symbol is an array type. + + + + + Symbol is an assembly. + + + + + Symbol is a dynamic type. + + + + + Symbol that represents an error + + + + + Symbol is an Event. + + + + + Symbol is a field. + + + + + Symbol is a label. + + + + + Symbol is a local. + + + + + Symbol is a method. + + + + + Symbol is a netmodule. + + + + + Symbol is a named type (e.g. class). + + + + + Symbol is a namespace. + + + + + Symbol is a parameter. + + + + + Symbol is a pointer type. + + + + + Symbol is a property. + + + + + Symbol is a range variable of a query expression. + + + + + Symbol is a type parameter. + + + + + Symbol is a preprocessing/conditional compilation constant. + + + + + Kind of a synthesized local variable. + + + Synthesized local variables are either + 1) Short-lived (temporary) + The lifespan of an temporary variable shall not cross a statement boundary (a PDB sequence point). + These variables are not tracked by EnC and don't have names. + + 2) Long-lived + All variables whose lifespan might cross a statement boundary (include a PDB sequence point) + must be named in a build configuration that supports EnC. Some of them might need to be named in release, to support EE. + The kind of such local must be encoded in the name, so that we can retrieve it from debug metadata during EnC. + + The integer value of the kind must match corresponding Dev11/12 TEMP_KIND enum values for + compatibility with assemblies generated by the native compiler. + + Long-lived local variables must be assigned slots in source order. + + + + + Temp variable created by the optimizer. + + + + + Temp variable created during lowering. + + + + + Temp variable created by the emitter. + + + + + The variable is not synthesized (C#, VB). + + + + + Local variable that stores value of an expression consumed by a subsequent conditional branch instruction that might jump across PDB sequence points. + The value needs to be preserved when remapping the IL offset from old method body to new method body during EnC. + A hidden sequence point also needs to be inserted at the offset where this variable is loaded to be consumed by the branch instruction. + (VB, C#). + + + + + Boolean passed to Monitor.Enter (C#, VB). + + + + + Variable holding on the object being locked while the execution is within the block of the lock statement (C#) or SyncLock statement (VB). + + + + + Local variable that stores the resources to be disposed at the end of using statement (C#, VB). + + + + + Local variable that stores the enumerator instance (C#, VB). + + + + + Local variable that stores the array instance (C#, VB?). + + + + + Local variables that store upper bound of multi-dimensional array, for each dimension (C#, VB?). + + + + + Local variables that store the current index, for each dimension (C#, VB?). + + + + + Local variable that holds a pinned handle of a string passed to a fixed statement (C#). + + + + + Local variable that holds the object passed to With statement (VB). + + + + + Local variable used to store the value of Select Case during the execution of Case statements. + + + + + Local variable that stores the return value of an async method. + + + + + VB: Stores the return value of a function that is not accessible from user code (e.g. operator, lambda, async, iterator). + C#: Stores the return value of a method/lambda with a block body, so that we can put a sequence point on the closing brace of the body. + + + + + Very special corner case involving filters, await and lambdas. + + + + + Local variable that stores the current state of the state machine while MoveNext method is executing. + Used to avoid race conditions due to multiple reads from the lifted state. + + + + + Local that stores an expression value which needs to be spilled. + This local should either be hoisted or its lifespan ends before + the end of the containing await expression. + + + + + Local variable that holds on the display class instance. + + + + + Local variable used to cache a delegate that is used in inner block (possibly a loop), + and can be reused for all iterations of the loop. + + + + + Local variable that stores the result of an await expression (the awaiter object). + The variable is assigned the result of a call to await-expression.GetAwaiter() and subsequently used + to check whether the task completed. Eventually the value is stored in an awaiter field. + + The value assigned to the variable needs to be preserved when remapping the IL offset from old method body + to new method body during EnC. If the awaiter expression is contained in an active statement and the + containing MoveNext method changes the debugger finds the next sequence point that follows the await expression + and transfers the execution to the new method version. This sequence point is placed by the compiler at + the immediately after the stloc instruction that stores the awaiter object to this variable. + The subsequent ldloc then restores it in the new method version. + + (VB, C#). + + + + + All values have to be less than or equal to + () + + + + + An awaiter in async method. + Never actually created as a local variable, immediately lifted to a state machine field. + Not serialized to . + + + + + The receiver of a delegate relaxation stub. + Created as a local variable but always lifted to a relaxation display class field. + We never emit debug info for hoisted relaxation variable. + TODO: Avoid using lambdas and display classes for implementation of relaxation stubs and remove this kind. + + + + + Represents a constant value used as an argument to a custom attribute. + + + + + The kind of the constant. + + + + + Returns the of the constant, + or null if the type can't be determined (error). + + + + + True if the constant represents a null reference. + + + + + The value for a non-array constant. + + + + + The value for an array. + + + + + TypedConstant isn't computing its own kind from the type symbol because it doesn't + have a way to recognize the well-known type System.Type. + + + + + Represents the kind of a TypedConstant. + + + + + Represents a simple value or a read-only array of . + + + + + True if the constant represents a null literal. + + + + + Enumeration for possible kinds of type symbols. + + + + + Type's kind is undefined. + + + + + Type is an array type. + + + + + Type is a class. + + + + + Type is a delegate. + + + + + Type is dynamic. + + + + + Type is an enumeration. + + + + + Type is an error type. + + + + + Type is an interface. + + + + + Type is a module. + + + + + Type is a pointer. + + + + + Type is a C# struct or VB Structure + + + + + Type is a C# struct or VB Structure + + + + + Type is a type parameter. + + + + + Type is an interactive submission. + + + + + Type layout information. + + + + + Layout kind (Layout flags in metadata). + + + + + Field alignment (PackingSize field in metadata). + + + + + Size of the type. + + + + + Represents the different kinds of type parameters. + + + + + Type parameter of a named type. For example: T in ]]>. + + + + + Type parameter of a method. For example: T in ()]]>. + + + + + Type parameter in a cref attribute in XML documentation comments. For example: T in ]]>. + + + + + An enumeration declaring the kinds of variance supported for generic type parameters. + + + + + Invariant. + + + + + Covariant (out). + + + + + Contravariant (in). + + + + + Specifies the member names known to the compiler (such as .ctor or op_Explicit). + + + + + Name of the enum backing field. + + + + + The name assigned to an instance constructor. + + + + + The name assigned to the static constructor. + + + + + The symbol name assigned to all indexers, other than explicit interface implementations. + + + Will not correspond to the name that appears in metadata. + + + + + The name assigned to the destructor. + + + + + The name assigned to the delegate Invoke method. + + + + + The name assigned to the delegate BeginInvoke method. + + + + + The name assigned to the delegate EndInvoke method. + + + + + The name of an entry point method. + + + + + The default fully qualified name of a Script class. + + + + + The name assigned to Object.ToString method. + + + + + The name assigned to Object.Equals method. + + + + + The name assigned to Object.GetHashCode method. + + + + + The name assigned to an implicit (widening) conversion. + + + + + The name assigned to an explicit (narrowing) conversion. + + + + + The name assigned to the Addition operator. + + + + + The name assigned to the BitwiseAnd operator. + + + + + The name assigned to the BitwiseOr operator. + + + + + The name assigned to the Decrement operator. + + + + + The name assigned to the Division operator. + + + + + The name assigned to the Equality operator. + + + + + The name assigned to the ExclusiveOr operator. + + + + + The name assigned to the False operator. + + + + + The name assigned to the GreaterThan operator. + + + + + The name assigned to the GreaterThanOrEqual operator. + + + + + The name assigned to the Increment operator. + + + + + The name assigned to the Inequality operator. + + + + + The name assigned to the LeftShift operator. + + + + + The name assigned to the UnsignedLeftShift operator. + + + + + The name assigned to the LessThan operator. + + + + + The name assigned to the LessThanOrEqual operator. + + + + + The name assigned to the LogicalNot operator. + + + + + The name assigned to the LogicalOr operator. + + + + + The name assigned to the LogicalAnd operator. + + + + + The name assigned to the Modulus operator. + + + + + The name assigned to the Multiply operator. + + + + + The name assigned to the OnesComplement operator. + + + + + The name assigned to the RightShift operator. + + + + + The name assigned to the UnsignedRightShift operator. + + + + + The name assigned to the Subtraction operator. + + + + + The name assigned to the True operator. + + + + + The name assigned to the UnaryNegation operator. + + + + + The name assigned to the UnaryPlus operator. + + + + + The name assigned to the Concatenate operator. + + + + + The name assigned to the Exponent operator. + + + + + The name assigned to the IntegerDivision operator. + + + + + The name assigned to the Like operator. + + + + + The required name for the GetEnumerator method used in a ForEach statement. + + + + + The required name for the MoveNext method used in a ForEach statement. + + + + + The required name for the Current property used in a ForEach statement. + + + + + The required name for the property used in + a ForEach statement when the collection is a nullable struct. + + + + + The name for the Add method to be invoked for each element in a collection initializer expression + (see C# Specification, §7.6.10.3 Collection initializers). + + + + + The required name for the GetAwaiter method used to obtain an awaiter for a task + (see C# Specification, §7.7.7.1 Awaitable expressions). + + + + + The required name for the IsCompleted property used to determine if a task is already complete + (see C# Specification, §7.7.7.1 Awaitable expressions). + + + + + The required name for the GetResult method used to obtain the outcome of a task once it is complete + (see C# Specification, §7.7.7.1 Awaitable expressions). + + + + + The name of the method used to register a resumption delegate + (see C# Specification, §7.7.7.1 Awaitable expressions). + + + + + List of entries sorted in source order, each of which captures a + position in the supplied syntax tree and the set of diagnostics (warnings) + whose reporting should either be suppressed or enabled at this position. + + + + + Returns list of entries sorted in source order, each of which captures a + position in the supplied syntax tree and the set of diagnostics (warnings) + whose reporting should either be suppressed or enabled at this position. + + + + + Returns the reporting state for the supplied diagnostic id at the supplied position + in the associated syntax tree. + + + + + Gets the entry with the largest position less than or equal to supplied position. + + + + + Struct that represents an entry in the warning state map. Sorts by position in the associated syntax tree. + + + + + This is a SyntaxReference implementation that lazily translates the result (SyntaxNode) of the + original syntax reference to another one. + + + + + Creates a new node identical to this node with the specified annotations attached. + + Original node. + Annotations to be added to the new node. + + + + Creates a new node identical to this node with the specified annotations attached. + + Original node. + Annotations to be added to the new node. + + + + Creates a new node identical to this node with the specified annotations removed. + + Original node. + Annotations to be removed from the new node. + + + + Creates a new node identical to this node with the specified annotations removed. + + Original node. + Annotations to be removed from the new node. + + + + Creates a new node identical to this node with the annotations of the specified kind removed. + + Original node. + The kind of annotation to remove. + + + + Gets the number of children contained in the . + + + + Gets the child at the specified index. + The zero-based index of the child to get. + + is less than 0.-or- is equal to or greater than . + + + + internal indexer that does not verify index. + Used when caller has already ensured that index is within bounds. + + + + + Locate the node or token that is a child of the given and contains the given position. + + The to search. + The position. + The node or token that spans the given position. + + Assumes that is within the span of . + + + + + internal indexer that does not verify index. + Used when caller has already ensured that index is within bounds. + + + + + Returns the first child in the list. + + The first child in the list. + The list is empty. + + + + Returns the last child in the list. + + The last child in the list. + The list is empty. + + + + Returns a list which contains all children of in reversed order. + + which contains all children of in reversed order + + + Returns an enumerator that iterates through the . + A for the . + + + Determines whether the specified object is equal to the current instance. + true if the specified object is a structure and is equal to the current instance; otherwise, false. + The object to be compared with the current instance. + + + Determines whether the specified structure is equal to the current instance. + true if the specified structure is equal to the current instance; otherwise, false. + The structure to be compared with the current instance. + + + Returns the hash code for the current instance. + A 32-bit signed integer hash code. + + + Indicates whether two structures are equal. + true if is equal to ; otherwise, false. + The structure on the left side of the equality operator. + The structure on the right side of the equality operator. + + + Indicates whether two structures are unequal. + true if is equal to ; otherwise, false. + The structure on the left side of the inequality operator. + The structure on the right side of the inequality operator. + + + Enumerates the elements of a . + + + Advances the enumerator to the next element of the . + true if the enumerator was successfully advanced to the next element; false if the enumerator has passed the end of the collection. + + + Gets the element at the current position of the enumerator. + The element in the at the current position of the enumerator. + + + Sets the enumerator to its initial position, which is before the first element in the collection. + + + + Gets the element in the collection at the current position of the enumerator. + + + The element in the collection at the current position of the enumerator. + + + + + Gets the element in the collection at the current position of the enumerator. + + + The element in the collection at the current position of the enumerator. + + + + + Advances the enumerator to the next element of the collection. + + + true if the enumerator was successfully advanced to the next element; false if the enumerator has passed the end of the collection. + + + + + Sets the enumerator to its initial position, which is before the first element in the collection. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Gets the element in the collection at the current position of the enumerator. + + + The element in the collection at the current position of the enumerator. + + + + + Gets the element in the collection at the current position of the enumerator. + + + The element in the collection at the current position of the enumerator. + + + + + Advances the enumerator to the next element of the collection. + + + true if the enumerator was successfully advanced to the next element; false if the enumerator has passed the end of the collection. + + The collection was modified after the enumerator was created. + + + + Sets the enumerator to its initial position, which is before the first element in the collection. + + The collection was modified after the enumerator was created. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Find the slot that contains the given offset. + + The target offset. Must be between 0 and . + The slot index of the slot containing the given offset. + + The base implementation is a linear search. This should be overridden + if a derived class can implement it more efficiently. + + + + + Represents the root node of a structured trivia tree (for example, a preprocessor directive + or a documentation comment). From this root node you can traverse back up to the containing + trivia in the outer tree that contains it. + + + + + Returns the parent trivia syntax for this structured trivia syntax. + + The parent trivia syntax for this structured trivia syntax. + + + + The LineDirectiveMap is created to enable translating positions, using the #line directives + in a file. The basic implementation creates an ordered array of line mapping entries, one + for each #line directive in the file (plus one at the beginning). If the file has no + directives, then the array has just one element in it. To map line numbers, a binary search + of the mapping entries is done and nearest line mapping is applied. + + + + + Determines whether the position is considered to be hidden from the debugger or not. + + + + + Combines TranslateSpan and IsHiddenPosition to not search the entries twice when emitting sequence points + + + + + Are there any hidden regions in the map? + + True if there's at least one hidden region in the map. + + + + Enum that describes the state related to the #line or #externalsource directives at a position in source. + + + + + Used in VB when the position is not hidden, but it's not known yet that there is a (nonempty) #ExternalSource + following. + + + + + Used in C# for spans outside of #line directives + + + + + Used in C# for spans inside of "#line linenumber" directive + + + + + Used in VB for spans inside of a "#ExternalSource" directive that followed an unknown span + + + + + Used in VB for spans inside of a "#ExternalSource" directive that followed a hidden span + + + + + Used in C# and VB for spans that are inside of #line hidden (C#) or outside of #ExternalSource (VB) + directives + + + + + The state of the visibility of a line. + + + + + The line is located before any #line directive and there is at least one #line directive present in this syntax tree. + This enum value is used for C# only to enable the consumer to define how to interpret the lines before the first + line directive. + + + + + The line is following a #line hidden directive. + + + + + The line is following a #line default directive or a #line directive with at least a line number. + If there is no line directive at all, Visible is returned for all lines. + + + + + Gets the separator at the given index in this list. + + The index. + + + + + Returns the sequence of just the separator tokens. + + + + + The absolute span of the list elements in characters, including the leading and trailing trivia of the first and last elements. + + + + + The absolute span of the list elements in characters, not including the leading and trailing trivia of the first and last elements. + + + + + Returns the string representation of the nodes in this list including separators but not including + the first node's leading trivia and the last node or token's trailing trivia. + + + The string representation of the nodes in this list including separators but not including + the first node's leading trivia and the last node or token's trailing trivia. + + + + + Returns the full string representation of the nodes in this list including separators, + the first node's leading trivia, and the last node or token's trailing trivia. + + + The full string representation of the nodes in this list including separators including separators, + the first node's leading trivia, and the last node or token's trailing trivia. + + + + + Creates a new list with the specified node added to the end. + + The node to add. + + + + Creates a new list with the specified nodes added to the end. + + The nodes to add. + + + + Creates a new list with the specified node inserted at the index. + + The index to insert at. + The node to insert. + + + + Creates a new list with the specified nodes inserted at the index. + + The index to insert at. + The nodes to insert. + + + + Creates a new list with the element at the specified index removed. + + The index of the element to remove. + + + + Creates a new list with specified element removed. + + The element to remove. + + + + Creates a new list with the specified element replaced by the new node. + + The element to replace. + The new node. + + + + Creates a new list with the specified element replaced by the new nodes. + + The element to replace. + The new nodes. + + + + Creates a new list with the specified separator token replaced with the new separator. + + The separator token to be replaced. + The new separator token. + + + + A SyntaxAnnotation is used to annotate syntax elements with additional information. + + Since syntax elements are immutable, annotating them requires creating new instances of them + with the annotations attached. + + + + + A predefined syntax annotation that indicates whether the syntax element has elastic trivia. + + + + + A list of . + + + + + The number of nodes in the list. + + + + + Gets the node at the specified index. + + The zero-based index of the node to get or set. + The node at the specified index. + + + + The absolute span of the list elements in characters, including the leading and trailing trivia of the first and last elements. + + + + + The absolute span of the list elements in characters, not including the leading and trailing trivia of the first and last elements. + + + + + Returns the string representation of the nodes in this list, not including + the first node's leading trivia and the last node's trailing trivia. + + + The string representation of the nodes in this list, not including + the first node's leading trivia and the last node's trailing trivia. + + + + + Returns the full string representation of the nodes in this list including + the first node's leading trivia and the last node's trailing trivia. + + + The full string representation of the nodes in this list including + the first node's leading trivia and the last node's trailing trivia. + + + + + Creates a new list with the specified node added at the end. + + The node to add. + + + + Creates a new list with the specified nodes added at the end. + + The nodes to add. + + + + Creates a new list with the specified node inserted at the index. + + The index to insert at. + The node to insert. + + + + Creates a new list with the specified nodes inserted at the index. + + The index to insert at. + The nodes to insert. + + + + Creates a new list with the element at specified index removed. + + The index of the element to remove. + + + + Creates a new list with the element removed. + + The element to remove. + + + + Creates a new list with the specified element replaced with the new node. + + The element to replace. + The new node. + + + + Creates a new list with the specified element replaced with new nodes. + + The element to replace. + The new nodes. + + + + The first node in the list. + + + + + The first node in the list or default if the list is empty. + + + + + The last node in the list. + + + + + The last node in the list or default if the list is empty. + + + + + True if the list has at least one node. + + + + + Get's the enumerator for this list. + + + + + The index of the node in this list, or -1 if the node is not in the list. + + + + + Represents a non-terminal node in the syntax tree. This is the language agnostic equivalent of and . + + + + + Used by structured trivia which has "parent == null", and therefore must know its + SyntaxTree explicitly when created. + + + + + An integer representing the language specific kind of this node. + + + + + The language name that this node is syntax of. + + + + + Returns SyntaxTree that owns the node or null if node does not belong to a + SyntaxTree + + + + + The absolute span of this node in characters, including its leading and trailing trivia. + + + + + The absolute span of this node in characters, not including its leading and trailing trivia. + + + + + Same as accessing on . + + + Slight performance improvement. + + + + + The width of the node in characters, not including leading and trailing trivia. + + + The Width property returns the same value as Span.Length, but is somewhat more efficient. + + + + + The complete width of the node in characters, including leading and trailing trivia. + + The FullWidth property returns the same value as FullSpan.Length, but is + somewhat more efficient. + + + + This works the same as GetRed, but intended to be used in lists + The only difference is that the public parent of the node is not the list, + but the list's parent. (element's grand parent). + + + + + special cased helper for 2 and 3 children lists where child #1 may map to a token + + + + + Returns the string representation of this node, not including its leading and trailing trivia. + + The string representation of this node, not including its leading and trailing trivia. + The length of the returned string is always the same as Span.Length + + + + Returns full string representation of this node including its leading and trailing trivia. + + The full string representation of this node including its leading and trailing trivia. + The length of the returned string is always the same as FullSpan.Length + + + + Writes the full text of this node to the specified . + + + + + Gets the full text of this node as an new instance. + + + Encoding of the file that the text was read from or is going to be saved to. + null if the encoding is unspecified. + If the encoding is not specified the isn't debuggable. + If an encoding-less is written to a file a shall be used as a default. + + + Hash algorithm to use to calculate checksum of the text that's saved to PDB. + + is not supported. + + + + Determine whether this node is structurally equivalent to another. + + + + + Determines whether the node represents a language construct that was actually parsed + from the source code. Missing nodes are generated by the parser in error scenarios to + represent constructs that should have been present in the source code in order to + compile successfully but were actually missing. + + + + + Determines whether this node is a descendant of a structured trivia. + + + + + Determines whether this node represents a structured trivia. + + + + + Determines whether a descendant trivia of this node is structured. + + + + + Determines whether this node has any descendant skipped text. + + + + + Determines whether this node has any descendant preprocessor directives. + + + + + Determines whether this node or any of its descendant nodes, tokens or trivia have any diagnostics on them. + + + + + Determines if the specified node is a descendant of this node. + + + + + Determines whether this node has any leading trivia. + + + + + Determines whether this node has any trailing trivia. + + + + + Gets a node at given node index without forcing its creation. + If node was not created it would return null. + + + + + This function calculates the offset of a child at given position. It is very common that + some children to the left of the given index already know their positions so we first + check if that is the case. In a worst case the cost is O(n), but it is not generally an + issue because number of children in regular nodes is fixed and small. In a case where + the number of children could be large (lists) this function is overridden with more + efficient implementations. + + + + + Gets a list of all the diagnostics in the sub tree that has this node as its root. + This method does not filter diagnostics based on #pragmas and compiler options + like nowarn, warnaserror etc. + + + + + Gets a for this syntax node. CommonSyntaxReferences can be used to + regain access to a syntax node without keeping the entire tree and source text in + memory. + + + + + When invoked on a node that represents an anonymous function or a query clause [1] + with a of another anonymous function or a query clause of the same kind [2], + returns the body of the [1] that positionally corresponds to the specified . + + E.g. join clause declares left expression and right expression -- each of these expressions is a lambda body. + JoinClause1.GetCorrespondingLambdaBody(JoinClause2.RightExpression) returns JoinClause1.RightExpression. + + + + + The node that contains this node in its collection. + + + + + The list of child nodes and tokens of this node, where each element is a SyntaxNodeOrToken instance. + + + + + Gets node at given node index. + This WILL force node creation if node has not yet been created. + + + + + Gets a list of the child nodes in prefix document order. + + + + + Gets a list of ancestor nodes + + + + + Gets a list of ancestor nodes (including this node) + + + + + Gets the first node of type TNode that matches the predicate. + + + + + Gets a list of descendant nodes in prefix document order. + + An optional function that determines if the search descends into the argument node's children. + Determines if nodes that are part of structured trivia are included in the list. + + + + Gets a list of descendant nodes in prefix document order. + + The span the node's full span must intersect. + An optional function that determines if the search descends into the argument node's children. + Determines if nodes that are part of structured trivia are included in the list. + + + + Gets a list of descendant nodes (including this node) in prefix document order. + + An optional function that determines if the search descends into the argument node's children. + Determines if nodes that are part of structured trivia are included in the list. + + + + Gets a list of descendant nodes (including this node) in prefix document order. + + The span the node's full span must intersect. + An optional function that determines if the search descends into the argument node's children. + Determines if nodes that are part of structured trivia are included in the list. + + + + Gets a list of descendant nodes and tokens in prefix document order. + + An optional function that determines if the search descends into the argument node's children. + Determines if nodes that are part of structured trivia are included in the list. + + + + Gets a list of the descendant nodes and tokens in prefix document order. + + The span the node's full span must intersect. + An optional function that determines if the search descends into the argument node's children. + Determines if nodes that are part of structured trivia are included in the list. + + + + Gets a list of descendant nodes and tokens (including this node) in prefix document order. + + An optional function that determines if the search descends into the argument node's children. + Determines if nodes that are part of structured trivia are included in the list. + + + + Gets a list of the descendant nodes and tokens (including this node) in prefix document order. + + The span the node's full span must intersect. + An optional function that determines if the search descends into the argument node's children. + Determines if nodes that are part of structured trivia are included in the list. + + + + Finds the node with the smallest that contains . + is used to determine the behavior in case of a tie (i.e. a node having the same span as its parent). + If is true, then it returns lowest descending node encompassing the given . + Otherwise, it returns the outermost node encompassing the given . + + + TODO: This should probably be reimplemented with + + This exception is thrown if doesn't contain the given span. + + + + Finds a descendant token of this node whose span includes the supplied position. + + The character position of the token relative to the beginning of the file. + + True to return tokens that are part of trivia. If false finds the token whose full span (including trivia) + includes the position. + + + + + Gets the first token of the tree rooted by this node. Skips zero-width tokens. + + The first token or default(SyntaxToken) if it doesn't exist. + + + + Gets the last token of the tree rooted by this node. Skips zero-width tokens. + + The last token or default(SyntaxToken) if it doesn't exist. + + + + Gets a list of the direct child tokens of this node. + + + + + Gets a list of all the tokens in the span of this node. + + + + + Gets a list of all the tokens in the full span of this node. + + + + + The list of trivia that appears before this node in the source code and are attached to a token that is a + descendant of this node. + + + + + The list of trivia that appears after this node in the source code and are attached to a token that is a + descendant of this node. + + + + + Finds a descendant trivia of this node whose span includes the supplied position. + + The character position of the trivia relative to the beginning of the file. + + True to return tokens that are part of trivia. If false finds the token whose full span (including trivia) + includes the position. + + + + + Finds a descendant trivia of this node at the specified position, where the position is + within the span of the node. + + The character position of the trivia relative to the beginning of + the file. + Specifies a function that determines per trivia node, whether to + descend into structured trivia of that node. + + + + + Get a list of all the trivia associated with the descendant nodes and tokens. + + + + + Get a list of all the trivia associated with the descendant nodes and tokens. + + + + + Determines whether this node or any sub node, token or trivia has annotations. + + + + + Determines whether this node has any annotations with the specific annotation kind. + + + + + Determines whether this node has any annotations with any of the specific annotation kinds. + + + + + Determines whether this node has the specific annotation. + + + + + Gets all the annotations with the specified annotation kind. + + + + + Gets all the annotations with the specified annotation kinds. + + + + + Gets all nodes and tokens with an annotation of the specified annotation kind. + + + + + Gets all nodes and tokens with an annotation of the specified annotation kinds. + + + + + Gets all nodes and tokens with the specified annotation. + + + + + Gets all nodes with the specified annotation. + + + + + Gets all nodes with the specified annotation kind. + + + + + + + Gets all tokens with the specified annotation. + + + + + Gets all tokens with the specified annotation kind. + + + + + Gets all trivia with an annotation of the specified annotation kind. + + + + + Gets all trivia with an annotation of the specified annotation kinds. + + + + + Gets all trivia with the specified annotation. + + + + + Copies all SyntaxAnnotations, if any, from this SyntaxNode instance and attaches them to a new instance based on . + + + + If no annotations are copied, just returns . + + + It can also be used manually to preserve annotations in a more complex tree + modification, even if the type of a node changes. + + + + + + Determines if two nodes are the same, disregarding trivia differences. + + The node to compare against. + If true then the nodes are equivalent if the contained nodes and + tokens declaring metadata visible symbolic information are equivalent, ignoring any + differences of nodes inside method bodies or initializer expressions, otherwise all + nodes and tokens must be equivalent. + + + + + Determine if this node is structurally equivalent to another. + + + + + Returns SyntaxTree that owns the node or null if node does not belong to a + SyntaxTree + + + + + Finds a descendant token of this node whose span includes the supplied position. + + The character position of the token relative to the beginning of the file. + + True to return tokens that are part of trivia. + If false finds the token whose full span (including trivia) includes the position. + + + + + Finds a descendant token of this node whose span includes the supplied position. + + The character position of the token relative to the beginning of the file. + + Applied on every structured trivia. Return false if the tokens included in the trivia should be skipped. + Pass null to skip all structured trivia. + + + + + Finds a descendant trivia of this node whose span includes the supplied position. + + The character position of the trivia relative to the beginning of the file. + Whether to search inside structured trivia. + + + + Creates a new tree of nodes with the specified nodes, tokens or trivia replaced. + + + + + Creates a new tree of nodes with the specified node removed. + + + + + Determines if two nodes are the same, disregarding trivia differences. + + The node to compare against. + If true then the nodes are equivalent if the contained nodes and + tokens declaring metadata visible symbolic information are equivalent, ignoring any + differences of nodes inside method bodies or initializer expressions, otherwise all + nodes and tokens must be equivalent. + + + + + Creates a new tree of nodes with the specified nodes, tokens and trivia replaced. + + The type of the root node. + The root node of the tree of nodes. + The nodes to be replaced. + A function that computes a replacement node for the + argument nodes. The first argument is the original node. The second argument is the same + node potentially rewritten with replaced descendants. + The tokens to be replaced. + A function that computes a replacement token for + the argument tokens. The first argument is the original token. The second argument is + the same token potentially rewritten with replaced trivia. + The trivia to be replaced. + A function that computes replacement trivia for + the specified arguments. The first argument is the original trivia. The second argument is + the same trivia with potentially rewritten sub structure. + + + + Creates a new tree of nodes with the specified old node replaced with a new node. + + The type of the root node. + The type of the nodes being replaced. + The root node of the tree of nodes. + The nodes to be replaced; descendants of the root node. + A function that computes a replacement node for the + argument nodes. The first argument is the original node. The second argument is the same + node potentially rewritten with replaced descendants. + + + + Creates a new tree of nodes with the specified old node replaced with a new node. + + The type of the root node. + The root node of the tree of nodes. + The node to be replaced; a descendant of the root node. + The new node to use in the new tree in place of the old node. + + + + Creates a new tree of nodes with specified old node replaced with a new nodes. + + The type of the root node. + The root of the tree of nodes. + The node to be replaced; a descendant of the root node and an element of a list member. + A sequence of nodes to use in the tree in place of the old node. + + + + Creates a new tree of nodes with new nodes inserted before the specified node. + + The type of the root node. + The root of the tree of nodes. + The node to insert before; a descendant of the root node an element of a list member. + A sequence of nodes to insert into the tree immediately before the specified node. + + + + Creates a new tree of nodes with new nodes inserted after the specified node. + + The type of the root node. + The root of the tree of nodes. + The node to insert after; a descendant of the root node an element of a list member. + A sequence of nodes to insert into the tree immediately after the specified node. + + + + Creates a new tree of nodes with the specified old token replaced with new tokens. + + The type of the root node. + The root of the tree of nodes. + The token to be replaced; a descendant of the root node and an element of a list member. + A sequence of tokens to use in the tree in place of the specified token. + + + + Creates a new tree of nodes with new tokens inserted before the specified token. + + The type of the root node. + The root of the tree of nodes. + The token to insert before; a descendant of the root node and an element of a list member. + A sequence of tokens to insert into the tree immediately before the specified token. + + + + Creates a new tree of nodes with new tokens inserted after the specified token. + + The type of the root node. + The root of the tree of nodes. + The token to insert after; a descendant of the root node and an element of a list member. + A sequence of tokens to insert into the tree immediately after the specified token. + + + + Creates a new tree of nodes with the specified old trivia replaced with new trivia. + + The type of the root node. + The root of the tree of nodes. + The trivia to be replaced; a descendant of the root node. + A sequence of trivia to use in the tree in place of the specified trivia. + + + + Creates a new tree of nodes with new trivia inserted before the specified trivia. + + The type of the root node. + The root of the tree of nodes. + The trivia to insert before; a descendant of the root node. + A sequence of trivia to insert into the tree immediately before the specified trivia. + + + + Creates a new tree of nodes with new trivia inserted after the specified trivia. + + The type of the root node. + The root of the tree of nodes. + The trivia to insert after; a descendant of the root node. + A sequence of trivia to insert into the tree immediately after the specified trivia. + + + + Creates a new tree of nodes with the specified old node replaced with a new node. + + The type of the root node. + The root node of the tree of nodes. + The token to be replaced; descendants of the root node. + A function that computes a replacement token for + the argument tokens. The first argument is the original token. The second argument is + the same token potentially rewritten with replaced trivia. + + + + Creates a new tree of nodes with the specified old token replaced with a new token. + + The type of the root node. + The root node of the tree of nodes. + The token to be replaced. + The new token to use in the new tree in place of the old + token. + + + + Creates a new tree of nodes with the specified trivia replaced with new trivia. + + The type of the root node. + The root node of the tree of nodes. + The trivia to be replaced; descendants of the root node. + A function that computes replacement trivia for + the specified arguments. The first argument is the original trivia. The second argument is + the same trivia with potentially rewritten sub structure. + + + + Creates a new tree of nodes with the specified trivia replaced with new trivia. + + The type of the root node. + The root node of the tree of nodes. + The trivia to be replaced. + The new trivia to use in the new tree in place of the old trivia. + + + + Creates a new tree of nodes with the specified node removed. + + The type of the root node. + The root node from which to remove a descendant node from. + The node to remove. + Options that determine how the node's trivia is treated. + + + + Creates a new tree of nodes with the specified nodes removed. + + The type of the root node. + The root node from which to remove a descendant node from. + The nodes to remove. + Options that determine how the nodes' trivia is treated. + + + + Creates a new syntax node with all whitespace and end of line trivia replaced with + regularly formatted trivia. + + The type of the node. + The node to format. + A sequence of whitespace characters that defines a single level of indentation. + If true the replaced trivia is elastic trivia. + + + + Creates a new syntax node with all whitespace and end of line trivia replaced with + regularly formatted trivia. + + The type of the node. + The node to format. + An optional sequence of whitespace characters that defines a single level of indentation. + An optional sequence of whitespace characters used for end of line. + If true the replaced trivia is elastic trivia. + + + + Creates a new node from this node with both the leading and trailing trivia of the specified node. + + + + + Creates a new node from this node without leading or trailing trivia. + + + + + Creates a new node from this node with the leading trivia replaced. + + + + + Creates a new node from this node with the leading trivia replaced. + + + + + Creates a new node from this node with the leading trivia removed. + + + + + Creates a new node from this node with the leading trivia replaced. + + + + + Creates a new node from this node with the trailing trivia replaced. + + + + + Creates a new node from this node with the trailing trivia replaced. + + + + + Creates a new node from this node with the trailing trivia removed. + + + + + Creates a new node from this node with the trailing trivia replaced. + + + + + Creates a new tree of nodes with the specified nodes being tracked. + + Use GetCurrentNode on the subtree resulting from this operation, or any transformation of it, + to get the current node corresponding to the original tracked node. + + The root of the subtree containing the nodes to be tracked. + One or more nodes that are descendants of the root node. + + + + Creates a new tree of nodes with the specified nodes being tracked. + + Use GetCurrentNode on the subtree resulting from this operation, or any transformation of it, + to get the current node corresponding to the original tracked node. + + The root of the subtree containing the nodes to be tracked. + One or more nodes that are descendants of the root node. + + + + Gets the nodes within the subtree corresponding to the original tracked node. + Use TrackNodes to start tracking nodes. + + The root of the subtree containing the current node corresponding to the original tracked node. + The node instance originally tracked. + + + + Gets the node within the subtree corresponding to the original tracked node. + Use TrackNodes to start tracking nodes. + + The root of the subtree containing the current node corresponding to the original tracked node. + The node instance originally tracked. + + + + Gets the nodes within the subtree corresponding to the original tracked nodes. + Use TrackNodes to start tracking nodes. + + The root of the subtree containing the current nodes corresponding to the original tracked nodes. + One or more node instances originally tracked. + + + + A wrapper for either a syntax node () or a syntax token (). + + + Note that we do not store the token directly, we just store enough information to reconstruct it. + This allows us to reuse nodeOrToken as a token's parent. + + + + + An integer representing the language specific kind of the underlying node or token. + + + + + The language name that this node or token is syntax of. + + + + + Determines whether the underlying node or token represents a language construct that was actually parsed + from source code. Missing nodes and tokens are typically generated by the parser in error scenarios to + represent constructs that should have been present in the source code for the source code to compile + successfully but were actually missing. + + + + + The node that contains the underlying node or token in its Children collection. + + + + + Determines whether this is wrapping a token. + + + + + Determines whether this is wrapping a node. + + + + + Returns the underlying token if this is wrapping a + token. + + + The underlying token if this is wrapping a token. + + + + + Returns the underlying node if this is wrapping a + node. + + + The underlying node if this is wrapping a node. + + + + + The list of child nodes and tokens of the underlying node or token. + + + + + The absolute span of the underlying node or token in characters, not including its leading and trailing + trivia. + + + + + Same as accessing on . + + + Slight performance improvement. + + + + + The absolute span of the underlying node or token in characters, including its leading and trailing trivia. + + + + + Returns the string representation of this node or token, not including its leading and trailing + trivia. + + + The string representation of this node or token, not including its leading and trailing trivia. + + The length of the returned string is always the same as Span.Length + + + + Returns the full string representation of this node or token including its leading and trailing trivia. + + The full string representation of this node or token including its leading and trailing + trivia. + The length of the returned string is always the same as FullSpan.Length + + + + Writes the full text of this node or token to the specified TextWriter. + + + + + Determines whether the underlying node or token has any leading trivia. + + + + + The list of trivia that appear before the underlying node or token in the source code and are attached to a + token that is a descendant of the underlying node or token. + + + + + Determines whether the underlying node or token has any trailing trivia. + + + + + The list of trivia that appear after the underlying node or token in the source code and are attached to a + token that is a descendant of the underlying node or token. + + + + + Determines whether the underlying node or token or any of its descendant nodes, tokens or trivia have any + diagnostics on them. + + + + + Gets a list of all the diagnostics in either the sub tree that has this node as its root or + associated with this token and its related trivia. + This method does not filter diagnostics based on #pragmas and compiler options + like nowarn, warnaserror etc. + + + + + Determines whether the underlying node or token has any descendant preprocessor directives. + + + + + Determines whether this node or token (or any sub node, token or trivia) as annotations. + + + + + Determines whether this node or token has annotations of the specified kind. + + + + + Determines whether this node or token has annotations of the specified kind. + + + + + Determines if this node or token has the specific annotation. + + + + + Gets all annotations of the specified annotation kind. + + + + + Gets all annotations of the specified annotation kind. + + + + + Creates a new node or token identical to this one with the specified annotations. + + + + + Creates a new node or token identical to this one with the specified annotations. + + + + + Creates a new node or token identical to this one without the specified annotations. + + + + + Creates a new node or token identical to this one without the specified annotations. + + + + + Creates a new node or token identical to this one without annotations of the specified kind. + + + + + Determines whether the supplied is equal to this + . + + + + + Determines whether two s are equal. + + + + + Determines whether two s are unequal. + + + + + Determines whether the supplied is equal to this + . + + + + + Serves as hash function for . + + + + + Determines if the two nodes or tokens are equivalent. + + + + + Returns a new that wraps the supplied token. + + The input token. + + A that wraps the supplied token. + + + + + Returns the underlying token wrapped by the supplied . + + + The input . + + + The underlying token wrapped by the supplied . + + + + + Returns a new that wraps the supplied node. + + The input node. + + A that wraps the supplied node. + + + + + Returns the underlying node wrapped by the supplied . + + + The input . + + + The underlying node wrapped by the supplied . + + + + + SyntaxTree which contains current SyntaxNodeOrToken. + + + + + Get the location of this node or token. + + + + + A list of structures. + + + + + The underlying field + + + + + The index from the parent's children list of this node. + + + + + Initializes a new instance of the structure. + + The underlying syntax node. + The index. + + + + Gets the underlying syntax node. + + + + + Gets the count of nodes in this list + + + + + Gets the at the specified index. + + is out of range. + + + + The absolute span of the list elements in characters, including the leading and trailing trivia of the first and last elements. + + + + + The absolute span of the list elements in characters, not including the leading and trailing trivia of the first and last elements. + + + + + Returns the string representation of the nodes and tokens in this list, not including the first node or token's leading trivia + and the last node or token's trailing trivia. + + + The string representation of the nodes and tokens in this list, not including the first node or token's leading trivia + and the last node or token's trailing trivia. + + + + + Returns the full string representation of the nodes and tokens in this list including the first node or token's leading trivia + and the last node or token's trailing trivia. + + + The full string representation of the nodes and tokens in this list including the first node or token's leading trivia + and the last node or token's trailing trivia. + + + + + Gets the first SyntaxNodeOrToken structure from this list. + + + + + Gets the first SyntaxNodeOrToken structure from this list if present, else default(SyntaxNodeOrToken). + + + + + Gets the last SyntaxNodeOrToken structure from this list. + + + + + Gets the last SyntaxNodeOrToken structure from this list if present, else default(SyntaxNodeOrToken). + + + + + Returns the index from the list for the given . + + The node or token to search for in the list. + The index of the found nodeOrToken, or -1 if it wasn't found + + + + Indicates whether there is any element in the list. + + true if there are any elements in the list, else false. + + + + Copies a given count of elements into the given array at specified offsets. + + The offset to start copying from. + The array to copy the elements into. + The array offset to start writing to. + The count of elements to copy. + + + + Creates a new with the specified node or token added to the end. + + The node or token to add. + + + + Creates a new with the specified nodes or tokens added to the end. + + The nodes or tokens to add. + + + + Creates a new with the specified node or token inserted at the index. + + The index to insert at. + The node or token to insert. + + + + Creates a new with the specified nodes or tokens inserted at the index. + + The index to insert at. + The nodes or tokens to insert. + + + + Creates a new with the element at the specified index removed. + + The index of the element to remove. + + + + Creates a new with the specified element removed. + + The element to remove. + + + + Creates a new with the specified element replaced with a new node or token. + + The element to replace. + The new node or token. + + + + Creates a new with the specified element replaced with a new nodes and tokens. + + The element to replace. + The new nodes and tokens. + + + + Gets the enumerator. + + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + + + + Implements the operator ==. + + The left SyntaxNodeOrTokenList + The right SyntaxNodeOrTokenList + + true if both lists equal, else false. + + + + + Implements the operator !=. + + The left SyntaxNodeOrTokenList + The right SyntaxNodeOrTokenList + + true if both lists not equal, else false. + + + + + Indicates whether the current object is equal to another object of the same type. + + An object to compare with this object. + + true if the current object is equal to the parameter; otherwise, + false. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Enumerator for lists of SyntaxNodeOrToken structs. + + + + + Advances the enumerator to the next element of the collection. + + + true if the enumerator was successfully advanced to the next element; false if the enumerator has passed the end of the collection. + + The collection was modified after the enumerator was created. + + + + Gets the struct that this enumerator instance is currently pointing to. + + + + + Gets the struct that this enumerator instance is currently pointing to. + + + + + Sets the enumerator to its initial position, which is before the first element in the collection. + + The collection was modified after the enumerator was created. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + A reference to a syntax node. + + + + + The syntax tree that this references a node within. + + + + + The span of the node referenced. + + + + + Retrieves the original referenced syntax node. + This action may cause a parse to happen to recover the syntax node. + + The original referenced syntax node. + + + + Retrieves the original referenced syntax node. + This action may cause a parse to happen to recover the syntax node. + + The original referenced syntax node. + + + + The location of this syntax reference. + + The location of this syntax reference. + + More performant than GetSyntax().GetLocation(). + + + + + None of the trivia associated with the node or token is kept. + + + + + The leading trivia associated with the node or token is kept. + + + + + The trailing trivia associated with the node or token is kept. + + + + + The leading and trailing trivia associated with the node or token is kept. + + + + + Any directives that would become unbalanced are kept. + + + + + All directives are kept + + + + + Ensure that at least one EndOfLine trivia is kept if one was present + + + + + Adds elastic marker trivia + + + + + Represents a token in the syntax tree. This is the language agnostic equivalent of and . + + + + + An integer representing the language specific kind of this token. + + + + + The language name that this token is syntax of. + + + + + The kind of token, given its position in the syntax. This differs from when a contextual keyword is used in a place in the syntax that gives it + its keyword meaning. + + + The ContextualKind is relevant only on contextual keyword tokens. ContextualKind differs + from Kind when a token is used in context where the token should be interpreted as a + keyword. + + + + + The node that contains this token in its Children collection. + + + + + The width of the token in characters, not including its leading and trailing trivia. + + + + + The complete width of the token in characters including its leading and trailing trivia. + + + + + The absolute span of this token in characters, not including its leading and trailing trivia. + + + + + Same as accessing on . + + + Slight performance improvement. + + + + + The absolute span of this token in characters, including its leading and trailing trivia. + + + + + Determines whether this token represents a language construct that was actually parsed from source code. + Missing tokens are typically generated by the parser in error scenarios to represent constructs that should + have been present in the source code for the source code to compile successfully but were actually missing. + + + + + Returns the value of the token. For example, if the token represents an integer literal, then this property + would return the actual integer. + + + + + Returns the text representation of the value of the token. For example, if the token represents an integer + literal, then this property would return a string representing the integer. + + + + + Returns the string representation of this token, not including its leading and trailing trivia. + + The string representation of this token, not including its leading and trailing trivia. + The length of the returned string is always the same as Span.Length + + + + Returns the full string representation of this token including its leading and trailing trivia. + + The full string representation of this token including its leading and trailing trivia. + The length of the returned string is always the same as FullSpan.Length + + + + Writes the full text of this token to the specified . + + + + + Writes the text of this token to the specified TextWriter, optionally including trivia. + + + + + Determines whether this token has any leading trivia. + + + + + Determines whether this token has any trailing trivia. + + + + + Full width of the leading trivia of this token. + + + + + Full width of the trailing trivia of this token. + + + + + Determines whether this token or any of its descendant trivia have any diagnostics on them. + + + + + Determines whether this token has any descendant preprocessor directives. + + + + + Determines whether this token is a descendant of a structured trivia. + + + + + Determines whether any of this token's trivia is structured. + + + + + True if this token or its trivia has any annotations. + + + + + True if this token has annotations of the specified annotation kind. + + + + + True if this token has annotations of the specified annotation kinds. + + + + + True if this token has the specified annotation. + + + + + Gets all the annotations of the specified annotation kind. + + + + + Gets all the annotations of the specified annotation kind. + + + + + Gets all the annotations of the specified annotation kind. + + + + + Adds this annotation to a given syntax token, creating a new syntax token of the same type with the + annotation on it. + + + + + Adds this annotation to a given syntax token, creating a new syntax token of the same type with the + annotation on it. + + + + + Creates a new syntax token identical to this one without the specified annotations. + + + + + Creates a new syntax token identical to this one without the specified annotations. + + + + + Creates a new syntax token identical to this one without annotations of the specified kind. + + + + + Copies all SyntaxAnnotations, if any, from this SyntaxToken instance and attaches them to a new instance based on . + + + If no annotations are copied, just returns . + + + + + The list of trivia that appear before this token in the source code. + + + + + The list of trivia that appear after this token in the source code and are attached to this token or any of + its descendants. + + + + + Creates a new token from this token with the leading and trailing trivia from the specified token. + + + + + Creates a new token from this token with the leading trivia specified. + + + + + Creates a new token from this token with the leading trivia specified.. + + + + + Creates a new token from this token with the leading trivia specified.. + + + + + Creates a new token from this token with the trailing trivia specified. + + + + + Creates a new token from this token with the trailing trivia specified. + + + + + Creates a new token from this token with the trailing trivia specified. + + + + + Gets a list of all the trivia (both leading and trailing) for this token. + + + + + Determines whether two s are equal. + + + + + Determines whether two s are unequal. + + + + + Determines whether the supplied is equal to this + . + + + + + Determines whether the supplied is equal to this + . + + + + + Serves as hash function for . + + + + + Gets the token that follows this token in the syntax tree. + + The token that follows this token in the syntax tree. + + + + Returns the token after this token in the syntax tree. + + Delegate applied to each token. The token is returned if the predicate returns + true. + Delegate applied to trivia. If this delegate is present then trailing trivia is + included in the search. + + + + Gets the token that precedes this token in the syntax tree. + + The next token that follows this token in the syntax tree. + + + + Returns the token before this token in the syntax tree. + + Delegate applied to each token. The token is returned if the predicate returns + true. + Delegate applied to trivia. If this delegate is present then trailing trivia is + included in the search. + + + + The SyntaxTree that contains this token. + + + + + Gets the location for this token. + + + + + Gets a list of all the diagnostics associated with this token and any related trivia. + This method does not filter diagnostics based on #pragmas and compiler options + like nowarn, warnaserror etc. + + + + + Determines if this token is equivalent to the specified token. + + + + + Represents a read-only list of . + + + Represents a read-only list of s. + + + + + Returns the number of tokens in the list. + + + + + Gets the token at the specified index. + + The zero-based index of the token to get. + The token at the specified index. + + is less than 0.-or- is equal to or greater than . + + + + The absolute span of the list elements in characters, including the leading and trailing trivia of the first and last elements. + + + + + The absolute span of the list elements in characters, not including the leading and trailing trivia of the first and last elements. + + + + + Returns the string representation of the tokens in this list, not including + the first token's leading trivia and the last token's trailing trivia. + + + The string representation of the tokens in this list, not including + the first token's leading trivia and the last token's trailing trivia. + + + + + Returns the full string representation of the tokens in this list including + the first token's leading trivia and the last token's trailing trivia. + + + The full string representation of the tokens in this list including + the first token's leading trivia and the last token's trailing trivia. + + + + + Returns the first token in the list. + + The first token in the list. + The list is empty. + + + + Returns the last token in the list. + + The last token in the list. + The list is empty. + + + + Tests whether the list is non-empty. + + True if the list contains any tokens. + + + + Returns a list which contains all elements of in reversed order. + + which contains all elements of in reversed order + + + + get the green node at the given slot + + + + + get the green node at the given slot + + + + + Creates a new with the specified token added to the end. + + The token to add. + + + + Creates a new with the specified tokens added to the end. + + The tokens to add. + + + + Creates a new with the specified token insert at the index. + + The index to insert the new token. + The token to insert. + + + + Creates a new with the specified tokens insert at the index. + + The index to insert the new tokens. + The tokens to insert. + + + + Creates a new with the token at the specified index removed. + + The index of the token to remove. + + + + Creates a new with the specified token removed. + + The token to remove. + + + + Creates a new with the specified token replaced with a new token. + + The token to replace. + The new token. + + + + Creates a new with the specified token replaced with new tokens. + + The token to replace. + The new tokens. + + + + Returns an enumerator for the tokens in the + + + + + Compares and for equality. + + + + True if the two s are equal. + + + + Compares and for inequality. + + + + True if the two s are not equal. + + + + Compares this with the for equality. + + True if the two objects are equal. + + + + Serves as a hash function for the + + + + + Create a new Token List + + Element of the return Token List + + + + A structure for enumerating a + + + + + Advances the enumerator to the next token in the collection. + + true if the enumerator was successfully advanced to the next element; false if the enumerator + has passed the end of the collection. + + + + Gets the current element in the collection. + + + + + Reversed enumerable. + + + + + The parsed representation of a source document. + + + + + The path of the source document file. + + + If this syntax tree is not associated with a file, this value can be empty. + The path shall not be null. + + The file doesn't need to exist on disk. The path is opaque to the compiler. + The only requirement on the path format is that the implementations of + , and + passed to the compilation that contains the tree understand it. + + Clients must also not assume that the values of this property are unique + within a Compilation. + + The path is used as follows: + - When debug information is emitted, this path is embedded in the debug information. + - When resolving and normalizing relative paths in #r, #load, #line/#ExternalSource, + #pragma checksum, #ExternalChecksum directives, XML doc comment include elements, etc. + + + + + Returns true if this syntax tree has a root with SyntaxKind "CompilationUnit". + + + + + The options used by the parser to produce the syntax tree. + + + + + The options used by the parser to produce the syntax tree. + + + + + The length of the text of the syntax tree. + + + + + Gets the syntax tree's text if it is available. + + + + + Gets the text of the source document. + + + + + The text encoding of the source document. + + + + + Gets the text of the source document asynchronously. + + + By default, the work associated with this method will be executed immediately on the current thread. + Implementations that wish to schedule this work differently should override . + + + + + Gets the root of the syntax tree if it is available. + + + + + Gets the root of the syntax tree if it is available. + + + + + Gets the root node of the syntax tree, causing computation if necessary. + + + + + Gets the root node of the syntax tree, causing computation if necessary. + + + + + Gets the root node of the syntax tree asynchronously. + + + + + Gets the root node of the syntax tree asynchronously. + + + + + Create a new syntax tree based off this tree using a new source text. + + If the new source text is a minor change from the current source text an incremental + parse will occur reusing most of the current syntax tree internal data. Otherwise, a + full parse will occur using the new source text. + + + + + Gets a list of all the diagnostics in the syntax tree. + This method does not filter diagnostics based on #pragmas and compiler options + like nowarn, warnaserror etc. + + + + + Gets a list of all the diagnostics in the sub tree that has the specified node as its root. + This method does not filter diagnostics based on #pragmas and compiler options + like nowarn, warnaserror etc. + + + + + Gets a list of all the diagnostics associated with the token and any related trivia. + This method does not filter diagnostics based on #pragmas and compiler options + like nowarn, warnaserror etc. + + + + + Gets a list of all the diagnostics associated with the trivia. + This method does not filter diagnostics based on #pragmas and compiler options + like nowarn, warnaserror etc. + + + + + Gets a list of all the diagnostics in either the sub tree that has the specified node as its root or + associated with the token and its related trivia. + This method does not filter diagnostics based on #pragmas and compiler options + like nowarn, warnaserror etc. + + + + + Gets the location in terms of path, line and column for a given span. + + Span within the tree. + Cancellation token. + + A valid that contains path, line and column information. + The values are not affected by line mapping directives (#line). + + + + + Gets the location in terms of path, line and column after applying source line mapping directives + (#line in C# or #ExternalSource in VB). + + Span within the tree. + Cancellation token. + + A valid that contains path, line and column information. + + If the location path is mapped the resulting path is the path specified in the corresponding #line, + otherwise it's . + + A location path is considered mapped if the first #line directive that precedes it and that + either specifies an explicit file path or is #line default exists and specifies an explicit path. + + + + + Returns the visibility for the line at the given position. + + The position to check. + The cancellation token. + + + + Gets a FileLinePositionSpan for a TextSpan and the information whether this span is considered to be hidden or not. + FileLinePositionSpans are used primarily for diagnostics and source locations. + This method combines a call to GetLineSpan and IsHiddenPosition. + + + Returns a boolean indicating whether this span is considered hidden or not. + This function is being called only in the context of sequence point creation and therefore interprets the + LineVisibility accordingly (BeforeFirstRemappingDirective -> Visible). + + + + Returns a path for particular location in source that is presented to the user. + + + Used for implementation of + or for embedding source paths in error messages. + + Unlike Dev12 we do account for #line and #ExternalSource directives when determining value for + . + + + + + Returns a line number for particular location in source that is presented to the user. + + + Used for implementation of + or for embedding source line numbers in error messages. + + Unlike Dev12 we do account for #line and #ExternalSource directives when determining value for + . + + + + + Are there any hidden regions in the tree? + + True if there is at least one hidden region. + + + + Returns a list of the changed regions between this tree and the specified tree. The list is conservative for + performance reasons. It may return larger regions than what has actually changed. + + + + + Gets a location for the specified text span. + + + + + Determines if two trees are the same, disregarding trivia differences. + + The tree to compare against. + If true then the trees are equivalent if the contained nodes and tokens declaring + metadata visible symbolic information are equivalent, ignoring any differences of nodes inside method bodies + or initializer expressions, otherwise all nodes and tokens must be equivalent. + + + + + Gets a SyntaxReference for a specified syntax node. SyntaxReferences can be used to + regain access to a syntax node without keeping the entire tree and source text in + memory. + + + + + Gets a list of text changes that when applied to the old tree produce this tree. + + The old tree. + The list of changes may be different than the original changes that produced + this tree. + + + + Returns a new tree whose root and options are as specified and other properties are copied from the current tree. + + + + + Returns a new tree whose is the specified node and other properties are copied from the current tree. + + + + + Returns a that represents the entire source text of this . + + + + + Verify nodes match source. + + + + + Return the index of the first difference between + the two strings, or -1 if the strings are the same. + + + + + Represents a trivia in the syntax tree. This is the language agnostic equivalent of and . + + + + + An integer representing the language specific kind of this trivia. + + + + + The language name that this trivia is syntax of. + + + + + The parent token that contains this token in its LeadingTrivia or TrailingTrivia collection. + + + + + The width of this trivia in characters. If this trivia is a structured trivia then the returned width will + not include the widths of any leading or trailing trivia present on the child non-terminal node of this + trivia. + + + + + The width of this trivia in characters. If this trivia is a structured trivia then the returned width will + include the widths of any leading or trailing trivia present on the child non-terminal node of this trivia. + + + + + The absolute span of this trivia in characters. If this trivia is a structured trivia then the returned span + will not include spans of any leading or trailing trivia present on the child non-terminal node of this + trivia. + + + + + Same as accessing on . + + + Slight performance improvement. + + + + + The absolute span of this trivia in characters. If this trivia is a structured trivia then the returned span + will include spans of any leading or trailing trivia present on the child non-terminal node of this trivia. + + + + + Determines whether this trivia has any diagnostics on it. If this trivia is a structured trivia then the + returned value will indicate whether this trivia or any of its descendant nodes, tokens or trivia have any + diagnostics on them. + > + + + + Determines whether this trivia is a structured trivia. + + + + + Determines whether this trivia is a descendant of a structured trivia. + + + + + Determines whether this trivia or any of its structure has annotations. + + + + + Determines where this trivia has annotations of the specified annotation kind. + + + + + Determines where this trivia has any annotations of the specified annotation kinds. + + + + + Determines whether this trivia has the specific annotation. + + + + + Get all the annotations of the specified annotation kind. + + + + + Get all the annotations of the specified annotation kinds. + + + + + Determines whether this trivia represents a preprocessor directive. + + + + + Returns the child non-terminal node representing the syntax tree structure under this structured trivia. + + The child non-terminal node representing the syntax tree structure under this structured + trivia. + + + + Returns the string representation of this trivia. If this trivia is structured trivia then the returned string + will not include any leading or trailing trivia present on the StructuredTriviaSyntax node of this trivia. + + The string representation of this trivia. + The length of the returned string is always the same as Span.Length + + + + Returns the full string representation of this trivia. If this trivia is structured trivia then the returned string will + include any leading or trailing trivia present on the StructuredTriviaSyntax node of this trivia. + + The full string representation of this trivia. + The length of the returned string is always the same as FullSpan.Length + + + + Writes the full text of this trivia to the specified TextWriter. + + + + + Determines whether two s are equal. + + + + + Determines whether two s are unequal. + + + + + Determines whether the supplied is equal to this + . + + + + + Determines whether the supplied is equal to this + . + + + + + Serves as hash function for . + + + + + Creates a new SyntaxTrivia with the specified annotations. + + + + + Creates a new SyntaxTrivia with the specified annotations. + + + + + Creates a new SyntaxTrivia without the specified annotations. + + + + + Creates a new SyntaxTrivia without the specified annotations. + + + + + Creates a new SyntaxTrivia without annotations of the specified kind. + + + + + Copies all SyntaxAnnotations, if any, from this SyntaxTrivia instance and attaches them to a new instance based on . + + + + + SyntaxTree which contains current SyntaxTrivia. + + + + + Get the location of this trivia. + + + + + Gets a list of all the diagnostics associated with this trivia. + This method does not filter diagnostics based on #pragmas and compiler options + like nowarn, warnaserror etc. + + + + + Determines if this trivia is equivalent to the specified trivia. + + + + + Represents a read-only list of . + + + + + Gets the trivia at the specified index. + + The zero-based index of the trivia to get. + The token at the specified index. + + is less than 0.-or- is equal to or greater than . + + + + The absolute span of the list elements in characters, including the leading and trailing trivia of the first and last elements. + + + + + The absolute span of the list elements in characters, not including the leading and trailing trivia of the first and last elements. + + + + + Returns the first trivia in the list. + + The first trivia in the list. + The list is empty. + + + + Returns the last trivia in the list. + + The last trivia in the list. + The list is empty. + + + + Does this list have any items. + + + + + Returns a list which contains all elements of in reversed order. + + which contains all elements of in reversed order + + + + Creates a new with the specified trivia added to the end. + + The trivia to add. + + + + Creates a new with the specified trivia added to the end. + + The trivia to add. + + + + Creates a new with the specified trivia inserted at the index. + + The index in the list to insert the trivia at. + The trivia to insert. + + + + Creates a new with the specified trivia inserted at the index. + + The index in the list to insert the trivia at. + The trivia to insert. + + + + Creates a new with the element at the specified index removed. + + The index identifying the element to remove. + + + + Creates a new with the specified element removed. + + The trivia element to remove. + + + + Creates a new with the specified element replaced with new trivia. + + The trivia element to replace. + The trivia to replace the element with. + + + + Creates a new with the specified element replaced with new trivia. + + The trivia element to replace. + The trivia to replace the element with. + + + + get the green node at the specific slot + + + + + Copy number of items starting at from this list into starting at . + + + + + Reversed enumerable. + + + + + Walks the syntax tree, allowing subclasses to operate on all nodes, token and trivia. The + walker will perform a depth first walk of the tree. + + + + + Syntax the should descent into. + + + + + Creates a new walker instance. + + Syntax the should descent into. + + + + Called when the walker visits a node. This method may be overridden if subclasses want + to handle the node. Overrides should call back into this base method if they want the + children of this node to be visited. + + The current node that the walker is visiting. + + + + Called when the walker visits a token. This method may be overridden if subclasses want + to handle the token. Overrides should call back into this base method if they want the + trivia of this token to be visited. + + The current token that the walker is visiting. + + + + Called when the walker visits a trivia syntax. This method may be overridden if + subclasses want to handle the token. Overrides should call back into this base method if + they want the children of this trivia syntax to be visited. + + The current trivia syntax that the walker is visiting. + + + + Syntax the should descent into. + + + + + descend into only nodes + + + + + descend into nodes and tokens + + + + + descend into nodes, tokens and trivia + + + + + descend into everything + + + + + This is ONLY used id BoundNode.cs Debug method - Dump() + + + + + This is ONLY used for debugging purpose + + + + + Parses a version string of the form "major [ '.' minor [ '.' build [ '.' revision ] ] ]". + + The version string to parse. + If parsing succeeds, the parsed version. Otherwise a version that represents as much of the input as could be parsed successfully. + True when parsing succeeds completely (i.e. every character in the string was consumed), false otherwise. + + + + Parses a version string of the form "major [ '.' minor [ '.' ( '*' | ( build [ '.' ( '*' | revision ) ] ) ) ] ]" + as accepted by System.Reflection.AssemblyVersionAttribute. + + The version string to parse. + Indicates whether or not a wildcard is accepted as the terminal component. + + If parsing succeeded, the parsed version. Otherwise a version instance with all parts set to zero. + If contains * the version build and/or revision numbers are set to . + + True when parsing succeeds completely (i.e. every character in the string was consumed), false otherwise. + + + + Parses a version string of the form "major [ '.' minor [ '.' ( '*' | ( build [ '.' ( '*' | revision ) ] ) ) ] ]" + as accepted by System.Reflection.AssemblyVersionAttribute. + + The version string to parse. + Indicates whether or not we're parsing an assembly version string. If so, wildcards are accepted and each component must be less than 65535. + The maximum value that a version component may have. + Allow the parsing of version elements where invalid characters exist. e.g. 1.2.2a.1 + + If parsing succeeded, the parsed version. When is true a version with values up to the first invalid character set. Otherwise a version with all parts set to zero. + If contains * and wildcard is allowed the version build and/or revision numbers are set to . + + True when parsing succeeds completely (i.e. every character in the string was consumed), false otherwise. + + + + If build and/or revision numbers are 65535 they are replaced with time-based values. + + + + + This function defines whether an attribute is optional or not. + + The attribute member. + + + + Ids of well known runtime types. + Values should not intersect with SpecialType enum! + + + + + + Number of well known types in WellKnownType enum + + + + + Array of names for types. + The names should correspond to ids from WellKnownType enum so + that we could use ids to index into the array + + + + + + Resolves references to XML files specified in the source. + + + + + Resolves XML document file path. + + + Value of the "file" attribute of an <include> documentation comment element. + + + Path of the source file () or XML document that contains the . + If not null used as a base path of , if is relative. + If is relative is used as the base path of . + + Normalized XML document file path or null if not found. + + + + The XmlCharType class is used for quick character type recognition + which is optimized for the first 127 ascii characters. + + + + + start >= value <= end + + + + + Struct containing information about a source declaration. + + + + + Topmost syntax node for this declaration. + + + + + Syntax nodes for executable code blocks (method body, initializers, etc.) associated with this declaration. + + + + + Symbol declared by this declaration. + + + + + Realizes the array. + + + + + Write to slot . + Fills in unallocated slots preceding the , if any. + + + + + Realizes the array. + + + + + Realizes the array, downcasting each element to a derived type. + + + + + Realizes the array and disposes the builder in one operation. + + + + + struct enumerator used in foreach. + + + + + This class is used to store the module serialization properties for a compilation. + + + + + The alignment factor (in bytes) that is used to align the raw data of sections in the image file. + The value should be a power of 2 between 512 and 64K, inclusive. The default is 512. + + + + + The alignment (in bytes) of sections when they are loaded into memory. + It must be greater than or equal to . + The default is the page size for the architecture. + + + + + Identifies the version of the CLR that is required to load this module or assembly. + + + + + Specifies the target CPU. means AnyCPU. + + + + + True if the module contains only IL and is processor independent. Should there be a choice between launching as a 64-bit or 32-bit + process, this setting will cause the host to launch it as a 32-bit process. + + + + + The first part of a two part version number indicating the version of the format used to persist this module. For example, the 1 in 1.0. + + + + + The second part of a two part version number indicating the version of the format used to persist this module. For example, the 0 in 1.0. + + + + + A globally unique persistent identifier for this module. + + + + + True if the module contains only IL and is processor independent. + + + + + True if the instructions in this module must be compiled in such a way that the debugging experience is not compromised. + To set the value of this property, add an instance of System.Diagnostics.DebuggableAttribute to the MetadataAttributes list. + + + + + The preferred memory address at which the module is to be loaded at runtime. + + + + + The size of the virtual memory to reserve for the initial process heap. + Must fit into 32 bits if the target platform is 32 bit. + + + + + The size of the virtual memory initially committed for the initial process heap. + Must fit into 32 bits if the target platform is 32 bit. + + + + + The size of the virtual memory to reserve for the initial thread's stack. + Must fit into 32 bits if the target platform is 32 bit. + + + + + The first part of a two part version number indicating the version of the linker that produced this module. For example, the 8 in 8.0. + + + + + The first part of a two part version number indicating the version of the linker that produced this module. For example, the 0 in 8.0. + + + + + Flags that control the behavior of the target operating system. CLI implementations are supposed to ignore this, but some operating system pay attention. + + + + + If set, the module must include a machine code stub that transfers control to the virtual execution system. + + + + + If set, the module contains instructions or assumptions that are specific to the AMD 64 bit instruction set. + + + + + If set, the module contains instructions that assume a 32 bit instruction set. For example it may depend on an address being 32 bits. + This may be true even if the module contains only IL instructions because of PlatformInvoke and COM interop. + + + + + If set, the module contains instructions that assume a 64 bit instruction set. For example it may depend on an address being 64 bits. + This may be true even if the module contains only IL instructions because of PlatformInvoke and COM interop. + + + + + Compares the current content of this writer with another one. + + + + Range specified by and falls outside of the bounds of the buffer content. + + + Range specified by and falls outside of the bounds of the buffer content. + + + is negative. + + + is null. + is negative. + + + is null. + + + is null. + is negative. + + + is null. + + + is null. + Range specified by and falls outside of the bounds of the . + + + is null. + + + is null. + Range specified by and falls outside of the bounds of the . + + + + Writes a reference to a heap (heap index) or a table (row id). + + + References may be small (2B) or large (4B). + + + + + Writes UTF16 (little-endian) encoded string at the current position. + + is null. + + + + Writes UTF16 (little-endian) encoded string at the current position. + + is null. + + + + Writes string in SerString format (see ECMA-335-II 23.3 Custom attributes): + The string is UTF8 encoded and prefixed by the its size in bytes. + Null string is represented as a single byte 0xFF. + + + + + Writes UTF8 encoded string at the current position. + + is null. + + + + Implements compressed signed integer encoding as defined by ECMA-335-II chapter 23.2: Blobs and signatures. + + + If the value lies between -64 (0xFFFFFFC0) and 63 (0x3F), inclusive, encode as a one-byte integer: + bit 7 clear, value bits 5 through 0 held in bits 6 through 1, sign bit (value bit 31) in bit 0. + + If the value lies between -8192 (0xFFFFE000) and 8191 (0x1FFF), inclusive, encode as a two-byte integer: + 15 set, bit 14 clear, value bits 12 through 0 held in bits 13 through 1, sign bit(value bit 31) in bit 0. + + If the value lies between -268435456 (0xF000000) and 268435455 (0x0FFFFFFF), inclusive, encode as a four-byte integer: + 31 set, 30 set, bit 29 clear, value bits 27 through 0 held in bits 28 through 1, sign bit(value bit 31) in bit 0. + + can't be represented as a compressed signed integer. + + + + Implements compressed unsigned integer encoding as defined by ECMA-335-II chapter 23.2: Blobs and signatures. + + + If the value lies between 0 (0x00) and 127 (0x7F), inclusive, + encode as a one-byte integer (bit 7 is clear, value held in bits 6 through 0). + + If the value lies between 28 (0x80) and 214 – 1 (0x3FFF), inclusive, + encode as a 2-byte integer with bit 15 set, bit 14 clear(value held in bits 13 through 0). + + Otherwise, encode as a 4-byte integer, with bit 31 set, bit 30 set, bit 29 clear (value held in bits 28 through 0). + + can't be represented as a compressed signed integer. + + + + Writes a constant value (see ECMA-335 Partition II section 22.9) at the current position. + + is not of a constant type. + + + + The type of target machine. + + + + + The number of sections. This indicates the size of the section table, which immediately follows the headers. + + + + + The low 32 bits of the number of seconds since 00:00 January 1, 1970, that indicates when the file was created. + + + + + The file pointer to the COFF symbol table, or zero if no COFF symbol table is present. + This value should be zero for a PE image. + + + + + The number of entries in the symbol table. This data can be used to locate the string table, + which immediately follows the symbol table. This value should be zero for a PE image. + + + + + The size of the optional header, which is required for executable files but not for object files. + This value should be zero for an object file. + + + + + The flags that indicate the attributes of the file. + + + + + Represents a value on #String heap that has not been serialized yet. + + + + + Represents a value on #Blob heap that has not been serialized yet. + + + + + Fills in stringIndexMap with data from stringIndex and write to stringWriter. + Releases stringIndex as the stringTable is sealed after this point. + + + + + Sorts strings such that a string is followed immediately by all strings + that are a suffix of it. + + + + + Import scopes are associated with binders (in C#) and thus multiple instances might be created for a single set of imports. + We consider scopes with the same parent and the same imports the same. + Internal for testing. + + + + + This is the maximum length of a type or member name in metadata, assuming + the name is in UTF-8 format and not (yet) null-terminated. + + + Source names may have to be shorter still to accommodate mangling. + Used for event names, field names, property names, field names, method def names, + member ref names, type def (full) names, type ref (full) names, exported type + (full) names, parameter names, manifest resource names, and unmanaged method names + (ImplMap table). + + See CLI Part II, section 22. + + + + + This is the maximum length of a path in metadata, assuming the path is in UTF-8 + format and not (yet) null-terminated. + + + Used for file names, module names, and module ref names. + + See CLI Part II, section 22. + + + + + This is the maximum length of a string in the PDB, assuming it is in UTF-8 format + and not (yet) null-terminated. + + + Used for import strings, locals, and local constants. + + + + + Returns true if writing full metadata, false if writing delta. + + + + + True if writing delta metadata in a minimal format. + + + + + NetModules and EnC deltas don't have AssemblyDef record. + We don't emit it for EnC deltas since assembly identity has to be preserved across generations (CLR/debugger get confused otherwise). + + + + + Returns metadata generation ordinal. Zero for + full metadata and non-zero for delta. + + + + + Returns unique Guid for this delta, or default(Guid) + if full metadata. + + + + + Returns Guid of previous delta, or default(Guid) + if full metadata or generation 1 delta. + + + + + Returns true and the 1-based index of the type definition + if the type definition is recognized. Otherwise returns false. + The index is into the full metadata. + + + + + The 1-based index of the type definition. + The index is into the full metadata. + + + + + The type definition at the 0-based index into the full set. Deltas + are only required to support indexing into current generation. + + + + + The type definitions to be emitted, in row order. These + are just the type definitions from the current generation. + + + + + The 1-based index of the event definition. + The index is into the full metadata. + + + + + The event definitions to be emitted, in row order. These + are just the event definitions from the current generation. + + + + + The 1-based index of the field definition. + The index is into the full metadata. + + + + + The field definitions to be emitted, in row order. These + are just the field definitions from the current generation. + + + + + Returns true and the 1-based index of the method definition + if the method definition is recognized. Otherwise returns false. + The index is into the full metadata. + + + + + The 1-based index of the method definition. + The index is into the full metadata. + + + + + The method definition at the 0-based index into the full set. Deltas + are only required to support indexing into current generation. + + + + + The method definitions to be emitted, in row order. These + are just the method definitions from the current generation. + + + + + The 1-based index of the property definition. + The index is into the full metadata. + + + + + The property definitions to be emitted, in row order. These + are just the property definitions from the current generation. + + + + + The 1-based index of the parameter definition. + The index is into the full metadata. + + + + + The parameter definitions to be emitted, in row order. These + are just the parameter definitions from the current generation. + + + + + The generic parameter definitions to be emitted, in row order. These + are just the generic parameter definitions from the current generation. + + + + + The 1-based index of the first field of the type. + + + + + The 1-based index of the first method of the type. + + + + + The 1-based index of the first parameter of the method. + + + + + Return the 1-based index of the assembly reference, adding + the reference to the index for this generation if missing. + The index is into the full metadata. However, deltas + are not required to return rows from previous generations. + + + + + The assembly references to be emitted, in row order. These + are just the assembly references from the current generation. + + + + + Return the 1-based index of the module reference, adding + the reference to the index for this generation if missing. + The index is into the full metadata. However, deltas + are not required to return rows from previous generations. + + + + + The module references to be emitted, in row order. These + are just the module references from the current generation. + + + + + Return the 1-based index of the member reference, adding + the reference to the index for this generation if missing. + The index is into the full metadata. However, deltas + are not required to return rows from previous generations. + + + + + The member references to be emitted, in row order. These + are just the member references from the current generation. + + + + + Return the 1-based index of the method spec, adding + the spec to the index for this generation if missing. + The index is into the full metadata. However, deltas + are not required to return rows from previous generations. + + + + + The method specs to be emitted, in row order. These + are just the method specs from the current generation. + + + + + Return true and the 1-based index of the type reference + if the reference is available in the current generation. + The index is into the full metadata. However, deltas + are not required to return rows from previous generations. + + + + + Return the 1-based index of the type reference, adding + the reference to the index for this generation if missing. + The index is into the full metadata. However, deltas + are not required to return rows from previous generations. + + + + + The type references to be emitted, in row order. These + are just the type references from the current generation. + + + + + Return the 1-based index of the type spec, adding + the spec to the index for this generation if missing. + The index is into the full metadata. However, deltas + are not required to return rows from previous generations. + + + + + The type specs to be emitted, in row order. These + are just the type specs from the current generation. + + + + + Return the 1-based index of the signature index, adding + the signature to the index for this generation if missing. + The index is into the full metadata. However, deltas + are not required to return rows from previous generations. + + + + + The signature indices to be emitted, in row order. These + are just the signature indices from the current generation. + + + + + Return a visitor for traversing all references to be emitted. + + + + + Populate EventMap table. + + + + + Populate PropertyMap table. + + + + + Populate EncLog table. + + + + + Populate EncMap table. + + + + + Returns a reference to the unit that defines the given referenced type. If the referenced type is a structural type, such as a pointer or a generic type instance, + then the result is null. + + + + + The Microsoft CLR requires that {namespace} + "." + {name} fit in MAX_CLASS_NAME + (even though the name and namespace are stored separately in the Microsoft + implementation). Note that the namespace name of a nested type is always blank + (since comes from the container). + + We're trying to add the containing namespace of this type to the string heap. + Namespace names are never used on their own - this is the type that is adding the namespace name. + Used only for length checking. + + + + Test the given name to see if it fits in metadata. + + String to test (non-null). + Max length for name. (Expected to be at least 5.) + True if the name is too long. + Internal for test purposes. + + + + Serialize the method local signature to the blob. + + Standalone signature token + + + + Computes the string representing the strong name of the given assembly reference. + + + + + Visitor to force translation of all symbols that will be referred to + in metadata. Allows us to build the set of types that must be embedded + as local types. + + + + + Strip off *, &, and []. + + + + + Qualified name of namespace. + e.g. "A.B.C" + + + + + The offset of the first operation in the scope. + + + + + The offset of the first operation outside of the scope, or the method body length. + + + + + An object corresponding to a metadata entity such as a type or a field. + + + + + An object corresponding to reference to a metadata entity such as a type or a field. + + + + + A collection of metadata custom attributes that are associated with this definition. + + + + + Calls the visitor.Visit(T) method where T is the most derived object model node interface type implemented by the concrete type + of the object implementing IDefinition. The dispatch method does not invoke Dispatch on any child objects. If child traversal + is desired, the implementations of the Visit methods should do the subsequent dispatching. + + + + + Gets the definition object corresponding to this reference within the given context, + or null if the referenced entity isn't defined in the context. + + + + + Constants for producing and consuming streams of binary custom debug info. + + + + + Returns true if the namespace scope for this method should be forwarded to another method. + Returns non-null if the forwarding should be done directly via UsingNamespace, + null if the forwarding is done via custom debug info. + + + + + Use to create a document when checksum is computed based on actual source stream. + + + + + Use to create a document when checksum is suggested via external checksum pragma/directive + + + + + returns true when checksum was computed base on an actual source stream + as opposed to be suggested via a checksum directive/pragma + + + + + A region representing an exception handler clause. The region exposes the type (catch or + finally) and the bounds of the try block and catch or finally block as needed by + + + + + Handler kind for this SEH info + + + + + If HandlerKind == HandlerKind.Catch, this is the type of exception to catch. If HandlerKind == HandlerKind.Filter, this is System.Object. + Otherwise this is a Dummy.TypeReference. + + + + + Label instruction corresponding to the start of filter decision block + + + + + Label instruction corresponding to the start of try block + + + + + Label instruction corresponding to the end of try block + + + + + Label instruction corresponding to the start of handler block + + + + + Label instruction corresponding to the end of handler block + + + + + An expression that does not change its value at runtime and can be evaluated at compile time. + + + + + The compile time value of the expression. Null to represent a null object reference or a null array. + + + + + An expression that creates an array instance in metadata. Only for use in custom attributes. + + + + + The element type of the array. + + + + + The values of the array elements. May be empty to represent an empty array. + + + + + The number of elements in the array. + + + + + An expression that can be represented directly in metadata. + + + + + Calls the visitor.Visit(T) method where T is the most derived object model node interface type implemented by the concrete type + of the object implementing IStatement. The dispatch method does not invoke Dispatch on any child objects. If child traversal + is desired, the implementations of the Visit methods should do the subsequent dispatching. + + + + + The type of value the expression represents. + + + + + An expression that represents a (name, value) pair and that is typically used in method calls, custom attributes and object initializers. + + + + + The name of the parameter or property or field that corresponds to the argument. + + + + + The value of the argument. + + + + + True if the named argument provides the value of a field. + + + + + An expression that results in a System.Type instance. + + + + + The type that will be represented by the System.Type instance. + + + + + Represents an assembly reference with an alias (C# only, /r:Name=Reference on command line). + + + + + An alias for the global namespace of the assembly. + + + + + The assembly reference. + + + + + A metadata custom attribute. + + + + + Zero or more positional arguments for the attribute constructor. + + + + + A reference to the constructor that will be used to instantiate this custom attribute during execution (if the attribute is inspected via Reflection). + + + + + Zero or more named arguments that specify values for fields and properties of the attribute. + + + + + The number of positional arguments. + + + + + The number of named arguments. + + + + + The type of the attribute. For example System.AttributeUsageAttribute. + + + + + Whether attribute allows multiple. + + + + + Represents a file referenced by an assembly. + + + + + True if the file has metadata. + + + + + File name with extension. + + + + + A hash of the file contents. + + + + + The highest version of the interface available on Desktop FX 4.0+. + + + + + has type , rather than , + so that we can do custom marshalling of . Unfortunately, .NET marshals + s as the number of days since 1899/12/30, whereas the native VB compiler + marshalled them as the number of ticks since the Unix epoch (i.e. a much, much larger number). + + + + + Open a special custom data section to emit token to source span mapping information into. + Opening this section while a method is already open or vice versa is an error. + + + + + Close the special custom data section for token to source span mapping + information. Once it is closed no more mapping information can be added. + + + + + Maps the given metadata token to the given source line span in the specified source file. + Must be called between calls to and . + + + + + The highest version of the interface available in Microsoft.DiaSymReader.Native. + + + + + A struct with the same size and layout as the native VARIANT type: + 2 bytes for a discriminator (i.e. which type of variant it is). + 6 bytes of padding + 8 or 16 bytes of data + + + + + This field determines the size of the struct + (16 bytes on 32-bit platforms, 24 bytes on 64-bit platforms). + + + + + This type is 8 bytes on a 32-bit platforms and 16 bytes on 64-bit platforms. + + + + + A range of CLR IL operations that comprise a lexical scope. + + + + + The offset of the first operation in the scope. + + + + + The offset of the first operation outside of the scope, or the method body length. + + + + + Returns zero or more local constant definitions that are local to the given scope. + + + + + Returns zero or more local variable definitions that are local to the given scope. + + + + + streamProvider callers will dispose result after use. + and are mutually exclusive. + + + + + Specifies how the caller passes parameters to the callee and who cleans up the stack. + + + + + C/C++ style calling convention for unmanaged methods. The call stack is cleaned up by the caller, + which makes this convention suitable for calling methods that accept extra arguments. + + + + + The convention for calling managed methods with a fixed number of arguments. + + + + + The convention for calling managed methods that accept extra arguments. + + + + + Arguments are passed in registers when possible. This calling convention is not yet supported. + + + + + Win32 API calling convention for calling unmanaged methods via PlatformInvoke. The call stack is cleaned up by the callee. + + + + + C++ member unmanaged method (non-vararg) calling convention. The callee cleans the stack and the this pointer is pushed on the stack last. + + + + + The convention for calling a generic method. + + + + + The convention for calling an instance method with an implicit this parameter (the method does not have an explicit parameter definition for this). + + + + + The convention for calling an instance method that explicitly declares its first parameter to correspond to the this instance. + + + + + An event is a member that enables an object or class to provide notifications. Clients can attach executable code for events by supplying event handlers. + This interface models the metadata representation of an event. + + + + + A list of methods that are associated with the event. + + + + + The method used to add a handler to the event. + + + + + The method used to call the event handlers when the event occurs. May be null. + + + + + True if the event gets special treatment from the runtime. + + + + + This event is special in some way, as specified by the name. + + + + + The method used to add a handler to the event. + + + + + The (delegate) type of the handlers that will handle the event. + + + + + A field is a member that represents a variable associated with an object or class. + This interface models the metadata representation of a field. + + + + + The compile time value of the field. This value should be used directly in IL, rather than a reference to the field. + If the field does not have a valid compile time value, Dummy.Constant is returned. + + + + + Mapped field data, or null if the field is not mapped. + + + + + This field is a compile-time constant. The field has no runtime location and cannot be directly addressed from IL. + + + + + This field has associated field marshalling information. + + + + + The field does not have to be serialized when its containing instance is serialized. + + + + + This field can only be read. Initialization takes place in a constructor. + + + + + True if the field gets special treatment from the runtime. + + + + + This field is special in some way, as specified by the name. + + + + + This field is static (shared by all instances of its declaring type). + + + + + Specifies how this field is marshalled when it is accessed from unmanaged code. + + + + + Checked if IsMarshalledExplicitly == true and MarshallingInformation is null + + + + + Offset of the field. + + + + + A reference to a field. + + + + + The type of value that is stored in this field. + + + + + The Field being referred to. + + + + + True, if field is an IContextualNamedEntity, even if field reference implements the interface, + doesn't mean it is contextual. + + + + + An object that represents a local variable or constant. + + + + + The compile time value of the definition, if it is a local constant. + + + + + Custom modifiers associated with local variable definition. + + + + + TODO: use instead. + True if the value referenced by the local must not be moved by the actions of the garbage collector. + + + + + TODO: use instead. + True if the local contains a managed pointer (for example a reference to a local variable or a reference to a field of an object). + + + + + True if the local variable is of type Dynamic. + + + + + Each local has an attributes field in the PDB. To match the native compiler, + we emit "1" for locals that should definitely not bind in the debugger and "0" + for all other locals. + + + A value of "1" is a sufficient, but not a necessary, condition for hiding the + local in the debugger. Locals with value "0" may also be hidden. + + Hidden locals must still be emitted because they participate in evaluation. + + + + + Should return the synthesized dynamic attributes of the local definition if any. Else null. + + + + + The type of the local. + + + + + Location for reporting diagnostics about the local. + + + Use rather than null. + + + + + Slot index or -1 if not applicable. + + + + + Optional serialized local signature. + + + + + Local id, or if this is a local constant, short-lived temp variable, + or we are not emitting local variable ids (release builds). + + + + + Represents additional info needed by async method implementation methods + (MoveNext() methods) to properly emit necessary PDB data for async debugging. + + + + + Original async method transformed into MoveNext() + + + + + IL offset of catch handler or -1 + + + + + Set of IL offsets where await operators yield control + + + + + Set of IL offsets where await operators are to be resumed + + + + + A metadata (IL) level representation of the body of a method or of a property/event accessor. + + + + + Calls the visitor.Visit(T) method where T is the most derived object model node interface type implemented by the concrete type + of the object implementing IDoubleDispatcher. The dispatch method does not invoke Dispatch on any child objects. If child traversal + is desired, the implementations of the Visit methods should do the subsequent dispatching. + + + + + A list exception data within the method body IL. + + + + + True if the locals are initialized by zeroing the stack upon method entry. + + + + + The local variables of the method. + + + + + The definition of the method whose body this is. + If this is the body of an event or property accessor, this will hold the corresponding adder/remover/setter or getter method. + + + + + Debugging information associated with an async method to support EE. + + + + + The maximum number of elements on the evaluation stack during the execution of the method. + + + + + Returns true if there is at least one dynamic local within the MethodBody + + + + + Returns zero or more local (block) scopes into which the CLR IL operations in the given method body is organized. + + + + + Returns an import scope the method is declared within, or null if there is none + (e.g. the method doesn't contain user code). + + + The chain is a spine of a tree in a forest of import scopes. A tree of import scopes is created by the language for each source file + based on namespace declarations. In VB each tree is trivial single-node tree that declares the imports of a file. + In C# the tree copies the nesting of namespace declarations in the file. There is a separate scope for each dotted component in + the namespace type name. For instance namespace type x.y.z will have two namespace scopes, the first is for the x and the second + is for the y. + + + + + Returns debug information for local variables hoisted to state machine fields, + or null if this method isn't MoveNext method of a state machine. + + + Returns zero or more local (block) scopes, each defining an IL range in which an iterator local is defined. + The scopes are returned for the MoveNext method of the object returned by the iterator method. + The index of the scope corresponds to the index of the local. Specifically local scope i corresponds + to the local stored in a field named <localName>5__i of the class used to store the local values in + between calls to MoveNext, where localName is the original name of the local variable. For example, if + the first local to be moved into the class is named "xyzzy", it will be stored in a field named + "<xyzzy>5__1", and the ILocalScope returned from this method at index 1 (i.e. the second one) will + have the scope information for where that variable is in scope. + + + + + The name of the state machine generated for the method, + or null if the method isn't the kickoff method of a state machine. + + + + + Returns information relevant to EnC on slots of local variables hoisted to state machine fields, + or null if the method isn't the kickoff method of a state machine. + + + + + Returns types of awaiter slots allocated on the state machine, + or null if the method isn't the kickoff method of a state machine. + + + + + This interface models the metadata representation of a method. + + + + + A container for a list of IL instructions providing the implementation (if any) of this method. + + + When emitting metadata-only assemblies this returns null even if returns true. + + + + + If the method is generic then this list contains the type parameters. + + + + + Returns true if this symbol was automatically created by the compiler, and does not have + an explicit corresponding source code declaration. + + + + + True if this method has a non empty collection of SecurityAttributes or the System.Security.SuppressUnmanagedCodeSecurityAttribute. + + + + + True if the method does not provide an implementation. + + + + + True if the method can only be overridden when it is also accessible. + + + + + True if the method is a constructor. + + + + + True if the method has an external implementation (i.e. not supplied by this definition). + + + If the method is not external and not abstract it has to provide an IL body. + + + + + True if this method is hidden if a derived type declares a method with the same name and signature. + If false, any method with the same name hides this method. This flag is ignored by the runtime and is only used by compilers. + + + + + The method always gets a new slot in the virtual method table. + This means the method will hide (not override) a base type method with the same name and signature. + + + + + True if the method is implemented via the invocation of an underlying platform method. + + + + + True if the method gets special treatment from the runtime. For example, it might be a constructor. + + + + + True if the method may not be overridden. + + + + + True if the method is special in some way for tools. For example, it might be a property getter or setter. + + + + + True if the method does not require an instance of its declaring type as its first argument. + + + + + True if the method may be overridden (or if it is an override). + + + + + Implementation flags. + + + + + The parameters forming part of this signature. + + + + + Detailed information about the PInvoke stub. Identifies which method to call, which module has the method and the calling convention among other things. + + + + + True if the method calls another method containing security code. If this flag is set, the method + should have System.Security.DynamicSecurityMethodAttribute present in its list of custom attributes. + + + + + Custom attributes associated with the method's return value. + + + + + The return value has associated marshalling information. + + + + + Specifies how the return value is marshalled when the method is called from unmanaged code. + + + + + Checked if ReturnValueIsMarshalledExplicitly == true and ReturnValueMarshallingInformation is null + + + + + Declarative security actions for this method. + + + + + Namespace containing this method. + TODO: Ideally we would expose INamespace on INamespaceTypeDefinition. Right now we can only get the qualified namespace name. + + + + + This interface models the metadata representation of a method or property parameter. + + + + + A compile time constant value that should be supplied as the corresponding argument value by callers that do not explicitly specify an argument value for this parameter. + Null if the parameter doesn't have default value. + + + + + True if the parameter has a default value that should be supplied as the argument value by a caller for which the argument value has not been explicitly specified. + + + + + True if the argument value must be included in the marshalled arguments passed to a remote callee. + + + + + This parameter has associated marshalling information. + + + + + True if the argument value must be included in the marshalled arguments passed to a remote callee only if it is different from the default value (if there is one). + + + + + True if the final value assigned to the parameter will be marshalled with the return values passed back from a remote callee. + + + + + Specifies how this parameter is marshalled when it is accessed from unmanaged code. + + + + + Checked if IsMarshalledExplicitly == true and MarshallingInformation is null + + + + + A property is a member that provides access to an attribute of an object or a class. + This interface models the metadata representation of a property. + + + + + A list of methods that are associated with the property. + + + + + A compile time constant value that provides the default value for the property. (Who uses this and why?) + + + + + The method used to get the value of this property. May be absent (null). + + + + + True if this property has a compile time constant associated with that serves as a default value for the property. (Who uses this and why?) + + + + + True if this property gets special treatment from the runtime. + + + + + True if this property is special in some way, as specified by the name. + + + + + The parameters forming part of this signature. + + + + + The method used to set the value of this property. May be absent (null). + + + + + The parameters and return type that makes up a method or property signature. + This interface models the metadata representation of a signature. + + + + + Calling convention of the signature. + + + + + The number of required parameters of the signature. + + + + + The parameters forming part of this signature. + + + + + Returns the list of custom modifiers, if any, associated with the returned value. Evaluate this property only if ReturnValueIsModified is true. + + + + + True if the return value is passed by reference (using a managed pointer). + + + + + The return type of the method or type of the property. + + + + + A member of a type definition, such as a field or a method. + This interface models the metadata representation of a type member. + + + + + The type definition that contains this member. + + + + + Indicates if the member is public or confined to its containing type, derived types and/or declaring assembly. + + + + + A reference to a member of a type, such as a field or a method. + This interface models the metadata representation of a type member reference. + + + + + A reference to the containing type of the referenced type member. + + + + + Represents the specialized event definition. + + + + + The event that has been specialized to obtain this event. When the containing type is an instance of type which is itself a specialized member (i.e. it is a nested + type of a generic type instance), then the unspecialized member refers to a member from the unspecialized containing type. (I.e. the unspecialized member always + corresponds to a definition that is not obtained via specialization.) + + + + + Represents reference specialized field. + + + + + A reference to the field definition that has been specialized to obtain the field definition referred to by this field reference. + When the containing type of the referenced specialized field definition is itself a specialized nested type of a generic type instance, + then the unspecialized field reference refers to the corresponding field definition from the unspecialized containing type definition. + (I.e. the unspecialized field reference always refers to a field definition that is not obtained via specialization.) + + + + + Represents reference specialized method. + + + + + A reference to the method definition that has been specialized to obtain the method definition referred to by this method reference. + When the containing type of the referenced specialized method definition is itself a specialized nested type of a generic type instance, + then the unspecialized method reference refers to the corresponding method definition from the unspecialized containing type definition. + (I.e. the unspecialized method reference always refers to a method definition that is not obtained via specialization.) + + + + + Represents the specialized property definition. + + + + + The property that has been specialized to obtain this property. When the containing type is an instance of type which is itself a specialized member (i.e. it is a nested + type of a generic type instance), then the unspecialized member refers to a member from the unspecialized containing type. (I.e. the unspecialized member always + corresponds to a definition that is not obtained via specialization.) + + + + + A reference to a method. + + + + + True if the call sites that references the method with this object supply extra arguments. + + + + + The number of generic parameters of the method. Zero if the referenced method is not generic. + + + + + True if the method has generic parameters; + + + + + The method being referred to. + + + + + Information about this types of the extra arguments supplied at the call sites that references the method with this object. + + + + + A reference to generic method instantiated with a list of type arguments. + + + + + The type arguments that were used to instantiate this.GenericMethod in order to create this method. + + + + + Returns the generic method of which this method is an instance. + + + + + Represents a global field in symbol table. + + + + + Represents a global method in symbol table. + + + + + The name of the method. + + + + + Returns a sequence of all blobs that represent the content of the builder. + + Content is not available, the builder has been linked with another one. + + + + Compares the current content of this writer with another one. + + Content is not available, the builder has been linked with another one. + + + Content is not available, the builder has been linked with another one. + + + Range specified by and falls outside of the bounds of the buffer content. + Content is not available, the builder has been linked with another one. + + + Content is not available, the builder has been linked with another one. + + + Range specified by and falls outside of the bounds of the buffer content. + Content is not available, the builder has been linked with another one. + + + is null. + Content is not available, the builder has been linked with another one. + + + is default(). + Content is not available, the builder has been linked with another one. + + + is null. + Content is not available, the builder has been linked with another one. + + + is null. + Builder is not writable, it has been linked with another one. + + + is null. + Builder is not writable, it has been linked with another one. + + + + Reserves a contiguous block of bytes. + + is negative. + Builder is not writable, it has been linked with another one. + + + is negative. + Builder is not writable, it has been linked with another one. + + + is null. + is negative. + Builder is not writable, it has been linked with another one. + + + is null. + is negative. + Builder is not writable, it has been linked with another one. + Bytes successfully written from the . + + + is null. + Builder is not writable, it has been linked with another one. + + + is null. + Range specified by and falls outside of the bounds of the . + Builder is not writable, it has been linked with another one. + + + is null. + Builder is not writable, it has been linked with another one. + + + is null. + Range specified by and falls outside of the bounds of the . + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + + Writes a reference to a heap (heap index) or a table (row id). + + + References may be small (2B) or large (4B). + + Builder is not writable, it has been linked with another one. + + + + Writes UTF16 (little-endian) encoded string at the current position. + + is null. + Builder is not writable, it has been linked with another one. + + + + Writes UTF16 (little-endian) encoded string at the current position. + + is null. + Builder is not writable, it has been linked with another one. + + + + Writes string in SerString format (see ECMA-335-II 23.3 Custom attributes): + The string is UTF8 encoded and prefixed by the its size in bytes. + Null string is represented as a single byte 0xFF. + + Builder is not writable, it has been linked with another one. + + + + Writes UTF8 encoded string at the current position. + + is null. + Builder is not writable, it has been linked with another one. + + + + Implements compressed signed integer encoding as defined by ECMA-335-II chapter 23.2: Blobs and signatures. + + + If the value lies between -64 (0xFFFFFFC0) and 63 (0x3F), inclusive, encode as a one-byte integer: + bit 7 clear, value bits 5 through 0 held in bits 6 through 1, sign bit (value bit 31) in bit 0. + + If the value lies between -8192 (0xFFFFE000) and 8191 (0x1FFF), inclusive, encode as a two-byte integer: + 15 set, bit 14 clear, value bits 12 through 0 held in bits 13 through 1, sign bit(value bit 31) in bit 0. + + If the value lies between -268435456 (0xF000000) and 268435455 (0x0FFFFFFF), inclusive, encode as a four-byte integer: + 31 set, 30 set, bit 29 clear, value bits 27 through 0 held in bits 28 through 1, sign bit(value bit 31) in bit 0. + + can't be represented as a compressed signed integer. + Builder is not writable, it has been linked with another one. + + + + Implements compressed unsigned integer encoding as defined by ECMA-335-II chapter 23.2: Blobs and signatures. + + + If the value lies between 0 (0x00) and 127 (0x7F), inclusive, + encode as a one-byte integer (bit 7 is clear, value held in bits 6 through 0). + + If the value lies between 28 (0x80) and 214 – 1 (0x3FFF), inclusive, + encode as a 2-byte integer with bit 15 set, bit 14 clear(value held in bits 13 through 0). + + Otherwise, encode as a 4-byte integer, with bit 31 set, bit 30 set, bit 29 clear (value held in bits 28 through 0). + + can't be represented as a compressed integer. + Builder is not writable, it has been linked with another one. + + + + Writes a constant value (see ECMA-335 Partition II section 22.9) at the current position. + + is not of a constant type. + Builder is not writable, it has been linked with another one. + + + + Table row counts. + + + + + Non-empty tables that are emitted into the metadata table stream. + + + + + Non-empty tables stored in an external metadata table stream that might be referenced from the metadata table stream being emitted. + + + + + Exact (unaligned) heap sizes. + + + + + Overall size of metadata stream storage (stream headers, table stream, heaps, additional streams). + Aligned to . + + + + + The size of metadata stream (#- or #~). Aligned. + Aligned to . + + + + + The size of #Pdb stream. Aligned. + + + + + The size of IL stream. + + + + + The size of mapped field data stream. + Aligned to . + + + + + The size of managed resource data stream. + Aligned to . + + + + + Size of strong name hash. + + + + + Metadata header size. + Includes: + - metadata storage signature + - storage header + - stream headers + + + + + Total size of metadata (header and all streams). + + + + + A visitor base class that traverses the object model in depth first, left to right order. + + + + + Use this routine, rather than ITypeReference.Dispatch, to call the appropriate derived overload of an ITypeReference. + The former routine will call Visit(INamespaceTypeDefinition) rather than Visit(INamespaceTypeReference), etc., + in the case where a definition is used as a reference to itself. + + A reference to a type definition. Note that a type definition can serve as a reference to itself. + + + + Use this routine, rather than IUnitReference.Dispatch, to call the appropriate derived overload of an IUnitReference. + The former routine will call Visit(IAssembly) rather than Visit(IAssemblyReference), etc. + in the case where a definition is used as the reference to itself. + + A reference to a unit. Note that a unit can serve as a reference to itself. + + + + A container for static helper methods that are used for manipulating and computing iterators. + + + + + True if the given enumerable is not null and contains at least one element. + + + + + True if the given enumerable is null or contains no elements + + + + + Returns the number of elements in the given enumerable. A null enumerable is allowed and results in 0. + + + + + A declarative specification of a security action applied to a set of permissions. Used by the CLR loader to enforce security restrictions. + Each security attribute represents a serialized permission or permission set for a specified security action. + The union of the security attributes with identical security action, define the permission set to which the security action applies. + + + + + Information about how values of managed types should be marshalled to and from unmanaged types. + + + + + or a string (usually a fully-qualified type name of a type implementing the custom marshaller, but Dev11 allows any string). + + + + + An argument string (cookie) passed to the custom marshaller at run time. + + + + + The unmanaged element type of the unmanaged array. + -1 if it should be omitted from the marshal blob. + + + + + Specifies the index of the parameter that contains the value of the Interface Identifier (IID) of the marshalled object. + -1 if it should be omitted from the marshal blob. + + + + + The unmanaged type to which the managed type will be marshalled. This can be UnmanagedType.CustomMarshaler, in which case the unmanaged type + is decided at runtime. + + + + + The number of elements in the fixed size portion of the unmanaged array. + -1 if it should be omitted from the marshal blob. + + + + + The zero based index of the parameter in the unmanaged method that contains the number of elements in the variable portion of unmanaged array. + If -1, the variable portion is of size zero, or the caller conveys the size of the variable portion of the array to the unmanaged method in some other way. + + + + + The type to which the variant values of all elements of the safe array must belong. See also SafeArrayElementUserDefinedSubtype. + (The element type of a safe array is VARIANT. The "sub type" specifies the value of all of the tag fields (vt) of the element values. ) + -1 if it should be omitted from the marshal blob. + + + + + A reference to the user defined type to which the variant values of all elements of the safe array must belong. + (The element type of a safe array is VARIANT. The tag fields will all be either VT_DISPATCH or VT_UNKNOWN or VT_RECORD. + The "user defined sub type" specifies the type of value the ppdispVal/ppunkVal/pvRecord fields of the element values may point to.) + + + + + Implemented by any entity that has a name. + + + + + The name of the entity. + + + + + The name of the entity depends on other metadata (tokens, signatures) originated from + PeWriter. + + + + + Method must be called before calling INamedEntity.Name. + + + + + Implemented by an entity that is always a member of a particular parameter list, such as an IParameterDefinition. + Provides a way to determine the position where the entity appears in the parameter list. + + + + + The position in the parameter list where this instance can be found. + + + + + This enum is used internally by BCL. It includes flags that are not in the metadata spec. + + + + + Information that describes how a method from the underlying Platform is to be invoked. + + + + + Module providing the method/field. + + + + + Name of the method providing the implementation. + + + + + Flags that determine marshalling behavior. + + + + + A resource file formatted according to Win32 API conventions and typically obtained from a Portable Executable (PE) file. + See the Win32 UpdateResource method for more details. + + + + + A string that identifies what type of resource this is. Only valid if this.TypeId < 0. + + + + + An integer tag that identifies what type of resource this is. If the value is less than 0, this.TypeName should be used instead. + + + + + The name of the resource. Only valid if this.Id < 0. + + + + + An integer tag that identifies this resource. If the value is less than 0, this.Name should be used instead. + + + + + The language for which this resource is appropriate. + + + + + The code page for which this resource is appropriate. + + + + + The data of the resource. + + + + + Represents a lexical scope that declares imports. + + + + + Zero or more used namespaces. These correspond to using directives in C# or Imports syntax in VB. + Multiple invocations return the same array instance. + + + + + Parent import scope, or null. + + + + + Exception to enable callers to catch all of the exceptions originating + from writing PDBs. We resurface such exceptions as this type, to eventually + be reported as PDB-writing failure diagnostics to the user. + Unfortunately, an exception originating in a user-implemented + Stream derivation will come out of the symbol writer as a COMException + missing all of the original exception info. + + + + + A utility to log all operations and arguments to the native PDB writing + library, so that we can hash that log to generate a deterministic GUID and + timestamp. + + + + + Minimal size of PDB path in Debug Directory. We pad the path to this minimal size to + allow some tools to patch the path without the need to rewrite the entire image. + This is a workaround put in place until these tools are retired. + + + + + True if we should attempt to generate a deterministic output (no timestamps or random data). + + + + + Compute a deterministic Guid and timestamp based on the contents of the stream, and replace + the 16 zero bytes at the given position and one or two 4-byte values with that computed Guid and timestamp. + + PE stream. + Position in the stream of 16 zero bytes to be replaced by a Guid + Position in the stream of four zero bytes to be replaced by a timestamp + + + + The size of a single entry in the "Debug Directory (Image Only)" + + + + + The size of our debug directory: one entry for debug information, and an optional second one indicating + that the timestamp is deterministic (i.e. not really a timestamp) + + + + + Write one entry in the "Debug Directory (Image Only)" + See https://msdn.microsoft.com/en-us/windows/hardware/gg463119.aspx + section 5.1.1 (pages 71-72). + + + + + Write the entire "Debug Directory (Image Only)" along with data that it points to. + + + + + Special type <Module> + + + + + This interface models the metadata representation of an array type reference. + + + + + The type of the elements of this array. + + + + + This type of array is a single dimensional array with zero lower bound for index values. + + + + + A possibly empty list of lower bounds for dimension indices. When not explicitly specified, a lower bound defaults to zero. + The first lower bound in the list corresponds to the first dimension. Dimensions cannot be skipped. + + + + + The number of array dimensions. + + + + + A possible empty list of upper bounds for dimension indices. + The first upper bound in the list corresponds to the first dimension. Dimensions cannot be skipped. + An unspecified upper bound means that instances of this type can have an arbitrary upper bound for that dimension. + + + + + Modifies the set of allowed values for a type, or the semantics of operations allowed on those values. + Custom modifiers are not associated directly with types, but rather with typed storage locations for values. + + + + + If true, a language may use the modified storage location without being aware of the meaning of the modification. + + + + + A type used as a tag that indicates which type of modification applies to the storage location. + + + + + Information that describes a method or property parameter, but does not include all the information in a IParameterDefinition. + + + + + The list of custom modifiers, if any, associated with the parameter. Evaluate this property only if IsModified is true. + + + + + True if the parameter is passed by reference (using a managed pointer). + + + + + The CLI spec says that custom modifiers must precede the ByRef type code in the encoding of a parameter. + Unfortunately, the managed C++ compiler emits them in the reverse order. In order to avoid breaking + interop scenarios, we need to support such signatures. + + + + + The type of argument value that corresponds to this parameter. + + + + + The definition of a type parameter of a generic type or method. + + + + + A list of classes or interfaces. All type arguments matching this parameter must be derived from all of the classes and implement all of the interfaces. + + + + + True if all type arguments matching this parameter are constrained to be reference types. + + + + + True if all type arguments matching this parameter are constrained to be value types. + + + + + True if all type arguments matching this parameter are constrained to be value types or concrete classes with visible default constructors. + + + + + Indicates if the generic type or method with this type parameter is co-, contra-, or non variant with respect to this type parameter. + + + + + A reference to the definition of a type parameter of a generic type or method. + + + + + The definition of a type parameter of a generic method. + + + + + The generic method that defines this type parameter. + + + + + A reference to a type parameter of a generic method. + + + + + A reference to the generic method that defines the referenced type parameter. + + + + + A generic type instantiated with a list of type arguments + + + + + The type arguments that were used to instantiate this.GenericType in order to create this type. + + + + + Returns the generic type of which this type is an instance. + Equivalent to Symbol.OriginalDefinition + + + + + The definition of a type parameter of a generic type. + + + + + The generic type that defines this type parameter. + + + + + A reference to a type parameter of a generic type. + + + + + A reference to the generic type that defines the referenced type parameter. + + + + + A reference to a named type, such as an INamespaceTypeReference or an INestedTypeReference. + + + + + The number of generic parameters. Zero if the type is not generic. + + + + + If true, the persisted type name is mangled by appending "`n" where n is the number of type parameters, if the number of type parameters is greater than 0. + + + + + A named type definition, such as an INamespaceTypeDefinition or an INestedTypeDefinition. + + + + + A type definition that is a member of a namespace definition. + + + + + True if the type can be accessed from other assemblies. + + + + + Represents a namespace. + + + + + Containing namespace or null if this namespace is global. + + + + + A reference to a type definition that is a member of a namespace definition. + + + + + A reference to the unit that defines the referenced type. + + + + + Fully qualified name of the containing namespace. + + + + + A type definition that is a member of another type definition. + + + + + A type definition that is a member of another type definition. + + + + + A reference to a type definition that is a specialized nested type. + + + + + A reference to the nested type that has been specialized to obtain this nested type reference. When the containing type is an instance of type which is itself a specialized member (i.e. it is a nested + type of a generic type instance), then the unspecialized member refers to a member from the unspecialized containing type. (I.e. the unspecialized member always + corresponds to a definition that is not obtained via specialization.) + + + + + Models an explicit implementation or override of a base class virtual method or an explicit implementation of an interface method. + + + + + The type that is explicitly implementing or overriding the base class virtual method or explicitly implementing an interface method. + + + + + A reference to the method that provides the implementation. + + + + + The type that is explicitly implementing or overriding the base class virtual method or explicitly implementing an interface method. + + + + + A type reference that has custom modifiers associated with it. For example a reference to the target type of a managed pointer to a constant. + + + + + Returns the list of custom modifiers associated with the type reference. Evaluate this property only if IsModified is true. + + + + + An unmodified type reference. + + + + + This interface models the metadata representation of a pointer to a location in unmanaged memory. + + + + + The type of value stored at the target memory location. + + + + + This interface models the metadata representation of a managed pointer. + Remark: This should be only used in attributes. For other objects like Local variables etc + there is explicit IsReference field that should be used. + + + + + The type of value stored at the target memory location. + + + + + This interface models the metadata representation of a type. + + + + + The byte alignment that values of the given type ought to have. Must be a power of 2. If zero, the alignment is decided at runtime. + + + + + Returns null for interfaces and System.Object. + + + + + Zero or more events defined by this type. + + + + + Zero or more implementation overrides provided by the class. + + + + + Zero or more fields defined by this type. + + + + + Zero or more parameters that can be used as type annotations. + + + + + The number of generic parameters. Zero if the type is not generic. + + + + + True if this type has a non empty collection of SecurityAttributes or the System.Security.SuppressUnmanagedCodeSecurityAttribute. + + + + + Zero or more interfaces implemented by this type. + + + + + True if the type may not be instantiated. + + + + + Is type initialized anytime before first access to static field + + + + + Is this imported from COM type library + + + + + True if this type is parameterized (this.GenericParameters is a non empty collection). + + + + + True if the type is an interface. + + + + + True if this type gets special treatment from the runtime. + + + + + True if this type is serializable. + + + + + True if the type has special name. + + + + + True if the type is a Windows runtime type. + + + A type can me marked as a Windows runtime type in source by applying the WindowsRuntimeImportAttribute. + WindowsRuntimeImportAttribute is a pseudo custom attribute defined as an internal class in System.Runtime.InteropServices.WindowsRuntime namespace. + This is needed to mark Windows runtime types which are redefined in mscorlib.dll and System.Runtime.WindowsRuntime.dll. + These two assemblies are special as they implement the CLR's support for WinRT. + + + + + True if the type may not be subtyped. + + + + + Layout of the type. + + + + + Zero or more methods defined by this type. + + + + + Zero or more nested types defined by this type. + + + + + Zero or more properties defined by this type. + + + + + Declarative security actions for this type. Will be empty if this.HasSecurity is false. + + + + + Size of an object of this type. In bytes. If zero, the size is unspecified and will be determined at runtime. + + + + + Default marshalling of the Strings in this class. + + + + + A reference to a type. + + + + + True if the type is an enumeration (it extends System.Enum and is sealed). Corresponds to C# enum. + + + + + True if the type is a value type. + Value types are sealed and extend System.ValueType or System.Enum. + A type parameter for which MustBeValueType (the struct constraint in C#) is true also returns true for this property. + + + + + The type definition being referred to. + + + + + Unless the value of TypeCode is PrimitiveTypeCode.NotPrimitive, the type corresponds to a "primitive" CLR type (such as System.Int32) and + the type code identifies which of the primitive types it corresponds to. + + + + + TypeDefs defined in modules linked to the assembly being emitted are listed in the ExportedTypes table. + + + + + A enumeration of all of the value types that are built into the Runtime (and thus have specialized IL instructions that manipulate them). + + + + + A single bit. + + + + + An unsigned 16 bit integer representing a Unicode UTF16 code point. + + + + + A signed 8 bit integer. + + + + + A 32 bit IEEE floating point number. + + + + + A 64 bit IEEE floating point number. + + + + + A signed 16 bit integer. + + + + + A signed 32 bit integer. + + + + + A signed 64 bit integer. + + + + + A signed 32 bit integer or 64 bit integer, depending on the native word size of the underlying processor. + + + + + A pointer to fixed or unmanaged memory. + + + + + A reference to managed memory. + + + + + A string. + + + + + An unsigned 8 bit integer. + + + + + An unsigned 16 bit integer. + + + + + An unsigned 32 bit integer. + + + + + An unsigned 64 bit integer. + + + + + An unsigned 32 bit integer or 64 bit integer, depending on the native word size of the underlying processor. + + + + + A type that denotes the absence of a value. + + + + + Not a primitive type. + + + + + Type is a dummy type. + + + + + Enumerates the different kinds of levels of visibility a type member can have. + + + + + The visibility has not been specified. Use the applicable default. + + + + + The member is visible only within its own assembly. + + + + + The member is visible only within its own type and any subtypes. + + + + + The member is visible only within the intersection of its family (its own type and any subtypes) and assembly. + + + + + The member is visible only within the union of its family and assembly. + + + + + The member is visible only to the compiler producing its assembly. + + + + + The member is visible only within its own type. + + + + + The member is visible everywhere its declaring type is visible. + + + + + A mask that can be used to mask out flag bits when the latter are stored in the same memory word as this enumeration. + + + + + Enumerates the different kinds of variance a generic method or generic type parameter may have. + + + + + Two type or method instances are compatible only if they have exactly the same type argument for this parameter. + + + + + A type or method instance will match another instance if it has a type for this parameter that is the same or a subtype of the type the + other instance has for this parameter. + + + + + A type or method instance will match another instance if it has a type for this parameter that is the same or a supertype of the type the + other instance has for this parameter. + + + + + A mask that can be used to mask out flag bits when the latter are stored in the same memory word as the enumeration. + + + + + Represents a .NET assembly. + + + + + A list of the files that constitute the assembly. These are not the source language files that may have been + used to compile the assembly, but the files that contain constituent modules of a multi-module assembly as well + as any external resources. It corresponds to the File table of the .NET assembly file format. + + + + + A set of bits and bit ranges representing properties of the assembly. The value of can be set + from source code via the AssemblyFlags assembly custom attribute. The interpretation of the property depends on the target platform. + + + + + The public part of the key used to encrypt the SHA1 hash over the persisted form of this assembly. Empty or null if not specified. + This value is used by the loader to decrypt an encrypted hash value stored in the assembly, which it then compares with a freshly computed hash value + in order to verify the integrity of the assembly. + + + + + The contents of the AssemblySignatureKeyAttribute + + + + + A reference to a .NET assembly. + + + + + An object that represents a .NET module. + + + + + Used to distinguish which style to pick while writing native PDB information. + + + The PDB content for custom debug information is different between Visual Basic and CSharp. + E.g. C# always includes a CustomMetadata Header (MD2) that contains the namespace scope counts, where + as VB only outputs namespace imports into the namespace scopes. + C# defines forwards in that header, VB includes them into the scopes list. + + Currently the compiler doesn't allow mixing C# and VB method bodies. Thus this flag can be per module. + It is possible to move this flag to per-method basis but native PDB CDI forwarding would need to be adjusted accordingly. + + + + + Public types defined in other modules making up this assembly and to which other assemblies may refer to via this assembly. + + + + + A list of objects representing persisted instances of types that extend System.Attribute. Provides an extensible way to associate metadata + with this assembly. + + + + + A list of objects representing persisted instances of pairs of security actions and sets of security permissions. + These apply by default to every method reachable from the module. + + + + + A list of the assemblies that are referenced by this module. + + + + + A list of named byte sequences persisted with the assembly and used during execution, typically via .NET Framework helper classes. + + + + + CorLibrary assembly referenced by this module. + + + + + The Assembly that contains this module. If this module is main module then this returns this. + + + + + The method that will be called to start execution of this executable module. + + + + + Returns zero or more strings used in the module. If the module is produced by reading in a CLR PE file, then this will be the contents + of the user string heap. If the module is produced some other way, the method may return an empty enumeration or an enumeration that is a + subset of the strings actually used in the module. The main purpose of this method is to provide a way to control the order of strings in a + prefix of the user string heap when writing out a module as a PE file. + + + + + Returns all top-level (not nested) types defined in the current module. + + + + + The kind of metadata stored in this module. For example whether this module is an executable or a manifest resource file. + + + + + A list of objects representing persisted instances of types that extend System.Attribute. Provides an extensible way to associate metadata + with this module. + + + + + The name of the module. + + + + + A list of the modules that are referenced by this module. + + + + + A list of named byte sequences persisted with the module and used during execution, typically via the Win32 API. + A module will define Win32 resources rather than "managed" resources mainly to present metadata to legacy tools + and not typically use the data in its own code. + + + + + An alternate form the Win32 resources may take. These represent the rsrc$01 and rsrc$02 section data and relocs + from a COFF object file. + + + + + Builds symbol definition to location map used for emitting token -> location info + into PDB to be consumed by WinMdExp.exe tool (only applicable for /t:winmdobj) + + + + + Assembly reference aliases (C# only). + + + + + Linked assembly names to be stored to native PDB (VB only). + + + + + Project level imports (VB only, TODO: C# scripts). + + + + + Default namespace (VB only). + + + + + A reference to a .NET module. + + + + + The Assembly that contains this module. May be null if the module is not part of an assembly. + + + + + A unit of metadata stored as a single artifact and potentially produced and revised independently from other units. + Examples of units include .NET assemblies and modules, as well C++ object files and compiled headers. + + + + + A reference to a instance of . + + + + + Represents a single using directive (Imports clause). + + + + + This is a marker attribute that can be put on an interface to denote that only internal implementations + of that interface should exist. + + +
+
diff --git a/packages/Microsoft.CodeAnalysis.Common.1.3.2/lib/netstandard1.3/Microsoft.CodeAnalysis.dll b/packages/Microsoft.CodeAnalysis.Common.1.3.2/lib/netstandard1.3/Microsoft.CodeAnalysis.dll new file mode 100644 index 0000000..c7d4fb8 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.Common.1.3.2/lib/netstandard1.3/Microsoft.CodeAnalysis.dll differ diff --git a/packages/Microsoft.CodeAnalysis.Common.1.1.1/lib/portable-net45+win8/Microsoft.CodeAnalysis.xml b/packages/Microsoft.CodeAnalysis.Common.1.3.2/lib/netstandard1.3/Microsoft.CodeAnalysis.xml similarity index 89% rename from packages/Microsoft.CodeAnalysis.Common.1.1.1/lib/portable-net45+win8/Microsoft.CodeAnalysis.xml rename to packages/Microsoft.CodeAnalysis.Common.1.3.2/lib/netstandard1.3/Microsoft.CodeAnalysis.xml index 6db9e66..0fab3ea 100644 --- a/packages/Microsoft.CodeAnalysis.Common.1.1.1/lib/portable-net45+win8/Microsoft.CodeAnalysis.xml +++ b/packages/Microsoft.CodeAnalysis.Common.1.3.2/lib/netstandard1.3/Microsoft.CodeAnalysis.xml @@ -1,24709 +1,27492 @@ - - - - Microsoft.CodeAnalysis - - - - - This is a bridge for APIs that are only available on CoreCLR or .NET 4.6 - and NOT on .NET 4.5. The compiler currently targets .NET 4.5 and CoreCLR - so this shim is necessary for switching on the dependent behavior. - - - - - Given a path to an assembly, identifies files in the same directory - that could satisfy the assembly's dependencies. May throw. - - - Dependencies are identified by simply checking the name of an assembly - reference against a file name; if they match the file is considered a - dependency. Other factors, such as version, culture, public key, etc., - are not considered, and so the returned collection may include items that - cannot in fact satisfy the original assembly's dependencies. - - If the file at does not exist or cannot be accessed. - If the file is not an assembly or is somehow corrupted. - - - - Given a path to an assembly, returns its MVID (Module Version ID). - May throw. - - If the file at does not exist or cannot be accessed. - If the file is not an assembly or is somehow corrupted. - - - - Given a path to an assembly, finds the paths to all of its satellite - assemblies. - - If the file at does not exist or cannot be accessed. - If the file is not an assembly or is somehow corrupted. - - - - Given a path to an assembly and a set of paths to possible dependencies, - identifies which of the assembly's references are missing. May throw. - - If the files does not exist or cannot be accessed. - If one of the files is not an assembly or is somehow corrupted. - - - - Given a path to an assembly, returns the for the assembly. - May throw. - - If the file at does not exist or cannot be accessed. - If the file is not an assembly or is somehow corrupted. - - - - Attempts to read all of the requested bytes from the stream into the buffer - - - The number of bytes read. Less than will - only be returned if the end of stream is reached before all bytes can be read. - - - Unlike it is not guaranteed that - the stream position or the output buffer will be unchanged if an exception is - returned. - - - - - Parse the value provided to an MSBuild Feature option into a list of entries. This will - leave name=value in their raw form. - - - - - Find a instance by first probing the contract name and then the name as it - would exist in mscorlib. This helps satisfy both the CoreCLR and Desktop scenarios. - - - - - This type contains the light up scenarios for various platform and runtimes. Any function - in this type can, and is expected to, fail on various platforms. These are light up scenarios - only. - - - - - Full case-insensitive path. - - - - - Last write time (UTC). - - - - - Constructor. - - Full path. - Last write time (UTC). - - - - - - - Initialize the value referenced by in a thread-safe manner. - The value is changed to only if the current value is null. - - Type of value. - Reference to the target location. - The value to use if the target is currently null. - The new value referenced by . Note that this is - nearly always more useful than the usual return from - because it saves another read to . - - - - Initialize the value referenced by in a thread-safe manner. - The value is changed to only if the current value - is . - - Type of value. - Reference to the target location. - The value to use if the target is currently uninitialized. - The uninitialized value. - The new value referenced by . Note that this is - nearly always more useful than the usual return from - because it saves another read to . - - - - Initialize the immutable array referenced by in a thread-safe manner. - - Elemental type of the array. - Reference to the target location. - The value to use if the target is currently uninitialized (default). - The new value referenced by . Note that this is - nearly always more useful than the usual return from - because it saves another read to . - - - - Search a sorted integer array for the target value in O(log N) time. - - The array of integers which must be sorted in ascending order. - The target value. - An index in the array pointing to the position where should be - inserted in order to maintain the sorted order. All values to the right of this position will be - strictly greater than . Note that this may return a position off the end - of the array if all elements are less than or equal to . - - - - The actual number of bytes read can be fewer than the number of bytes requested - if an error occurs or if the end of the stream is reached during the read operation. - - - - - NOTE!!! adding duplicates will result in exceptions. - Being concurrent only allows accessing the dictionary without taking locks. - Duplicate keys are still not allowed in the hashtable. - If unsure about adding unique items use APIs such as TryAdd, GetOrAdd, etc... - - - - - A concurrent, simplified HashSet. - - - - - The default concurrency level is 2. That means the collection can cope with up to two - threads making simultaneous modifications without blocking. - Note ConcurrentDictionary's default concurrency level is dynamic, scaling according to - the number of processors. - - - - - Taken from ConcurrentDictionary.DEFAULT_CAPACITY - - - - - The backing dictionary. The values are never used; just the keys. - - - - - Construct a concurrent set with the default concurrency level. - - - - - Construct a concurrent set using the specified equality comparer. - - The equality comparer for values in the set. - - - - Obtain the number of elements in the set. - - The number of elements in the set. - - - - Determine whether the set is empty. - true if the set is empty; otherwise, false. - - - - Determine whether the given value is in the set. - - The value to test. - true if the set contains the specified value; otherwise, false. - - - - Attempts to add a value to the set. - - The value to add. - true if the value was added to the set. If the value already exists, this method returns false. - - - - Attempts to remove a value from the set. - - The value to remove. - true if the value was removed successfully; otherwise false. - - - - Clear the set - - - - - Obtain an enumerator that iterates through the elements in the set. - - An enumerator for the set. - - - - a simple Lisp-like immutable list. Good to use when lists are always accessed from the head. - - - - - Names of well-known XML attributes and elements. - - - - - This method is necessary to avoid an ambiguity between and . - - - - - This method is necessary to avoid an ambiguity between and . - - - - - Convert a boxed primitive (generally of the backing type of an enum) into a ulong. - - - - - - - Implements a few file name utilities that are needed by the compiler. - In general the compiler is not supposed to understand the format of the paths. - In rare cases it needs to check if a string is a valid file name or change the extension - (embedded resources, netmodules, output name). - The APIs are intentionally limited to cover just these rare cases. Do not add more APIs. - - - - - Returns true if the string represents an unqualified file name. - The name may contain any characters but directory and volume separators. - - Path. - - True if is a simple file name, false if it is null or includes a directory specification. - - - - - Returns the offset in where the dot that starts an extension is, or -1 if the path doesn't have an extension. - - - Returns 0 for path ".foo". - Returns -1 for path "foo.". - - - - - Returns an extension of the specified path string. - - - The same functionality as but doesn't throw an exception - if there are invalid characters in the path. - - - - - Removes extension from path. - - - Returns "foo" for path "foo.". - Returns "foo.." for path "foo...". - - - - - Returns path with the extension changed to . - - - Equivalent of - - If is null, returns null. - If path does not end with an extension, the new extension is appended to the path. - If extension is null, equivalent to . - - - - - Returns the position in given path where the file name starts. - - -1 if path is null. - - - - Get file name from path. - - Unlike doesn't check for invalid path characters. - - - - Invoke the underlying HashAlgorithm's TransformBlock operation on the provided data. - - - - - This is how VB Anonymous Types combine hash values for fields. - - - - - This is how VB Anonymous Types combine hash values for fields. - PERF: Do not use with enum types because that involves multiple - unnecessary boxing operations. Unfortunately, we can't constrain - T to "non-enum", so we'll use a more restrictive constraint. - - - - - The offset bias value used in the FNV-1a algorithm - See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function - - - - - The generative factor used in the FNV-1a algorithm - See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function - - - - - Compute the FNV-1a hash of a sequence of bytes - See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function - - The sequence of bytes - The FNV-1a hash of - - - - Compute the FNV-1a hash of a sequence of bytes and determines if the byte - sequence is valid ASCII and hence the hash code matches a char sequence - encoding the same text. - See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function - - The sequence of bytes that are likely to be ASCII text. - The length of the sequence. - True if the sequence contains only characters in the ASCII range. - The FNV-1a hash of - - - - Compute the FNV-1a hash of a sequence of bytes - See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function - - The sequence of bytes - The FNV-1a hash of - - - - Compute the hashcode of a sub-string using FNV-1a - See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function - Note: FNV-1a was developed and tuned for 8-bit sequences. We're using it here - for 16-bit Unicode chars on the understanding that the majority of chars will - fit into 8-bits and, therefore, the algorithm will retain its desirable traits - for generating hash codes. - - The input string - The start index of the first character to hash - The number of characters, beginning with to hash - The FNV-1a hash code of the substring beginning at and ending after characters. - - - - Compute the hashcode of a sub-string using FNV-1a - See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function - - The input string - The start index of the first character to hash - The FNV-1a hash code of the substring beginning at and ending at the end of the string. - - - - Compute the hashcode of a string using FNV-1a - See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function - - The input string - The FNV-1a hash code of - - - - Compute the hashcode of a string using FNV-1a - See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function - - The input string - The FNV-1a hash code of - - - - Compute the hashcode of a sub string using FNV-1a - See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function - - The input string as a char array - The start index of the first character to hash - The number of characters, beginning with to hash - The FNV-1a hash code of the substring beginning at and ending after characters. - - - - Compute the hashcode of a single character using the FNV-1a algorithm - See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function - Note: In general, this isn't any more useful than "char.GetHashCode". However, - it may be needed if you need to generate the same hash code as a string or - substring with just a single character. - - The character to hash - The FNV-1a hash code of the character. - - - - Combine a string with an existing FNV-1a hash code - See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function - - The accumulated hash code - The string to combine - The result of combining with using the FNV-1a algorithm - - - - Combine a char with an existing FNV-1a hash code - See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function - - The accumulated hash code - The new character to combine - The result of combining with using the FNV-1a algorithm - - - - Represents a single item or many items. - - - Used when a collection usually contains a single item but sometimes might contain multiple. - - - - - Compares objects based upon their reference identity. - - - - - Checks if the given name is a sequence of valid CLR names separated by a dot. - - - - - Remove one set of leading and trailing double quote characters, if both are present. - - - - - This is basically a lossy cache of strings that is searchable by - strings, string sub ranges, character array ranges or string-builder. - - - - - Represents an ordered sequence of weak references. - - - - - Copies all live references from to . - Assumes that all references prior are alive. - - - - - Returns the number of weak references in this list. - Note that some of them might not point to live objects anymore. - - - - - A COM IStream implementation over memory. Supports just enough for DiaSymReader's PDB writing. - Also tuned for performance: - 1. SetSize (and Seek beyond the length) is very fast and doesn't re-allocate the underlying memory. - 2. Read and Write are optimized to avoid copying (see ) - 3. Allocates in chunks instead of a contiguous buffer to avoid re-alloc and copy costs when growing. - - - - - This is a re-definition of COM's IStream interface. The important change is that - the Read and Write methods take an instead of a byte[] to avoid the - allocation cost when called from native code. - - - - - Null or empty. - - - - - "file" - - - - - ".\file" - - - - - "..\file" - - - - - "\dir\file" - - - - - "C:dir\file" - - - - - "C:\file" or "\\machine" (UNC). - - - - - Get directory name from path. - - - Unlike it - doesn't check for invalid path characters, - doesn't strip any trailing directory separators (TODO: tomat), - doesn't recognize UNC structure \\computer-name\share\directory-name\file-name (TODO: tomat). - - Prefix of path that represents a directory. - - - - Returns true if given path is absolute and starts with a drive specification ("C:\"). - - - - - Get a prefix of given path which is the root of the path. - - - Root of an absolute path or null if the path isn't absolute or has invalid format (e.g. "\\"). - It may or may not end with a directory separator (e.g. "C:\", "C:\foo", "\\machine\share", etc.) . - - - - - Calculates the length of root of an UNC path. - - - "\\server\share" is root of UNC path "\\server\share\dir1\dir2\file". - - - - - Combines an absolute path with a relative. - - Absolute root path. - Relative path. - - An absolute combined path, or null if is - absolute (e.g. "C:\abc", "\\machine\share\abc"), - relative to the current root (e.g. "\abc"), - or relative to a drive directory (e.g. "C:abc\def"). - - - - - - Combine two paths, the first of which may be absolute. - - First path: absolute, relative, or null. - Second path: relative and non-null. - null, if is null; a combined path, otherwise. - - - - - Determines whether an assembly reference is considered an assembly file path or an assembly name. - used, for example, on values of /r and #r. - - - - - Resolves relative path and returns absolute path. - The method depends only on values of its parameters and their implementation (for fileExists). - It doesn't itself depend on the state of the current process (namely on the current drive directories) or - the state of file system. - - - Path to resolve. - - - Base file path to resolve CWD-relative paths against. Null if not available. - - - Base directory to resolve CWD-relative paths against if isn't specified. - Must be absolute path. - Null if not available. - - - Sequence of paths used to search for unqualified relative paths. - - - Method that tests existence of a file. - - - The resolved path or null if the path can't be resolved or does not exist. - - - - - Normalizes an absolute path. - - Path to normalize. - - Normalized path. - - - - Used to create a file given a path specified by the user. - paramName - Provided by the Public surface APIs to have a clearer message. Internal API just rethrow the exception - - - - - - - - The 4.5 portable API surface area does not contain many of the APIs Roslyn needs to function. In - particular it lacks APIs to access the file system. The Roslyn project though is constrained - from moving to the 4.6 framework until post VS 2015. - - This puts us in a difficult position. These APIs are necessary for us to have our public API set - in the DLLS we prefer (non Desktop variants) but we can't use them directly when targeting - the 4.5 framework. Putting the APIs into the Desktop variants would create instant legacy for - the Roslyn project that we'd have to maintain forever (even if it was just as assemblies with - only type forward entries). This is not a place we'd like to be in. - - As a compromise we've decided to grab these APIs via reflection for the time being. This is a - *very* unfortunate path to be on but it's a short term solution that sets us up for long term - success. - - This is an unfortunate situation but it will all be removed fairly quickly after RTM and converted - to the proper 4.6 portable contracts. - - Note: Only portable APIs should be present here. - - - - - APIs contained here are proposed for CoreFX but not yet finalized. Their contracts are - subject to change. - - - - - A binder that gathers type/reader mappings during object writing - - - - - A binder that used a predetermine list of types and reader functions. - - - - - A class that reads both primitive values and non-cyclical object graphs from a stream that was constructed using - the ObjectWriter class. - - - - - Read a Boolean value from the stream. This value must have been written using . - - - - - Read a Byte value from the stream. This value must have been written using . - - - - - Read a Char value from the stream. This value must have been written using . - - - - - Read a Decimal value from the stream. This value must have been written using . - - - - - Read a Double value from the stream. This value must have been written using . - - - - - Read a Single value from the stream. This value must have been written using . - - - - - Read a Int32 value from the stream. This value must have been written using . - - - - - Read a Int64 value from the stream. This value must have been written using . - - - - - Read a SByte value from the stream. This value must have been written using . - - - - - Read a Int16 value from the stream. This value must have been written using . - - - - - Read a UInt32 value from the stream. This value must have been written using . - - - - - Read a UInt64 value from the stream. This value must have been written using . - - - - - Read a UInt16 value from the stream. This value must have been written using . - - - - - Read a DateTime value from the stream. This value must have been written using the . - - - - - Read a compressed 30-bit integer value from the stream. This value must have been written using . - - - - - Read a value from the stream. The value must have been written using ObjectWriter.WriteValue. - - - - - Read a String value from the stream. This value must have been written using ObjectWriter.WriteString. - - - - - A class that writes both primitive values and non-cyclical object graphs to a stream that may be - later read back using the ObjectReader class. - - - - - Writes a Boolean value to the stream. - - - - - Writes a Byte value to the stream. - - - - - Writes a Char value to the stream. - - - - - Writes a Decimal value to the stream. - - - - - Writes a Double value to the stream. - - - - - Writes a Single value to the stream. - - - - - Writes a Int32 value to the stream. - - - - - Writes a Int64 value to the stream. - - - - - Writes a SByte value to the stream. - - - - - Writes a Int16 value to the stream. - - - - - Writes a UInt32 value to the stream. - - - - - Writes a UInt64 value to the stream. - - - - - Writes a UInt16 value to the stream. - - - - - Writes a DateTime value to the stream. - - - - - Writes a compressed 30 bit integer to the stream. (not 32 bit) - - - - - Writes a String value to the stream. - - - - - Writes any value (primitive or object graph) to the stream. - - - - - A binder that gathers type/reader mappings during object writing - - - - - A binder that gathers type/reader mappings during object writing - - - - - Generic implementation of object pooling pattern with predefined pool size limit. The main - purpose is that limited number of frequently used objects can be kept in the pool for - further recycling. - - Notes: - 1) it is not the goal to keep all returned objects. Pool is not meant for storage. If there - is no space in the pool, extra returned objects will be dropped. - - 2) it is implied that if object was obtained from a pool, the caller will return it back in - a relatively short time. Keeping checked out objects for long durations is ok, but - reduces usefulness of pooling. Just new up your own. - - Not returning objects to the pool in not detrimental to the pool's work, but is a bad practice. - Rationale: - If there is no intent for reusing the object, do not use pool - just use "new". - - - - - Not using System.Func{T} because this file is linked into the (debugger) Formatter, - which does not have that type (since it compiles against .NET 2.0). - - - - - Produces an instance. - - - Search strategy is a simple linear probing which is chosen for it cache-friendliness. - Note that Free will try to store recycled objects close to the start thus statistically - reducing how far we will typically search. - - - - - Returns objects to the pool. - - - Search strategy is a simple linear probing which is chosen for it cache-friendliness. - Note that Free will try to store recycled objects close to the start thus statistically - reducing how far we will typically search in Allocate. - - - - - Removes an object from leak tracking. - - This is called when an object is returned to the pool. It may also be explicitly - called if an object allocated from the pool is intentionally not being returned - to the pool. This can be of use with pooled arrays if the consumer wants to - return a larger array to the pool than was originally allocated. - - - - - Represents a non source code file. - - - - - Path to the file. - - - - - Returns a with the contents of this file, or null if - there were errors reading the file. - - - - - Errors encountered when trying to read the additional file. Always empty if - has not been called. - - - - - If is set, then will be null. - The only arity in that case will be encoded in the symbol. - - - - - - - - - Case-insensitive operations (mostly comparison) on unicode strings. - - - - - ToLower implements the Unicode lowercase mapping - as described in ftp://ftp.unicode.org/Public/UNIDATA/UnicodeData.txt. - VB uses these mappings for case-insensitive comparison. - - - If is upper case, then this returns its Unicode lower case equivalent. Otherwise, is returned unmodified. - - - - This class seeks to perform the lowercase Unicode case mapping. - - - - - Returns a StringComparer that compares strings according the VB identifier comparison rules. - - - - - Returns a StringComparer that compares strings according the VB identifier comparison rules. - - - - - Determines if two VB identifiers are equal according to the VB identifier comparison rules. - - First identifier to compare - Second identifier to compare - true if the identifiers should be considered the same. - - - - Determines if the string 'value' end with string 'possibleEnd'. - - - - - - - - Compares two VB identifiers according to the VB identifier comparison rules. - - First identifier to compare - Second identifier to compare - -1 if < , 1 if > , 0 if they are equal. - - - - Gets a case-insensitive hash code for VB identifiers. - - identifier to get the hash code for - The hash code for the given identifier - - - - Convert a string to lower case per Unicode - - - - - - - In-place convert string in StringBuilder to lower case per Unicode rules - - - - - - Constructs and caches already created pseudo-methods. - Every compiled module is supposed to have one of this, created lazily - (multidimensional arrays are not common). - - - - - Acquires an array constructor for a given array type - - - - - Acquires an element getter method for a given array type - - - - - Acquires an element setter method for a given array type - - - - - Acquires an element referencer method for a given array type - - - - - Maps {array type, method kind} tuples to implementing pseudo-methods. - - - - - lazily fetches or creates a new array method. - - - - - "newobj ArrayConstructor" is equivalent of "newarr ElementType" - when working with multidimensional arrays - - - - - "call ArrayGet" is equivalent of "ldelem ElementType" - when working with multidimensional arrays - - - - - "call ArrayAddress" is equivalent of "ldelema ElementType" - when working with multidimensional arrays - - - - - "call ArraySet" is equivalent of "stelem ElementType" - when working with multidimensional arrays - - - - - Represents a parameter in an array pseudo-method. - - NOTE: It appears that only number of indices is used for verification, - types just have to be Int32. - Even though actual arguments can be native ints. - - - - - Represents the "value" parameter of the Set pseudo-method. - - NOTE: unlike index parameters, type of the value parameter must match - the actual element type. - - - - - Base of all array methods. They have a lot in common. - - - - - Block is not reachable or reachability analysis - has not been performed. - - - - - Block can be reached either falling through - from previous block or from branch. - - - - - Block is reachable from try or catch but - finally prevents falling through. - - - - - Returns true if this block has a branch label - and is not a "nop" branch. - - - - - Instructions that are not branches. - - - - - The block contains only the final branch or nothing at all - - - - - Updates position of the current block to account for shorter sizes of previous blocks. - - - - - - If possible, changes the branch code of the current block to the short version and - updates the delta correspondingly. - - Position delta created by previous block size reductions. - - - - replaces branches with more compact code if possible. - * same branch as in the next ===> nop - * branch to the next block ===> nop - * branch to ret block ===> ret - * cond branch over uncond branch ===> flip condition, skip next block - * cond branch to equivalent ===> pop args + nop - - - - - Blocks are identical if: - 1) have same regular instructions - 2) lead to unconditional control transfer (no fall through) - 3) branch with the same instruction to the same label - - - - - Returns reversed branch operation for the current block. - If no reverse opcode can be obtained Nop is returned. - - - - - Abstract Execution state. - If we know something interesting about IL stream we put it here. - - - - - Eval stack's high watermark. - - - - - Current evaluation stack depth. - - - - - Record effects of that currently emitted instruction on the eval stack. - - - - - In some cases we have to get a final IL offset during emit phase, for example for - proper emitting sequence points. The problem is that before the builder is realized we - don't know the actual IL offset, but only {block/offset-in-the-block} pair. - - Thus, whenever we need to mark some IL position we allocate a new marker id, store it - in allocatedILMarkers and reference this IL marker in the entity requiring the IL offset. - - IL markers will be 'materialized' when the builder is realized; the resulting offsets - will be put into allocatedILMarkers array. Note that only markers from reachable blocks - are materialized, the rest will have offset -1. - - - - - Realizes method body. - No more data can be added to the builder after this call. - - - - - Gets all scopes that contain variables. - - - - - Gets all scopes that contain variables. - - - - - IL opcodes emitted by this builder. - This includes branch instructions that end blocks except if they are fall-through NOPs. - - This count allows compilers to see if emitting a particular statement/expression - actually produced any instructions. - - Example: a label will not result in any code so when emitting debugging information - an extra NOP may be needed if we want to decorate the label with sequence point. - - - - - Marks blocks that are reachable. - - - - - Marks blocks that are recursively reachable from the given block. - - - - - If a label points to a block that does nothing other than passing to block X, - replaces target label's block with block X. - - - - - - Drops blocks that are not reachable - Returns true if any blocks were dropped - - - - - Marks all blocks unreachable. - - - - - Rewrite any block marked as BlockedByFinally as an "infinite loop". - - - Matches the code generated by the native compiler in - ILGENREC::AdjustBlockedLeaveTargets. - - - - - Returns true if the block has the signature of the special - labeled block that follows a complete try/catch or try/finally. - - - - - Returns true if any branches were optimized (that does not include shortening) - We need this because optimizing a branch may result in unreachable code that needs to be eliminated. - - === Example: - - x = 1; - - if (blah) - { - global = 1; - } - else - { - throw null; - } - - return x; - - === rewrites into - - push 1; - - if (blah) - { - global = 1; - ret; - } - else - { - throw null; - } - - // this ret unreachable now! - // even worse - empty stack is assumed thus the ret is illegal. - ret; - - - - - - Define a sequence point with the given syntax tree and span within it. - - - - - Defines a hidden sequence point. - The effect of this is that debugger will not associate following code - with any source (until it sees a lexically following sequence point). - - This is used for synthetic code that is reachable through labels. - - If such code is not separated from previous sequence point by the means of a hidden sequence point - It looks as a part of the statement that previous sequence point specifies. - As a result, when user steps through the code and goes through a jump to such label, - it will appear as if the jump landed at the beginning of the previous statement. - - NOTE: Also inserted as the first statement of a method that would not otherwise have a leading - sequence point so that step-into will find the method body. - - - - - Define a hidden sequence point at the first statement of - the method so that step-into will find the method body. - - - - - This is called when starting emitting a method for which there is some source. - It is done in case the first sequence point is a hidden point. - Even though hidden points do not have syntax, they need to associate with some document. - - - - - Marks the end of filter condition and start of the actual filter handler. - - - - - Puts local variable into current scope. - - - - - Puts local constant into current scope. - - - - - Mark current IL position with a label - - - - - Primary method for emitting string switch jump table - - switch case labels - fall through label for the jump table - Local holding the value to switch on. - This value has already been loaded onto the execution stack. - - Local holding the hash value of the key for emitting - hash table switch. Hash value has already been computed and loaded into keyHash. - This parameter is null if emitting non hash table switch. - - - Delegate to emit string compare call and conditional branch based on the compare result. - - - Delegate to compute string hash consistent with value of keyHash. - - - - - Primary method for emitting integer switch jump table. - - switch case labels - fall through label for the jump table. - Local or parameter holding the value to switch on. - This value has already been loaded onto the execution stack. - - Primitive type code of switch key. - - - - Finishes filter condition (and starts actual handler portion of the handler). - Returns the last block of the condition. - - - - - Generates code that creates an instance of multidimensional array - - - - - Generates code that loads an element of a multidimensional array - - - - - Generates code that loads an address of an element of a multidimensional array. - - - - - Generates code that stores an element of a multidimensional array. - - - - - Contains information about a label. - - - - - Sometimes we need to know if a label is targeted by conditional branches. - For example optimizer can do optimizations of branches into outer try scopes only - if they are unconditional (because there are no conditional Leave opcodes) - - - - - Used when we see a branch, but label is not yet marked. - - - - - Used when label is marked to the code. - - - - - Gets all scopes that contain variables. - - - - - Returns an ExceptionHandlerRegion for each exception handler clause - beneath the root scope. Each ExceptionHandlerRegion indicates the type - of clause (catch or finally) and the bounds of the try block and clause block. - - - - - Base class for IL scopes where a scope contains IL blocks and other nested - scopes. A scope may represent a scope for variable declarations, an exception - handler clause, or an entire exception handler (multiple clauses). - - - - - Recursively calculates the start and end of the given scope. - Only scopes with locals are actually dumped to the list. - - - - - Recursively calculates the start and end of the given scope. - Only scopes with locals are actually dumped to the list. - - - - - Free any basic blocks owned by this scope or sub-scopes. - - - - - Class that collects content of the scope (blocks, nested scopes, variables etc). - There is one for every opened scope. - - - - - A scope for a single try, catch, or finally clause. If the clause - is a catch clause, ExceptionType will be set. - - - - - A scope for an entire exception handler (a try block with either several - catches or a finally block). Unlike other scopes, this scope contains - nested scopes only, no IL blocks (although nested ExceptionHandlerScopes - for the clauses will contain IL blocks). - - - - - Compares scopes by their start (ascending) and then size (descending). - - - - - These opcodes represent control transfer. - They should not appear inside basic blocks. - - - - - Opcodes that represents a branch to a label. - - - - - Opcodes that represents a branch to a label. - - - - - Debug information maintained for each lambda. - - - The information is emitted to PDB in Custom Debug Information record for a method containing the lambda. - - - - - The syntax offset of the syntax node declaring the lambda (lambda expression) or its body (lambda in a query). - - - - - The ordinal of the closure frame the lambda belongs to, or - if the lambda is static, or - if the lambda is closed over "this" pointer only. - - - - - We need a CCI representation for local constants because they are emitted as locals in - PDB scopes to improve the debugging experience (see LocalScopeProvider.GetConstantsInScope). - - - - . - - - - Creates a new LocalDefinition. - - Local symbol, used by edit and continue only, null otherwise. - Name associated with the slot. - Type associated with the slot. - Slot position in the signature. - Contains the synthesized dynamic attributes of the local - Local kind. - Local id. - Value to emit in the attributes field in the PDB. - Specifies whether slot type should have pinned modifier and whether slot should have byref constraint. - Specifies if the type is Dynamic. - - - - At this level there are two kinds of local variables: - - - Locals - have identities by which consuming code refers to them. - Typical use is a local variable or a compiler generated temp that can be accessed in multiple operations. - Any object can be used as identity. Reference equality is used. - - - Temps - do not have identity. They are borrowed and returned to the free list. - Typical use is a scratch temporary or spilling storage. - - - - - - - Structure that represents a local signature (as in ECMA-335, Partition I, §8.6.1.3 Local signatures). - - - - - Retrieve a local slot by its symbol. - - - - - Release a local slot by its symbol. - Slot is not associated with symbol after this. - - - - - Gets a local slot. - - - - - Frees a local slot. - - - - - An expression that creates an array instance in metadata. Only for use in custom attributes. - - - - - The element type of the array. - - - - - The initial values of the array elements. May be empty. - - - - - An expression that represents a (name, value) pair and that is typically used in method calls, custom attributes and object initializers. - - - - - The name of the parameter or property or field that corresponds to the argument. - - - - - The value of the argument. - - - - - True if the named argument provides the value of a field. - - - - - An expression that results in a System.Type instance. - - - - - The type that will be represented by the System.Type instance. - - - - - Holds on to the method body data. - - - - - This is a list of the using directives that were in scope for this method body. - - - - - Unique identification of an emitted entity (method, lambda, closure) used for debugging purposes (EnC). - - - When used for a synthesized method the ordinal and generation numbers are included its name. - For user defined methods the ordinal is included in Custom Debug Information record attached to the method. - - - - - The index of the method in member list of the containing type, or if undefined. - - - - - The EnC generation the method was defined in (0 is the baseline build). - - - - - This class represents the PermissionSetAttribute specified in source which needs fixup during codegen. - - - PermissionSetAttribute needs fixup when it contains an assignment to the 'File' property as a single named attribute argument. - Fixup performed is ported from SecurityAttributes::FixUpPermissionSetAttribute at ndp\clr\src\vm\securityattributes.cpp. - It involves following steps: - 1) Verifying that the specified file name resolves to a valid path: This is done during binding. - 2) Reading the contents of the file into a byte array. - 3) Convert each byte in the file content into two bytes containing hexadecimal characters (see method ). - 4) Replacing the 'File = fileName' named argument with 'Hex = hexFileContent' argument, where hexFileContent is the converted output from step 3) above. - - - - - Zero or more positional arguments for the attribute constructor. - - - - - A reference to the constructor that will be used to instantiate this custom attribute during execution (if the attribute is inspected via Reflection). - - - - - Zero or more named arguments that specify values for fields and properties of the attribute. - - - - - The number of positional arguments. - - - - - The number of named arguments. - - - - - The type of the attribute. For example System.AttributeUsageAttribute. - - - - - Exception class to enable generating ERR_PermissionSetAttributeFileReadError while reading the file for PermissionSetAttribute fixup. - - - - - TypeDefinition that represents <PrivateImplementationDetails> class. - The main purpose of this class so far is to contain mapped fields and their types. - - - - - Simple struct type with explicit size and no members. - - - - - Definition of a simple field mapped to a metadata block - - - - - Just a default implementation of a type definition. - - - - - Represents a sequence point before translation by #line/ExternalSource directives. - - - - - Some features of the compiler (such as anonymous types, pay-as-you-go, NoPIA, ...) - rely on all referenced symbols to go through translate mechanism. Because by default - symbol translator does not translate some of indirectly referenced symbols, such as - type argument, we have to force translation here - - This class provides unified implementation for this functionality. - - - - - Scope of user-defined variable hoisted to state machine. - - - - - Maintains a list of sequence points in a space efficient way. Most of the time sequence points - occur in the same syntax tree, so optimize for that case. Store a sequence point as an offset, and - position in a syntax tree, then translate to CCI format only on demand. - - Use a ArrayBuilder{RawSequencePoint} to create. - - - - - Create a SequencePointList with the raw sequence points from an ArrayBuilder. - A linked list of instances for each syntax tree is created (almost always of length one). - - - - - Get all the sequence points, possibly mapping them using #line/ExternalSource directives, and mapping - file names to debug documents with the given mapping function. - - Function that maps file paths to CCI debug documents - - - - Represents the combination of an IL offset and a source text span. - - - - - Handles storage of strings referenced via tokens in metadata. When items are stored - they are uniquely "associated" with fake token, which is basically a sequential number. - IL gen will use these fake tokens during codegen and later, when actual token values - are known the method bodies will be patched. - To support these two scenarios we need two maps - Item-->uint, and uint-->Item. (the second is really just a list). - - - - - Class for emitting the switch jump table for switch statements with integral governing type - - - - - Switch key for the jump table - - - - - Primitive type of the switch key - - - - - Fall through label for the jump table - - - - - Integral case labels sorted and indexed by their ConstantValue - - - - - Try to merge with the nextBucket. - If merge results in a better bucket than two original ones, merge and return true. - Else don't merge and return false. - - - - - Switch key for the jump table - - - - - Switch case labels - - - - - Fall through label for the jump table - - - - - Delegate to emit string compare call and conditional branch based on the compare result. - - Key to compare - Case constant to compare the key against - Target label to branch to if key = stringConstant - - - - Delegate to compute string hash code. - This piece is language-specific because VB treats "" and null as equal while C# does not. - - - - - Delegate to emit string compare call - - - - - Delegate to emit string hash - - - - - Local storing the key hash value, used for emitting hash table based string switch. - - - - - Dispenser of unique ordinals for synthesized variable names that have the same kind and syntax offset. - - - - - Handles storage of items referenced via tokens in metadata (strings or Symbols). - When items are stored they are uniquely "associated" with fake token, which is basically - a sequential number. - IL gen will use these fake tokens during codegen and later, when actual token values are known - the method bodies will be patched. - To support these two scenarios we need two maps - Item-->uint, and uint-->Item. (the second is really just a list). - - - - - - Returns an index of a slot that stores specified hoisted local variable in the previous generation. - - - - - Number of slots reserved for hoisted local variables. - - - Some of the slots might not be used anymore (a variable might have been deleted or its type changed). - Still, new hoisted variables are assigned slots starting with . - - - - - Returns true and an index of a slot that stores an awaiter of a specified type in the previous generation, if any. - - - - - Number of slots reserved for awaiters. - - - Some of the slots might not be used anymore (the type of an awaiter might have changed). - Still, new awaiters are assigned slots starting with . - - - - - The id of the method, or null if the method wasn't assigned one. - - - - - Finds a closure in the previous generation that corresponds to the specified syntax. - - - See LambdaFrame.AssertIsLambdaScopeSyntax for kinds of syntax nodes that represent closures. - - - - - Finds a lambda in the previous generation that corresponds to the specified syntax. - The is either a lambda syntax ( is false), - or lambda body syntax ( is true). - - - - - A local whose type is represented by a metadata signature instead of a type symbol. - - - Used when emitting a new version of a method during EnC for variables that are no longer used. - - - - - This temp is not interesting to the expression compiler. However, it - may be replaced by an interesting local in a later stage. - - - - - Id that associates an emitted user-defined or long-lived synthesized local variable - with a syntax node that defined it. If a syntax node defines multiple variables it - provides information necessary to identify which one of these variables is it. - - - - - We calculate a "syntax offset" for each user-defined and long-lived synthesized variable. - Every such variable symbol has to be associated with a syntax node (its declarator). - In usual cases this is the textual distance of the declarator from the start of the method body. - It gets a bit complicated when the containing method body is not contiguous (constructors). - If the variable is in the body of the constructor the definition of syntax offset is the same. - If the variable is defined in a constructor initializer or in a member initializer - (this is only possible when declaration expressions or closures in primary constructors are involved) - then the distance is a negative sum of the widths of all the initializers that succeed the declarator - of the variable in the emitted constructor body plus the relative offset of the declarator from - the start of the containing initializer. - - - - - If a single node is a declarator for multiple variables of the same synthesized kind (it can only happen for synthesized variables) - we calculate additional number "ordinal" for such variable. We assign the ordinals to the synthesized variables with the same kind - and syntax offset in the order as they appear in the lowered bound tree. It is important that a valid EnC edit can't change - the ordinal of a synthesized variable. If it could it would need to be assigned a different kind or associated with a different declarator node. - - - - - Driver to execute diagnostic analyzers for a given compilation. - It uses a of s to drive its analysis. - - - - - Cached semantic model for the compilation trees. - PERF: This cache enables us to re-use semantic model's bound node cache across analyzer execution and diagnostic queries. - - - - - Cached syntax references for a symbol for the lifetime of symbol declared event. - PERF: This cache reduces allocations for computing declaring syntax references for a symbol. - - - - - GetSyntax() for the given SyntaxReference. - - - - - Topmost declaration node for analysis. - - - - - All member declarations within the declaration. - - - - - All descendant nodes for syntax node actions. - - - - - Flag indicating if this is a partial analysis. - - - - - Driver task which initializes all analyzers. - This task is initialized and executed only once at start of analysis. - - - - - Flag to indicate if the was successfully started. - - - - - Primary driver task which processes all events, runs analyzer actions and signals completion of at the end. - - - - - Number of worker tasks processing compilation events and executing analyzer actions. - - - - - Events queue for analyzer execution. - - - - - that is fed the diagnostics as they are computed. - - - - - Create an analyzer driver. - - The set of analyzers to include in the analysis - AnalyzerManager to manage analyzers for analyzer host's lifetime. - - - - Initializes the and related actions maps for the analyzer driver. - It kicks off the task for initialization. - Note: This method must be invoked exactly once on the driver. - - - - - Attaches a pre-populated event queue to the driver and processes all events in the queue. - - Compilation events to analyze. - Scope of analysis. - An optional object to track partial analysis state. - Cancellation token to abort analysis. - Driver must be initialized before invoking this method, i.e. method must have been invoked and must be non-null. - - - - Attaches event queue to the driver and start processing all events pertaining to the given analysis scope. - - Compilation events to analyze. - Scope of analysis. - Cancellation token to abort analysis. - Driver must be initialized before invoking this method, i.e. method must have been invoked and must be non-null. - - - - Create an and attach it to the given compilation. - - The compilation to which the new driver should be attached. - The set of analyzers to include in the analysis. - Options that are passed to analyzers. - AnalyzerManager to manage analyzers for the lifetime of analyzer host. - Delegate to add diagnostics generated for exceptions from third party analyzers. - Report additional information related to analyzers, such as analyzer execution time. - The new compilation with the analyzer driver attached. - A cancellation token that can be used to abort analysis. - A newly created analyzer driver - - Note that since a compilation is immutable, the act of creating a driver and attaching it produces - a new compilation. Any further actions on the compilation should use the new compilation. - - - - - Returns all diagnostics computed by the analyzers since the last time this was invoked. - If has been completed with all compilation events, then it waits for - task for the driver to finish processing all events and generate remaining analyzer diagnostics. - - - - - Return a task that completes when the driver is initialized. - - - - - Return a task that completes when the driver is done producing diagnostics. - - - - - Returns true if all the diagnostics that can be produced by this analyzer are suppressed through options. - - - - - Contains information about the source of diagnostic suppression. - - - - - of the suppressed diagnostic. - - - - - If the diagnostic was suppressed by an attribute, then returns that attribute. - Otherwise, returns null. - - - - - Stores the results of analyzer execution: - 1. Local and non-local diagnostics, per-analyzer. - 2. Analyzer execution times, if requested. - - - - - Scope for analyzer execution. - This scope could either be the entire compilation for all analyzers (command line build) or - could be scoped to a specific tree/span and/or a subset of analyzers (CompilationWithAnalyzers). - - - - - Syntax trees on which we need to perform syntax analysis. - - - - - True if we need to categorize diagnostics into local and non-local diagnostics and track the analyzer reporting each diagnostic. - - - - - True if we need to perform only syntax analysis for a single tree. - - - - - True if we need to perform analysis for a single tree. - - - - - Stores the partial analysis state for analyzers executed on a specific compilation. - - - Stores the current partial analysis state for an analyzer. - - - - - Stores the partial analysis state for a specific event/symbol/tree for a specific analyzer. - - - - - Current state of analysis. - - - - - Set of completed actions. - - - - - Resets the from to . - This method must be invoked after successful analysis completion AND on analysis cancellation. - - - - - Per-analyzer analysis state map. - The integer value points to the index within the array. - - - - - Per-analyzer analysis state. - - - - - Compilation events corresponding to source tree, that are not completely processed for all analyzers. - Events are dropped as and when they are fully processed by all analyzers. - - - - - Compilation events corresponding to the compilation (compilation start and completed events), that are not completely processed for all analyzers. - - - - - Action counts per-analyzer. - - - - - Cached semantic model for the compilation trees. - PERF: This cache enables us to re-use semantic model's bound node cache across analyzer execution and diagnostic queries. - - - - - Invoke this method at completion of event processing for the given analysis scope. - It updates the analysis state of this event for each analyzer and if the event has been fully processed for all analyzers, then removes it from our event cache. - - - - - Gets pending events for given set of analyzers for the given syntax tree. - - - - - Gets pending events for given set of analyzers for the given syntax tree. - - - - - Gets all pending events for given set of analyzers. - - - Indicates if source events (symbol declared, compilation unit completed event) should be included. - Indicates if compilation wide events (compilation started and completed event) should be included. - - - - Returns true if we have any pending syntax analysis for given analysis scope. - - - - - Returns true if we have any pending symbol analysis for given analysis scope. - - - - - Attempts to start processing a compilation event for the given analyzer. - - - Returns false if the event has already been processed for the analyzer OR is currently being processed by another task. - If true, then it returns a non-null representing partial analysis state for the given event for the given analyzer. - - - - - Marks the given event as fully analyzed for the given analyzer. - - - - - Attempts to start processing a symbol for the given analyzer's symbol actions. - - - Returns false if the symbol has already been processed for the analyzer OR is currently being processed by another task. - If true, then it returns a non-null representing partial analysis state for the given symbol for the given analyzer. - - - - - Marks the given symbol as fully analyzed for the given analyzer. - - - - - Attempts to start processing a symbol declaration for the given analyzer's syntax node and code block actions. - - - Returns false if the declaration has already been processed for the analyzer OR is currently being processed by another task. - If true, then it returns a non-null representing partial analysis state for the given declaration for the given analyzer. - - - - - True if the given symbol declaration is fully analyzed. - - - - - Marks the given symbol declaration as fully analyzed for the given analyzer. - - - - - Marks all the symbol declarations for the given symbol as fully analyzed for all the given analyzers. - - - - - Attempts to start processing a syntax tree for the given analyzer's syntax tree actions. - - - Returns false if the tree has already been processed for the analyzer OR is currently being processed by another task. - If true, then it returns a non-null representing partial syntax analysis state for the given tree for the given analyzer. - - - - - Marks the given tree as fully syntactically analyzed for the given analyzer. - - - - - State kind of per-analyzer tracking an analyzer's partial analysis state. - An analysis state object can be in one of the following states: - 1. Completely unprocessed: - 2. Currently being processed: - 3. Partially processed by one or more older requests that was either completed or cancelled: - 4. Fully processed: We don't need a state kind to represent fully processed state as the analysis state object is discarded once fully processed. - - - - - Ready for processing. - Indicates it is either completely unprocessed or partially processed by one or more older requests that was either completed or cancelled. - - - - - Currently being processed. - - - - - Stores the partial analysis state for a specific symbol declaration for a specific analyzer. - - - - - Partial analysis state for code block actions executed on the declaration. - - - - - Stores the partial analysis state for syntax node actions executed on the declaration. - - - - - Stores the partial analysis state for code block actions executed on the declaration. - - - - - Contains telemetry info for a specific analyzer, such as count of registered actions, the total execution time, etc. - - - - - Count of registered compilation start actions. - - - - - Count of registered compilation end actions. - - - - - Count of registered compilation actions. - - - - - Count of registered syntax tree actions. - - - - - Count of registered semantic model actions. - - - - - Count of registered symbol actions. - - - - - Count of registered syntax node actions. - - - - - Count of registered code block start actions. - - - - - Count of registered code block end actions. - - - - - Count of registered code block actions. - - - - - Total execution time. - - - - - Contains the counts of registered actions for an analyzer. - - - - - Count of registered compilation start actions. - - - - - Count of registered compilation end actions. - - - - - Count of registered compilation actions. - - - - - Count of registered syntax tree actions. - - - - - Count of registered semantic model actions. - - - - - Count of registered symbol actions. - - - - - Count of registered syntax node actions. - - - - - Count of code block start actions. - - - - - Count of code block end actions. - - - - - Count of code block actions. - - - - - Contains the core execution logic for callbacks into analyzers. - - - - - Creates to execute analyzer actions with given arguments - - Compilation to be used in the analysis. - Analyzer options. - Delegate to add analyzer diagnostics. - - Optional delegate which is invoked when an analyzer throws an exception. - Delegate can do custom tasks such as report the given analyzer exception diagnostic, report a non-fatal watson for the exception, etc. - - Delegate to determine if the given analyzer is compiler analyzer. - We need to special case the compiler analyzer at few places for performance reasons. - Analyzer manager to fetch supported diagnostics. - - Delegate to fetch the gate object to guard all callbacks into the analyzer. - It should return a unique gate object for the given analyzer instance for non-concurrent analyzers, and null otherwise. - All analyzer callbacks for non-concurrent analyzers will be guarded with a lock on the gate. - - Flag indicating whether we need to log analyzer execution time. - Optional delegate to add local analyzer diagnostics. - Optional delegate to add non-local analyzer diagnostics. - Cancellation token. - - - - Creates to fetch . - - - Optional delegate which is invoked when an analyzer throws an exception. - Delegate can do custom tasks such as report the given analyzer exception diagnostic, report a non-fatal watson for the exception, etc. - - Analyzer manager to fetch supported diagnostics. - Flag indicating whether we need to log analyzer execution time. - Cancellation token. - - - - Executes the for the given analyzer. - - Analyzer to get session wide analyzer actions. - Session scope to store register session wide analyzer actions. - - Note that this API doesn't execute any registered by the Initialize invocation. - Use API - to get execute these actions to get the per-compilation analyzer actions. - - - - - Executes the compilation start actions. - - whose compilation start actions are to be executed. - Compilation scope to store the analyzer actions. - - - - Executes compilation actions or compilation end actions. - - Compilation actions to be executed. - Analyzer whose actions are to be executed. - Compilation event. - Scope for analyzer execution. - An optional object to track analysis state. - - - - Executes the symbol actions on the given symbol. - - Symbol actions to be executed. - Analyzer whose actions are to be executed. - Symbol to be analyzed. - Delegate to get topmost declaration node for a symbol declaration reference. - Scope for analyzer execution. - An optional object to track analysis state. - - - - Executes the semantic model actions on the given semantic model. - - Semantic model actions to be executed. - Analyzer whose actions are to be executed. - Semantic model to analyze. - Compilation event for semantic model analysis. - Scope for analyzer execution. - An optional object to track analysis state. - - - - Executes the syntax tree actions on the given syntax tree. - - Syntax tree actions to be executed. - Analyzer whose actions are to be executed. - Syntax tree to analyze. - Scope for analyzer execution. - An optional object to track analysis state. - - - - Manages properties of analyzers (such as registered actions, supported diagnostics) for analyzer host's lifetime - and executes the callbacks into the analyzers. - - It ensures the following for the lifetime of analyzer host: - 1) is invoked only once per-analyzer. - 2) is invoked only once per-analyzer. - 3) registered during Initialize are invoked only once per-compilation per- - - - TODO: Consider moving and relevant APIs - out of the AnalyzerManager and into analyzer drivers. - - - - - Gets the default instance of the AnalyzerManager for the lifetime of the analyzer host process. - - - - - Cache descriptors for each diagnostic analyzer. We do this since is - a property rather than metadata. We expect it to be cheap and immutable, but we can't force them to be so, we cache them - and ask only once. - - - - - Get all the analyzer actions to execute for the given analyzer against a given compilation. - The returned actions include the actions registered during method as well as - the actions registered during for the given compilation. - - - - - Return of given . - - - - - This method should be invoked when the analyzer host is disposing off the analyzers. - It unregisters the exception handler hooked up to the descriptors' LocalizableString fields and subsequently removes the cached descriptors for the analyzers. - - - - - Returns true if all the diagnostics that can be produced by this analyzer are suppressed through options. - - - - - The last event placed into a compilation's event queue. - - - - - Flush any cached data in this to minimize space usage (at the possible expense of time later). - The principal effect of this is to free cached information on events that have a . - - - - - The first event placed into a compilation's event queue. - - - - - Options to configure analyzer execution within . - - - - - Options passed to s. - - - - - An optional delegate to be invoked when an analyzer throws an exception. - - - - - Flag indicating whether analysis can be performed concurrently on multiple threads. - - - - - Flag indicating whether analyzer execution time should be logged. - - - - - Flag indicating whether analyzer diagnostics with should be reported. - - - - - Creates a new . - - Options that are passed to analyzers. - Action to invoke if an analyzer throws an exception. - Flag indicating whether analysis can be performed concurrently on multiple threads. - Flag indicating whether analyzer execution time should be logged. - - - - Creates a new . - - Options that are passed to analyzers. - Action to invoke if an analyzer throws an exception. - Flag indicating whether analysis can be performed concurrently on multiple threads. - Flag indicating whether analyzer execution time should be logged. - Flag indicating whether analyzer diagnostics with should be reported. - - - - Queue to store analyzer diagnostics on the . - - - - - Simple diagnostics queue: maintains all diagnostics reported by all analyzers in a single queue. - - - - - Categorized diagnostics queue: maintains separate set of simple diagnostic queues for local semantic, local syntax and non-local diagnostics for every analyzer. - - - - - Scope for setting up analyzers for an entire session, automatically associating actions with analyzers. - - - - - Scope for setting up analyzers for a compilation, automatically associating actions with analyzers. - - - - - Scope for setting up analyzers for a code block, automatically associating actions with analyzers. - - - - - Scope for setting up analyzers for an entire session, capable of retrieving the actions. - - - - - Scope for setting up analyzers for a compilation, capable of retrieving the actions. - - - - - Scope for setting up analyzers for a code block, capable of retrieving the actions. - - - - - Actions registered by a particular analyzer. - - - - - Append analyzer actions from to actions from this instance. - - Analyzer actions to append. - - - - An event for each declaration in the program (namespace, type, method, field, parameter, etc). - Note that some symbols may have multiple declarations (namespaces, partial types) and may therefore - have multiple events. - - - - - Lockable object only instance is knowledgeable about. - - - - - Represents analyzers stored in an analyzer assembly file. - - - Analyzer are read from the file, owned by the reference, and doesn't change - since the reference is accessed until the reference object is garbage collected. - - If you need to manage the lifetime of the analyzer reference (and the file stream) explicitly use . - - - - - Creates an AnalyzerFileReference with the given and . - - Full path of the analyzer assembly. - Loader for obtaining the from the - - - - Adds the of of - for all languages defined in this assembly reference. - - - - - Adds the of defined in this assembly reference of given . - - - - - Opens the analyzer dll with the metadata reader and builds a map of language -> analyzer type names. - - The PE image format is invalid. - IO error reading the metadata. - - - - If a specific analyzer failed to load the namespace-qualified name of its type, null otherwise. - - - - - Error message. - - - - - Error code. - - - - - Exception that was thrown while loading the analyzer. May be null. - - - - - DiagnosticAnalyzer for compiler's syntax/semantic/compilation diagnostics. - - - - - Per-compilation DiagnosticAnalyzer for compiler's syntax/semantic/compilation diagnostics. - - - - - Driver to execute diagnostic analyzers for a given compilation. - It uses a of s to drive its analysis. - - - - - Create an analyzer driver. - - The set of analyzers to include in the analysis - A delegate that returns the language-specific kind for a given syntax node - AnalyzerManager to manage analyzers for the lifetime of analyzer host. - - - - Represents an in-memory analyzer reference image. - - - - - Options passed to . - - - - - A set of additional non-code text files that can be used by analyzers. - - - - - Creates analyzer options to be passed to . - - A set of additional non-code text files that can be used by analyzers. - - - - Returns analyzer options with the given . - - - - - Represents an analyzer assembly reference that contains diagnostic analyzers. - - - Represents a logical location of the analyzer reference, not the content of the reference. - The content might change in time. A snapshot is taken when the compiler queries the reference for its analyzers. - - - - - Full path describing the location of the analyzer reference, or null if the reference has no location. - - - - - Path or name used in error messages to identity the reference. - - - Should not be null. - - - - - A unique identifier for this analyzer reference. - - - Should not be null. - Note that this and serve different purposes. An analyzer reference may not - have a path, but it always has an ID. Further, two analyzer references with different paths may - represent two copies of the same analyzer, in which case the IDs should also be the same. - - - - - Gets all the diagnostic analyzers defined in this assembly reference, irrespective of the language supported by the analyzer. - Use this method only if you need all the analyzers defined in the assembly, without a language context. - In most instances, either the analyzer reference is associated with a project or is being queried for analyzers in a particular language context. - If so, use method. - - - - - Gets all the diagnostic analyzers defined in this assembly reference for the given . - - Language name. - - - - Pool of s used for analyzer execution. - - - - - Contains the partial analysis state per-analyzer. It tracks: - 1. Global set of pending compilation events. This is used to populate the event queue for analyzer execution. - 2. Per-analyzer set of pending compilation events, symbols, declarations, etc. Each of these pending entities has a state object to track partial analysis. - - - - - Cache of the current analysis results: - 1. Local and non-local diagnostics. - 2. Analyzer execution times, if is true. - - - - - Set of exception diagnostics reported for exceptions thrown by the analyzers. - - - - - Lock to track the set of active tasks computing tree diagnostics and task computing compilation diagnostics. - - - - - Used to generate a unique token for each tree diagnostics request. - The token is used to determine the priority of each request. - Each new tree diagnostic request gets an incremented token value and has higher priority over other requests for the same tree. - Compilation diagnostics requests always have the lowest priority. - - - - - Map from active tasks computing tree diagnostics to their token number. - - - - - Pool of event queues to serve each diagnostics request. - - - - - Underlying with a non-null , used to drive analyzer execution. - - - - - Analyzers to execute on the compilation. - - - - - Options to configure analyzer execution. - - - - - An optional cancellation token which can be used to cancel analysis. - Note: This token is only used if the API invoked to get diagnostics doesn't provide a cancellation token. - - - - - Creates a new compilation by attaching diagnostic analyzers to an existing compilation. - - The original compilation. - The set of analyzers to include in future analyses. - Options that are passed to analyzers. - A cancellation token that can be used to abort analysis. - - - - Creates a new compilation by attaching diagnostic analyzers to an existing compilation. - - The original compilation. - The set of analyzers to include in future analyses. - Options to configure analyzer execution. - - - - Returns diagnostics produced by all . - - - - - Returns diagnostics produced by all . - - - - - Returns diagnostics produced by given . - - Analyzers whose diagnostics are required. All the given analyzers must be from the analyzers passed into the constructor of . - Cancellation token. - - - - Returns all diagnostics produced by compilation and by all . - - - - - Returns all diagnostics produced by compilation and by all . - - - - - Returns diagnostics produced by compilation actions of all . - - - - - Returns diagnostics produced by compilation actions of given . - - Analyzers whose diagnostics are required. All the given analyzers must be from the analyzers passed into the constructor of . - Cancellation token. - - - - Returns syntax diagnostics produced by all from analyzing the given . - Depending on analyzers' behavior, returned diagnostics can have locations outside the tree, - and some diagnostics that would be reported for the tree by an analysis of the complete compilation - can be absent. - - Syntax tree to analyze. - Cancellation token. - - - - Returns syntax diagnostics produced by given from analyzing the given . - Depending on analyzers' behavior, returned diagnostics can have locations outside the tree, - and some diagnostics that would be reported for the tree by an analysis of the complete compilation - can be absent. - - Syntax tree to analyze. - Analyzers whose diagnostics are required. All the given analyzers must be from the analyzers passed into the constructor of . - Cancellation token. - - - - Returns semantic diagnostics produced by all from analyzing the given , optionally scoped to a . - Depending on analyzers' behavior, returned diagnostics can have locations outside the tree, - and some diagnostics that would be reported for the tree by an analysis of the complete compilation - can be absent. - - Semantic model representing the syntax tree to analyze. - An optional span within the tree to scope analysis. - Cancellation token. - - - - Returns semantic diagnostics produced by all from analyzing the given , optionally scoped to a . - Depending on analyzers' behavior, returned diagnostics can have locations outside the tree, - and some diagnostics that would be reported for the tree by an analysis of the complete compilation - can be absent. - - Semantic model representing the syntax tree to analyze. - An optional span within the tree to scope analysis. - Analyzers whose diagnostics are required. All the given analyzers must be from the analyzers passed into the constructor of . - Cancellation token. - - - - Core method for executing analyzers. - - - - - Given a set of compiler or generated , returns the effective diagnostics after applying the below filters: - 1) specified for the given . - 2) specified for the given . - 3) Diagnostic suppression through applied . - 4) Pragma directives for the given . - - - - - Returns true if all the diagnostics that can be produced by this analyzer are suppressed through options. - Analyzer to be checked for suppression. - Compilation options. - - Optional delegate which is invoked when an analyzer throws an exception. - Delegate can do custom tasks such as report the given analyzer exception diagnostic, report a non-fatal watson for the exception, etc. - - - - - - This method should be invoked when the analyzer host is disposing off the given . - It clears the cached internal state (supported descriptors, registered actions, exception handlers, etc.) for analyzers. - - Analyzers whose state needs to be cleared. - - - - Gets telemetry info for the given analyzer, such as count of registered actions, the total execution time (if is true), etc. - - - - - Gets the count of registered actions for the analyzer. - - - - - Gets the execution time for the given analyzer. - - - - - Returns a new compilation with attached diagnostic analyzers. - - Compilation to which analyzers are to be added. - The set of analyzers to include in future analyses. - Options that are passed to analyzers. - A cancellation token that can be used to abort analysis. - - - - Returns a new compilation with attached diagnostic analyzers. - - Compilation to which analyzers are to be added. - The set of analyzers to include in future analyses. - Options to configure analyzer execution within . - - - - Represents an analyzer reference that can't be resolved. - - - For error reporting only, can't be used to reference an analyzer assembly. - - - - - Context for initializing an analyzer. - Analyzer initialization can use an to register actions to be executed at any of: - - - compilation start, - - - compilation end, - - - completion of parsing a code document, - - - completion of semantic analysis of a code document, - - - completion of semantic analysis of a symbol, - - - start of semantic analysis of a method body or an expression appearing outside a method body, - - - completion of semantic analysis of a method body or an expression appearing outside a method body, or - - - completion of semantic analysis of a syntax node. - - - - - - - Register an action to be executed at compilation start. - A compilation start action can register other actions and/or collect state information to be used in diagnostic analysis, - but cannot itself report any s. - - Action to be executed at compilation start. - - - - Register an action to be executed for a complete compilation. - A compilation action reports s about the . - - Action to be executed at compilation end. - - - - Register an action to be executed at completion of semantic analysis of a document, - which will operate on the of the document. A semantic model action - reports s about the model. - - Action to be executed for a document's . - - - - Register an action to be executed at completion of semantic analysis of an with an appropriate Kind.> - A symbol action reports s about s. - - Action to be executed for an . - Action will be executed only if an 's Kind matches one of the values. - - - - Register an action to be executed at completion of semantic analysis of an with an appropriate Kind.> - A symbol action reports s about s. - - Action to be executed for an . - Action will be executed only if an 's Kind matches one of the values. - - - - Register an action to be executed at the start of semantic analysis of a method body or an expression appearing outside a method body. - A code block start action can register other actions and/or collect state information to be used in diagnostic analysis, - but cannot itself report any s. - - Enum type giving the syntax node kinds of the source language for which the action applies. - Action to be executed at the start of semantic analysis of a code block. - - - - Register an action to be executed after semantic analysis of a method body or an expression appearing outside a method body. - A code block action reports s about code blocks. - - Action to be executed for a code block. - - - - Register an action to be executed at completion of parsing of a code document. - A syntax tree action reports s about the of a document. - - Action to be executed at completion of parsing of a document. - - - - Register an action to be executed at completion of semantic analysis of a with an appropriate Kind. - A syntax node action can report s about s, and can also collect - state information to be used by other syntax node actions or code block end actions. - - Enum type giving the syntax node kinds of the source language for which the action applies. - Action to be executed at completion of semantic analysis of a . - Action will be executed only if a 's Kind matches one of the syntax kind values. - - - - Register an action to be executed at completion of semantic analysis of a with an appropriate Kind. - A syntax node action can report s about s, and can also collect - state information to be used by other syntax node actions or code block end actions. - - Enum type giving the syntax node kinds of the source language for which the action applies. - Action to be executed at completion of semantic analysis of a . - Action will be executed only if a 's Kind matches one of the syntax kind values. - - - - Context for a compilation start action. - A compilation start action can use a to register actions to be executed at any of: - - - compilation end, - - - completion of parsing a code document, - - - completion of semantic analysis of a code document, - - - completion of semantic analysis of a symbol, - - - start of semantic analysis of a method body or an expression appearing outside a method body, - - - completion of semantic analysis of a method body or an expression appearing outside a method body, or - - - completion of semantic analysis of a syntax node. - - - - - - - that is the subject of the analysis. - - - - - Options specified for the analysis. - - - - - Token to check for requested cancellation of the analysis. - - - - - Register an action to be executed at compilation end. - A compilation end action reports s about the . - - Action to be executed at compilation end. - - - - Register an action to be executed at completion of semantic analysis of a document, - which will operate on the of the document. A semantic model action - reports s about the model. - - Action to be executed for a document's . - - - - Register an action to be executed at completion of semantic analysis of an with an appropriate Kind.> - A symbol action reports s about s. - - Action to be executed for an . - Action will be executed only if an 's Kind matches one of the values. - - - - Register an action to be executed at completion of semantic analysis of an with an appropriate Kind.> - A symbol action reports s about s. - - Action to be executed for an . - Action will be executed only if an 's Kind matches one of the values. - - - - Register an action to be executed at the start of semantic analysis of a method body or an expression appearing outside a method body. - A code block start action can register other actions and/or collect state information to be used in diagnostic analysis, - but cannot itself report any s. - - Enum type giving the syntax node kinds of the source language for which the action applies. - Action to be executed at the start of semantic analysis of a code block. - - - - Register an action to be executed at the end of semantic analysis of a method body or an expression appearing outside a method body. - A code block action reports s about code blocks. - - Action to be executed for a code block. - - - - Register an action to be executed at completion of parsing of a code document. - A syntax tree action reports s about the of a document. - - Action to be executed at completion of parsing of a document. - - - - Register an action to be executed at completion of semantic analysis of a with an appropriate Kind. - A syntax node action can report s about s, and can also collect - state information to be used by other syntax node actions or code block end actions. - - Enum type giving the syntax node kinds of the source language for which the action applies. - Action to be executed at completion of semantic analysis of a . - Action will be executed only if a 's Kind matches one of the syntax kind values. - - - - Register an action to be executed at completion of semantic analysis of a with an appropriate Kind. - A syntax node action can report s about s, and can also collect - state information to be used by other syntax node actions or code block end actions. - - Enum type giving the syntax node kinds of the source language for which the action applies. - Action to be executed at completion of semantic analysis of a . - Action will be executed only if a 's Kind matches one of the syntax kind values. - - - - Context for a compilation action or compilation end action. - A compilation action or compilation end action can use a to report s about a . - - - - - that is the subject of the analysis. - - - - - Options specified for the analysis. - - - - - Token to check for requested cancellation of the analysis. - - - - - Report a about a . - - to be reported. - - - - Context for a semantic model action. - A semantic model action operates on the of a code document, and can use a to report s about the model. - - - - - that is the subject of the analysis. - - - - - Options specified for the analysis. - - - - - Token to check for requested cancellation of the analysis. - - - - - Report a about a . - - to be reported. - - - - Context for a symbol action. - A symbol action can use a to report s about an . - - - - - that is the subject of the analysis. - - - - - containing the . - - - - - Options specified for the analysis. - - - - - Token to check for requested cancellation of the analysis. - - - - - Report a about an . - - to be reported. - - - - Context for a code block start action. - A code block start action can use a to register actions to be executed - at any of: - - - completion of semantic analysis of a method body or an expression appearing outside a method body, or - - - completion of semantic analysis of a syntax node. - - - - - - - Method body or expression subject to analysis. - - - - - for which the code block provides a definition or value. - - - - - that can provide semantic information about the s in the code block. - - - - - Options specified for the analysis. - - - - - Token to check for requested cancellation of the analysis. - - - - - Register an action to be executed at the end of semantic analysis of a method body or an expression appearing outside a method body. - A code block end action reports s about code blocks. - - Action to be executed at the end of semantic analysis of a code block. - - - - Register an action to be executed at completion of semantic analysis of a with an appropriate Kind. - A syntax node action can report s about s, and can also collect - state information to be used by other syntax node actions or code block end actions. - - Action to be executed at completion of semantic analysis of a . - Action will be executed only if a 's Kind matches one of the syntax kind values. - - - - Register an action to be executed at completion of semantic analysis of a with an appropriate Kind. - A syntax node action can report s about s, and can also collect - state information to be used by other syntax node actions or code block end actions. - - Action to be executed at completion of semantic analysis of a . - Action will be executed only if a 's Kind matches one of the syntax kind values. - - - - Context for a code block action or code block end action. - A code block action or code block end action can use a to report s about a code block. - - - - - Code block that is the subject of the analysis. - - - - - for which the code block provides a definition or value. - - - - - that can provide semantic information about the s in the code block. - - - - - Options specified for the analysis. - - - - - Token to check for requested cancellation of the analysis. - - - - - Report a about a code block. - - to be reported. - - - - Context for a syntax tree action. - A syntax tree action can use a to report s about a for a code document. - - - - - that is the subject of the analysis. - - - - - Options specified for the analysis. - - - - - Token to check for requested cancellation of the analysis. - - - - - Report a about a . - - to be reported. - - - - Context for a syntax node action. - A syntax node action can use a to report s for a . - - - - - that is the subject of the analysis. - - - - - that can provide semantic information about the . - - - - - Options specified for the analysis. - - - - - Token to check for requested cancellation of the analysis. - - - - - Report a about a . - - to be reported. - - - - The base type for diagnostic analyzers. - - - - - Returns a set of descriptors for the diagnostics that this analyzer is capable of producing. - - - - - Called once at session start to register actions in the analysis context. - - - - - - A queue whose enqueue and dequeue operations can be performed in parallel. - - The type of values kept by the queue. - - - - The number of unconsumed elements in the queue. - - - - - Adds an element to the tail of the queue. This method will throw if the queue - is completed. - - The queue is already completed. - The value to add. - - - - Tries to add an element to the tail of the queue. This method will return false if the queue - is completed. - - The value to add. - - - - Attempts to dequeue an existing item and return whether or not it was available. - - - - - Gets a value indicating whether the queue has completed. - - - - - Signals that no further elements will be enqueued. All outstanding and future - Dequeue Task will be cancelled. - - The queue is already completed. - - - - Same operation as except it will not - throw if the queue is already completed. - - Whether or not the operation succeeded. - - - - Gets a task that transitions to a completed state when or - is called. This transition will not happen synchronously. - - This Task will not complete until it has completed all existing values returned - from . - - - - - Gets a task whose result is the element at the head of the queue. If the queue - is empty, the returned task waits for an element to be enqueued. If - is called before an element becomes available, the returned task is cancelled. - - - - - - Note: The early cancellation behavior is intentional. - - - - - Place this attribute onto a type to cause it to be considered a diagnostic analyzer. - - - - - The source languages to which this analyzer applies. See . - - - - - Attribute constructor used to specify automatic application of a diagnostic analyzer. - - One language to which the analyzer applies. - Additional languages to which the analyzer applies. See . - - - - A set of utilities for converting from a decimal floating-point literal string to its IEEE float - or double representation, which coniders all digits signficant and correctly rounds according to - the IEEE round-to-nearest-ties-to-even mode. This code does not support a leading sign character, - as that is not part of the C# or VB floating-point literal lexical syntax. - - If you change this code, please run the set of long-running random tests in the solution - RandomRealParserTests.sln. That solution is not included in Roslyn.sln as it is Windows-specific. - - - - - Try parsing a correctly-formatted double floating-point literal into the nearest representable double - using IEEE round-to-nearest-ties-to-even rounding mode. Behavior is not defined for inputs that are - not valid C# floating-point literals. - - The decimal floating-point constant's string - The nearest double value, if conversion succeeds - True of the input was converted; false if there was an overflow - - - - Try parsing a correctly-formatted float floating-point literal into the nearest representable float - using IEEE round-to-nearest-ties-to-even rounding mode. Behavior is not defined for inputs that are - not valid C# floating-point literals. - - The float floating-point constant's string - The nearest float value, if conversion succeeds - True of the input was converted; false if there was an overflow - - - - Properties of an IEEE floating-point representation. - - - - - Converts the floating point value 0.mantissa * 2^exponent into the - correct form for the FloatingPointType and stores the bits of the resulting value - into the result object. - The caller must ensure that the mantissa and exponent are correctly computed - such that either [1] the most significant bit of the mantissa is in the - correct position for the FloatingType, or [2] the exponent has been correctly - adjusted to account for the shift of the mantissa that will be required. - - This function correctly handles range errors and stores a zero or infinity in - the result object on underflow and overflow errors, respectively. This - function correctly forms denormal numbers when required. - - If the provided mantissa has more bits of precision than can be stored in the - result object, the mantissa is rounded to the available precision. Thus, if - possible, the caller should provide a mantissa with at least one more bit of - precision than is required, to ensure that the mantissa is correctly rounded. - (The caller should not round the mantissa before calling this function.) - - The bits of the mantissa - The exponent - Whether there are any nonzero bits past the supplied mantissa - Where the bits of the floating-point number are stored - A status indicating whether the conversion succeeded and why - - - - Properties of a C# float. - - - - - Properties of a C# double. - - - - - This type is used to hold a partially-parsed string representation of a - floating point number. The number is stored in the following form: -
-                0.Mantissa * 10^Exponent
-             
- The Mantissa buffer stores the mantissa digits as characters in a string. - The MantissaCount gives the number of digits present in the Mantissa buffer. - There shall be neither leading nor trailing zero digits in the Mantissa. - Note that this represents only nonnegative floating-point literals; the - negative sign in C# and VB is actually a separate unary negation operator. -
-
- - - Create a DecimalFloatingPointString from a string representing a floating-point literal. - - The text of the floating-point literal - - - - Convert a DecimalFloatingPointString to the bits of the given floating-point type. - - - - - This function is part of the fast track for integer floating point strings. - It takes an integer stored as an array of bytes (lsb first) and converts the value into its FloatingType - representation, storing the bits into "result". If the value is not - representable, +/-infinity is stored and overflow is reported (since this - function only deals with integers, underflow is impossible). - - the bits of the integer, least significant bits first - the number of bits of precision in integerValueAsBytes - whether there are nonzero digits after the decimal - the kind of real number to build - the result - An indicator of the kind of result - - - - Parse a sequence of digits into a BigInteger. - - The DecimalFloatingPointString containing the digits in its Mantissa - The index of the first digit to convert - The index just past the last digit to convert - The BigInteger result - - - - Return the number of significant bits set. - - - - - Return the number of significant bits set. - - - - - Return the number of significant bits set. - - - - - Return the number of significant bits set. - - - - - Computes value / 2^shift, then rounds the result according to the current - rounding mode. By the time we call this function, we will already have - discarded most digits. The caller must pass true for has_zero_tail if - all discarded bits were zeroes. - - The value to shift - The amount of shift - Whether there are any less significant nonzero bits in the value - - - - - Determines whether a mantissa should be rounded up in the - round-to-nearest-ties-to-even mode given [1] the value of the least - significant bit of the mantissa, [2] the value of the next bit after - the least significant bit (the "round" bit) and [3] whether any - trailing bits after the round bit are set. - - The mantissa is treated as an unsigned integer magnitude. - - For this function, "round up" is defined as "increase the magnitude" of the - mantissa. - - the least-significant bit of the representable value - the bit following the least-significant bit - true if there are any (less significant) bits set following roundBit - - - - - Multiply a BigInteger by the given power of two. - - The BigInteger to multiply by a power of two and replace with the product - The power of two to multiply it by - - - - Multiply a BigInteger by the given power of ten. - - The BigInteger to multiply by a power of ten and replace with the product - The power of ten to multiply it by - - - - Convert a float value to the bits of its representation - - - - - Convert the bits of its representation to a float - - - - - A union used to convert between a float and the bits of its representation - - - - - Adds aliases of a specified reference to the merged set of aliases. - Consider the following special cases: - - o {} + {} = {} - If neither reference has any aliases then the result has no aliases. - - o {A} + {} = {A, global} - {} + {A} = {A, global} - - If one and only one of the references has aliases we add the global alias since the - referenced declarations should now be accessible both via existing aliases - as well as unqualified. - - o {A, A} + {A, B, B} = {A, A, B, B} - We preserve dups in each alias array, but avoid making more dups when merging. - - - - - Defines a set of helper methods to classify Unicode characters. - - - - - Returns true if the Unicode character can be a part of an identifier. - - The Unicode character. - - - - Check that the name is a valid Unicode identifier. - - - - - Returns true if the Unicode character is a formatting character (Unicode class Cf). - - The Unicode character. - - - - Returns true if the Unicode character is a formatting character (Unicode class Cf). - - The Unicode character. - - - - A strongly-typed resource class, for looking up localized strings, etc. - - - - - Returns the cached ResourceManager instance used by this class. - - - - - Overrides the current thread's CurrentUICulture property for all - resource lookups using this strongly typed resource class. - - - - - Looks up a localized string similar to Absolute path expected.. - - - - - Looks up a localized string similar to Analyzer Driver Failure. - - - - - Looks up a localized string similar to Analyzer driver threw an exception of type '{0}' with message '{1}'.. - - - - - Looks up a localized string similar to Analyzer driver threw the following exception: - '{0}'.. - - - - - Looks up a localized string similar to Time (s). - - - - - Looks up a localized string similar to Analyzer. - - - - - Looks up a localized string similar to Total analyzer execution time: {0} seconds.. - - - - - Looks up a localized string similar to Argument cannot be empty.. - - - - - Looks up a localized string similar to Argument cannot have a null element.. - - - - - Looks up a localized string similar to Arrays with more than one dimension cannot be serialized.. - - - - - Looks up a localized string similar to assembly. - - - - - Looks up a localized string similar to Assembly file not found. - - - - - Looks up a localized string similar to Assembly must have at least one module.. - - - - - Looks up a localized string similar to Assembly signing not supported.. - - - - - Looks up a localized string similar to Can't alias a module.. - - - - - Looks up a localized string similar to Can't create a reference to a module.. - - - - - Looks up a localized string similar to Can't create a reference to a submission.. - - - - - Looks up a localized string similar to Can't embed interop types from module.. - - - - - Looks up a localized string similar to Can't create a module reference to an assembly.. - - - - - Looks up a localized string similar to Can't create a metadata reference to an assembly without location.. - - - - - Looks up a localized string similar to Can't create a metadata reference to a dynamic assembly.. - - - - - Looks up a localized string similar to The changes must be ordered and not overlapping.. - - - - - Looks up a localized string similar to class. - - - - - Looks up a localized string similar to Win32 resources, assumed to be in COFF object format, have one or more invalid relocation header values.. - - - - - Looks up a localized string similar to Win32 resources, assumed to be in COFF object format, have an invalid section size.. - - - - - Looks up a localized string similar to Win32 resources, assumed to be in COFF object format, have one or more invalid symbol values.. - - - - - Looks up a localized string similar to Win32 resources, assumed to be in COFF object format, are missing one or both of sections '.rsrc$01' and '.rsrc$02'. - - - - - Looks up a localized string similar to Compilation options must not have errors.. - - - - - Looks up a localized string similar to Analyzer Failure. - - - - - Looks up a localized string similar to Analyzer '{0}' threw an exception of type '{1}' with message '{2}'.. - - - - - Looks up a localized string similar to Analyzer '{0}' threw the following exception: - '{1}'.. - - - - - Looks up a localized string similar to constructor. - - - - - Looks up a localized string similar to delegate. - - - - - Looks up a localized string similar to A DiagnosticDescriptor must have an Id that is neither null nor an empty string nor a string that only contains white space.. - - - - - Looks up a localized string similar to Argument contains duplicate analyzer instances.. - - - - - Looks up a localized string similar to A key in the pathMap is empty.. - - - - - Looks up a localized string similar to Empty or invalid file name. - - - - - Looks up a localized string similar to Empty or invalid resource name. - - - - - Looks up a localized string similar to A value in the pathMap is empty.. - - - - - Looks up a localized string similar to 'end' must not be less than 'start'. - - - - - Looks up a localized string similar to enum. - - - - - Looks up a localized string similar to event. - - - - - Looks up a localized string similar to Expected non-empty public key. - - - - - Looks up a localized string similar to Could not locate the rule set file '{0}'.. - - - - - Looks up a localized string similar to field. - - - - - Looks up a localized string similar to File not found.. - - - - - Looks up a localized string similar to File size exceeds maximum allowed size of a valid metadata file.. - - - - - Looks up a localized string similar to {0}.GetMetadata() must return an instance of {1}.. - - - - - Looks up a localized string similar to Icon stream is not in the expected format.. - - - - - Looks up a localized string similar to Inconsistent language versions. - - - - - Looks up a localized string similar to <in-memory assembly>. - - - - - Looks up a localized string similar to <in-memory module>. - - - - - Looks up a localized string similar to interface. - - - - - Looks up a localized string similar to Invalid alias.. - - - - - Looks up a localized string similar to Invalid assembly name: '{0}'. - - - - - Looks up a localized string similar to Invalid characters in assembly culture name. - - - - - Looks up a localized string similar to Invalid characters in assembly name. - - - - - Looks up a localized string similar to Invalid compilation options -- submission can't be signed.. - - - - - Looks up a localized string similar to Invalid content type. - - - - - Looks up a localized string similar to Invalid culture name: '{0}'. - - - - - Looks up a localized string similar to Invalid data at offset {0}: {1}{2}*{3}{4}. - - - - - Looks up a localized string similar to Reported diagnostic has an ID '{0}', which is not a valid identifier.. - - - - - Looks up a localized string similar to Invalid hash.. - - - - - Looks up a localized string similar to Invalid module name specified in metadata module '{0}': '{1}'. - - - - - Looks up a localized string similar to Node to track is not a descendant of the root.. - - - - - Looks up a localized string similar to Invalid output kind for submission. DynamicallyLinkedLibrary expected.. - - - - - Looks up a localized string similar to Invalid public key.. - - - - - Looks up a localized string similar to Invalid public key token.. - - - - - Looks up a localized string similar to An error occurred while loading the included rule set file {0} - {1}. - - - - - Looks up a localized string similar to Invalid size of public key token.. - - - - - Looks up a localized string similar to Syntax tree doesn't belong to the underlying 'Compilation'.. - - - - - Looks up a localized string similar to Argument to '/keepalive' option is not a 32-bit integer.. - - - - - Looks up a localized string similar to Arguments to '/keepalive' option below -1 are invalid.. - - - - - Looks up a localized string similar to '/keepalive' option is only valid with '/shared' option.. - - - - - Looks up a localized string similar to A key in the pathMap ends with a path separator.. - - - - - Looks up a localized string similar to method. - - - - - Looks up a localized string similar to Roslyn compiler server reports different protocol version than build task.. - - - - - Looks up a localized string similar to Missing argument for '/keepalive' option.. - - - - - Looks up a localized string similar to The item specified is not the element of a list.. - - - - - Looks up a localized string similar to module. - - - - - Looks up a localized string similar to Module copy can't be used to create an assembly metadata.. - - - - - Looks up a localized string similar to NOTE: Elapsed time may be less than analyzer execution time because analyzers can run concurrently.. - - - - - Looks up a localized string similar to Name cannot be empty.. - - - - - Looks up a localized string similar to Name cannot start with whitespace.. - - - - - Looks up a localized string similar to Name contains invalid characters.. - - - - - Looks up a localized string similar to No analyzers found. - - - - - Looks up a localized string similar to Cannot deserialize type '{0}', no binder supplied.. - - - - - Looks up a localized string similar to A node or token is out of sequence.. - - - - - Looks up a localized string similar to Cannot deserialize type '{0}', it has no deserialization reader.. - - - - - Looks up a localized string similar to The type '{0}' cannot be written, it does not implement IObjectWritable. - - - - - Looks up a localized string similar to Output kind not supported.. - - - - - Looks up a localized string similar to parameter. - - - - - Looks up a localized string similar to Path returned by {0}.ResolveMetadataFile must be absolute: '{1}'. - - - - - Looks up a localized string similar to Path returned by {0}.ResolveStrongNameKeyFile must be absolute: '{1}'. - - - - - Looks up a localized string similar to PE image doesn't contain managed metadata.. - - - - - Looks up a localized string similar to PE image not available.. - - - - - Looks up a localized string similar to Previous submission has errors.. - - - - - Looks up a localized string similar to property, indexer. - - - - - Looks up a localized string similar to Reference resolver should return readable non-null stream.. - - - - - Looks up a localized string similar to Resource data provider should return non-null stream. - - - - - Looks up a localized string similar to Resource stream ended at {0} bytes, expected {1} bytes.. - - - - - Looks up a localized string similar to Resource stream provider should return non-null stream.. - - - - - Looks up a localized string similar to return. - - - - - Looks up a localized string similar to Return type can't be a value type, pointer, by-ref or open generic type. - - - - - Looks up a localized string similar to Return type can't be void, by-ref or open generic type. - - - - - Looks up a localized string similar to The attribute {0} has an invalid value of {1}.. - - - - - Looks up a localized string similar to The rule set file has duplicate rules for '{0}' with differing actions '{1}' and '{2}'.. - - - - - Looks up a localized string similar to The element {0} is missing an attribute named {1}.. - - - - - Looks up a localized string similar to Size has to be positive.. - - - - - Looks up a localized string similar to Then span does not include the end of a line.. - - - - - Looks up a localized string similar to The span does not include the start of a line.. - - - - - Looks up a localized string similar to 'start' must not be negative. - - - - - Looks up a localized string similar to Stream must support read and seek operations.. - - - - - Looks up a localized string similar to Stream must be writable.. - - - - - Looks up a localized string similar to struct. - - - - - Looks up a localized string similar to SymWriter doesn't support deterministic compilation. - - - - - Looks up a localized string similar to type must be a subclass of SyntaxAnnotation.. - - - - - Looks up a localized string similar to Type must be same as host object type of previous submission.. - - - - - Looks up a localized string similar to type parameter. - - - - - Looks up a localized string similar to A node in the list is not of the expected type.. - - - - - Looks up a localized string similar to Unresolved: . - - - - - Looks up a localized string similar to Argument contains an analyzer instance that does not belong to the 'Analyzers' for this CompilationWithAnalyzers instance.. - - - - - Looks up a localized string similar to Reported diagnostic with ID '{0}' is not supported by the analyzer.. - - - - - Looks up a localized string similar to Unsupported hash algorithm.. - - - - - Looks up a localized string similar to Value too large to be represented as a 30 bit unsigned integer.. - - - - - Looks up a localized string similar to WindowsRuntime identity can't be retargetable. - - - - - Looks up a localized string similar to References to XML documents are not supported.. - - - - - Maps an array builder to immutable array. - - - - The array to map - The mapping delegate - If the items's length is 0, this will return an empty immutable array - - - - Maps an array builder to immutable array. - - - - - The sequence to map - The mapping delegate - The extra input used by mapping delegate - If the items's length is 0, this will return an empty immutable array. - - - - Create BitArray with at least the specified number of bits. - - - - - return a bit array with all bits set from index 0 through bitCount-1 - - - - - - - Make a copy of a bit array. - - - - - - Is the given bit array null? - - - - - Modify this bit vector by bitwise AND-ing each element with the other bit vector. - For the purposes of the intersection, any bits beyond the current length will be treated as zeroes. - Return true if any changes were made to the bits of this bit vector. - - - - - Modify this bit vector by '|'ing each element with the other bit vector. - - - - - - The CachingLookup class provides a convenient representation of an ILookup that is based - upon a potentially slow lookup, and caches lookup results so that subsequent lookups are - fast. Internally a ConcurrentDictionary is used to cache lookup results. The client provides - two delegates to perform lookups: One that maps a key to a IEnumerable of values, and one - that provides all keys. - - The client must provide an IEqualityComparer used for comparing keys. Failed lookups are - cached, but that has the disadvantage that every different failed lookup will consume a - small amount of extra memory. However, that memory can be reclaimed by forcing a full - population of the cache. - - Thread safe. - - - - - Create a CachingLookup. - - A function that takes a key, and returns an IEnumerable of values that - correspond to that key. If no values correspond, the function may either return null or an empty - IEnumerable. - A function that returns an IEnumerable of all keys that have associated values. - A IEqualityComparer used to compare keys. - - - - Does this key have one or more associated values? - - - - - Get the values associated with a key. - - Key to look up. - All values associated with key. Returns an empty IEnumerable if - no values are associated. Never returns null. - - - - Get the number of distinct keys. - Forces a full population of the cache. - - - - - Enumerate all the keys. - Forces a full population of the cache. - - - - - Add the values from all keys to a flat array. - Forces a full population of the cache. - - - - - - Create an instance of the concurrent dictionary. - - The concurrent dictionary - - - - Create a dictionary instance suitable for use as the fully populated map. - - A new, empty dictionary, suitable for use as the fully populated map. - - - - Use the underlying (possibly slow) functions to get the values associated with a key. - - - - - Add a new value with the given key to the given concurrent map. - - The concurrent map to augment. - The key of the new entry. - The added entry. If there was a race, and another thread beat this one, then this returns the previously added entry. - - - - Determines if the given map is fully populated. - - The map to test. - true if the map is fully populated. - - - - Create the fully populated map from an existing map and the key generator. - - The existing map which may be null or a ConcurrentDictionary. - - - - - Fully populate the underlying dictionary. Once this returns, the dictionary is guaranteed - to have every key in it. - - - - - A MultiDictionary that allows only adding, and - preserves the order of values added to the dictionary. - Thread-safe for reading, but not for adding. - - - Always uses the default comparer. - - - - - Each value is either a single V or an . - Null when the dictionary is empty. - Don't access the field directly. - - - - - Add a value to the dictionary. - - - - - Add multiple values to the dictionary. - - - - - Get the number of values associated with a key. - - - - - Returns true if one or more items with given key have been added. - - - - - Get all values associated with K, in the order they were added. - Returns empty read-only array if no values were present. - - - - - Get a collection of all the keys. - - - - - The usage is: - var inst = PooledStringBuilder.GetInstance(); - var sb = inst.builder; - ... Do Stuff... - ... sb.ToString() ... - inst.Free(); - - - - - A set of ints that is small, thread-safe and lock free. - Several assumptions have been made that allow it to be small and fast: - 1. Deletes never happen. - 2. The size is small. In dogfooding experiments, 89% had 4 or fewer elements and - 98% had 8 or fewer elements. The largest size was 17. - 3. As a result of assumption 2, linear look-up is good enough. - 4. One value, in this case int.MinValue, is used as a sentinel and may never appear in the set. - - - - - Determine if the given integer appears in the set. - - The value to look up. - true if appears in the set. false otherwise. - - - - Insert the given value into the set. - - The value to insert - true if was added. false if it was already present. - - - - If the given slot is unoccupied, then try to replace it with a new value. - - The slot to examine. - The new value to insert if the slot is unoccupied. - An out param indicating whether the slot was successfully updated. - true if the value in the slot either now contains, or already contained . false otherwise. - - - - Extension methods associated with ConsList. - - - - - Returns the only element of specified sequence if it has exactly one, and default(TSource) otherwise. - Unlike doesn't throw if there is more than one element in the sequence. - - - - - A simple class to implement IGrouping. - - - - - A dictionary that maps strings to all known spellings of that string. Can be used to - efficiently store the set of known type names for a module for both VB and C# while also - answering questions like "do you have a type called Foo" in either a case sensitive or - insensitive manner. - - - - - The collection of extension methods for the type - - - - - Converts a sequence to an immutable array. - - Elemental type of the sequence. - The sequence to convert. - An immutable copy of the contents of the sequence. - If items is null (default) - If the sequence is null, this will throw - - - - Converts a sequence to an immutable array. - - Elemental type of the sequence. - The sequence to convert. - An immutable copy of the contents of the sequence. - If the sequence is null, this will return an empty array. - - - - Converts a sequence to an immutable array. - - Elemental type of the sequence. - The sequence to convert. - An immutable copy of the contents of the sequence. - If the sequence is null, this will return the default (null) array. - - - - Converts an array to an immutable array. The array must not be null. - - - The sequence to convert - - - - - Converts a array to an immutable array. - - - The sequence to convert - - If the sequence is null, this will return the default (null) array. - - - - Converts an array to an immutable array. - - - The sequence to convert - If the array is null, this will return an empty immutable array. - - - - Reads bytes from specified . - - The stream. - Read-only content of the stream. - - - - Maps an immutable array to another immutable array. - - - - The array to map - The mapping delegate - If the items's length is 0, this will return an empty immutable array - - - - Maps an immutable array to another immutable array. - - - - - The sequence to map - The mapping delegate - The extra input used by mapping delegate - If the items's length is 0, this will return an empty immutable array. - - - - Maps an immutable array to another immutable array. - - - - - The sequence to map - The mapping delegate - The extra input used by mapping delegate - If the items's length is 0, this will return an empty immutable array. - - - - Creates a new immutable array based on filtered elements by the predicate. The array must not be null. - - - The array to process - The delegate that defines the conditions of the element to search for. - - - - - Casts the immutable array of a Type to an immutable array of its base type. - - - - - Determines whether this instance and another immutable array are equal. - - - - - The comparer to determine if the two arrays are equal. - True if the two arrays are equal - - - - Returns an empty array if the input array is null (default) - - - - - Returns an array of distinct elements, preserving the order in the original array. - If the array has no duplicates, the original array is returned. The original array must not be null. - - - - - Describes a command line analyzer assembly specification. - - - - - Assembly file path. - - - - - Describes a command line metadata reference (assembly or netmodule) specification. - - - - - Metadata file path or an assembly display name. - - - - - Metadata reference properties. - - - - - Describes a source file specification stored on command line arguments. - - - - - Resolved absolute path of the source file (does not contain wildcards). - - - Although this path is absolute it may not be normalized. That is, it may contain ".." and "." in the middle. - - - - - True if the file should be treated as a script file. - - - - - The base class for representing command line arguments to a - . - - - - - Drop to an interactive loop. If a script is specified in executes the script first. - - - - - Directory used to resolve relative paths stored in the arguments. - - - Except for paths stored in , all - paths stored in the properties of this class are resolved and - absolute. This is the directory that relative paths specified on - command line were resolved against. - - - - - A list of pairs of paths. This stores the value of the command-line compiler - option /pathMap:X1=Y1;X2=Y2... which causes a prefix of X1 followed by a path - separator to be replaced by Y1 followed by a path separator, and so on for each following pair. - - - This option is used to help get build-to-build determinism even when the build - directory is different from one build to the next. The prefix matching is case sensitive. - - - - - Sequence of absolute paths used to search for references. - - - - - Sequence of absolute paths used to search for sources specified as #load directives. - - - - - Sequence of absolute paths used to search for key files. - - - - - If true, use UTF8 for output. - - - - - Compilation name or null if not specified. - - - - - Gets the emit options. - - - - - Name of the output file or null if not specified. - - - - - Path of the PDB file or null if same as output binary path with .pdb extension. - - - - - True to emit PDB file. - - - - - Absolute path of the output directory. - - - - - Absolute path of the documentation comment XML file or null if not specified. - - - - - Absolute path of the error log file or null if not specified. - - - - - An absolute path of the App.config file or null if not specified. - - - - - Errors while parsing the command line arguments. - - - - - References to metadata supplied on the command line. - Includes assemblies specified via /r and netmodules specified via /addmodule. - - - - - References to analyzers supplied on the command line. - - - - - A set of additional non-code text files that can be used by analyzers. - - - - - Report additional information related to analyzers, such as analyzer execution time. - - - - - If true, prepend the command line header logo during - . - - - - - If true, append the command line help during - - - - - - The path to a Win32 resource. - - - - - The path to a .ico icon file. - - - - - The path to a Win32 manifest file to embed - into the output portable executable (PE) file. - - - - - If true, do not embed any Win32 manifest, including - one specified by or any - default manifest. - - - - - Resources specified as arguments to the compilation. - - - - - Encoding to be used for source files or 'null' for autodetect/default. - - - - - Hash algorithm to use to calculate source file debug checksums. - - - - - Arguments following a script file or separator "--". Null if the command line parser is not interactive. - - - - - Source file paths. - - - Includes files specified directly on command line as well as files matching patterns specified - on command line using '*' and '?' wildcards or /recurse option. - - - - - Full path of a log of file paths accessed by the compiler, or null if file logging should be suppressed. - - - Two log files will be created: - One with path and extension ".read" logging the files read, - and second with path and extension ".write" logging the files written to during compilation. - - - - - If true, prints the full path of the file containing errors or - warnings in diagnostics. - - - - - Options to the . - - - - - - Options to the . - - - - - Specify the preferred output language name. - - - - - Resolves metadata references stored in using given file resolver and metadata provider. - - to use for assembly name and relative path resolution. - Yields resolved metadata references or . - is null. - - - - Resolves metadata references stored in using given file resolver and metadata provider. - If a non-null diagnostic bag is provided, it catches exceptions that may be generated while reading the metadata file and - reports appropriate diagnostics. - Otherwise, if is null, the exceptions are unhandled. - - - called by CommonCompiler with diagnostics and message provider - - - - - Resolves analyzer references stored in using given file resolver. - - Load an assembly from a file path - Yields resolved or . - - - - Enumerates files in the specified directory and subdirectories whose name matches the given pattern. - - Full path of the directory to enumerate. - File name pattern. May contain wildcards '*' (matches zero or more characters) and '?' (matches any character). - Specifies whether to search the specified only, or all its subdirectories as well. - Sequence of file paths. - - - - Parses a command line. - - A collection of strings representing the command line arguments. - The base directory used for qualifying file locations. - The directory to search for mscorlib, or null if not available. - A string representing additional reference paths. - a object representing the parsed command line. - - - - Trims all '.' and whitespace from the end of the path - - - - - Returns false if any of the client arguments are invalid and true otherwise. - - - The original args to the client. - - - The original args minus the client args, if no errors were encountered. - - - Only defined if no errors were encountered. - True if '/shared' was an argument, false otherwise. - - - Only defined if no errors were encountered. - The value to the '/keepalive' argument if one was specified, null otherwise. - - - Only defined if errors were encountered. - The error message for the encountered error. - - - - - Parse a response file into a set of arguments. Errors opening the response file are output into "errors". - - - - - Take a string of lines from a response file, remove comments, - and split into a set of command line arguments. - - - - - Split a command line by the same rules as Main would get the commands except the original - state of backslashes and quotes are preserved. For example in normal Windows command line - parsing the following command lines would produce equivalent Main arguments: - - - /r:a,b - - /r:"a,b" - - This method will differ as the latter will have the quotes preserved. The only case where - quotes are removed is when the entire argument is surrounded by quotes without any inner - quotes. - - - Rules for command line parsing, according to MSDN: - - Arguments are delimited by white space, which is either a space or a tab. - - A string surrounded by double quotation marks ("string") is interpreted - as a single argument, regardless of white space contained within. - A quoted string can be embedded in an argument. - - A double quotation mark preceded by a backslash (\") is interpreted as a - literal double quotation mark character ("). - - Backslashes are interpreted literally, unless they immediately precede a - double quotation mark. - - If an even number of backslashes is followed by a double quotation mark, - one backslash is placed in the argv array for every pair of backslashes, - and the double quotation mark is interpreted as a string delimiter. - - If an odd number of backslashes is followed by a double quotation mark, - one backslash is placed in the argv array for every pair of backslashes, - and the double quotation mark is "escaped" by the remaining backslash, - causing a literal double quotation mark (") to be placed in argv. - - - - - Remove the extraneous quotes and slashes from the argument. This function is designed to have - compat behavior with the native compiler. - - - Mimics the function RemoveQuotes from the native C# compiler. The native VB equivalent of this - function is called RemoveQuotesAndSlashes. It has virtually the same behavior except for a few - quirks in error cases. - - - - - Mimic behavior of the native function by the same name. - - - - - Split a string, based on whether "splitHere" returned true on each character. - - - - - Split a string by a set of separators, taking quotes into account. - - - - - Tries to parse a UInt64 from string in either decimal, octal or hex format. - - The string value. - The result if parsing was successful. - true if parsing was successful, otherwise false. - - - - Tries to parse a UInt16 from string in either decimal, octal or hex format. - - The string value. - The result if parsing was successful. - true if parsing was successful, otherwise false. - - - - Base class for csc.exe, csi.exe, vbc.exe and vbi.exe implementations. - - - - - This implementation of will delay the creation - of the PE / PDB file until the compiler determines the compilation has succeeded. This prevents - the compiler from deleting output from the previous compilation when a new compilation - fails. - - - - - Resolves metadata references stored in command line arguments and reports errors for those that can't be resolved. - - - - - Reads content of a source file. - - Source file information. - Storage for diagnostics. - File content or null on failure. - - - - Reads content of a source file. - - Source file information. - Storage for diagnostics. - If given opens successfully, set to normalized absolute path of the file, null otherwise. - File content or null on failure. - - - - csc.exe and vbc.exe entry point. - - - - - Given a compilation and a destination directory, determine three names: - 1) The name with which the assembly should be output (default = null, which indicates that the compilation output name should be used). - 2) The path of the assembly/module file (default = destination directory + compilation output name). - 3) The path of the pdb file (default = assembly/module path with ".pdb" extension). - - - C# has a special implementation that implements idiosyncratic behavior of csc. - - - - - Test hook for intercepting File.Open. - - - - - When overridden by a derived class, this property can override the current thread's - CurrentUICulture property for diagnostic message resource lookups. - - - - - Looks for metadata references among the assembly file references given to the compilation when constructed. - When scripts are included into a project we don't want #r's to reference other assemblies than those - specified explicitly in the project references. - - - - - Used for logging all compiler diagnostics into a given . - This logger is responsible for closing the given stream on . - - - - - Represents an issue to be logged into the error log. - This could be corresponding to a or a reported by the . - - - - - Represents a value for a key-value pair to be emitted into the error log file. - This could be a simple string or an integer OR could be a list of identical values OR a group of heterogeneous key-value pairs. - - - - - Contains well known property strings for error log file. - - - - - Used for logging all the paths which are "touched" (used) in any way - in the process of compilation. - - - - - Adds a fully-qualified path to the Logger for a read file. - Semantics are undefined after a call to . - - - - - Adds a fully-qualified path to the Logger for a written file. - Semantics are undefined after a call to . - - - - - Adds a fully-qualified path to the Logger for a read and written - file. Semantics are undefined after a call to - . - - - - - Writes all of the paths the TouchedFileLogger to the given - TextWriter in upper case. After calling this method the - logger is in an undefined state. - - - - - Writes all of the paths the TouchedFileLogger to the given - TextWriter in upper case. After calling this method the - logger is in an undefined state. - - - - - The compilation object is an immutable representation of a single invocation of the - compiler. Although immutable, a compilation is also on-demand, and will realize and cache - data as necessary. A compilation can produce a new compilation from existing compilation - with the application of small deltas. In many cases, it is more efficient than creating a - new compilation from scratch, as the new compilation can reuse information from the old - compilation. - - - The compilation object is an immutable representation of a single invocation of the - compiler. Although immutable, a compilation is also on-demand, and will realize and cache - data as necessary. A compilation can produce a new compilation from existing compilation - with the application of small deltas. In many cases, it is more efficient than creating a - new compilation from scratch, as the new compilation can reuse information from the old - compilation. - - - - - Abstraction that allows the caller to delay the creation of the values - until they are actually needed. - - - - - Returns an existing open stream or null if no stream has been open. - - - - - This method will be called once during Emit at the time the Compilation needs - to create a stream for writing. It will not be called in the case of - user errors in code. Shall not be called when returns non-null. - - - - - Returns true if this is a case sensitive compilation, false otherwise. Case sensitivity - affects compilation features such as name lookup as well as choosing what names to emit - when there are multiple different choices (for example between a virtual method and an - override). - - - - - Used for test purposes only to emulate missing members. - - - - - Used for test purposes only to emulate missing members. - - - - - Gets the source language ("C#" or "Visual Basic"). - - - - - Checks options passed to submission compilation constructor. - Throws an exception if the options are not applicable to submissions. - - - - - Creates a new compilation equivalent to this one with different symbol instances. - - - - - Returns a new compilation with a given event queue. - - - - - Gets a new for the specified syntax tree. - - The specified syntax tree. - - True if the SemanticModel should ignore accessibility rules when answering semantic questions. - - - - - Returns a new INamedTypeSymbol representing an error type with the given name and arity - in the given optional container. - - - - - Simple assembly name, or null if not specified. - - - The name is used for determining internals-visible-to relationship with referenced assemblies. - - If the compilation represents an assembly the value of is its simple name. - - Unless specifies otherwise the module name - written to metadata is with an extension based upon . - - - - - Creates a compilation with the specified assembly name. - - The new assembly name. - A new compilation. - - - - Gets the options the compilation was created with. - - - - - Creates a new compilation with the specified compilation options. - - The new options. - A new compilation. - - - - True if the compilation represents an interactive submission. - - - - - Gets or allocates a runtime submission slot index for this compilation. - - Non-negative integer if this is a submission and it or a previous submission contains code, negative integer otherwise. - - - - The type object that represents the type of submission result the host requested. - - - - - The type of the globals object or null if not specified for this compilation. - - - - - Gets the syntax trees (parsed from source code) that this compilation was created with. - - - - - Creates a new compilation with additional syntax trees. - - The new syntax trees. - A new compilation. - - - - Creates a new compilation with additional syntax trees. - - The new syntax trees. - A new compilation. - - - - Creates a new compilation without the specified syntax trees. Preserves metadata info for use with trees - added later. - - The new syntax trees. - A new compilation. - - - - Creates a new compilation without the specified syntax trees. Preserves metadata info for use with trees - added later. - - The new syntax trees. - A new compilation. - - - - Creates a new compilation without any syntax trees. Preserves metadata info for use with - trees added later. - - - - - Creates a new compilation with an old syntax tree replaced with a new syntax tree. - Reuses metadata from old compilation object. - - The new tree. - The old tree. - A new compilation. - - - - Returns true if this compilation contains the specified tree. False otherwise. - - A syntax tree. - - - - The event queue that this compilation was created with. - - - - - Metadata references passed to the compilation constructor. - - - - - Unique metadata references specified via #r directive in the source code of this compilation. - - - - - All reference directives used in this compilation. - - - - - Maps values of #r references to resolved metadata references. - - - - - All metadata references -- references passed to the compilation - constructor as well as references specified via #r directives. - - - - - Creates a metadata reference for this compilation. - - - Optional aliases that can be used to refer to the compilation root namespace via extern alias directive. - - - Embed the COM types from the reference so that the compiled - application no longer requires a primary interop assembly (PIA). - - - - - Creates a new compilation with the specified references. - - - The new references. - - A new compilation. - - - - Creates a new compilation with the specified references. - - The new references. - A new compilation. - - - - Creates a new compilation with the specified references. - - - - - Creates a new compilation with additional metadata references. - - The new references. - A new compilation. - - - - Creates a new compilation with additional metadata references. - - The new references. - A new compilation. - - - - Creates a new compilation without the specified metadata references. - - The new references. - A new compilation. - - - - Creates a new compilation without the specified metadata references. - - The new references. - A new compilation. - - - - Creates a new compilation without any metadata references. - - - - - Creates a new compilation with an old metadata reference replaced with a new metadata - reference. - - The new reference. - The old reference. - A new compilation. - - - - Gets the or for a metadata reference used to create this - compilation. - - The target reference. - - Assembly or module symbol corresponding to the given reference or null if there is none. - - - - - Gets the that corresponds to the assembly symbol. - - The target symbol. - - - - Assembly identities of all assemblies directly referenced by this compilation. - - - Includes identities of references passed in the compilation constructor - as well as those specified via directives in source code. - - - - - The that represents the assembly being created. - - - - - Gets the for the module being created by compiling all of - the source code. - - - - - The root namespace that contains all namespaces and types defined in source code or in - referenced metadata, merged into a single namespace hierarchy. - - - - - Gets the corresponding compilation namespace for the specified module or assembly namespace. - - - - - Returns the Main method that will serves as the entry point of the assembly, if it is - executable (and not a script). - - - - - Get the symbol for the predefined type from the Cor Library referenced by this - compilation. - - - - - Returns true if the type is System.Type. - - - - - Returns true if the specified type is equal to or derives from System.Attribute well-known type. - - - - - The INamedTypeSymbol for the .NET System.Object type, which could have a TypeKind of - Error if there was no COR Library in this Compilation. - - - - - The TypeSymbol for the type 'dynamic' in this Compilation. - - - - - A symbol representing the implicit Script class. This is null if the class is not - defined in the compilation. - - - - - Returns a new ArrayTypeSymbol representing an array type tied to the base types of the - COR Library in this Compilation. - - - - - Returns a new PointerTypeSymbol representing a pointer type tied to a type in this - Compilation. - - - - - Gets the type within the compilation's assembly and all referenced assemblies (other than - those that can only be referenced via an extern alias) using its canonical CLR metadata name. - - Null if the type can't be found. - - Since VB does not have the concept of extern aliases, it considers all referenced assemblies. - - - - - Gets the diagnostics produced during the parsing stage. - - - - - Gets the diagnostics produced during symbol declaration. - - - - - Gets the diagnostics produced during the analysis of method bodies and field initializers. - - - - - Gets all the diagnostics for the compilation, including syntax, declaration, and - binding. Does not include any diagnostics that might be produced during emit, see - . - - - - Bag to which filtered diagnostics will be added. - Diagnostics to be filtered. - True if there were no errors or warnings-as-errors. - - - - Create a stream filled with default win32 resources. - - - - - Constructs the module serialization properties out of the compilation options of this compilation. - - - - - The value is not used by Windows loader, but the OS appcompat infrastructure uses it to identify apps. - It is useful for us to have a mechanism to identify the compiler that produced the binary. - This is the appropriate value to use for that. That is what it was invented for. - We don't want to have the high bit set for this in case some users perform a signed comparison to - determine if the value is less than some version. The C++ linker is at 0x0B. - We'll start our numbering at 0x30 for C#, 0x50 for VB. - - - - - Return true if the compilation contains any code or types. - - - - - Emit the IL for the compiled source code into the specified stream. - - Stream to which the compilation will be written. - Stream to which the compilation's debug info will be written. Null to forego PDB generation. - Stream to which the compilation's XML documentation will be written. Null to forego XML generation. - Stream from which the compilation's Win32 resources will be read (in RES format). - Null to indicate that there are none. The RES format begins with a null resource entry. - List of the compilation's managed resources. Null to indicate that there are none. - Emit options. - To cancel the emit process. - - - - Emit the IL for the compiled source code into the specified stream. - - Stream to which the compilation will be written. - Stream to which the compilation's debug info will be written. Null to forego PDB generation. - Stream to which the compilation's XML documentation will be written. Null to forego XML generation. - Stream from which the compilation's Win32 resources will be read (in RES format). - Null to indicate that there are none. The RES format begins with a null resource entry. - List of the compilation's managed resources. Null to indicate that there are none. - Emit options. - - Debug entry-point of the assembly. The method token is stored in the generated PDB stream. - - When a program launches with a debugger attached the debugger places the first breakpoint to the start of the debug entry-point method. - The CLR starts executing the static Main method of type. When the first breakpoint is hit - the debugger steps thru the code statement by statement until user code is reached, skipping methods marked by , - and taking other debugging attributes into consideration. - - By default both entry points in an executable program (, , ) - are the same method (Main). A non-executable program has no entry point. Runtimes that implement a custom loader may specify debug entry-point - to force the debugger to skip over complex custom loader logic executing at the beginning of the .exe and thus improve debugging experience. - - Unlike ordinary entry-point which is limited to a non-generic static method of specific signature, there are no restrictions on the - method other than having a method body (extern, interface, or abstract methods are not allowed). - - To cancel the emit process. - - - - This overload is only intended to be directly called by tests that want to pass . - The map is used for storing a list of methods and their associated IL. - - True if emit succeeded. - - - - Emit the differences between the compilation and the previous generation - for Edit and Continue. The differences are expressed as added and changed - symbols, and are emitted as metadata, IL, and PDB deltas. A representation - of the current compilation is returned as an EmitBaseline for use in a - subsequent Edit and Continue. - - - - - Emit the differences between the compilation and the previous generation - for Edit and Continue. The differences are expressed as added and changed - symbols, and are emitted as metadata, IL, and PDB deltas. A representation - of the current compilation is returned as an EmitBaseline for use in a - subsequent Edit and Continue. - - - - - This overload is only intended to be directly called by tests that want to pass . - The map is used for storing a list of methods and their associated IL. - - True if emit succeeded. - - - - The compiler needs to define an ordering among different partial class in different syntax trees - in some cases, because emit order for fields in structures, for example, is semantically important. - This function defines an ordering among syntax trees in this compilation. - - - - - Compare two source locations, using their containing trees, and then by Span.First within a tree. - Can be used to get a total ordering on declarations, for example. - - - - - Return the lexically first of two locations. - - - - - Return the lexically first of multiple locations. - - - - - Return true if there is a source declaration symbol name that meets given predicate. - - - - - Return source declaration symbols whose name meets given predicate. - - - - - The list of RetargetingAssemblySymbol objects created for this Compilation. - RetargetingAssemblySymbols are created when some other compilation references this one, - but the other references provided are incompatible with it. For example, compilation C1 - references v1 of Lib.dll and compilation C2 references C1 and v2 of Lib.dll. In this - case, in context of C2, all types from v1 of Lib.dll leaking through C1 (through method - signatures, etc.) must be retargeted to the types from v2 of Lib.dll. This is what - RetargetingAssemblySymbol is responsible for. In the example above, modules in C2 do not - reference C1.AssemblySymbol, but reference a special RetargetingAssemblySymbol created - for C1 by ReferenceManager. - - WeakReference is used to allow RetargetingAssemblySymbol to be collected when they become unused. - - Guarded by . - - - - - Adds given retargeting assembly for this compilation into the cache. - must be locked while calling this method. - - - - - Adds cached retargeting symbols into the given list. - must be locked while calling this method. - - - - - Indicate what kinds of declaration symbols will be included - - - - - None - - - - - include namespace symbols - - - - - include type symbols - - - - - include member symbols such as method, event, property, field - - - - - include type and member - - - - - include all namespace, type and member - - - - - Policy to be used when matching assembly reference to an assembly definition across platforms. - - - - - Converts to . - - Major, minor, build or revision number are less than 0 or greater than 0xFFFF. - - - Assembly portability policy, usually provided through an app.config file. - - - - Loads information from XML with App.config schema. - - The stream doesn't contain a well formed XML. - is null. - - Tries to find supportPortability elements in the given XML: - - - - - - - - - ]]> - - Keeps the stream open. - - - - - Returns true if the identity is a Framework 4.5 or lower assembly. - - - - - Provides strong name and signs source assemblies. - - - - - Creates an instance of . - - - An ordered set of fully qualified paths which are searched when locating a cryptographic key file. - - - - - Resolves assembly strong name key file path. - Internal for testing. - - Normalized key file path or null if not found. - - - - - - - - - - - - - - - - Handles loading analyzer assemblies and their dependencies. - - Before an analyzer assembly is loaded with , - its location and the location of all of its dependencies must first be specified - by calls to . - - - To the extent possible, implementations should remain consistent in the face - of exceptions and allow the caller to handle them. This allows the caller to - decide how to surface issues to the user and whether or not they are fatal. For - example, if asked to load an a non-existent or inaccessible file a command line - tool may wish to exit immediately, while an IDE may wish to keep going and give - the user a chance to correct the issue. - - - - - Given the full path to an assembly on disk, loads and returns the - corresponding object. - - - Multiple calls with the same path should return the same - instance. - - - - - Adds a file to consider when loading an analyzer or its dependencies. - - - - - A localizable resource string that may possibly be formatted differently depending on culture. - - - - - Creates a localizable resource string with no formatting arguments. - - nameof the resource that needs to be localized. - for the calling assembly. - Type handling assembly's resource management. Typically, this is the static class generated for the resources file from which resources are accessed. - - - - Creates a localizable resource string that may possibly be formatted differently depending on culture. - - nameof the resource that needs to be localized. - for the calling assembly. - Type handling assembly's resource management. Typically, this is the static class generated for the resources file from which resources are accessed. - Optional arguments for formatting the localizable resource string. - - - - A string that may possibly be formatted differently depending on culture. - NOTE: Types implementing must be serializable. - - - - - FixedLocalizableString representing an empty string. - - - - - Fired when an exception is raised by any of the public methods of . - If the exception handler itself throws an exception, that exception is ignored. - - - - - Formats the value of the current instance using the optionally specified format. - - - - - Formats the value of the current instance using the optionally specified format. - Provides the implementation of ToString. ToString will provide a default value - if this method throws an exception. - - - - - Provides the implementation of GetHashCode. GetHashCode will provide a default value - if this method throws an exception. - - - - - - Provides the implementation of Equals. Equals will provide a default value - if this method throws an exception. - - - - - - Represents compilation emit options. - - - - - True to emit an assembly excluding executable code such as method bodies. - - - - - Tolerate errors, producing a PE stream and a success result even in the presence of (some) errors. - - - - - Unless set (private) members that don't affect the language semantics of the resulting assembly will be excluded - when emitting with on. - - - Has no effect when is false. - - - - - Subsystem version - - - - - Specifies the size of sections in the output file. - - - Valid values are 0, 512, 1024, 2048, 4096 and 8192. - If the value is 0 the file alignment is determined based upon the value of . - - - - - True to enable high entropy virtual address space for the output binary. - - - - - Specifies the preferred base address at which to load the output DLL. - - - - - Debug information format. - - - - - Assembly name override - file name and extension. If not specified the compilation name is used. - - - By default the name of the output assembly is . Only in rare cases it is necessary - to override the name. - - CAUTION: If this is set to a (non-null) value other than the existing compilation output name, then internals-visible-to - and assembly references may not work as expected. In particular, things that were visible at bind time, based on the - name of the compilation, may not be visible at runtime and vice-versa. - - - - - The name of the PDB file to be embedded in the PE image, or null to use the default. - - - If not specified the file name of the source module with an extension changed to "pdb" is used. - - - - - Runtime metadata version. - - - - - Sets the byte alignment for portable executable file sections. - - Can be one of the following values: 0, 512, 1024, 2048, 4096, 8192 - - - - No change. - - - - - Node value was updated. - - - - - Node was inserted. - - - - - Node was deleted. - - - - - Debugging information associated with the specified method that is emitted by the compiler to support Edit and Continue. - - - - - Deserializes Edit and Continue method debug information from specified blobs. - - Local variable slot map. - Lambda and closure map. - Invalid data. - - - Invalid data. - - - - Merges synthesized members generated during lowering of the current compilation with aggregate synthesized members - from all previous source generations (gen >= 1). - - - Suppose {S -> {A, B, D}, T -> {E, F}} are all synthesized members in previous generations, - and {S' -> {A', B', C}, U -> {G, H}} members are generated in the current compilation. - - Where X matches X' via this matcher, i.e. X' is from the new compilation and - represents the same metadata entity as X in the previous compilation. - - Then the resulting collection shall have the following entries: - {S' -> {A', B', C, D}, U -> {G, H}, T -> {E, F}} - - - - - The result of the Compilation.Emit method. - - - - - True if the compilation successfully produced an executable. - If false then the diagnostics should include at least one error diagnostic - indicating the cause of the failure. - - - - - A list of all the diagnostics associated with compilations. This include parse errors, declaration errors, - compilation errors, and emitting errors. - - - - - Name of the anonymous type field. - - - - - True if the anonymous type field was marked as 'Key' in VB. - - - - - is case insensitive. - - - - - Return tokens for all modified debuggable methods. - - - - - Add an item from a previous generation - that has been updated in this generation. - - - - - Represents a module from a previous compilation. Used in Edit and Continue - to emit the differences in a subsequent compilation. - - - - - Creates an from the metadata of the module before editing - and from a function that maps from a method to an array of local names. - - The metadata of the module before editing. - - A function that for a method handle returns Edit and Continue debug information emitted by the compiler into the PDB. - - An for the module. - - Only the initial baseline is created using this method; subsequent baselines are created - automatically when emitting the differences in subsequent compilations. - - When an active method (one for which a frame is allocated on a stack) is updated the values of its local variables need to be preserved. - The mapping of local variable names to their slots in the frame is not included in the metadata and thus needs to be provided by - . - - The is only needed for the initial generation. The mapping for the subsequent generations - is carried over through . The compiler assigns slots to named local variables (including named temporary variables) - it the order in which they appear in the source code. This property allows the compiler to reconstruct the local variable mapping - for the initial generation. A subsequent generation may add a new variable in between two variables of the previous generation. - Since the slots of the previous generation variables need to be preserved the only option is to add these new variables to the end. - The slot ordering thus no longer matches the syntax ordering. It is therefore necessary to pass - to the next generation (rather than e.g. create new s from scratch based on metadata produced by subsequent compilations). - - - - - The original metadata of the module. - - - - - Metadata generation ordinal. Zero for - full metadata and non-zero for delta. - - - - - Unique Guid for this delta, or default(Guid) - if full metadata. - - - - - EnC metadata for methods added or updated since the initial generation, indexed by method row id. - - - - - Local variable names for methods from metadata, - indexed by method row. - - - - - No change to symbol or members. - - - - - No change to symbol but may contain changed symbols. - - - - - Symbol updated. - - - - - Symbol added. - - - - - True if the symbol is a source symbol added during EnC session. - The symbol may be declared in any source compilation in the current solution. - - - - - Returns true if the symbol or some child symbol has changed and needs to be compiled. - - - - - Calculate the set of changes up to top-level types. The result - will be used as a filter when traversing the module. - - Note that these changes only include user-defined source symbols, not synthesized symbols since those will be - generated during lowering of the changed user-defined symbols. - - - - - Return the symbol that contains this symbol as far - as changes are concerned. For instance, an auto property - is considered the containing symbol for the backing - field and the accessor methods. By default, the containing - symbol is simply Symbol.ContainingSymbol. - - - - - Error type symbols should be replaced with an object of this class - in the translation layer for emit. - - - - - For the name we will use a word "Error" followed by a guid, generated on the spot. - - - - - A fake containing assembly for an ErrorType object. - - - - - For the name we will use a word "Error" followed by a guid, generated on the spot. - - - - - This is only used for testing. - - - - - This is only used for testing. - - - - - This is only used for testing. - - - - - Returns null if member doesn't belong to an embedded NoPia type. - - - - - Common base class for C# and VB PE module builder. - - - - - EnC generation. - - - - - Captures the set of synthesized definitions that should be added to a type - during emit process. - - - - - Returns null if there are no compiler generated types. - - - - - Returns null if there are no synthesized methods. - - - - - Returns null if there are no synthesized properties. - - - - - Returns null if there are no synthesized fields. - - - - - Builds symbol definition to location map used for emitting token -> location info - into PDB to be consumed by WinMdExp.exe tool (only applicable for /t:winmdobj) - - - - - Describes a symbol edit between two compilations. - For example, an addition of a method, an update of a method, removal of a type, etc. - - - - - The type of edit. - - - - - The symbol from the earlier compilation, - or null if the edit represents an addition. - - - - - The symbol from the later compilation, - or null if the edit represents a deletion. - - - - - A map from syntax node in the later compilation to syntax node in the previous compilation, - or null if is false and the map is not needed or - the source of the current method is the same as the source of the previous method. - - - The map does not need to map all syntax nodes in the active method, only those syntax nodes - that declare a local or generate a long lived local. - - - - - True if the edit is an update of the active method and local values - should be preserved; false otherwise. - - - - - Initializes an instance of . - - The type of edit. - - The symbol from the earlier compilation, or null if the edit represents an addition. - - - The symbol from the later compilation, or null if the edit represents a deletion. - - - A map from syntax node in the later compilation to syntax node in the previous compilation, - or null if is false and the map is not needed or - the source of the current method is the same as the source of the previous method. - - - True if the edit is an update of an active method and local values should be preserved; false otherwise. - - - or is null and the edit isn't an or , respectively. - - - is not a valid kind. - - - - - Encoding to use when there is no byte order mark (BOM) on the stream. This encoder may throw a - if the stream contains invalid UTF-8 bytes. - - - - - Encoding to use when UTF-8 fails. We try to find the following, in order, if available: - 1. The default ANSI codepage - 2. CodePage 1252. - 3. Latin1. - - - - - Initializes an instance of from the provided stream. This version differs - from in two ways: - 1. It attempts to minimize allocations by trying to read the stream into a byte array. - 2. If is null, it will first try UTF8 and, if that fails, it will - try CodePage 1252. If CodePage 1252 is not available on the system, then it will try Latin1. - - The stream containing encoded text. - - Specifies an encoding to be used if the actual encoding can't be determined from the stream content (the stream doesn't start with Byte Order Mark). - If not specified auto-detect heuristics are used to determine the encoding. If these heuristics fail the decoding is assumed to be Encoding.Default. - Note that if the stream starts with Byte Order Mark the value of is ignored. - - Hash algorithm used to calculate document checksum. - - The stream content can't be decoded using the specified , or - is null and the stream appears to be a binary file. - - An IO error occurred while reading from the stream. - - - - Try to create a from the given stream using the given encoding. - - The input stream containing the encoded text. The stream will not be closed. - The expected encoding of the stream. The actual encoding used may be different if byte order marks are detected. - The checksum algorithm to use. - Throw if binary (non-text) data is detected. - The decoded from the stream. - The decoder was unable to decode the stream with the given encoding. - - internal for unit testing - - - - - Some streams are easily represented as byte arrays. - - The stream - - The contents of as a byte array or null if the stream can't easily - be read into a byte array. - - - - - If the MemoryStream was created with publiclyVisible=true, then we can access its buffer - directly and save allocations in StreamReader. The input MemoryStream is not closed on exit. - - True if a byte array could be created. - - - - Read the contents of a FileStream into a byte array. - - The FileStream with encoded text. - A byte array filled with the contents of the file. - True if a byte array could be created. - - - - A composite of a sequence of s. - - - - - Validates the arguments passed to against the published contract. - - True if should bother to proceed with copying. - - - - A optimized for very large sources. The text is stored as - a list of chunks (char arrays). - - - - - internal for unit testing - - - - - Check for occurrence of two consecutive NUL (U+0000) characters. - This is unlikely to appear in genuine text, so it's a good heuristic - to detect binary files. - - - - - Called from to initialize the . Thereafter, - the collection is cached. - - A new representing the individual text lines. - - - - Immutable representation of a line number and position within a SourceText instance. - - - - - A that represents position 0 at line 0. - - - - - Initializes a new instance of a with the given line and character. - - - The line of the line position. The first line in a file is defined as line 0 (zero based line numbering). - - - The character position in the line. - - or is less than zero. - - - - The line number. The first line in a file is defined as line 0 (zero based line numbering). - - - - - The character position within the line. - - - - - Determines whether two are the same. - - - - - Determines whether two are different. - - - - - Determines whether two are the same. - - The object to compare. - - - - Determines whether two are the same. - - The object to compare. - - - - Provides a hash function for . - - - - - Provides a string representation for . - - 0,10 - - - - Immutable span represented by a pair of line number and index within the line. - - - - - Creates . - - Start position. - End position. - precedes . - - - - Gets the start position of the span. - - - - - Gets the end position of the span. - - - - - Provides a string representation for . - - (0,0)-(5,6) - - - - Specifies a hash algorithms used for hashing source files. - - - - - No algorithm specified. - - - - - Secure Hash Algorithm 1. - - - - - Secure Hash Algorithm 2 with a hash size of 256 bits. - - - - - An abstraction of source text. - - - - - Constructs a from text in a string. - - Text. - - Encoding of the file that the was read from or is going to be saved to. - null if the encoding is unspecified. - If the encoding is not specified the resulting isn't debuggable. - If an encoding-less is written to a file a shall be used as a default. - - - Hash algorithm to use to calculate checksum of the text that's saved to PDB. - - is null. - is not supported. - - - - Constructs a from stream content. - - Stream. The stream must be seekable. - - Data encoding to use if the stream doesn't start with Byte Order Mark specifying the encoding. - if not specified. - - - Hash algorithm to use to calculate checksum of the text that's saved to PDB. - - If the decoded text contains at least two consecutive NUL - characters, then an is thrown. - is null. - - doesn't support reading or seeking. - is not supported. - - If the given encoding is set to use a throwing decoder as a fallback - Two consecutive NUL characters were detected in the decoded text and was true. - An I/O error occurs. - Reads from the beginning of the stream. Leaves the stream open. - - - - Constructs a from a byte array. - - The encoded source buffer. - The number of bytes to read from the buffer. - - Data encoding to use if the encoded buffer doesn't start with Byte Order Mark. - if not specified. - - - Hash algorithm to use to calculate checksum of the text that's saved to PDB. - - If the decoded text contains at least two consecutive NUL - characters, then an is thrown. - The decoded text. - The is null. - The is negative or longer than the . - is not supported. - If the given encoding is set to use a throwing decoder as a fallback - Two consecutive NUL characters were detected in the decoded text and was true. - - - - Decode text from a stream. - - The stream containing encoded text. - The encoding to use if an encoding cannot be determined from the byte order mark. - The actual encoding used. - The decoded text. - If the given encoding is set to use a throwing decoder as a fallback - - - - Decode text from a byte array. - - The byte array containing encoded text. - The count of valid bytes in . - The encoding to use if an encoding cannot be determined from the byte order mark. - The actual encoding used. - The decoded text. - If the given encoding is set to use a throwing decoder as a fallback - - - - Check for occurrence of two consecutive NUL (U+0000) characters. - This is unlikely to appear in genuine text, so it's a good heuristic - to detect binary files. - - - internal for unit testing - - - - - Hash algorithm to use to calculate checksum of the text that's saved to PDB. - - - - - Encoding of the file that the text was read from or is going to be saved to. - null if the encoding is unspecified. - - - If the encoding is not specified the source isn't debuggable. - If an encoding-less is written to a file a shall be used as a default. - - - - - The length of the text in characters. - - - - - Returns a character at given position. - - The position to get the character from. - The character. - When position is negative or - greater than . - - - - Copy a range of characters from this SourceText to a destination array. - - - - - The container of this . - - - - - Gets a that contains the characters in the specified span of this text. - - - - - Returns a that has the contents of this text including and after the start position. - - - - - Write this to a text writer. - - - - - Write a span of text to a text writer. - - - - - Provides a string representation of the SourceText. - - - - - Gets a string containing the characters in specified span. - - When given span is outside of the text range. - - - - Constructs a new SourceText from this text with the specified changes. - - - - - Constructs a new SourceText from this text with the specified changes. - - - - - Returns a new SourceText with the specified span of characters replaced by the new text. - - - - - Returns a new SourceText with the specified range of characters replaced by the new text. - - - - - Gets the set of that describe how the text changed - between this text an older version. This may be multiple detailed changes - or a single change encompassing the entire text. - - - - - Gets the set of that describe how the text changed - between this text and an older version. This may be multiple detailed changes - or a single change encompassing the entire text. - - - - - The collection of individual text lines. - - - - - Called from to initialize the . Thereafter, - the collection is cached. - - A new representing the individual text lines. - - - - Compares the content with content of another . - - - - - Implements equality comparison of the content of two different instances of . - - - - - Detect an encoding by looking for byte order marks. - - A buffer containing the encoded text. - The length of valid data in the buffer. - The length of any detected byte order marks. - The detected encoding or null if no recognized byte order mark was present. - - - - An object that contains an instance of an SourceText and raises events when its current instance - changes. - - - - - The current text instance. - - - - - Raised when the current text instance changes. - - - - - A read-only, non-seekable over a . - - - - - Implementation of based on a input - - - - - Underlying string on which this SourceText instance is based - - - - - Underlying string which is the source of this SourceText instance - - - - - The length of the text represented by . - - - - - Returns a character at given position. - - The position to get the character from. - The character. - When position is negative or - greater than . - - - - Provides a string representation of the StringBuilderText located within given span. - - When given span is outside of the text range. - - - - Implementation of SourceText based on a input - - - - - Underlying string which is the source of this instance - - - - - The length of the text represented by . - - - - - Returns a character at given position. - - The position to get the character from. - The character. - When position is negative or - greater than . - - - - Provides a string representation of the StringText located within given span. - - When given span is outside of the text range. - - - - An SourceText that represents a subrange of another SourceText. - - - - - Describes a single change when a particular span is replaced with a new text. - - - - - The original span of the changed text. - - - - - The new text. - - - - - Initializes a new instance of - - The original span of the changed text. - The new text. - - - - Provides a string representation for . - - - - - Converts a to a . - - - - - - An empty set of changes. - - - - - Represents state for a TextChanged event. - - - - - Initializes an instance of . - - The text before the change. - The text after the change. - A non-empty set of ranges for the change. - - - - Initializes an instance of . - - The text before the change. - The text after the change. - A non-empty set of ranges for the change. - - - - Gets the text before the change. - - - - - Gets the text after the change. - - - - - Gets the set of ranges for the change. - - - - - Represents the change to a span of text. - - - - - The span of text before the edit which is being changed - - - - - Width of the span after the edit. A 0 here would represent a delete - - - - - Initializes a new instance of . - - - - - - - Compares current instance of to another. - - - - - Compares current instance of to another. - - - - - Provides hash code for current instance of . - - - - - - Determines if two instances of are same. - - - - - Determines if two instances of are different. - - - - - An empty set of changes. - - - - - Collapse a set of s into a single encompassing range. If - the set of ranges provided is empty, an empty range is returned. - - - - - Information about the character boundaries of a single line of text. - - - - - Creates a instance. - - The source text. - The span of the line. - An instance of . - The span does not represent a text line. - - - - Gets the source text. - - - - - Gets the zero-based line number. - - - - - Gets the start position of the line. - - - - - Gets the end position of the line not including the line break. - - - - - Gets the end position of the line including the line break. - - - - - Gets the line span not including the line break. - - - - - Gets the line span including the line break. - - - - - Abstract base class for collections. - - - - - The count of items in the collection - - - - - Gets the item at the specified index. - - - - - The index of the TextLine that encompasses the character position. - - - - - Gets a that encompasses the character position. - - - - - - - Gets a corresponding to a character position. - - - - - Convert a to a . - - - - - Convert a to a position. - - - - - Convert a to . - - - - - Immutable abstract representation of a span of text. For example, in an error diagnostic that reports a - location, it could come from a parsed string, text from a tool editor buffer, etc. - - - - - Creates a TextSpan instance beginning with the position Start and having the Length - specified with . - - - - - Start point of the span. - - - - - End of the span. - - - - - Length of the span. - - - - - Determines whether or not the span is empty. - - - - - Determines whether the position lies within the span. - - - The position to check. - - - true if the position is greater than or equal to Start and strictly less - than End, otherwise false. - - - - - Determines whether falls completely within this span. - - - The span to check. - - - true if the specified span falls completely within this span, otherwise false. - - - - - Determines whether overlaps this span. Two spans are considered to overlap - if they have positions in common and neither is empty. Empty spans do not overlap with any - other span. - - - The span to check. - - - true if the spans overlap, otherwise false. - - - - - Returns the overlap with the given span, or null if there is no overlap. - - - The span to check. - - - The overlap of the spans, or null if the overlap is empty. - - - - - Determines whether intersects this span. Two spans are considered to - intersect if they have positions in common or the end of one span - coincides with the start of the other span. - - - The span to check. - - - true if the spans intersect, otherwise false. - - - - - Determines whether intersects this span. - A position is considered to intersect if it is between the start and - end positions (inclusive) of this span. - - - The position to check. - - - true if the position intersects, otherwise false. - - - - - Returns the intersection with the given span, or null if there is no intersection. - - - The span to check. - - - The intersection of the spans, or null if the intersection is empty. - - - - - Creates a new from and positions as opposed to a position and length. - - The returned TextSpan contains the range with inclusive, - and exclusive. - - - - - Determines if two instances of are the same. - - - - - Determines if two instances of are different. - - - - - Determines if current instance of is equal to another. - - - - - Determines if current instance of is equal to another. - - - - - Produces a hash code for . - - - - - Provides a string representation for . - - - - - Compares current instance of with another. - - - - - Holder for common Text Utility functions and values - - - - - Return startLineBreak = index-1, lengthLineBreak = 2 if there is a \r\n at index-1 - Return startLineBreak = index, lengthLineBreak = 1 if there is a 1-char newline at index - Return startLineBreak = index+1, lengthLineBreak = 0 if there is no newline at index. - - - - - Determine if the character in question is any line break character - - - - - Emit the IL for the compilation into the specified stream. - - Compilation. - Path of the file to which the compilation will be written. - Path of the file to which the compilation's debug info will be written. - Also embedded in the output file. Null to forego PDB generation. - - Path of the file to which the compilation's XML documentation will be written. Null to forego XML generation. - Path of the file from which the compilation's Win32 resources will be read (in RES format). - Null to indicate that there are none. - List of the compilation's managed resources. Null to indicate that there are none. - To cancel the emit process. - Compilation or path is null. - Path is empty or invalid. - An error occurred while reading or writing a file. - - - - APIs for constructing documentation comment id's, and finding symbols that match ids. - - - - - Creates an id string used by external documentation comment files to identify declarations - of types, namespaces, methods, properties, etc. - - - - - Creates an id string used to reference type symbols (not strictly declarations, includes - arrays, pointers, type parameters, etc.) - - - - - Gets all declaration symbols that match the declaration id string - - - - - Try to get all the declaration symbols that match the declaration id string. - Returns true if at least one symbol matches. - - - - - Gets the first declaration symbol that matches the declaration id string, order undefined. - - - - - Gets the symbols that match the reference id string. - - - - - Try to get all symbols that match the reference id string. - Returns true if at least one symbol matches. - - - - - Gets the first symbol that matches the reference id string, order undefined. - - - - - Checks for the given ; if the is true, - immediately terminates the process without running any pending finally blocks or finalizers - and causes a crash dump to be collected (if the system is configured to do so). - Otherwise, the process continues normally. - - The conditional expression to evaluate. - An optional message to be recorded in the dump in case of failure. Can be null. - - - - Dictionary designed to hold small number of items. - Compared to the regular Dictionary, average overhead per-item is roughly the same, but - unlike regular dictionary, this one is based on an AVL tree and as such does not require - rehashing when items are added. - It does require rebalancing, but that is allocation-free. - - Major caveats: - 1) There is no Remove method. (can be added, but we do not seem to use Remove that much) - 2) foreach [keys|values|pairs] may allocate a small array. - 3) Performance is no longer O(1). At a certain count it becomes slower than regular Dictionary. - In comparison to regular Dictionary on my machine: - On trivial number of elements (5 or so) it is more than 2x faster. - The break even count is about 120 elements for read and 55 for write operations (with unknown initial size). - At UShort.MaxValue elements, this dictionary is 6x slower to read and 4x slower to write - - Generally, this dictionary is a win if number of elements is small, not known beforehand or both. - - If the size of the dictionary is known at creation and it is likely to contain more than 10 elements, - then regular Dictionary is a better choice. - - - - - Implements a readonly collection over a set of existing collections. This can be used to - prevent having to copy items from one collection over to another (thus bloating space). - - Note: this is a *collection*, not a *set*. There is no removal of duplicated elements. This - allows us to be able to efficiently do operations like CopyTo, Count, etc. in O(c) time - instead of O(n) (where 'c' is the number of collections and 'n' is the number of elements). - If you have a few collections with many elements in them, then this is an appropriate - collection for you. - - - - - Indicates the reasons why a candidate (or set of candidate) symbols were not considered - correct in SemanticInfo. Higher values take precedence over lower values, so if, for - example, there a symbol with a given name that was inaccessible, and other with the wrong - arity, only the inaccessible one would be reported in the SemanticInfo. - - - - - No CandidateSymbols. - - - - - Only a type or namespace was valid in the given location, but the candidate symbols was - of the wrong kind. - - - - - Only an event was valid in the given location, but the candidate symbols was - of the wrong kind. - - - - - The candidate symbol must be a WithEvents member, but it was not. - - - - - Only an attribute type was valid in the given location, but the candidate symbol was - of the wrong kind. - - - - - The candidate symbol takes a different number of type parameters that was required. - - - - - The candidate symbol existed, but was not allowed to be created in a new expression. - For example, interfaces, static classes, and unconstrained type parameters. - - - - - The candidate symbol existed, but was not allowed to be referenced. For example, the - "get_XXX" method used to implement a property named "XXX" may not be directly - referenced. Similarly, the type "System.Void" can not be directly referenced. - Also occurs if "this" is used in a context (static method or field initializer) - where "this" is not available. - - - - - The candidate symbol had an accessibility modifier (private, protected, ...) that made - it inaccessible. - - - - - The candidate symbol was in a place where a value was required, but was not a value - (e.g., was a type or namespace). - - - - - The candidate symbol was in a place where a variable (or sometimes, a property) was - required, but was not allowed there because it isn't a symbol that can be assigned to. - For example, the left hand side of an assignment, or a ref or out parameter. - - - - - The candidate symbol was used in a way that an invocable member (method, or variable of - delegate type) was required, but the candidate symbol was not invocable. - - - - - The candidate symbol must be an instance variable, but was used as static, or the - reverse. - - - - - Overload resolution did not choose a method. The candidate symbols are the methods there - were considered during overload resolution (which may or may not be applicable methods). - - - - - Method could not be selected statically. - The candidate symbols are the methods there were considered during overload resolution - (which may or may not be applicable methods). - - - - - Multiple ambiguous symbols were available with the same name. This can occur if "using" - statements bring multiple namespaces into scope, and the same type is available in - multiple. This can also occur if multiple properties of the same name are available in a - multiple interface inheritance situation. - - - - - CandidateSymbols are members of a group of results. This is used when there isn't a problem, - but there is more than one result, for example nameof(int.ToString). - - - - - Represents compilation options common to C# and VB. - - - - - The kind of assembly generated when emitted. - - - - - Name of the primary module, or null if a default name should be used. - - - The name usually (but not necessarily) includes an extension, e.g. "MyModule.dll". - - If is null the actual name written to metadata - is derived from the name of the compilation () - by appending a default extension for . - - - - - The full name of a global implicit class (script class). This class implicitly encapsulates top-level statements, - type declarations, and member declarations. Could be a namespace qualified name. - - - - - The full name of a type that declares static Main method. Must be a valid non-generic namespace-qualified name. - Null if any static Main method is a candidate for an entry point. - - - - - Specifies public key used to generate strong name for the compilation assembly, or empty of not specified. - - - If specified the values of and must be null. - If is false the assembly is marked as signed but not actually signed (aka "OSS signing"). - - - - - The name of the file containing the public and private keys to use to generate strong name of the - compilation assembly and to sign it. - - - - To sign the output supply either one of or . - but not both. If both are specified is ignored. - - - This setting is obsolete and only supported on Microsoft Windows platform. - Use to generate assemblies with strong name and - a signing tool (Microsoft .NET Framework Strong Name Utility (sn.exe) or equivalent) to sign them. - - - - - - The CSP container containing the key with which to sign the output. - - - - To sign the output supply either one of or . - but not both. If both are specified is ignored. - - - This setting is obsolete and only supported on Microsoft Windows platform. - Use to generate assemblies with strong name and - a signing tool (Microsoft .NET Framework Strong Name Utility (sn.exe) or equivalent) to sign them. - - - - - - Turn compilation assembly signing on or off. - - - If true the resulting assembly is marked as delay signed. - - If false and , , or is specified - or attribute System.Reflection.AssemblyKeyFileAttribute or System.Reflection.AssemblyKeyNameAttribute is applied to the - compilation assembly in source the resulting assembly is signed accordingly to the specified values/attributes. - - If null the semantics is specified by the value of attribute System.Reflection.AssemblyDelaySignAttribute - applied to the compilation assembly in source. If the attribute is not present the value defaults to "false". - - - - - Whether bounds checking on integer arithmetic is enforced by default or not. - - - - - Specifies which version of the common language runtime (CLR) can run the assembly. - - - - - Specifies whether or not optimizations should be performed on the output IL. - This is independent of whether or not PDB information is generated. - - - - - Global warning report option - - - - - Global warning level (from 0 to 4). - - - - - Specifies whether building compilation may use multiple threads. - - - - - Specifies whether the compilation should be deterministic. - - - - - Emit extended custom debug information to the PDB file. - - - - - Emit mode that favors debuggability. - - - - - Import internal/private members from all references regardless of "internals-visible-to" relationship. - - - - - Modifies the incoming diagnostic, for example escalating its severity, or discarding it (returning null) based on the compilation options. - - - The modified diagnostic, or null - - - - Warning report option for each warning. - - - - - Whether diagnostics suppressed in source, i.e. is true, should be reported. - - - - - Resolves paths to metadata references specified in source via #r directives. - Null if the compilation can't contain references to metadata other than those explicitly passed to its factory (such as #r directives in sources). - - - - - Gets the resolver for resolving XML document references for the compilation. - Null if the compilation is not allowed to contain XML file references, such as XML doc comment include tags and permission sets stored in an XML file. - - - - - Gets the resolver for resolving source document references for the compilation. - Null if the compilation is not allowed to contain source file references, such as #line pragmas and #load directives. - - - - - Provides strong name and signature the source assembly. - Null if assembly signing is not supported. - - - - - Used to compare assembly identities. May implement unification and portability policies specific to the target platform. - if not specified. - - - - - A set of strings designating experimental compiler features that are to be enabled. - - - - - Creates a new options instance with the specified general diagnostic option. - - - - - Creates a new options instance with the specified diagnostic-specific options. - - - - - Creates a new options instance with the specified diagnostic-specific options. - - - - - Creates a new options instance with the specified suppressed diagnostics reporting option. - - - - - Creates a new options instance with the deterministic property set accordingly. - - - - - Creates a new options instance with the specified output kind. - - - - - Creates a new options instance with the specified platform. - - - - - Creates a new options instance with optimizations enabled or disabled. - - - - - Performs validation of options compatibilities and generates diagnostics if needed - - - - - Errors collection related to an incompatible set of compilation options - - - - - Represents the possible compilation stages for which it is possible to get diagnostics - (errors). - - - - - Provides information about statements which transfer control in and out of a region. This - information is returned from a call to . - - - - - The set of statements inside the region what are the - destination of branches outside the region. - - - - - The set of statements inside a region that jump to locations outside - the region. - - - - - Indicates whether a region completes normally. Return true if and only if the end of the - last statement in a region is reachable or the region contains no statements. - - - - - The set of return statements found within a region. - - - - - Returns true iff analysis was successful. Analysis can fail if the region does not properly span a single expression, - a single statement, or a contiguous series of statements within the enclosing block. - - - - - Provides information about how data flows into and out of a region. This information is - returned from a call to - , or one of its language-specific overloads, - where you pass the first and last statements of the region as parameters. - "Inside" means those statements or ones between them. "Outside" are any other statements of the same method. - - - - - The set of local variables that are declared within a region. Note - that the region must be bounded by a method's body or a field's initializer, so - parameter symbols are never included in the result. - - - - - The set of local variables which are assigned a value outside a region - that may be used inside the region. - - - - - The set of local variables which are assigned a value inside a region - that may be used outside the region. - - - - - The set of local variables for which a value is always assigned inside - a region. - - - - - The set of local variables that are read inside a region. - - - - - The set of local variables that are written inside a region. - - - - - The set of the local variables that are read outside a region. - - - - - The set of local variables that are written outside a region. - - - - - The set of the local variables that have been referenced in anonymous - functions within a region and therefore must be moved to a field of a frame class. - - - - - The set of non-constant local variables and parameters that have had their - address (or the address of one of their fields) taken. - - - - - Returns true iff analysis was successful. Analysis can fail if the region does not - properly span a single expression, a single statement, or a contiguous series of - statements within the enclosing block. - - - - - Gets symbol information about a syntax node. - - - The syntax node to get semantic information for. - A cancellation token that can be used to cancel the - process of obtaining the semantic info. - - - - Binds the node in the context of the specified location and get semantic information - such as type, symbols and diagnostics. This method is used to get semantic information - about an expression that did not actually appear in the source code. - - - A character position used to identify a declaration scope and - accessibility. This character position must be within the FullSpan of the Root syntax - node in this SemanticModel. - - A syntax node that represents a parsed expression. This syntax - node need not and typically does not appear in the source code referred to SemanticModel - instance. - Indicates whether to binding the expression as a full expressions, - or as a type or namespace. If SpeculativeBindingOption.BindAsTypeOrNamespace is supplied, then - expression should derive from TypeSyntax. - The semantic information for the topmost node of the expression. - The passed in expression is interpreted as a stand-alone expression, as if it - appeared by itself somewhere within the scope that encloses "position". - - - - Gets type information about a syntax node. - - - The syntax node to get semantic information for. - A cancellation token that can be used to cancel the - process of obtaining the semantic info. - - - - If "nameSyntax" resolves to an alias name, return the IAliasSymbol corresponding - to A. Otherwise return null. - - - Name to get alias info for. - A cancellation token that can be used to cancel the - process of obtaining the alias information. - - - - Binds the name in the context of the specified location and sees if it resolves to an - alias name. If it does, return the AliasSymbol corresponding to it. Otherwise, return null. - - - A character position used to identify a declaration scope and - accessibility. This character position must be within the FullSpan of the Root syntax - node in this SemanticModel. - - A syntax node that represents a name. This syntax - node need not and typically does not appear in the source code referred to by the - SemanticModel instance. - Indicates whether to binding the name as a full expression, - or as a type or namespace. If SpeculativeBindingOption.BindAsTypeOrNamespace is supplied, then - expression should derive from TypeSyntax. - The passed in name is interpreted as a stand-alone name, as if it - appeared by itself somewhere within the scope that encloses "position". - - - - Binds the node in the context of the specified location and get semantic information - such as type, symbols and diagnostics. This method is used to get semantic information - about an expression that did not actually appear in the source code. - - - A character position used to identify a declaration scope and - accessibility. This character position must be within the FullSpan of the Root syntax - node in this SemanticModel. - - A syntax node that represents a parsed expression. This syntax - node need not and typically does not appear in the source code referred to SemanticModel - instance. - Indicates whether to binding the expression as a full expressions, - or as a type or namespace. If SpeculativeBindingOption.BindAsTypeOrNamespace is supplied, then - expression should derive from TypeSyntax. - The semantic information for the topmost node of the expression. - The passed in expression is interpreted as a stand-alone expression, as if it - appeared by itself somewhere within the scope that encloses "position". - - - - Gets the symbol associated with a declaration syntax node. - - - A syntax node that is a declaration. This can be any type - derived from MemberDeclarationSyntax, TypeDeclarationSyntax, EnumDeclarationSyntax, - NamespaceDeclarationSyntax, ParameterSyntax, TypeParameterSyntax, or the alias part of a - UsingDirectiveSyntax - The cancellation token. - The symbol declared by the node or null if the node is not a declaration. - - - - Gets a list of method or indexed property symbols for a syntax node. - - - The syntax node to get semantic information for. - The cancellation token. - - - - Analyze control-flow within a part of a method body. - - - - - Analyze control-flow within a part of a method body. - - - - - Analyze data-flow within a part of a method body. - - - - - Analyze data-flow within a part of a method body. - - - - - Determines the level of optimization of the generated code. - - - - - Disables all optimizations and instruments the generated code to improve debugging experience. - - - The compiler prefers debuggability over performance. Do not use for code running in a production environment. - - JIT optimizations are disabled via assembly level attribute (). - Edit and Continue is enabled. - Slots for local variables are not reused, lifetime of local variables is extended to make the values available during debugging. - - - Corresponds to command line argument /optimize-. - - - - - - Enables all optimizations, debugging experience might be degraded. - - - The compiler prefers performance over debuggability. Use for code running in a production environment. - - JIT optimizations are enabled via assembly level attribute (). - Edit and Continue is disabled. - Sequence points may be optimized away. As a result it might not be possible to place or hit a breakpoint. - User-defined locals might be optimized away. They might not be available while debugging. - - - Corresponds to command line argument /optimize+. - - - - - - Represents parse options common to C# and VB. - - - - - Specifies whether to parse as regular code files, script files or interactive code. - - - - - Gets a value indicating whether the documentation comments are parsed. - - true if documentation comments are parsed, false otherwise. - - - - Creates a new options instance with the specified source code kind. - - - - - Creates a new options instance with the specified documentation mode. - - - - - Enable some experimental language features for testing. - - - - - Returns the experimental features. - - - - - Names of defined preprocessor symbols. - - - - - AnyCPU (default) compiles the assembly to run on any platform. - - - - - x86 compiles the assembly to be run by the 32-bit, x86-compatible common language runtime. - - - - - x64 compiles the assembly to be run by the 64-bit common language runtime on a computer that supports the AMD64 or EM64T instruction set. - - - - - Itanium compiles the assembly to be run by the 64-bit common language runtime on a computer with an Itanium processor. - - - - - Compiles your assembly to run on any platform. Your application runs in 32-bit mode on systems that support both 64-bit and 32-bit applications. - - - - - Compiles your assembly to run on a computer that has an Advanced RISC Machine (ARM) processor. - - - - - The symbol that was referred to by the identifier, if any. - - - - - Returns true if this preprocessing symbol is defined at the identifier position. - - - - - Allows asking semantic questions about a tree of syntax nodes in a Compilation. Typically, - an instance is obtained by a call to GetBinding on a Compilation or Compilation. - - - An instance of SemanticModel caches local symbols and semantic information. Thus, it - is much more efficient to use a single instance of SemanticModel when asking multiple - questions about a syntax tree, because information from the first question may be reused. - This also means that holding onto an instance of SemanticModel for a long time may keep a - significant amount of memory from being garbage collected. - - - When an answer is a named symbol that is reachable by traversing from the root of the symbol - table, (that is, from an AssemblySymbol of the Compilation), that symbol will be returned - (i.e. the returned value will be reference-equal to one reachable from the root of the - symbol table). Symbols representing entities without names (e.g. array-of-int) may or may - not exhibit reference equality. However, some named symbols (such as local variables) are - not reachable from the root. These symbols are visible as answers to semantic questions. - When the same SemanticModel object is used, the answers exhibit reference-equality. - - - - - - Gets the source language ("C#" or "Visual Basic"). - - - - - The compilation this model was obtained from. - - - - - The compilation this model was obtained from. - - - - - The syntax tree this model was obtained from. - - - - - The syntax tree this model was obtained from. - - - - - Returns true if this is a SemanticModel that ignores accessibility rules when answering semantic questions. - - - - - Gets symbol information about a syntax node. - - The syntax node to get semantic information for. - A cancellation token that can be used to cancel the - process of obtaining the semantic info. - - - - Gets symbol information about a syntax node. - - The syntax node to get semantic information for. - A cancellation token that can be used to cancel the - process of obtaining the semantic info. - - - - Binds the node in the context of the specified location and get semantic information - such as type, symbols and diagnostics. This method is used to get semantic information - about an expression that did not actually appear in the source code. - - A character position used to identify a declaration scope and - accessibility. This character position must be within the FullSpan of the Root syntax - node in this SemanticModel. - - A syntax node that represents a parsed expression. This syntax - node need not and typically does not appear in the source code referred to SemanticModel - instance. - Indicates whether to binding the expression as a full expressions, - or as a type or namespace. If SpeculativeBindingOption.BindAsTypeOrNamespace is supplied, then - expression should derive from TypeSyntax. - The semantic information for the topmost node of the expression. - The passed in expression is interpreted as a stand-alone expression, as if it - appeared by itself somewhere within the scope that encloses "position". - - - - Binds the node in the context of the specified location and get semantic information - such as type, symbols and diagnostics. This method is used to get semantic information - about an expression that did not actually appear in the source code. - - A character position used to identify a declaration scope and - accessibility. This character position must be within the FullSpan of the Root syntax - node in this SemanticModel. - - A syntax node that represents a parsed expression. This syntax - node need not and typically does not appear in the source code referred to SemanticModel - instance. - Indicates whether to binding the expression as a full expressions, - or as a type or namespace. If SpeculativeBindingOption.BindAsTypeOrNamespace is supplied, then - expression should derive from TypeSyntax. - The semantic information for the topmost node of the expression. - The passed in expression is interpreted as a stand-alone expression, as if it - appeared by itself somewhere within the scope that encloses "position". - - - - Binds the node in the context of the specified location and get semantic information - such as type, symbols and diagnostics. This method is used to get semantic information - about an expression that did not actually appear in the source code. - - A character position used to identify a declaration scope and - accessibility. This character position must be within the FullSpan of the Root syntax - node in this SemanticModel. - - A syntax node that represents a parsed expression. This syntax - node need not and typically does not appear in the source code referred to SemanticModel - instance. - Indicates whether to binding the expression as a full expressions, - or as a type or namespace. If SpeculativeBindingOption.BindAsTypeOrNamespace is supplied, then - expression should derive from TypeSyntax. - The semantic information for the topmost node of the expression. - The passed in expression is interpreted as a stand-alone expression, as if it - appeared by itself somewhere within the scope that encloses "position". - - - - Binds the node in the context of the specified location and get semantic information - such as type, symbols and diagnostics. This method is used to get semantic information - about an expression that did not actually appear in the source code. - - A character position used to identify a declaration scope and - accessibility. This character position must be within the FullSpan of the Root syntax - node in this SemanticModel. - - A syntax node that represents a parsed expression. This syntax - node need not and typically does not appear in the source code referred to SemanticModel - instance. - Indicates whether to binding the expression as a full expressions, - or as a type or namespace. If SpeculativeBindingOption.BindAsTypeOrNamespace is supplied, then - expression should derive from TypeSyntax. - The semantic information for the topmost node of the expression. - The passed in expression is interpreted as a stand-alone expression, as if it - appeared by itself somewhere within the scope that encloses "position". - - - - Gets type information about a syntax node. - - The syntax node to get semantic information for. - A cancellation token that can be used to cancel the - process of obtaining the semantic info. - - - - Gets type information about a syntax node. - - The syntax node to get semantic information for. - A cancellation token that can be used to cancel the - process of obtaining the semantic info. - - - - If "nameSyntax" resolves to an alias name, return the IAliasSymbol corresponding - to A. Otherwise return null. - - Name to get alias info for. - A cancellation token that can be used to cancel the - process of obtaining the alias information. - - - - If "nameSyntax" resolves to an alias name, return the IAliasSymbol corresponding - to A. Otherwise return null. - - Name to get alias info for. - A cancellation token that can be used to cancel the - process of obtaining the alias information. - - - - Returns true if this is a speculative semantic model created with any of the TryGetSpeculativeSemanticModel methods. - - - - - If this is a speculative semantic model, returns the original position at which the speculative model was created. - Otherwise, returns 0. - - - - - If this is a speculative semantic model, then returns its parent semantic model. - Otherwise, returns null. - - - - - If this is a speculative semantic model, then returns its parent semantic model. - Otherwise, returns null. - - - - - Binds the name in the context of the specified location and sees if it resolves to an - alias name. If it does, return the AliasSymbol corresponding to it. Otherwise, return null. - - A character position used to identify a declaration scope and - accessibility. This character position must be within the FullSpan of the Root syntax - node in this SemanticModel. - - A syntax node that represents a name. This syntax - node need not and typically does not appear in the source code referred to by the - SemanticModel instance. - Indicates whether to binding the name as a full expression, - or as a type or namespace. If SpeculativeBindingOption.BindAsTypeOrNamespace is supplied, then - expression should derive from TypeSyntax. - The passed in name is interpreted as a stand-alone name, as if it - appeared by itself somewhere within the scope that encloses "position". - - - - Binds the name in the context of the specified location and sees if it resolves to an - alias name. If it does, return the AliasSymbol corresponding to it. Otherwise, return null. - - A character position used to identify a declaration scope and - accessibility. This character position must be within the FullSpan of the Root syntax - node in this SemanticModel. - - A syntax node that represents a name. This syntax - node need not and typically does not appear in the source code referred to by the - SemanticModel instance. - Indicates whether to binding the name as a full expression, - or as a type or namespace. If SpeculativeBindingOption.BindAsTypeOrNamespace is supplied, then - expression should derive from TypeSyntax. - The passed in name is interpreted as a stand-alone name, as if it - appeared by itself somewhere within the scope that encloses "position". - - - - Get all of the syntax errors within the syntax tree associated with this - object. Does not get errors involving declarations or compiling method bodies or initializers. - - Optional span within the syntax tree for which to get diagnostics. - If no argument is specified, then diagnostics for the entire tree are returned. - A cancellation token that can be used to cancel the - process of obtaining the diagnostics. - - - - Get all of the declaration errors within the syntax tree associated with this - object. Does not get errors involving incorrect syntax, compiling method bodies or initializers. - - Optional span within the syntax tree for which to get diagnostics. - If no argument is specified, then diagnostics for the entire tree are returned. - A cancellation token that can be used to cancel the - process of obtaining the diagnostics. - The declaration errors for a syntax tree are cached. The first time this method - is called, all declarations are analyzed for diagnostics. Calling this a second time - will return the cached diagnostics. - - - - - Get all of the method body and initializer errors within the syntax tree associated with this - object. Does not get errors involving incorrect syntax or declarations. - - Optional span within the syntax tree for which to get diagnostics. - If no argument is specified, then diagnostics for the entire tree are returned. - A cancellation token that can be used to cancel the - process of obtaining the diagnostics. - The method body errors for a syntax tree are not cached. The first time this method - is called, all method bodies are analyzed for diagnostics. Calling this a second time - will repeat this work. - - - - - Get all the errors within the syntax tree associated with this object. Includes errors - involving compiling method bodies or initializers, in addition to the errors returned by - GetDeclarationDiagnostics. - - Optional span within the syntax tree for which to get diagnostics. - If no argument is specified, then diagnostics for the entire tree are returned. - A cancellation token that can be used to cancel the - process of obtaining the diagnostics. - - Because this method must semantically bind all method bodies and initializers to check - for diagnostics, it may take a significant amount of time. Unlike - GetDeclarationDiagnostics, diagnostics for method bodies and initializers are not - cached, any semantic information used to obtain the diagnostics is discarded. - - - - - Gets the symbol associated with a declaration syntax node. - - A syntax node that is a declaration. This can be any type - derived from MemberDeclarationSyntax, TypeDeclarationSyntax, EnumDeclarationSyntax, - NamespaceDeclarationSyntax, ParameterSyntax, TypeParameterSyntax, or the alias part of a - UsingDirectiveSyntax - The cancellation token. - The symbol declared by the node or null if the node is not a declaration. - - - - Gets the symbol associated with a declaration syntax node. - - A syntax node that is a declaration. This can be any type - derived from MemberDeclarationSyntax, TypeDeclarationSyntax, EnumDeclarationSyntax, - NamespaceDeclarationSyntax, ParameterSyntax, TypeParameterSyntax, or the alias part of a - UsingDirectiveSyntax - The cancellation token. - The symbol declared by the node or null if the node is not a declaration. - - - - Gets the symbol associated with a declaration syntax node. Unlike , - this method returns all symbols declared by a given declaration syntax node. Specifically, in the case of field declaration syntax nodes, - which can declare multiple symbols, this method returns all declared symbols. - - A syntax node that is a declaration. This can be any type - derived from MemberDeclarationSyntax, TypeDeclarationSyntax, EnumDeclarationSyntax, - NamespaceDeclarationSyntax, ParameterSyntax, TypeParameterSyntax, or the alias part of a - UsingDirectiveSyntax - The cancellation token. - The symbols declared by the node. - - - - Gets the symbol associated with a declaration syntax node. Unlike , - this method returns all symbols declared by a given declaration syntax node. Specifically, in the case of field declaration syntax nodes, - which can declare multiple symbols, this method returns all declared symbols. - - A syntax node that is a declaration. This can be any type - derived from MemberDeclarationSyntax, TypeDeclarationSyntax, EnumDeclarationSyntax, - NamespaceDeclarationSyntax, ParameterSyntax, TypeParameterSyntax, or the alias part of a - UsingDirectiveSyntax - The cancellation token. - The symbols declared by the node. - - - - Gets the available named symbols in the context of the specified location and optional container. Only - symbols that are accessible and visible from the given location are returned. - - The character position for determining the enclosing declaration scope and - accessibility. - The container to search for symbols within. If null then the enclosing declaration - scope around position is used. - The name of the symbol to find. If null is specified then symbols - with any names are returned. - Consider (reduced) extension methods. - A list of symbols that were found. If no symbols were found, an empty list is returned. - - The "position" is used to determine what variables are visible and accessible. Even if "container" is - specified, the "position" location is significant for determining which members of "containing" are - accessible. - - Labels are not considered (see ). - - Non-reduced extension methods are considered regardless of the value of . - - - - - Backing implementation of . - - - - - Gets the available base type members in the context of the specified location. Akin to - calling with the container set to the immediate base type of - the type in which occurs. However, the accessibility rules - are different: protected members of the base type will be visible. - - Consider the following example: - - public class Base - { - protected void M() { } - } - - public class Derived : Base - { - void Test(Base b) - { - b.M(); // Error - cannot access protected member. - base.M(); - } - } - - Protected members of an instance of another type are only accessible if the instance is known - to be "this" instance (as indicated by the "base" keyword). - - The character position for determining the enclosing declaration scope and - accessibility. - The name of the symbol to find. If null is specified then symbols - with any names are returned. - A list of symbols that were found. If no symbols were found, an empty list is returned. - - The "position" is used to determine what variables are visible and accessible. - - Non-reduced extension methods are considered, but reduced extension methods are not. - - - - - Backing implementation of . - - - - - Gets the available named static member symbols in the context of the specified location and optional container. - Only members that are accessible and visible from the given location are returned. - - Non-reduced extension methods are considered, since they are static methods. - - The character position for determining the enclosing declaration scope and - accessibility. - The container to search for symbols within. If null then the enclosing declaration - scope around position is used. - The name of the symbol to find. If null is specified then symbols - with any names are returned. - A list of symbols that were found. If no symbols were found, an empty list is returned. - - The "position" is used to determine what variables are visible and accessible. Even if "container" is - specified, the "position" location is significant for determining which members of "containing" are - accessible. - - Essentially the same as filtering instance members out of the results of an analogous call. - - - - - Backing implementation of . - - - - - Gets the available named namespace and type symbols in the context of the specified location and optional container. - Only members that are accessible and visible from the given location are returned. - - The character position for determining the enclosing declaration scope and - accessibility. - The container to search for symbols within. If null then the enclosing declaration - scope around position is used. - The name of the symbol to find. If null is specified then symbols - with any names are returned. - A list of symbols that were found. If no symbols were found, an empty list is returned. - - The "position" is used to determine what variables are visible and accessible. Even if "container" is - specified, the "position" location is significant for determining which members of "containing" are - accessible. - - Does not return INamespaceOrTypeSymbol, because there could be aliases. - - - - - Backing implementation of . - - - - - Gets the available named label symbols in the context of the specified location and optional container. - Only members that are accessible and visible from the given location are returned. - - The character position for determining the enclosing declaration scope and - accessibility. - The name of the symbol to find. If null is specified then symbols - with any names are returned. - A list of symbols that were found. If no symbols were found, an empty list is returned. - - The "position" is used to determine what variables are visible and accessible. Even if "container" is - specified, the "position" location is significant for determining which members of "containing" are - accessible. - - - - - Backing implementation of . - - - - - Analyze control-flow within a part of a method body. - - The first node to be included within the analysis. - The last node to be included within the analysis. - An object that can be used to obtain the result of the control flow analysis. - The span is not with a method - body. - - The first and last nodes must be fully inside the same method body. - - - - - Analyze control-flow within a part of a method body. - - The first node to be included within the analysis. - The last node to be included within the analysis. - An object that can be used to obtain the result of the control flow analysis. - The span is not with a method - body. - - The first and last nodes must be fully inside the same method body. - - - - - Analyze control-flow within a part of a method body. - - The statement to be analyzed. - An object that can be used to obtain the result of the control flow analysis. - The span is not with a method - body. - - The statement must be fully inside the same method body. - - - - - Analyze control-flow within a part of a method body. - - The statement to be analyzed. - An object that can be used to obtain the result of the control flow analysis. - The span is not with a method - body. - - The statement must be fully inside the same method body. - - - - - Analyze data-flow within a part of a method body. - - The first node to be included within the analysis. - The last node to be included within the analysis. - An object that can be used to obtain the result of the data flow analysis. - The span is not with a method - body. - - The first and last nodes must be fully inside the same method body. - - - - - Analyze data-flow within a part of a method body. - - The first node to be included within the analysis. - The last node to be included within the analysis. - An object that can be used to obtain the result of the data flow analysis. - The span is not with a method - body. - - The first and last nodes must be fully inside the same method body. - - - - - Analyze data-flow within a part of a method body. - - The statement or expression to be analyzed. - An object that can be used to obtain the result of the data flow analysis. - The statement or expression is not with a method - body or field or property initializer. - - The statement or expression must be fully inside a method body. - - - - - Analyze data-flow within a part of a method body. - - The statement or expression to be analyzed. - An object that can be used to obtain the result of the data flow analysis. - The statement or expression is not with a method - body or field or property initializer. - - The statement or expression must be fully inside a method body. - - - - - If the node provided has a constant value an Optional value will be returned with - HasValue set to true and with Value set to the constant. If the node does not have an - constant value, an Optional will be returned with HasValue set to false. - - - - - If the node provided has a constant value an Optional value will be returned with - HasValue set to true and with Value set to the constant. If the node does not have an - constant value, an Optional will be returned with HasValue set to false. - - - - - When getting information for a symbol that resolves to a method group or property group, - from which a method is then chosen; the chosen method or property is present in Symbol; - all methods in the group that was consulted are placed in this property. - - - - - When getting information for a symbol that resolves to a method group or property group, - from which a method is then chosen; the chosen method or property is present in Symbol; - all methods in the group that was consulted are placed in this property. - - - - - Given a position in the SyntaxTree for this SemanticModel returns the innermost Symbol - that the position is considered inside of. - - - - - Given a position in the SyntaxTree for this SemanticModel returns the innermost Symbol - that the position is considered inside of. - - - - - Determines if the symbol is accessible from the specified location. - - A character position used to identify a declaration scope and - accessibility. This character position must be within the FullSpan of the Root syntax - node in this SemanticModel. - - The symbol that we are checking to see if it accessible. - - True if "symbol is accessible, false otherwise. - - This method only checks accessibility from the point of view of the accessibility - modifiers on symbol and its containing types. Even if true is returned, the given symbol - may not be able to be referenced for other reasons, such as name hiding. - - - - - Determines if the symbol is accessible from the specified location. - - A character position used to identify a declaration scope and - accessibility. This character position must be within the FullSpan of the Root syntax - node in this SemanticModel. - - The symbol that we are checking to see if it accessible. - - True if "symbol is accessible, false otherwise. - - This method only checks accessibility from the point of view of the accessibility - modifiers on symbol and its containing types. Even if true is returned, the given symbol - may not be able to be referenced for other reasons, such as name hiding. - - - - - Field-like events can be used as fields in types that can access private - members of the declaring type of the event. - - - Always false for VB events. - - - - - Field-like events can be used as fields in types that can access private - members of the declaring type of the event. - - - Always false for VB events. - - - - - If is an identifier name syntax node, return the corresponding - to it. - - The nameSyntax node to get semantic information for. - - - - If is an identifier name syntax node, return the corresponding - to it. - - The nameSyntax node to get semantic information for. - - - - Gets the for all the declarations whose span overlaps with the given . - - Span to get declarations. - Flag indicating whether should be computed for the returned declaration infos. - If false, then is always null. - Builder to add declarations. - Cancellation token. - - - - Takes a node and returns a set of declarations that overlap the node's span. - - - - - Takes a Symbol and syntax for one of its declaring syntax reference and returns the topmost syntax node to be used by syntax analyzer. - - - - - Resolves references to source documents specified in the source. - - - - - Normalizes specified source path with respect to base file path. - - The source path to normalize. May be absolute or relative. - Path of the source file that contains the (may also be relative), or null if not available. - Normalized path, or null if can't be normalized. The resulting path doesn't need to exist. - - - - Resolves specified path with respect to base file path. - - The path to resolve. May be absolute or relative. - Path of the source file that contains the (may also be relative), or null if not available. - Normalized path, or null if the file can't be resolved. - - - - Opens a that allows reading the content of the specified file. - - Path returned by . - is null. - is not a valid absolute path. - Error reading file . See for details. - - - - Reads the contents of and returns a . - - Path returned by . - - - - Describes the kind of binding to be performed in one of the SemanticModel - speculative binding methods. - - - - - Binds the given expression using the normal expression binding rules - that would occur during normal binding of expressions. - - - - - Binds the given expression as a type or namespace only. If this option - is selected, then the given expression must derive from TypeSyntax. - - - - - Represents subsystem version, see /subsystemversion command line - option for details and valid values. - - The following table lists common subsystem versions of Windows. - - Windows version Subsystem version - - Windows 2000 5.00 - - Windows XP 5.01 - - Windows Vista 6.00 - - Windows 7 6.01 - - Windows 8 Release Preview 6.02 - - - - - Major subsystem version - - - - - Minor subsystem version - - - - - Subsystem version not specified - - - - - Subsystem version: Windows 2000 - - - - - Subsystem version: Windows XP - - - - - Subsystem version: Windows Vista - - - - - Subsystem version: Windows 7 - - - - - Subsystem version: Windows 8 - - - - - Try parse subsystem version in "x.y" format. Note, no spaces are allowed in string representation. - - String to parse - the value if successfully parsed or None otherwise - true if parsed successfully, false otherwise - - - - Create a new instance of subsystem version with specified major and minor values. - - major subsystem version - minor subsystem version - subsystem version with provided major and minor - - - - Subsystem version default for the specified output kind and platform combination - - Output kind - Platform - Subsystem version - - - - True if the subsystem version has a valid value - - - - - The symbol that was referred to by the syntax node, if any. Returns null if the given - expression did not bind successfully to a single symbol. If null is returned, it may - still be that case that we have one or more "best guesses" as to what symbol was - intended. These best guesses are available via the CandidateSymbols property. - - - - - If the expression did not successfully resolve to a symbol, but there were one or more - symbols that may have been considered but discarded, this property returns those - symbols. The reason that the symbols did not successfully resolve to a symbol are - available in the CandidateReason property. For example, if the symbol was inaccessible, - ambiguous, or used in the wrong context. - - - - - If the expression did not successfully resolve to a symbol, but there were one or more - symbols that may have been considered but discarded, this property describes why those - symbol or symbols were not considered suitable. - - - - - The type of the expression represented by the syntax node. For expressions that do not - have a type, null is returned. If the type could not be determined due to an error, then - an IErrorTypeSymbol is returned. - - - - - The type of the expression after it has undergone an implicit conversion. If the type - did not undergo an implicit conversion, returns the same as Type. - - - - - Resolves references to XML documents specified in source code. - - - - - Resolves specified XML reference with respect to base file path. - - The reference path to resolve. May be absolute or relative path. - Path of the source file that contains the (may also be relative), or null if not available. - Path to the XML artifact, or null if the file can't be resolved. - - - - Opens a that allows reading the content of the specified file. - - Path returned by . - is null. - is not a valid absolute path. - Error reading file . See for details. - - - - Parses .RES a file into its constituent resource elements. - Mostly translated from cvtres.cpp. - - - - - Assume that 3 WORDs preceded this string and that they began 32-bit aligned. - Given the string length compute the number of bytes that should be written to end - the buffer on a 32-bit boundary - - - - - - assuming the length of bytes submitted began on a 32-bit boundary, - round up this length as necessary so that it ends at a 32-bit boundary. - - - - - - - compute number of chars needed to end up on a 32-bit boundary assuming that three - WORDS preceded this string. - - - - - - - Represents a non source code file. - - - - - Path to the text. - - - - - Retrieves a with the contents of this file. - - - - - Abstracts the ability to classify and load messages for error codes. Allows the error - infrastructure to be reused between C# and VB. - - - - - Given an error code, get the severity (warning or error) of the code. - - - - - Load the message for the given error code. If the message contains - "fill-in" placeholders, those should be expressed in standard string.Format notation - and be in the string. - - - - - Get an optional localizable title for the given diagnostic code. - - - - - Get an optional localizable description for the given diagnostic code. - - - - - Get a localizable message format string for the given diagnostic code. - - - - - Get an optional help link for the given diagnostic code. - - - - - Get the diagnostic category for the given diagnostic code. - Default category is . - - - - - Get the text prefix (e.g., "CS" for C#) used on error messages. - - - - - Get the warning level for warnings (e.g., 1 through 4 for C#). VB does not have warning - levels and always uses 1. Errors should return 0. - - - - - Type that defines error codes. For testing purposes only. - - - - - Create a simple language specific diagnostic for given error code. - - - - - Create a simple language specific diagnostic for given error code. - - - - - Given a message identifier (e.g., CS0219), severity, warning as error and a culture, - get the entire prefix (e.g., "error CS0219: Warning as Error:" for C# or "error BC42024:" for VB) used on error messages. - - - - - convert given symbol to string representation based on given error code - - - - - Given an error code (like 1234) return the identifier (CS1234 or BC1234). - - - - - Produces the filtering action for the diagnostic based on the options passed in. - - - A new with new effective severity based on the options or null if the - diagnostic has been suppressed. - - - - - Filter a based on the compilation options so that /nowarn and /warnaserror etc. take effect.options - - A with effective severity based on option or null if suppressed. - - - - Represents a diagnostic, such as a compiler error or a warning, along with the location where it occurred. - - - A diagnostic (such as a compiler error or a warning), along with the location where it occurred. - - - - - Highest valid warning level for non-error diagnostics. - - - - - Creates a instance. - - A describing the diagnostic - An optional primary location of the diagnostic. If null, will return . - Arguments to the message of the diagnostic - The instance. - - - - Creates a instance. - - A describing the diagnostic. - An optional primary location of the diagnostic. If null, will return . - An optional set of properties of the diagnostic. If null, will return . - Arguments to the message of the diagnostic. - The instance. - - - - Creates a instance. - - A describing the diagnostic. - An optional primary location of the diagnostic. If null, will return . - - An optional set of additional locations related to the diagnostic. - Typically, these are locations of other items referenced in the message. - If null, will return an empty list. - - Arguments to the message of the diagnostic. - The instance. - - - - Creates a instance. - - A describing the diagnostic. - An optional primary location of the diagnostic. If null, will return . - - An optional set of additional locations related to the diagnostic. - Typically, these are locations of other items referenced in the message. - If null, will return an empty list. - - An optional set of properties of the diagnostic. If null, will return . - Arguments to the message of the diagnostic. - The instance. - - - - Creates a instance which is localizable. - - An identifier for the diagnostic. For diagnostics generated by the compiler, this will be a numeric code with a prefix such as "CS1001". - The category of the diagnostic. For diagnostics generated by the compiler, the category will be "Compiler". - The diagnostic message text. - The diagnostic's effective severity. - The diagnostic's default severity. - True if the diagnostic is enabled by default - The warning level, between 1 and 4 if severity is ; otherwise 0. - An optional short localizable title describing the diagnostic. - An optional longer localizable description for the diagnostic. - An optional hyperlink that provides more detailed information regarding the diagnostic. - An optional primary location of the diagnostic. If null, will return . - - An optional set of additional locations related to the diagnostic. - Typically, these are locations of other items referenced in the message. - If null, will return an empty list. - - - An optional set of custom tags for the diagnostic. See for some well known tags. - If null, will return an empty list. - - An optional set of properties of the diagnostic. If null, will return . - The instance. - - - - Creates a instance which is localizable. - - An identifier for the diagnostic. For diagnostics generated by the compiler, this will be a numeric code with a prefix such as "CS1001". - The category of the diagnostic. For diagnostics generated by the compiler, the category will be "Compiler". - The diagnostic message text. - The diagnostic's effective severity. - The diagnostic's default severity. - True if the diagnostic is enabled by default - The warning level, between 1 and 4 if severity is ; otherwise 0. - Flag indicating whether the diagnostic is suppressed by a source suppression. - An optional short localizable title describing the diagnostic. - An optional longer localizable description for the diagnostic. - An optional hyperlink that provides more detailed information regarding the diagnostic. - An optional primary location of the diagnostic. If null, will return . - - An optional set of additional locations related to the diagnostic. - Typically, these are locations of other items referenced in the message. - If null, will return an empty list. - - - An optional set of custom tags for the diagnostic. See for some well known tags. - If null, will return an empty list. - - An optional set of properties of the diagnostic. If null, will return . - The instance. - - - - Gets the diagnostic descriptor, which provides a description about a . - - - - - Gets the diagnostic identifier. For diagnostics generated by the compiler, this will be a numeric code with a prefix such as "CS1001". - - - - - Gets the category of diagnostic. For diagnostics generated by the compiler, the category will be "Compiler". - - - - - Get the culture specific text of the message. - - - - - Gets the default of the diagnostic's . - - - To get the effective severity of the diagnostic, use . - - - - - Gets the effective of the diagnostic. - - - To get the default severity of diagnostic's , use . - To determine if this is a warning treated as an error, use . - - - - - Gets the warning level. This is 0 for diagnostics with severity , - otherwise an integer between 1 and 4. - - - - - Returns true if the diagnostic has a source suppression, i.e. an attribute or a pragma suppression. - - - - - Gets the for suppressed diagnostics, i.e. = true. - Otherwise, returns null. - - - - - Returns true if this diagnostic is enabled by default by the author of the diagnostic. - - - - - Returns true if this is a warning treated as an error; otherwise false. - - - True implies = - and = . - - - - - Gets the primary location of the diagnostic, or if no primary location. - - - - - Gets an array of additional locations related to the diagnostic. - Typically these are the locations of other items referenced in the message. - - - - - Gets custom tags for the diagnostic. - - - - - Gets property bag for the diagnostic. it will return if there is no entry. - This can be used to put diagnostic specific information you want to pass around. for example, to corresponding fixer. - - - - - Create a new instance of this diagnostic with the Location property changed. - - - - - Create a new instance of this diagnostic with the Severity property changed. - - - - - Create a new instance of this diagnostic with the suppression info changed. - - - - - Returns true if the diagnostic location (or any additional location) is within the given tree and intersects with the filterSpanWithinTree, if non-null. - - - - - Returns true if a diagnostic is not configurable, i.e. cannot be suppressed or filtered or have its severity changed. - For example, compiler errors are always non-configurable. - - - - - Indicates that the diagnostic is related to some unnecessary source code. - - - - - Indicates that the diagnostic is related to edit and continue. - - - - - Indicates that the diagnostic is related to build. - - - - - Indicates that the diagnostic is reported by the compiler. - - - - - Indicates that the diagnostic can be used for telemetry - - - - - Indicates that the diagnostic is not configurable, i.e. it cannot be suppressed or filtered or have its severity changed. - - - - - Indicates that the diagnostic is related to an exception thrown by a . - - - - - Represents a mutable bag of diagnostics. You can add diagnostics to the bag, - and also get all the diagnostics out of the bag (the bag implements - IEnumerable<Diagnostics>. Once added, diagnostics cannot be removed, and no ordering - is guaranteed. - - It is ok to Add diagnostics to the same bag concurrently on multiple threads. - It is NOT ok to Add concurrently with Clear or Free operations. - - The bag is optimized to be efficient when containing zero errors. - - - - Return true if the bag is completely empty - not even containing void diagnostics. - - - This exists for short-circuiting purposes. Use - to get a resolved Tuple(Of NamedTypeSymbol, ImmutableArray(Of Diagnostic)) (i.e. empty after eliminating void diagnostics). - - - - - Returns true if the bag has any diagnostics with Severity=Error. Does not consider warnings or informationals. - - - Resolves any lazy diagnostics in the bag. - - Generally, this should only be called by the creator (modulo pooling) of the bag (i.e. don't use bags to communicate - - if you need more info, pass more info). - - - - - Returns true if the bag has any non-lazy diagnostics with Severity=Error. - - - Does not resolve any lazy diagnostics in the bag. - - Generally, this should only be called by the creator (modulo pooling) of the bag (i.e. don't use bags to communicate - - if you need more info, pass more info). - - - - - Add a diagnostic to the bag. - - - - - Add multiple diagnostics to the bag. - - - - - Add multiple diagnostics to the bag. - - - - - Add another DiagnosticBag to the bag. - - - - - Add another DiagnosticBag to the bag and free the argument. - - - - - Seal the bag so no further errors can be added, while clearing it and returning the old set of errors. - Return the bag to the pool. - - - - - Generally, this should only be called by the creator (modulo pooling) of the bag (i.e. don't use bags to communicate - - if you need more info, pass more info). - - - - - Using an iterator to avoid copying the list. If perf is a problem, - create an explicit enumerator type. - - - - - Get the underlying concurrent storage, creating it on demand if needed. - NOTE: Concurrent Adding to the bag is supported, but concurrent Clearing is not. - If one thread adds to the bug while another clears it, the scenario is - broken and we cannot do anything about it here. - - - - NOTE: Concurrent Adding to the bag is supported, but concurrent Clearing is not. - If one thread adds to the bug while another clears it, the scenario is - broken and we cannot do anything about it here. - - - - Provides a description about a - - - - - An unique identifier for the diagnostic. - - - - - A short localizable title describing the diagnostic. - - - - - An optional longer localizable description for the diagnostic. - - - - - An optional hyperlink that provides more detailed information regarding the diagnostic. - - - - - A localizable format message string, which can be passed as the first argument to when creating the diagnostic message with this descriptor. - - - - - - The category of the diagnostic (like Design, Naming etc.) - - - - - The default severity of the diagnostic. - - - - - Returns true if the diagnostic is enabled by default. - - - - - Custom tags for the diagnostic. - - - - - Create a DiagnosticDescriptor, which provides description about a . - NOTE: For localizable , and/or , - use constructor overload . - - A unique identifier for the diagnostic. For example, code analysis diagnostic ID "CA1001". - A short title describing the diagnostic. For example, for CA1001: "Types that own disposable fields should be disposable". - A format message string, which can be passed as the first argument to when creating the diagnostic message with this descriptor. - For example, for CA1001: "Implement IDisposable on '{0}' because it creates members of the following IDisposable types: '{1}'." - The category of the diagnostic (like Design, Naming etc.). For example, for CA1001: "Microsoft.Design". - Default severity of the diagnostic. - True if the diagnostic is enabled by default. - An optional longer description of the diagnostic. - An optional hyperlink that provides a more detailed description regarding the diagnostic. - Optional custom tags for the diagnostic. See for some well known tags. - - - - Create a DiagnosticDescriptor, which provides description about a . - - A unique identifier for the diagnostic. For example, code analysis diagnostic ID "CA1001". - A short localizable title describing the diagnostic. For example, for CA1001: "Types that own disposable fields should be disposable". - A localizable format message string, which can be passed as the first argument to when creating the diagnostic message with this descriptor. - For example, for CA1001: "Implement IDisposable on '{0}' because it creates members of the following IDisposable types: '{1}'." - The category of the diagnostic (like Design, Naming etc.). For example, for CA1001: "Microsoft.Design". - Default severity of the diagnostic. - True if the diagnostic is enabled by default. - An optional longer localizable description of the diagnostic. - An optional hyperlink that provides a more detailed description regarding the diagnostic. - Optional custom tags for the diagnostic. See for some well known tags. - Example descriptor for rule CA1001: - internal static DiagnosticDescriptor Rule = new DiagnosticDescriptor(RuleId, - new LocalizableResourceString(nameof(FxCopRulesResources.TypesThatOwnDisposableFieldsShouldBeDisposable), FxCopRulesResources.ResourceManager, typeof(FxCopRulesResources)), - new LocalizableResourceString(nameof(FxCopRulesResources.TypeOwnsDisposableFieldButIsNotDisposable), FxCopRulesResources.ResourceManager, typeof(FxCopRulesResources)), - FxCopDiagnosticCategory.Design, - DiagnosticSeverity.Warning, - isEnabledByDefault: true, - helpLinkUri: "http://msdn.microsoft.com/library/ms182172.aspx", - customTags: DiagnosticCustomTags.Microsoft); - - - - - Gets the effective severity of diagnostics created based on this descriptor and the given . - - Compilation options - - - - Returns true if diagnostic descriptor is not configurable, i.e. cannot be suppressed or filtered or have its severity changed. - For example, compiler errors are always non-configurable. - - - - - Formats messages. - - - - - Formats the message using the optional . - - The diagnostic. - The formatter; or null to use the default formatter. - The formatted message. - - - - A DiagnosticInfo object has information about a diagnostic, but without any attached location information. - - - More specialized diagnostics with additional information (e.g., ambiguity errors) can derive from this class to - provide access to additional information about the error, such as what symbols were involved in the ambiguity. - - - - - The error code, as an integer. - - - - - Returns the effective severity of the diagnostic: whether this diagnostic is informational, warning, or error. - If IsWarningsAsError is true, then this returns , while returns . - - - - - Returns whether this diagnostic is informational, warning, or error by default, based on the error code. - To get diagnostic's effective severity, use . - - - - - Gets the warning level. This is 0 for diagnostics with severity , - otherwise an integer between 1 and 4. - - - - - Returns true if this is a warning treated as an error. - - - True implies = and - = . - - - - - Get the diagnostic category for the given diagnostic code. - Default category is . - - - - - If a derived class has additional information about other referenced symbols, it can - expose the locations of those symbols in a general way, so they can be reported along - with the error. - - - - - Get the message id (for example "CS1001") for the message. This includes both the error number - and a prefix identifying the source. - - - - - Get the text of the message in the given language. - - - - - For a DiagnosticInfo that is lazily evaluated, this method evaluates it - and returns a non-lazy DiagnosticInfo. - - - - - Describes how severe a diagnostic is. - - - - - Something that is an issue, as determined by some authority, - but is not surfaced through normal means. - There may be different mechanisms that act on these issues. - - - - - Information that does not indicate a problem (i.e. not prescriptive). - - - - - Something suspicious but allowed. - - - - - Something not allowed by the rules of the language or other authority. - - - - - Values for severity that are used internally by the compiler but are not exposed. - - - - - An unknown severity diagnostic is something whose severity has not yet been determined. - - - - - If an unknown diagnostic is resolved and found to be unnecessary then it is - treated as a "Void" diagnostic - - - - - Values for ErrorCode/ERRID that are used internally by the compiler but are not exposed. - - - - - The code has yet to be determined. - - - - - The code was lazily determined and does not need to be reported. - - - - - A diagnostic (such as a compiler error or a warning), along with the location where it occurred. - - - - - Get the information about the diagnostic: the code, severity, message, etc. - - - - - True if the DiagnosticInfo for this diagnostic requires (or required - this property - is immutable) resolution. - - - - - Represents a span of text in a source code file in terms of file name, line number, and offset within line. - However, the file is actually whatever was passed in when asked to parse; there may not really be a file. - - - - - Path, or null if the span represents an invalid value. - - - Path may be if not available. - - - - - True if the is a mapped path. - - - A mapped path is a path specified in source via #line (C#) or #ExternalSource (VB) directives. - - - - - Gets the of the start of the span. - - - - - - Gets the of the end of the span. - - - - - - Gets the span. - - - - - Initializes the instance. - - The file identifier - typically a relative or absolute path. - The start line position. - The end line position. - is null. - - - - Initializes the instance. - - The file identifier - typically a relative or absolute path. - The span. - is null. - - - - Returns true if the span represents a valid location. - - - - - Determines if two FileLinePositionSpan objects are equal. - - - The path is treated as an opaque string, i.e. a case-sensitive comparison is used. - - - - - Determines if two FileLinePositionSpan objects are equal. - - - - - Serves as a hash function for FileLinePositionSpan. - - The hash code. - - The path is treated as an opaque string, i.e. a case-sensitive hash is calculated. - - - - - Returns a that represents FileLinePositionSpan. - - The string representation of FileLinePositionSpan. - Path: (0,0)-(5,6) - - - - A program location in source code. - - - - - Indicates that the implementing type can be serialized via - for diagnostic message purposes. - - - Not appropriate on types that require localization, since localization should - happen after serialization. - - - - - A program location in source code. - - - - - Location kind (None/SourceFile/MetadataFile). - - - - - Returns true if the location represents a specific location in a source code file. - - - - - Returns true if the location is in metadata. - - - - - The syntax tree this location is located in or null if not in a syntax tree. - - - - - Returns the metadata module the location is associated with or null if the module is not available. - - - Might return null even if returns true. The module symbol might not be available anymore, - for example, if the location is serialized and deserialized. - - - - - The location within the syntax tree that this location is associated with. - - - If returns False this method returns an empty which starts at position 0. - - - - - Gets the location in terms of path, line and column. - - - that contains path, line and column information. - - Returns an invalid span (see ) if the information is not available. - - The values are not affected by line mapping directives (#line in C# or #ExternalSource in VB). - - - - - Gets the location in terms of path, line and column after applying source line mapping directives - (#line in C# or #ExternalSource in VB). - - - that contains file, line and column information, - or an invalid span (see ) if not available. - - - - - A location of kind LocationKind.None. - - - - - Creates an instance of a for a span in a . - - - - - Creates an instance of a for a span in a file. - - - - - Specifies the kind of location (source vs. metadata). - - - - - Unspecified location. - - - - - The location represents a position in a source file. - - - - - The location represents a metadata file. - - - - - The location represents a position in an XML file. - - - - - The location in some external file. - - - - - A program location in metadata. - - - - - A class that represents no location at all. Useful for errors in command line options, for example. - - - - - - Describes how to report a warning diagnostic. - - - - - Report a diagnostic by default. - - - - - Report a diagnostic as an error. - - - - - Report a diagnostic as a warning even though /warnaserror is specified. - - - - - Report a diagnostic as an info. - - - - - Report a diagnostic as hidden. - - - - - Suppress a diagnostic. - - - - - A program location in source code. - - - - - A program location in an XML file. - - - - - WARN: This is a test hook - do not take a dependency on this. - - - - - - - - - - A class used to provide XML documentation to the compiler for members from metadata. A - custom implementation of this class should be returned from a DocumentationResolver to provide XML - documentation comments from custom caches or locations. - - - - - Fetches a documentation comment for the given member ID. - - The documentation member ID of the item to fetch. - The preferred culture to receive a comment in. Null if - there is no preference. This is a preference only, and providers may choose to provide - results from another culture if the preferred culture was unavailable. - A cancellation token for the search. - A DocumentationComment. - - - - DocumentationProviders are compared when determining whether an AssemblySymbol can be reused. - Hence, if multiple instances can represent the same documentation, it is imperative that - Equals (and GetHashCode) be overridden to capture this fact. Otherwise, it is possible to end - up with multiple AssemblySymbols for the same assembly, which plays havoc with the type hierarchy. - - - - - DocumentationProviders are compared when determining whether an AssemblySymbol can be reused. - Hence, if multiple instances can represent the same documentation, it is imperative that - GetHashCode (and Equals) be overridden to capture this fact. Otherwise, it is possible to end - up with multiple AssemblySymbols for the same assembly, which plays havoc with the type hierarchy. - - - - - A trivial DocumentationProvider which never returns documentation. - - - - - Used by the DocumentationCommentCompiler(s) to check doc comments for XML parse errors. - As a performance optimization, this class tries to re-use the same underlying instance - when possible. - - - - - Current text to validate. - - - - - We use to validate XML doc comments. Unfortunately it cannot be reset and thus can't be pooled. - Each time we need to validate a fragment of XML we "append" it to the underlying text reader, implemented by this class, - and advance the reader. By the end of the fragment validation, we keep the reader open in a state - that is ready for the next fragment validation unless the fragment was invalid, in which case we need to create a new XmlReader. - That is why pretends that the stream has extra spaces - at the end. That should be sufficient for to not reach the end of this reader before the next - fragment is appended, unless the current fragment is malformed in one way or another. - - - - - Specifies the different documentation comment processing modes. - - - Order matters: least processing to most processing. - - - - - Treats documentation comments as regular comments. - - - - - Parses documentation comments as structured trivia, but do not report any diagnostics. - - - - - Parses documentation comments as structured trivia and report diagnostics. - - - - - Maps an async/iterator method to the synthesized state machine type that implements the method. - - - - - Generate a ConstantValue of the same integer type as the argument - and offset by the given non-negative amount. Return ConstantValue.Bad - if the generated constant would be outside the valid range of the type. - - - - - Set by the host to a fail fast trigger, - if the host desires to crash the process on a fatal exception. - - - - - Set by the host to a fail fast trigger, - if the host desires to NOT crash the process on a non fatal exception. - - - - - Use in an exception filter to report a fatal error. - Unless the exception is - it calls . The exception is passed through (the method returns false). - - False to avoid catching the exception. - - - - Use in an exception filter to report a non fatal error. - Unless the exception is - it calls . The exception isn't passed through (the method returns true). - - True to catch the exception. - - - - Use in an exception filter to report a fatal error. - Unless the exception is - it calls . The exception is passed through (the method returns false). - - False to avoid catching the exception. - - - - Use in an exception filter to report a fatal error. - Calls and passes the exception through (the method returns false). - - False to avoid catching the exception. - - - - Use in an exception filter to report a non fatal error. - Calls and doesn't pass the exception through (the method returns true). - - True to catch the exception. - - - - Cache with a fixed size that evicts the least recently used members. - Thread-safe. - - - - - Create cache from an array. The cache capacity will be the size - of the array. All elements of the array will be added to the - cache. If any duplicate keys are found in the array a - will be thrown. - - - - - For testing. Very expensive. - - - - - Expects non-empty cache. Does not lock. - - - - - Doesn't lock. - - - - - Doesn't lock. - - - - - Represents an optional bool as a single byte. - - - - - Structure that describes a member of a type. - - - - - Id/token of containing type, usually value from some enum. - For example from SpecialType enum. - I am not using SpecialType as the type for this field because - VB runtime types are not part of SpecialType. - - So, the implication is that any type ids we use outside of the SpecialType - (either for the VB runtime classes, or types like System.Task etc.) will need - to use IDs that are all mutually disjoint. - - - - - Signature of the field or method, similar to metadata signature, - but with the following exceptions: - 1) Truncated on the left, for methods starts at [ParamCount], for fields at [Type] - 2) Type tokens are not compressed - 3) BOOLEAN | CHAR | I1 | U1 | I2 | U2 | I4 | U4 | I8 | U8 | R4 | R8 | I | U | Void types are encoded by - using VALUETYPE+typeId notation. - 4) array bounds are not included. - 5) modifiers are not included. - 6) (CLASS | VALUETYPE) are omitted after GENERICINST - - - - - Helper class to match signatures in format of - MemberDescriptor.Signature to members. - - - - - Returns true if signature matches signature of the field. - Signature should be in format described in MemberDescriptor. - - - - - Returns true if signature matches signature of the property. - Signature should be in format described in MemberDescriptor. - - - - - Returns true if signature matches signature of the method. - Signature should be in format described in MemberDescriptor. - - - - - Does pretty much the same thing as MetadataDecoder.DecodeType only instead of - producing a type symbol it compares encoded type to the target. - - Signature should be in format described in MemberDescriptor. - - - - - Should return null in case of error. - - - - - Should return null in case of error. - - - - - Should only accept Pointer types. - Should return null in case of error. - - - - - Should return null in case of error. - - - - - Should only accept multi-dimensional arrays. - - - - - Should only accept multi-dimensional arrays. - Should return null in case of error. - - - - If the encoded type is invalid. - An exception from metadata reader. - - - If the encoded type is invalid. - An exception from metadata reader. - - - If the encoded type is invalid. - An exception from metadata reader. - - - An exception from metadata reader. - - - If the encoded type is invalid. - An exception from metadata reader. - - - If the encoded local variable type is invalid. - An exception from metadata reader. - - - If the encoded local variable type is invalid. - An exception from metadata reader. - - - If the encoded parameter type is invalid. - - - An exception from metadata reader. - - - - Decodes attribute parameter type from method signature. - - If the encoded parameter type is invalid. - An exception from metadata reader. - - - - Decodes attribute argument type from attribute blob (called FieldOrPropType in the spec). - - If the encoded argument type is invalid. - An exception from metadata reader. - - - If the encoded attribute argument is invalid. - An exception from metadata reader. - - - If the encoded attribute argument is invalid. - An exception from metadata reader. - - - If the encoded attribute argument is invalid. - An exception from metadata reader. - - - If the given is invalid. - An exception from metadata reader. - - - If the encoded named argument is invalid. - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - - Find the methods that a given method explicitly overrides. - - - Methods may be on class or interfaces. - Containing classes/interfaces will be supertypes of the implementing type. - - TypeDef handle of the implementing type. - MethodDef handle of the implementing method. - The type symbol for the implementing type. - Array of implemented methods. - - - - Search for the corresponding to the given MethodDef token. Search amongst - the supertypes (classes and interfaces) of a designated type. - - - Generally, the type will be a type that explicitly implements an interface and the method will be the - implemented method (i.e. on the interface). - - TypeDef token of the type from which the search should begin. - MethodDef token of the target method. - Corresponding or null, if none is found. - - - - Enqueue the interfaces implemented and the type extended by a given TypeDef. - - Queue of TypeDefs to search. - Queue of TypeSymbols (representing typeRefs to search). - Handle of the TypeDef for which we want to enqueue supertypes. - An exception from metadata reader. - - - - Helper method for enqueuing a type token in the right queue. - Def -> typeDefsToSearch - Ref -> typeSymbolsToSearch - null -> neither - - - - - Enqueue the interfaces implemented and the type extended by a given TypeDef. - - Queue of TypeDefs to search. - Queue of TypeSymbols (representing typeRefs to search). - Symbol for which we want to enqueue supertypes. - - - - Enqueue the given type as either a def or a ref. - - Queue of TypeDefs to search. - Queue of TypeSymbols (representing typeRefs to search). - Symbol to enqueue. - - - - Search the members of a TypeSymbol to find the one that matches a given MethodDef token. - - Type to search for method. - MethodDef handle of the method to find. - The corresponding MethodSymbol or null. - - - - Search the members of a TypeSymbol to find the one that matches a given FieldDef token. - - Type to search for field. - FieldDef handle of the field to find. - The corresponding FieldSymbol or null. - - - - Given a MemberRef token for a method, we can find a corresponding MethodSymbol by - searching for the name and signature. - - A MemberRef token for a method. - Scope the search to supertypes of the implementing type. - True to only return method symbols, null if the token resolves to a field. - The corresponding MethodSymbol or null. - - - - Given a method symbol, return the MethodDef token, if it is defined in - this module, or a nil token, otherwise. - - The method symbol for which to return a MethodDef token. - A MethodDef token or nil. - - - - Returns a symbol that given token resolves to or null of the token represents an entity that isn't represented by a symbol, - such as vararg MemberRef. - - - - - Given a MemberRef token, return the TypeSymbol for its Class field. - - - - - Checks whether signatures match where the signatures are either from a property - and an accessor or two accessors. When comparing a property or getter to setter, the - setter signature must be the second argument and 'comparingToSetter' must be true. - - - Signature of the property containing the accessor, or the getter (type, then parameters). - - - Signature of the accessor when comparing property and accessor, - or the setter when comparing getter and setter (return type and then parameters). - - - True when comparing a property or getter to a setter, false otherwise. - - - True if differences in IsByRef for parameters should be treated as significant. - - - True if differences in return type (or value parameter for setter) should be treated as significant. - - True if the accessor signature is appropriate for the containing property. - - - - Check whether an event accessor has an appropriate signature. - - Type of the event containing the accessor. - Signature of the accessor (return type and then parameters). - True if the accessor signature is appropriate for the containing event. - - - - Decodes a serialized type name in its canonical form. The canonical name is its full type name, followed - optionally by the assembly where it is defined, its version, culture and public key token. If the assembly - name is omitted, the type name is in the current assembly otherwise it is in the referenced assembly. The - full type name is the fully qualified metadata type name. - - - - - Decodes a type name. A type name is a string which is terminated by the end of the string or one of the - delimiters '+', ',', '[', ']'. '+' separates nested classes. '[' and ']' - enclosed generic type arguments. ',' separates types. - - - - - Decodes a generic name. This is a type name followed optionally by a type parameter count - - - - - An ImmutableArray representing the single string "System" - - - - - Calculates information about types and namespaces immediately contained within a namespace. - - - Length of the fully-qualified name of this namespace. - - - The sequence of groups of TypeDef row ids for types contained within the namespace, - recursively including those from nested namespaces. The row ids must be grouped by the - fully-qualified namespace name in case-sensitive manner. - Key of each IGrouping is a fully-qualified namespace name, which starts with the name of - this namespace. There could be multiple groups for each fully-qualified namespace name. - - The groups must be sorted by the keys in a manner consistent with comparer passed in as - nameComparer. Therefore, all types immediately contained within THIS namespace, if any, - must be in several IGrouping at the very beginning of the sequence. - - - Equality comparer to compare namespace names. - - - Output parameter, never null: - A sequence of groups of TypeDef row ids for types immediately contained within this namespace. - - - Output parameter, never null: - A sequence with information about namespaces immediately contained within this namespace. - For each pair: - Key - contains simple name of a child namespace. - Value – contains a sequence similar to the one passed to this function, but - calculated for the child namespace. - - - - - - Extract a simple name of a top level child namespace from potentially qualified namespace name. - - - Parent namespace name length plus the dot. - - - Fully qualified namespace name. - - - Simple name of a top level child namespace, the left-most name following parent namespace name - in the fully qualified name. - - - - - Determines whether given string can be used as a non-empty metadata identifier (a NUL-terminated UTF8 string). - - - - - True if the string doesn't contain incomplete surrogates. - - - - - Checks that the specified name is a valid metadata String and a file name. - The specification isn't entirely consistent and complete but it mentions: - - 22.19.2: "Name shall index a non-empty string in the String heap. It shall be in the format {filename}.{extension} (e.g., 'foo.dll', but not 'c:\utils\foo.dll')." - 22.30.2: "The format of Name is {file name}.{file extension} with no path or drive letter; on POSIX-compliant systems Name contains no colon, no forward-slash, no backslash." - As Microsoft specific constraint. - - A reasonable restriction seems to be a valid UTF8 non-empty string that doesn't contain '\0', '\', '/', ':' characters. - - - - - Determine if the given namespace and type names combine to produce the given fully qualified name. - - The namespace part of the split name. - The type name part of the split name. - The fully qualified name to compare with. - true if the combination of and equals the fully-qualified name given by - - - - Given an input string changes it to be acceptable as a part of a type name. - - - - - Specifies what symbols to import from metadata. - - - - - Only import public and protected symbols. - - - - - Import public, protected and internal symbols. - - - - - Import all symbols. - - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - - Helper structure to encapsulate/cache various information about metadata name of a type and - name resolution options. - Also, allows us to stop using strings in the APIs that accept only metadata names, - making usage of them less bug prone. - - - - - Full metadata name of a type, includes namespace name for top level types. - - - - - Namespace name for top level types. - - - - - Name of the type without namespace prefix, but possibly with generic arity mangling present. - - - - - Name of the type without namespace prefix and without generic arity mangling. - - - - - Arity of the type inferred based on the name mangling. It doesn't have to match the actual - arity of the type. - - - - - While resolving the name, consider only types with this arity. - (-1) means allow any arity. - If forcedArity >= 0 and useCLSCompliantNameArityEncoding, lookup may - fail because forcedArity doesn't match the one encoded in the name. - - - - - While resolving the name, consider only types following - CLS-compliant generic type names and arity encoding (ECMA-335, section 10.7.2). - I.e. arity is inferred from the name and matching type must have the same - emitted name and arity. - TODO: PERF: Encode this field elsewhere to save 4 bytes - - - - - Individual parts of qualified namespace name. - - - - - Full metadata name of a type, includes namespace name for top level types. - - - - - Namespace name for top level types, empty string for nested types. - - - - - Name of the type without namespace prefix, but possibly with generic arity mangling present. - - - - - Name of the type without namespace prefix and without generic arity mangling. - - - - - Arity of the type inferred based on the name mangling. It doesn't have to match the actual - arity of the type. - - - - - Does name include arity mangling suffix. - - - - - While resolving the name, consider only types following - CLS-compliant generic type names and arity encoding (ECMA-335, section 10.7.2). - I.e. arity is inferred from the name and matching type must have the same - emitted name and arity. - - - - - While resolving the name, consider only types with this arity. - (-1) means allow any arity. - If ForcedArity >= 0 and UseCLSCompliantNameArityEncoding, lookup may - fail because ForcedArity doesn't match the one encoded in the name. - - - - - Individual parts of qualified namespace name. - - - - - A digest of MetadataTypeName's fully qualified name which can be used as the key in a dictionary - - - - - Returns true if the nested type should be imported. - - - - - Returns true if the field should be imported. Visibility - and the value of are considered - - - - - Returns true if the flags represent a field that should be imported. - Visibility and the value of are considered - - - - - Returns true if the method should be imported. Returns false for private methods that are not - explicit interface implementations. For other methods, visibility and the value of - are considered. - - - - - Returns 0 if method name doesn't represent a v-table gap. - Otherwise, returns the gap size. - - - - - All assemblies this assembly references. - - - A concatenation of assemblies referenced by each module in the order they are listed in . - - - - - The number of assemblies referenced by each module in . - - - - - Assembly identity read from Assembly table, or null if the table is empty. - - - - - Using for atomicity. - - - - - - - - A set of helpers for extracting elements from metadata. - This type is not responsible for managing the underlying storage - backing the PE image. - - - - - Using as a type for atomicity. - - - - - If bitmap is not null, each bit indicates whether a TypeDef - with corresponding RowId has been checked if it is a NoPia - local type. If the bit is 1, local type will have an entry - in m_lazyTypeDefToTypeIdentifierMap. - - - - - For each TypeDef that has 1 in m_lazyNoPiaLocalTypeCheckBitMap, - this map stores corresponding TypeIdentifier AttributeInfo. - - - - - Target architecture of the machine. - - - - - Indicates that this PE file makes Win32 calls. See CorPEKind.pe32BitRequired for more information (http://msdn.microsoft.com/en-us/library/ms230275.aspx). - - - - An exception from metadata reader. - - - - Returns the names of linked managed modules. - - An exception from metadata reader. - - - - Returns names of referenced modules. - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - - The function groups types defined in the module by their fully-qualified namespace name. - The case-sensitivity of the grouping depends upon the provided StringComparer. - - The sequence is sorted by name by using provided comparer. Therefore, if there are multiple - groups for a namespace name (e.g. because they differ in case), the groups are going to be - adjacent to each other. - - Empty string is used as namespace name for types in the Global namespace. Therefore, all types - in the Global namespace, if any, should be in the first group (assuming a reasonable StringComparer). - - Comparer to sort the groups. - - - A sorted list of TypeDef row ids, grouped by fully-qualified namespace name. - An exception from metadata reader. - - - - Groups together the RowIds of types in a given namespaces. The types considered are - those defined in this module. - - An exception from metadata reader. - - - - Supplements the namespace-to-RowIDs map with the namespaces of forwarded types. - These types will not have associated row IDs (represented as null, for efficiency). - These namespaces are important because we want lookups of missing forwarded types - to succeed far enough that we can actually find the type forwarder and provide - information about the target assembly. - - For example, consider the following forwarded type: - - .class extern forwarder Namespace.Type {} - - If this type is referenced in source as "Namespace.Type", then dev10 reports - - error CS1070: The type name 'Namespace.Name' could not be found. This type has been - forwarded to assembly 'pe2, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'. - Consider adding a reference to that assembly. - - If we did not include "Namespace" as a child of the global namespace of this module - (the forwarding module), then Roslyn would report that the type "Namespace" was not - found and say nothing about "Name" (because of the diagnostic already attached to - the qualifier). - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - - Returns a collection of interfaces implemented by given type. - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - - Determine if custom attribute application is - NoPia TypeIdentifier. - - - An index of the target constructor signature in - signaturesOfTypeIdentifierAttribute array, -1 if - this is not NoPia TypeIdentifier. - - - - - Determines if a custom attribute matches a namespace and name. - - Handle of the custom attribute. - The custom attribute's namespace in metadata format (case sensitive) - The custom attribute's type name in metadata format (case sensitive) - Constructor of the custom attribute. - Should case be ignored for name comparison? - true if match is found - - - - Determines if a custom attribute matches a namespace and name. - - The metadata reader. - Handle of the custom attribute. - The custom attribute's namespace in metadata format (case sensitive) - The custom attribute's type name in metadata format (case sensitive) - Constructor of the custom attribute. - Should case be ignored for name comparison? - true if match is found - - - - Returns MetadataToken for assembly ref matching name - - The assembly name in metadata format (case sensitive) - Matching assembly ref token or nil (0) - - - - Returns MetadataToken for type ref matching resolution scope and name - - The resolution scope token - The namespace name in metadata format (case sensitive) - The type name in metadata format (case sensitive) - Matching type ref token or nil (0) - - - An exception from metadata reader. - - - - Determine if custom attribute matches the target attribute. - - - Handle of the custom attribute. - - The attribute to match. - - An index of the target constructor signature in - signatures array, -1 if - this is not the target attribute. - - - - - Determine if custom attribute matches the target attribute. - - - The metadata reader. - - - Handle of the custom attribute. - - The attribute to match. - - An index of the target constructor signature in - signatures array, -1 if - this is not the target attribute. - - - - - Given a token for a constructor, return the token for the constructor's type and the blob containing the - constructor's signature. - - True if the function successfully returns the type and signature. - - - - Given a token for a constructor, return the token for the constructor's type and the blob containing the - constructor's signature. - - True if the function successfully returns the type and signature. - - - - Given a token for a type, return the type's name and namespace. Only works for top level types. - namespaceHandle will be NamespaceDefinitionHandle for defs and StringHandle for refs. - - True if the function successfully returns the name and namespace. - - - - Given a token for a type, return the type's name and namespace. Only works for top level types. - namespaceHandle will be NamespaceDefinitionHandle for defs and StringHandle for refs. - - True if the function successfully returns the name and namespace. - - - - For testing purposes only!!! - - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - - Returns an array of tokens for type constraints. Null reference if none. - - - - An array of tokens for type constraints. Null reference if none. - - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - An exception from metadata reader. - - - - Returns true if method IL can be retrieved from the module. - - - - - Returns true if the full image of the module is available. - - - - Invalid metadata. - - - - Produce unbound generic type symbol if the type is a generic type. - - - - - Produce constructed type symbol. - - - - Symbol for generic type. - - - Generic type arguments, including those for containing types. - - - Flags for arguments. Each item indicates whether corresponding argument refers to NoPia local types. - - - - - Extracts information from TypeDef flags. - Returns 0 if the value is invalid. - - - - - Lookup a type defined in this module. - - - - - Lookup a type defined in referenced assembly. - - - - - Given the identity of an assembly referenced by this module, finds - the index of that assembly in the list of assemblies referenced by - the current module. - - - - - Represents an identity of an assembly as defined by CLI metadata specification. - - - May represent assembly definition or assembly reference identity. - - - Represents an identity of an assembly as defined by CLI metadata specification. - - - May represent assembly definition or assembly reference identity. - - - - - Constructs an from its constituent parts. - - The simple name of the assembly. - The version of the assembly. - - The name of the culture to associate with the assembly. - Specify null, , or "neutral" (any casing) to represent . - The name can be an arbitrary string that doesn't contain NUL character, the legality of the culture name is not validated. - - The public key or public key token of the assembly. - Indicates whether represents a public key. - Indicates whether the assembly is retargetable. - Specifies the binding model for how this object will be treated in comparisons. - If is null, empty or contains a NUL character. - If contains a NUL character. - is not a value of the enumeration. - contains values that are not greater than or equal to zero and less than or equal to ushort.MaxValue. - is true and is not set. - is false and - contains a value that is not the size of a public key token, 8 bytes. - - - - The simple name of the assembly. - - - - - The version of the assembly. - - - - - The culture name of the assembly, or empty if the culture is neutral. - - - - - The AssemblyNameFlags. - - - - - Specifies assembly binding model for the assembly definition or reference; - that is how assembly references are matched to assembly definitions. - - - - - True if the assembly identity includes full public key. - - - - - Full public key or empty. - - - - - Low 8 bytes of SHA1 hash of the public key, or empty. - - - - - True if the assembly identity has a strong name, ie. either a full public key or a token. - - - - - Gets the value which specifies if the assembly is retargetable. - - - - - Determines whether two instances are equal. - - The operand appearing on the left side of the operator. - The operand appearing on the right side of the operator. - - - - Determines whether two instances are not equal. - - The operand appearing on the left side of the operator. - The operand appearing on the right side of the operator. - - - - Determines whether the specified instance is equal to the current instance. - - The object to be compared with the current instance. - - - - Determines whether the specified instance is equal to the current instance. - - The object to be compared with the current instance. - - - - Returns the hash code for the current instance. - - - - - - Returns true (false) if specified assembly identities are (not) equal - regardless of unification, retargeting or other assembly binding policies. - Returns null if these policies must be consulted to determine name equivalence. - - - - - Retrieves assembly definition identity from given runtime assembly. - - The runtime assembly. - Assembly definition identity. - is null. - - - - Returns the display name of the assembly identity. - - True if the full public key should be included in the name. Otherwise public key token is used. - The display name. - - Characters ',', '=', '"', '\'', '\' occurring in the simple name are escaped by backslash in the display name. - Any character '\t' is replaced by two characters '\' and 't', - Any character '\n' is replaced by two characters '\' and 'n', - Any character '\r' is replaced by two characters '\' and 'r', - The assembly name in the display name is enclosed in double quotes if it starts or ends with - a whitespace character (' ', '\t', '\r', '\n'). - - - - - Returns the display name of the current instance. - - - - - Parses display name filling defaults for any basic properties that are missing. - - Display name. - A full assembly identity. - - Parts of the assembly identity that were specified in the display name, - or 0 if the parsing failed. - - True if display name parsed correctly. - - The simple name has to be non-empty. - A partially specified version might be missing build and/or revision number. The default value for these is 65535. - The default culture is neutral ( is . - If neither public key nor token is specified the identity is considered weak. - - is null. - - - - Compares assembly identities. - Derived types may implement platform specific unification and portability policies. - - - - - A set of possible outcomes of comparison. - - - - - Reference doesn't match definition. - - - - - Strongly named reference matches strongly named definition (strong identity is identity with public key or token), - Or weak reference matches weak definition. - - - - - Reference matches definition except for version (reference version is lower or higher than definition version). - - - - - Compares assembly reference name (possibly partial) with definition identity. - - Partial or full assembly display name. - Full assembly display name. - True if the reference name matches the definition identity. - - - - Compares assembly reference identity with definition identity. - - Reference assembly identity. - Full assembly display name. - True if the reference identity matches the definition identity. - - - - Compares reference assembly identity with definition identity and returns their relationship. - - Reference identity. - Definition identity. - - - - Represents an immutable snapshot of assembly CLI metadata. - - - - - Factory that provides the for additional modules (other than ) of the assembly. - Shall only throw or . - Null of all modules were specified at construction time. - - - - - Modules the was created with, in case they are eagerly allocated. - - - - - Cached assembly symbols. - - - Guarded by . - - - - - Creates a single-module assembly. - - - Manifest module image. - - is null. - - - - Creates a single-module assembly. - - - Manifest module image. - - is null. - The PE image format is invalid. - - - - Creates a single-module assembly. - - Manifest module PE image stream. - False to close the stream upon disposal of the metadata. - The PE image format is invalid. - - - - Creates a single-module assembly. - - Manifest module PE image stream. - False to close the stream upon disposal of the metadata. - The PE image format is invalid. - - - - Finds all modules of an assembly on a specified path and builds an instance of that represents them. - - The full path to the assembly on disk. - is null. - is invalid. - Error reading file . See for details. - Reading from a file path is not supported by the platform. - - - - Creates a single-module assembly. - - - Manifest module. - - This object disposes it when it is itself disposed. - - - - Creates a multi-module assembly. - - - Modules comprising the assembly. The first module is the manifest module of the assembly. - This object disposes the elements of it when it is itself . - is default value. - contains null elements. - is empty or contains a module that doesn't own its image (was created via ). - - - - Creates a multi-module assembly. - - - Modules comprising the assembly. The first module is the manifest module of the assembly. - This object disposes the elements of it when it is itself . - is default value. - contains null elements. - is empty or contains a module that doesn't own its image (was created via ). - - - - Creates a multi-module assembly. - - Modules comprising the assembly. The first module is the manifest module of the assembly. - This object disposes the elements of it when it is itself . - is default value. - contains null elements. - is empty or contains a module that doesn't own its image (was created via ). - - - - Creates a shallow copy of contained modules and wraps them into a new instance of . - - - The resulting copy shares the metadata images and metadata information read from them with the original. - It doesn't own the underlying metadata images and is not responsible for its disposal. - - This is used, for example, when a metadata cache needs to return the cached metadata to its users - while keeping the ownership of the cached metadata object. - - - - - Modules comprising this assembly. The first module is the manifest module. - - The PE image format is invalid. - IO error reading the metadata. See for details. - The object has been disposed. - - - The PE image format is invalid. - IO error while reading the metadata. See for details. - The object has been disposed. - - - The PE image format is invalid. - IO error while reading the metadata. See for details. - The object has been disposed. - - - - Disposes all modules contained in the assembly. - - - - - Checks if the first module has a single row in Assembly table and that all other modules have none. - - The PE image format is invalid. - IO error reading the metadata. See for details. - The object has been disposed. - - - - Returns the metadata kind. - - - - - Creates a reference to the assembly metadata. - - Provider of XML documentation comments for the metadata symbols contained in the module. - Aliases that can be used to refer to the assembly from source code (see "extern alias" directive in C#). - True to embed interop types from the referenced assembly to the referencing compilation. Must be false for a module. - Path describing the location of the metadata, or null if the metadata have no location. - Display string used in error messages to identity the reference. - A reference to the assembly metadata. - - - - Reference to another C# or VB compilation. - - - - - Returns an instance of the reference with specified aliases. - - The new aliases for the reference. - Alias is invalid for the metadata kind. - - - - Returns an instance of the reference with specified aliases. - - The new aliases for the reference. - Alias is invalid for the metadata kind. - - - - Returns an instance of the reference with specified interop types embedding. - - The new value for . - Interop types can't be embedded from modules. - - - - Returns an instance of the reference with specified properties, or this instance if properties haven't changed. - - The new properties for the reference. - Specified values not valid for this reference. - - - - Represents immutable assembly or module CLI metadata. - - - - - Retrieves the for this instance. - - - - - Releases any resources associated with this instance. - - - - - Creates a copy of this object. - - - - - The kind of metadata a PE file image contains. - - - - - The PE file is an assembly. - - - - - The PE file is a module. - - - - - Represents an in-memory Portable-Executable image. - - - - - Represents metadata image reference. - - - Represents a logical location of the image, not the content of the image. - The content might change in time. A snapshot is taken when the compiler queries the reference for its metadata. - - - - - Path or name used in error messages to identity the reference. - - - - - Returns true if this reference is an unresolved reference. - - - - - Returns an instance of the reference with specified aliases. - - The new aliases for the reference. - Alias is invalid for the metadata kind. - - - - Returns an instance of the reference with specified interop types embedding. - - The new value for . - Interop types can't be embedded from modules. - - - - Returns an instance of the reference with specified aliases. - - The new aliases for the reference. - Alias is invalid for the metadata kind. - - - - Returns an instance of the reference with specified properties, or this instance if properties haven't changed. - - The new properties for the reference. - Specified values not valid for this reference. - - - - Creates a reference to a single-module assembly or a standalone module stored in memory. - - Assembly image. - Reference properties (extern aliases, type embedding, ). - Provides XML documentation for symbol found in the reference. - Optional path that describes the location of the metadata. The file doesn't need to exist on disk. The path is opaque to the compiler. - - Performance considerations: - - It is recommended to use or - API when creating multiple references to the same metadata. - Reusing object to create multiple references allows for sharing data across these references. - - - The method pins in managed heap. The pinned memory is released - when the resulting reference becomes unreachable and GC collects it. To control the lifetime of the pinned memory - deterministically use - to create an metadata object and - to get a reference to it. - - - The method creates a reference to a single-module assembly. To create a reference to a multi-module assembly or a stand-alone module use - and . - - - is null. - - - - Creates a reference to a single-module assembly or a standalone module stored in memory. - - Assembly image. - Reference properties (extern aliases, type embedding, ). - Provides XML documentation for symbol found in the reference. - Optional path that describes the location of the metadata. The file doesn't need to exist on disk. The path is opaque to the compiler. - - Performance considerations: - - It is recommended to use or - API when creating multiple references to the same metadata. - Reusing object to create multiple references allows for sharing data across these references. - - - The method makes a copy of the data and pins it. To avoid making a copy use an overload that takes an . - The pinned memory is released when the resulting reference becomes unreachable and GC collects it. To control the lifetime of the pinned memory - deterministically use - to create an metadata object and - to get a reference to it. - to get a reference to it. - - - is null. - - - - Creates a reference to a single-module assembly or a stand-alone module from data in specified stream. - Reads the content of the stream into memory and closes the stream upon return. - - Assembly image. - Reference properties (extern aliases, type embedding, ). - Provides XML documentation for symbol found in the reference. - Optional path that describes the location of the metadata. The file doesn't need to exist on disk. The path is opaque to the compiler. - doesn't support read and seek operations. - is null. - An error occurred while reading the stream. - - Performance considerations: - - It is recommended to use or - API when creating multiple references to the same metadata. - Reusing object to create multiple references allows for sharing data across these references. - - - The method eagerly reads the entire content of into native heap. The native memory block is released - when the resulting reference becomes unreachable and GC collects it. To decrease memory footprint of the reference and/or manage - the lifetime deterministically use - to create an metadata object and - to get a reference to it. - to get a reference to it. - - - - - - Creates a reference to an assembly or standalone module stored in a file. - Reads the content of the file into memory. - - Path to the assembly file. - Reference properties (extern aliases, type embedding, ). - Provides XML documentation for symbol found in the reference. - is null. - is invalid. - An error occurred while reading the file. - - Performance considerations: - - It is recommended to use or - API when creating multiple references to the same file. - Reusing object allows for sharing data across these references. - - - The method eagerly reads the entire content of the file into native heap. The native memory block is released - when the resulting reference becomes unreachable and GC collects it. To decrease memory footprint of the reference and/or manage - the lifetime deterministically use - to create an metadata object and - - to get a reference to it. - - - - - - Creates a reference to a loaded assembly. - - Path to the module file. - is null. - is dynamic, doesn't have a location, or the platform doesn't support reading from the location. - - Performance considerations: - - It is recommended to use API when creating multiple references to the same assembly. - Reusing object allows for sharing data across these references. - - - - - - Creates a reference to a loaded assembly. - - Path to the module file. - Reference properties (extern aliases, type embedding). - Provides XML documentation for symbol found in the reference. - is null. - . is not . - is dynamic, doesn't have a location, or the platform doesn't support reading from the location. - - Performance considerations: - - It is recommended to use API when creating multiple references to the same assembly. - Reusing object allows for sharing data across these references. - - - - - - Information about a metadata reference. - - - - - Default properties for a module reference. - - - - - Default properties for an assembly reference. - - - - - Initializes reference properties. - - The image kind - assembly or module. - Assembly aliases. Can't be set for a module. - True to embed interop types from the referenced assembly to the referencing compilation. Must be false for a module. - - - - Returns with specified aliases. - - - is , as modules can't be aliased. - - - - - Returns with specified aliases. - - - is , as modules can't be aliased. - - - - - Returns with set to specified value. - - is , as interop types can't be embedded from modules. - - - - Returns with set to specified value. - - - - - The image kind (assembly or module) the reference refers to. - - - - - Alias that represents a global declaration space. - - - Namespaces in references whose contain are available in global declaration space. - - - - - Aliases for the metadata reference. Empty if the reference has no aliases. - - - In C# these aliases can be used in "extern alias" syntax to disambiguate type names. - - - - - True if interop types defined in the referenced metadata should be embedded into the compilation referencing the metadata. - - - - - True to apply recursively on the target assembly and on all its transitive dependencies. - False to apply only on the target assembly. - - - - - Resolves references to metadata specified in the source (#r directives). - - - - - True to instruct the compiler to invoke for each assembly reference that - doesn't match any of the assemblies explicitly referenced by the (via , or #r directives. - - - - - Resolves a missing assembly reference. - - The metadata definition (assembly or module) that declares assembly reference in its list of dependencies. - Identity of the assembly reference that couldn't be resolved against metadata references explicitly specified to in the compilation. - Resolved reference or null if the identity can't be resolved. - - - - Represents an immutable snapshot of module CLI metadata. - - This object may allocate significant resources or lock files depending upon how it is constructed. - - - - Create metadata module from a raw memory pointer to metadata directory of a PE image or .cormeta section of an object file. - Only manifest modules are currently supported. - - Pointer to the start of metadata block. - The size of the metadata block. - is null. - is not positive. - - - - Create metadata module from a raw memory pointer to a PE image or an object file. - - Pointer to the DOS header ("MZ") of a portable executable image. - The size of the image pointed to by . - is null. - is not positive. - - - - Create metadata module from a sequence of bytes. - - The portable executable image beginning with the DOS header ("MZ"). - is null. - - - - Create metadata module from a byte array. - - Portable executable image beginning with the DOS header ("MZ"). - is null. - - - - Create metadata module from a stream. - - Stream containing portable executable image. Position zero should contain the first byte of the DOS header ("MZ"). - - False to close the stream upon disposal of the metadata (the responsibility for disposal of the stream is transferred upon entry of the constructor - unless the arguments given are invalid). - - is null. - The stream doesn't support seek operations. - - - - Create metadata module from a stream. - - Stream containing portable executable image. Position zero should contain the first byte of the DOS header ("MZ"). - - Options specifying how sections of the PE image are read from the stream. - Unless is specified, the responsibility for disposal of the stream is transferred upon entry of the constructor - unless the arguments given are invalid. - - is null. - The stream doesn't support read and seek operations. - has an invalid value. - - or is specified and the PE headers of the image are invalid. - - - or is specified and an error occurs while reading the stream. - - - - - Creates metadata module from a file containing a portable executable image. - - File path. - - The file might remain mapped (and read-locked) until this object is disposed. - The memory map is only created for large files. Small files are read into memory. - - is null. - is invalid. - Error opening file . See for details. - File not found. - Reading from a file path is not supported by the platform. - - - - Creates a shallow copy of this object. - - - The resulting copy shares the metadata image and metadata information read from it with the original. - It doesn't own the underlying metadata image and is not responsible for its disposal. - - This is used, for example, when a metadata cache needs to return the cached metadata to its users - while keeping the ownership of the cached metadata object. - - - - - Frees memory and handles allocated for the module. - - - - - Name of the module. - - Invalid metadata. - Module has been disposed. - - - - Version of the module content. - - Invalid metadata. - Module has been disposed. - - - - Returns the for this instance. - - - - - Returns the file names of linked managed modules. - - When an invalid module name is encountered. - Module has been disposed. - - - - Returns the metadata reader. - - Module has been disposed. - When an invalid module name is encountered. - - - - Creates a reference to the module metadata. - - Provider of XML documentation comments for the metadata symbols contained in the module. - Path describing the location of the metadata, or null if the metadata have no location. - Display string used in error messages to identity the reference. - A reference to the module metadata. - - - - Reference to metadata stored in the standard ECMA-335 metadata format. - - - - - Display string used in error messages to identity the reference. - - - - - Path describing the location of the metadata, or null if the metadata have no location. - - - - - XML documentation comments provider for the reference. - - - - - Create documentation provider for the reference. - - - Called when the compiler needs to read the documentation for the reference. - This method can be called multiple times from different threads. The result of one of the calls - is cached on the reference object. - - - - - Returns an instance of the reference with specified aliases. - - The new aliases for the reference. - Alias is invalid for the metadata kind. - - - - Returns an instance of the reference with specified aliases. - - The new aliases for the reference. - Alias is invalid for the metadata kind. - - - - Returns an instance of the reference with specified interop types embedding. - - The new value for . - Interop types can't be embedded from modules. - - - - Returns an instance of the reference with specified properties, or this instance if properties haven't changed. - - The new properties for the reference. - Specified values not valid for this reference. - - - - Returns an instance of the reference with specified properties. - - The new properties for the reference. - Specified values not supported. - Only invoked if the properties changed. - - - - Get metadata representation for the PE file. - - If the PE image format is invalid. - The metadata image content can't be read. - The metadata image is stored in a file that can't be found. - - Called when the needs to read the reference metadata. - - The listed exceptions are caught and converted to compilation diagnostics. - Any other exception is considered an unexpected error in the implementation and is not caught. - - objects may cache information decoded from the PE image. - Reusing instances across metadata references will result in better performance. - - The calling doesn't take ownership of the objects returned by this method. - The implementation needs to retrieve the object from a provider that manages their lifetime (such as metadata cache). - The object is kept alive by the that called - and by all compilations created from it via calls to With- factory methods on , - other than overloads. A compilation created using - will call to again. - - - - - Represents the value of #r reference along with its source location. - - - - - Represents a metadata reference that can't be or is not yet resolved. - - - For error reporting only, can't be used to reference a metadata file. - - - - - Initializes a new instance of the class. - - An ordered set of fully qualified - paths which are searched when resolving assembly names. - Directory used when resolving relative paths. - - - - Represents errors that occur while parsing RuleSet files. - - - - - Represents a set of rules as specified in a ruleset file. - - - - - The file path of the ruleset file. - - - - - The global option specified by the IncludeAll tag. - - - - - Individual rule ids and their associated actions. - - - - - List of rulesets included by this ruleset. - - - - - Create a RuleSet. - - - - - Create a RuleSet with a global effective action applied on it. - - - - - Get the effective ruleset after resolving all the included rulesets. - - - - - Get all the files involved in resolving this ruleset. - - - - - Returns true if the action1 is stricter than action2. - - - - - Load the ruleset from the specified file. This ruleset will contain - all the rules resolved from the includes specified in the ruleset file - as well. See also: . - - - A ruleset that contains resolved rules or null if there were errors. - - - - - Get the paths to all files contributing rules to the ruleset from the specified file. - See also: . - - - The full paths to included files, or an empty array if there were errors. - - - - - Parses the ruleset file at the given and returns the following diagnostic options from the parsed file: - 1) A map of from rule ID to option. - 2) A global option for all rules in the ruleset file. - - - - - Represents a Include tag in a RuleSet file. - - - - - The path of the included file. - - - - - The effective action to apply on this included ruleset. - - - - - Create a RuleSetInclude given the include path and the effective action. - - - - - Gets the RuleSet associated with this ruleset include - - The parent of this ruleset include - - - - Returns a full path to the include file. Relative paths are expanded relative to the current rule set file. - - The parent of this rule set include - - - - This type is responsible for parsing a ruleset xml file and producing a object. - - - - - Creates and loads the rule set from a file - - The file path to load the rule set - - - - Load the rule set from the XML node - - The rule set node from which to create a rule set object - The file path to the rule set file - A rule set object with data from the given XML node - - - - Load the rules from the XML node - - The rules node from which to loop through each child rule node - A list of rule objects with data from the given XML node - - - - Load the rule from the XML node - - The rule node from which to create a rule object - The analyzer this rule belongs to - The namespace this rule belongs to - A rule object with data from the given XML node - - - - Load the included rule set from the XML node - - The include node from which to create a RuleSetInclude object - A RuleSetInclude object with data from the given XML node - - - - Reads the action from the given node - - The node to read the action, it can be a rule node or an include node. - Whether or not the default value is allowed. - The rule action - - - - Load the IncludedAll from the XML node - - The IncludeAll node from which to create a IncludeAll object - A IncludeAll object with data from the given XML node - - - - Reads an attribute from a node and validates that it is not empty. - - The XML node that contains the attribute - The name of the attribute to read - The attribute value - - - - Gets the default settings to read the ruleset xml file. - - - - - Resolves references to source files specified in source code. - - - - - Determines if a flag is set on the enum. - - The value to check. - An enum field that specifies the flag. - Whether the is set on the . - - - - Specifies the options for how generics are displayed in the description of a symbol. - - - - - Format object using default options. - - - - - In C#, include the numeric code point before character literals. - - - - - Whether or not to include type suffix for applicable integral literals. - - - - - Whether or not to display integral literals in hexadecimal. - - - - - Whether or not to quote character and string literals. In Visual Basic, this also enables pretty-listing of non-printable characters using ChrW function and vb* constants. - - - - - Represents a value type that can be assigned null. - - - - - - Initializes a new instance to the specified value. - - - - - - Gets a value indicating whether the current object has a value. - - - - - - Gets the value of the current object. - - - - - - Creates a new object initialized to a specified value. - - - - - - Specifies output assembly kinds generated by compiler. - - - - - An .exe with an entry point and a console. - - - - - An .exe with an entry point but no console. - - - - - A .dll file. - - - - - A .netmodule file. - - - - - A .winmdobj file. - - - - - An .exe that can run in an app container. - - - Equivalent to a WindowsApplication, but with an extra bit set in the Portable Executable file - so that the application can only be run in an app container. - Also known as a "Windows Store app". - - - - - The base class for language specific assembly managers. - - Language specific representation for a compilation - Language specific representation for an assembly symbol. - - - - Information about an assembly, used as an input for the Binder class. - - - - - Identity of the assembly. - - - - - Identity of assemblies referenced by this assembly. - References should always be returned in the same order. - - - - - The sequence of AssemblySymbols the Binder can choose from. - - - - - Check if provided AssemblySymbol is created for assembly described by this instance. - This method is expected to return true for every AssemblySymbol returned by - AvailableSymbols property. - - - The AssemblySymbol to check. - - Boolean. - - - - Resolve assembly references against assemblies described by provided AssemblyData objects. - In other words, match assembly identities returned by AssemblyReferences property against - assemblies described by provided AssemblyData objects. - - An array of AssemblyData objects to match against. - Used to compare assembly identities. - - For each assembly referenced by this assembly () - a description of how it binds to one of the input assemblies. - - - - - Get the source compilation backing this assembly, if one exists. - Returns null otherwise. - - - - - Result of binding an AssemblyRef to an AssemblyDef. - - - - - Failed binding. - - - - - Successful binding. - - - - - Returns true if the reference was matched with the identity of the assembly being built. - - - - - True if the definition index is available (reference was successfully matched with the definition). - - - - - 0 if the reference is equivalent to the definition. - -1 if version of the matched definition is lower than version of the reference, but the reference otherwise matches the definition. - +1 if version of the matched definition is higher than version of the reference, but the reference otherwise matches the definition. - - Undefined unless is true. - - - - - Index into assembly definition list. - Undefined unless is true. - - - - - Private helper class to capture information about AssemblySymbol instance we - should check for suitability. Used by the Bind method. - - - - - An index of the AssemblyData object in the input array. AssemblySymbol instance should - be checked for suitability against assembly described by that object, taking into account - assemblies described by other AssemblyData objects in the input array. - - - - - AssemblySymbol instance to check for suitability. - - - - - Convenience constructor to initialize fields of this structure. - - - - - Result of binding an input assembly and its references. - - - - - Suitable AssemblySymbol instance for the corresponding assembly, - null reference if none is available/found. - - - - - For each AssemblyRef of this AssemblyDef specifies which AssemblyDef matches the reference. - - - Result of resolving assembly references of the corresponding assembly - against provided set of assemblies. Essentially, this is an array returned by - AssemblyData.BindAssemblyReferences method. - - Each element describes the assembly the corresponding reference of the input assembly - is bound to. - - - - - For the given set of AssemblyData objects, do the following: - 1) Resolve references from each assembly against other assemblies in the set. - 2) Choose suitable AssemblySymbol instance for each AssemblyData object. - - The first element (index==0) of the assemblies array represents the assembly being built. - One can think about the rest of the items in assemblies array as assembly references given to the compiler to - build executable for the assembly being built. - - Compilation. - - An array of objects describing assemblies, for which this method should - resolve references and find suitable AssemblySymbols. The first slot contains the assembly being built. - - - An array of objects describing standalone modules referenced by the compilation. - - - An array of references passed to the compilation and resolved from #r directives. - May contain references that were skipped during resolution (they don't have a corresponding explicit assmebly). - - - Maps index to to an index of a resolved assembly or module in or modules. - - - Reference resolver used to look up missing assemblies. - - - Hide lower versions of dependencies that have multiple versions behind an alias. - - - Used to filter out assemblies that have the same strong or weak identity. - Maps simple name to a list of identities. The highest version of each name is the first. - - - Import options applied to implicitly resolved references. - - - Updated array with resolved implicitly referenced assemblies appended. - - - Implicitly resolved references. - - - Maps indices of implicitly resolved references to the corresponding indices of resolved assemblies in (explicit + implicit). - - - Any diagnostics reported while resolving missing assemblies. - - - True if the assembly being compiled is indirectly referenced through some of its own references. - - - The definition index of the COR library. - - - An array of structures describing the result. It has the same amount of items as - the input assemblies array, for each input AssemblyData object resides - at the same position. - - Each contains the following data: - - - Suitable AssemblySymbol instance for the corresponding assembly, - null reference if none is available/found. Always null for the first element, which corresponds to the assembly being built. - - - Result of resolving assembly references of the corresponding assembly - against provided set of assembly definitions. Essentially, this is an array returned by - method. - - - - - Determines if it is possible that gives internals - access to assembly . It does not make a conclusive - determination of visibility because the compilation's strong name key is not supplied. - - - - - Return AssemblySymbols referenced by the input AssemblySymbol. The AssemblySymbols must correspond - to the AssemblyNames returned by AssemblyData.AssemblyReferences property. If reference is not - resolved, null reference should be returned in the corresponding item. - - - The target AssemblySymbol instance. - - An array of AssemblySymbols referenced by the input AssemblySymbol. - Implementers may return cached array, Binder does not mutate it. - - - - - Return collection of assemblies involved in canonical type resolution of - NoPia local types defined within target assembly. In other words, all - references used by previous compilation referencing the target assembly. - - - - - Assembly is /l-ed by compilation that is using it as a reference. - - - - - Get Assembly used as COR library for the candidate. - - - - - Checks if the properties of are compatible with properties of . - Reports inconsistencies to the given diagnostic bag. - - True if the properties are compatible and hence merged, false if the duplicate reference should not merge it's properties with primary reference. - - - - Called to compare two weakly named identities with the same name. - - - - - Aliases that should be applied to the referenced assembly. - Empty array means {"global"} (all namespaces and types in the global namespace of the assembly are accessible without qualification). - Null if not applicable (the reference only has recursive aliases). - - - - - Aliases that should be applied recursively to all dependent assemblies. - Empty array means {"global"} (all namespaces and types in the global namespace of the assembly are accessible without qualification). - Null if not applicable (the reference only has simple aliases). - - - - - default() is considered skipped. - - - - - Index into an array of assemblies (not including the assembly being built) or an array of modules, depending on . - - - - - non-negative: Index into the array of all (explicitly and implicitly) referenced assemblies. - negative: ExplicitlyReferencedAssemblies.Count + RelativeAssemblyIndex is an index into the array of assemblies. - - - - - Resolves given metadata references to assemblies and modules. - - The compilation whose references are being resolved. - - Used to filter out assemblies that have the same strong or weak identity. - Maps simple name to a list of identities. The highest version of each name is the first. - - List where to store resolved references. References from #r directives will follow references passed to the compilation constructor. - Maps #r values to successfully resolved metadata references. Does not contain values that failed to resolve. - Unique metadata references resolved from #r directives. - List where to store information about resolved assemblies to. - List where to store information about resolved modules to. - Diagnostic bag where to report resolution errors. - - Maps index to to an index of a resolved assembly or module in or , respectively. - - - - - Creates or gets metadata for PE reference. - - - If any of the following exceptions: , , , - are thrown while reading the metadata file, the exception is caught and an appropriate diagnostic stored in . - - - - - Determines whether references are the same. Compilation references are the same if they refer to the same compilation. - Otherwise, references are represented by their object identities. - - - - - Merges aliases of the first observed reference () with aliases specified for an equivalent reference (). - Empty alias list is considered to be the same as a list containing "global", since in both cases C# allows unqualified access to the symbols. - - - - - Caller is responsible for freeing any allocated ArrayBuilders. - - - - - Caller is responsible for freeing any allocated ArrayBuilders. - - - - - Returns null if an assembly of an equivalent identity has not been added previously, otherwise returns the reference that added it. - Two identities are considered equivalent if - - both assembly names are strong (have keys) and are either equal or FX unified - - both assembly names are weak (no keys) and have the same simple name. - - - - - For each given directive return a bound PE reference, or null if the binding fails. - - - - - Used to match AssemblyRef with AssemblyDef. - - Array of definition identities to match against. - An index of the first definition to consider, preceding this index are ignored. - Reference identity to resolve. - Assembly identity comparer. - - Returns an index the reference is bound. - - - - - If the compilation being built represents an assembly its assembly name. - If the compilation being built represents a module, the name of the - containing assembly or - if not specified (/moduleassemblyname command line option). - - - - - Used to compares assembly identities. - May implement unification and portability policies specific to the target platform. - - - - - Metadata observed by the compiler. - May be shared across multiple Reference Managers. - Access only under lock(). - - - - - Once this is non-zero the state of the manager is fully initialized and immutable. - - - - - True if the compilation has a reference that refers back to the assembly being compiled. - - - If we have a circular reference the bound references can't be shared with other compilations. - - - - - A map from a metadata reference to an index to array. Do not access - directly, use property instead. - - - - - A map from a net-module metadata reference to the index of the corresponding module - symbol in the source assembly symbol for the current compilation. - - - Subtract one from the index (for the manifest module) to find the corresponding elements - of and . - - - - - Maps (containing syntax tree file name, reference string) of #r directive to a resolved metadata reference. - If multiple #r's in the same tree use the same value as a reference the resolved metadata reference is the same as well. - - - - - Array of unique bound #r references. - - - The references are in the order they appear in syntax trees. This order is currently preserved - as syntax trees are added or removed, but we might decide to share reference manager between compilations - with different order of #r's. It doesn't seem this would be an issue since all #r's within the compilation - have the same "priority" with respect to each other. - - - - - Diagnostics produced during reference resolution and binding. - - - When reporting diagnostics be sure not to include any information that can't be shared among - compilations that share the same reference manager (such as full identity of the compilation, - simple assembly name is ok). - - - - - COR library symbol, or null if the compilation itself is the COR library. - - - If the compilation being built is the COR library we don't want to store its source assembly symbol - here since we wouldn't be able to share the state among subsequent compilations that are derived from it - (each of them has its own source assembly symbol). - - - - - Standalone modules referenced by the compilation (doesn't include the manifest module of the compilation). - - - [i] corresponds to [i]. - - - - - References of standalone modules referenced by the compilation (doesn't include the manifest module of the compilation). - - - [i] corresponds to [i]. - - - - - Assemblies referenced directly by the source module of the compilation. - - - - - Assemblies referenced directly by the source module of the compilation. - - - Aliases [i] are of an assembly [i]. - - - - - Unified assemblies referenced directly by the source module of the compilation. - - - - - Call only while holding . - - - - - Call only while holding . - - - - - Global namespaces of assembly references that have been superseded by an assembly reference with a higher version are - hidden behind to avoid ambiguity when they are accessed from source. - All existing aliases of a superseded assembly are discarded. - - - - - Gets the that corresponds to the assembly symbol. - - - - - Must be acquired whenever the following data are about to be modified: - - Compilation.lazyAssemblySymbol - - Compilation.referenceManager - - ReferenceManager state - - - - - - All the above data should be updated at once while holding this lock. - Once lazyAssemblySymbol is set the Compilation.referenceManager field and ReferenceManager - state should not change. - - - - - Enumerates all referenced assemblies. - - - - - Enumerates all referenced assemblies and their aliases. - - - - - A record of the assemblies referenced by a module (their identities, symbols, and unification). - - - - - Identities of referenced assemblies (those that are or will be emitted to metadata). - - - Names[i] is the identity of assembly Symbols[i]. - - - - - Assembly symbols that the identities are resolved against. - - - Names[i] is the identity of assembly Symbols[i]. - Unresolved references are represented as MissingAssemblySymbols. - - - - - A subset of that correspond to references with non-matching (unified) - version along with unification details. - - - - - Assembly symbol referenced by a AssemblyRef for which we couldn't find a matching - compilation reference but we found one that differs in version. - Created only for assemblies that require runtime binding redirection policy, - i.e. not for Framework assemblies. - - - - - Original reference that was unified to the identity of the . - - - - - Representation of a resource whose contents are to be embedded in the output assembly. - - - - - Creates a representation of a resource whose contents are to be embedded in the output assembly. - - Resource name. - The callers will dispose the result after use. - This allows the resources to be opened and read one at a time. - - True if the resource is public. - - Returns a stream of the data to embed. - - - - - Creates a representation of a resource whose file name will be recorded in the assembly. - - Resource name. - File name with an extension to be stored in metadata. - The callers will dispose the result after use. - This allows the resources to be opened and read one at a time. - - True if the resource is public. - - Function returning a stream of the resource content (used to calculate hash). - - - - - Specifies the C# or VB source code kind. - - - - - No scripting. Used for .cs/.vb file parsing. - - - - - Allows top-level statements, declarations, and optional trailing expression. - Used for parsing .csx/.vbx and interactive submissions. - - - - - The same as . - - - - - Specifies the Ids of special runtime types. - - - Only types explicitly mentioned in "Co-located core types" spec - (https://github.com/dotnet/roslyn/blob/master/docs/compilers/Co-located%20core%20types.md) - can be in this enum. - The following things should be in sync: - 1) SpecialType enum - 2) names in SpecialTypes.EmittedNames array. - - - - - Indicates a non-special type (default value). - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Indicates that the type is . - - - - - Count of special types. This is not a count of enum members. - - - - - Checks if a type is considered a "built-in integral" by CLR. - - - - - Checks if a type is a primitive of a fixed size. - - - - - These special types are structs that contain fields of the same type - (e.g. System.Int32 contains a field of type System.Int32). - - - - - Array of names for types from Cor Library. - The names should correspond to ids from TypeId enum so - that we could use ids to index into the array - - - - - - Gets the name of the special type as it would appear in metadata. - - - - - The strong name key associated with the identity of this assembly. - This contains the contents of the user-supplied key file exactly as extracted. - - - - - Determines source assembly identity. - - - - - A diagnostic created in the process of determining the key. - - - - - The CSP key container containing the public key used to produce the key, - or null if the key was retrieved from . - - - The original value as specified by or - . - - - - - Original key file path, or null if the key is provided by the . - - - The original value as specified by or - - - - - - True if the compilation can be signed using these keys. - - - - - True if a strong name can be created for the compilation using these keys. - - - - - Provides strong name and signs source assemblies. - - - - - Contains helper methods for switch statement label constants - - - - - Method used to compare ConstantValues for switch statement case labels - - - - A value that indicates the relative order of the objects being compared. The return value has these meanings: - Less than zero: first instance precedes second in the sort order. - Zero: first instance occurs in the same position in the sort order as second. - Greater than zero: first instance follows second in the sort order. - - - - - Append a default argument (i.e. the default argument of an optional parameter). - Assumed to be non-null. - - - - - Check if the given type is an enum with System.FlagsAttribute. - - - TODO: Can/should this be done using WellKnownAttributes? - - - - - This class associates a symbol with particular format for display. - It can be passed as an argument for an error message in place where symbol display should go, - which allows to defer building strings and doing many other things (like loading metadata) - associated with that until the error message is actually requested. - - - - - None - - - - - ".ctor" instead of "Foo" - - - - - "List`1" instead of "List<T>" ("List(of T)" in VB). Overrides GenericsOptions on - types. - - - - - Append "[Missing]" to missing Metadata types (for testing). - - - - - Include the Script type when qualifying type names. - - - - - Include custom modifiers (e.g. modopt([mscorlib]System.Runtime.CompilerServices.IsConst)) on - the member (return) type and parameters. - - - CONSIDER: custom modifiers are part of the public API, so we might want to move this to SymbolDisplayMemberOptions. - - - - - For a type written as "int[][,]" in C#, then - a) setting this option will produce "int[,][]", and - b) not setting this option will produce "int[][,]". - - - - - Specifies how to display delegates (just the name or the name with the signature). - - - - - Shows only the name of the delegate (e.g. "SomeDelegate"). - - - - - Shows the name and the parameters of the delegate (e.g. "SomeDelegate(int x)"). - - - The format of the parameters will be determined by the other flags passed. - - - - - Shows the name and the signature of the delegate (e.g. "void SomeDelegate(int x)"). - - - The format of the signature will be determined by the other flags passed. - - - - - Specifies how to display extension methods. - - - - - Displays the extension method based on its . - - - - - Displays the extension method in the form of an instance method. - For example, IEnumerable<TSource>.ElementAt<TSource>(int index). - - - - - Displays the extension method as a static method. - For example, Enumerable.ElementAt<TSource>(this IEnumerable<TSource> source, int index). - - - - - Exposes extension methods for displaying symbol descriptions. - - - - - Converts an immutable array of s to a string. - - The array of parts. - The concatenation of the parts into a single string. - - - - Determines if a flag is set on the enum. - - The value to check. - An enum field that specifies the flag. - Whether the is set on the . - - - - Determines if a flag is set on the enum. - - The value to check. - An enum field that specifies the flag. - Whether the is set on the . - - - - Determines if a flag is set on the enum. - - The value to check. - An enum field that specifies the flag. - Whether the is set on the . - - - - Determines if a flag is set on the enum. - - The value to check. - An enum field that specifies the flag. - Whether the is set on the . - - - - Determines if a flag is set on the enum. - - The value to check. - An enum field that specifies the flag. - Whether the is set on the . - - - - Determines if a flag is set on the enum. - - The value to check. - An enum field that specifies the flag. - Whether the is set on the . - - - - Determines if a flag is set on the enum. - - The value to check. - An enum field that specifies the flag. - Whether the is set on the . - - - - Describes the formatting rules that should be used when displaying symbols. - - - - - Formats a symbol description as in a C# compiler error message. - - - - - Formats a symbol description as in a C# compiler short error message. - - - - - Formats a symbol description as in a Visual Basic compiler error message. - - - - - Formats a symbol description as in a Visual Basic compiler short error message. - - - - - Formats the names of all types and namespaces in a fully qualified style (including the global alias). - - - - - Formats a symbol description in a form that suits . - - - - - A verbose format for displaying symbols (useful for testing). - - - - - this.QualifiedNameOnly = containingSymbol.QualifiedNameOnly + "." + this.Name - - - - - this.QualifiedNameArity = containingSymbol.QualifiedNameArity + "." + this.Name + "`" + this.Arity - - - - - A succinct format for displaying symbols. - - - - - The format used for displaying symbols when visualizing IL. - - - - - Used to normalize explicit interface implementation member names. - Only expected to be applied to interface types (and their type arguments). - - - - - Determines how the global namespace is displayed. - - - - - Determines how types are qualified (e.g. Nested vs Containing.Nested vs Namespace.Containing.Nested). - - - - - Determines how generics (on types and methods) should be described (i.e. the level of detail). - - - - - Determines how fields, properties, events, and methods are displayed. - - - - - Determines how parameters (of methods, properties/indexers, and delegates) are displayed. - - - - - Determines how delegates are displayed (e.g. name vs full signature). - - - - - Determines how extension methods are displayed. - - - - - Determines how properties are displayed. - For example, "Prop" vs "Prop { get; set; }" in C# or "Prop" vs. "ReadOnly Prop" in Visual Basic. - - - - - Determines how local variables are displayed. - - - - - Determines which kind keywords should be included when displaying symbols. - - - - - Determines other characteristics of how symbols are displayed. - - - - - Flags that can only be set within the compiler. - - - - - Constructs a new instance of accepting a variety of optional parameters. - - - The settings that determine how the global namespace is displayed. - - - The settings that determine how types are qualified (e.g. Nested vs Containing.Nested vs Namespace.Containing.Nested). - - - The settings that determine how generics (on types and methods) should be described (i.e. the level of detail). - - - The settings that determine how fields, properties, events, and methods are displayed. - - - The settings that determine how delegates are displayed (e.g. name vs full signature). - - - The settings that determine how extension methods are displayed. - - - The settings that determine how parameters (of methods, properties/indexers, and delegates) are displayed. - - - The settings that determine how properties are displayed. - For example, "Prop" vs "Prop { get; set; }" in C# or "Prop" vs. "ReadOnly Prop" in Visual Basic. - - - The settings that determine how local variables are displayed. - - - The settings that determine which kind keywords should be included when displaying symbols. - - - The settings that determine other characteristics of how symbols are displayed. - - - - - This version also accepts . - - - - - Creates a copy of the SymbolDisplayFormat but with replaced set of . - - - An object representing how miscellaneous symbols will be formatted. - - A duplicate of the SymbolDisplayFormat, with a replaced set of . - - - - Creates a copy of the SymbolDisplayFormat but with an additional set of . - - - An object specifying additional parameters for how miscellaneous symbols will be formatted. - - A duplicate of the SymbolDisplayFormat, with an additional set of . - - - - Creates a copy of the SymbolDisplayFormat but with replaced set of . - - - An object specifying how generic symbols will be formatted. - - A duplicate of the SymbolDisplayFormat, with a replaced set of . - - - - Creates a copy of the SymbolDisplayFormat but with an additional set of . - - - An object specifying additional parameters for how generic symbols will be formatted. - - A duplicate of the SymbolDisplayFormat, with an additional set of . - - - - Creates a copy of the SymbolDisplayFormat but with replaced set of . - - - An object specifying how members will be formatted. - - A duplicate of the SymbolDisplayFormat, with a replaced set of . - - - - Creates a copy of the SymbolDisplayFormat but with an additional set of . - - - An object specifying additional parameters for how members will be formatted. - - - A duplicate of the SymbolDisplayFormat, with an additional set of . - - - - - Creates a copy of the SymbolDisplayFormat but with a set of stripped away from the original object. - - - An object specifying which parameters should not be applied to how members will be formatted. - - - A duplicate of the SymbolDisplayFormat, with a set of stripped away from the original object. - - - - - Creates a copy of the SymbolDisplayFormat but with replaced set of . - - - An object specifying parameters with which symbols belonging to kind keywords should be formatted. - - - A duplicate of the SymbolDisplayFormat, with a replaced set of . - - - - - Creates a copy of the SymbolDisplayFormat but with an additional set of . - - - An object specifying additional parameters with which symbols belonging to kind keywords should be formatted. - - - A duplicate of the SymbolDisplayFormat, with an additional set of . - - - - - Creates a copy of the SymbolDisplayFormat but with a set of stripped away from the original object. - - - The settings that determine other characteristics of how symbols are displayed. - - - A duplicate of the SymbolDisplayFormat, with a set of stripped away from the original object. - - - - - Creates a copy of the SymbolDisplayFormat but with replaced set of . - - - An object specifying how parameters should be formatted. - - A duplicate of the SymbolDisplayFormat, with a replaced set of . - - - - Creates a copy of the SymbolDisplayFormat but with an additional set of . - - - An object specifying additional parameters on how parameters should be formatted. - - - A duplicate of the SymbolDisplayFormat, with an additional set of . - - - - - Creates a copy of the SymbolDisplayFormat but with a set of stripped away from the original object. - - - An object specifying parameters that should not be applied when formatting parameters. - - - A duplicate of the SymbolDisplayFormat, with a set of stripped away from the original object. - - - - - Creates a copy of the SymbolDisplayFormat but with replaced . - - - An object specifying parameters on how namespace symbols should be formatted. - - A duplicate of the SymbolDisplayFormat, with a replaced set of . - - - - Creates a copy of the SymbolDisplayFormat but with replaced set of . - - - An object specifying parameters on how symbols belonging to locals should be formatted. - - A duplicate of the SymbolDisplayFormat, with a replaced set of . - - - - Creates a copy of the SymbolDisplayFormat but with an additional set of . - - - An object specifying additional parameters on how symbols belonging to locals should be formatted. - - - A duplicate of the SymbolDisplayFormat, with an additional set of . - - - - - Specifies the options for how generics are displayed in the description of a symbol. - - - - - Omits the type parameter list entirely. - - - - - Includes the type parameters. - For example, "Foo<T>" in C# or "Foo(Of T)" in Visual Basic. - - - - - Includes type parameters and constraints. - For example, "where T : new()" in C# or "Of T as New" in Visual Basic. - - - - - Includes in or out keywords before variant type parameters. - For example, "Foo<out T>" in C# or (Foo Of Out T" in Visual Basic. - - - - - Specifies the options for how to display the global namespace in the description of a symbol. - - - Any of these styles may be overridden by . - - - - - Omits the global namespace, unconditionally. - - - - - Omits the global namespace if it is being displayed as a containing symbol (i.e. not on its own). - - - - - Include the global namespace, unconditionally. - - - - - Specifies which kind keywords should be included when displaying symbols. - - - - - Omits all kind keywords. - - - - - Includes the namespace keyword before namespaces. - For example, "namespace System", rather than "System". - - - - - Includes the type keyword before types. - For example, "class C" in C# or "Structure S" in Visual Basic. - - - - - Include the member keyword before members (if one exists). - For example, "event D E" in C# or "Function MyFun()" in Visual Basic. - - - - - Specifies the options for how locals are displayed in the description of a symbol. - - - - - Shows only the name of the local. - For example, "x". - - - - - Shows the type of the local in addition to its name. - For example, "int x" in C# or "x As Integer" in Visual Basic. - - - - - Shows the constant value of the local, if there is one, in addition to its name. - For example "x = 1". - - - - - Specifies the options for how members are displayed in the description of a symbol. - - - - - Includes only the name of the member. - - - - - Includes the (return) type of the method/field/property/event. - - - - - Includes the modifiers of the member. - For example, "static readonly" in C# or "Shared ReadOnly" in Visual Basic. - - - Accessibility modifiers are controlled separately by . - - - - - Includes the accessibility modifiers of the member. - For example, "public" in C# or "Public" in Visual Basic. - - - - - Includes the name of corresponding interface on members that explicitly implement - interface members. - For example, "IFoo.Bar { get; }". - - - This option has no effect in Visual Basic. - - - - - Includes the parameters of methods and properties/indexers. - - - See for finer-grained settings. - - - - - Includes the name of the type containing the member. - - - The format of the containing type is determined by . - - - - - Includes the value of the member if is a constant. - - - - - Specifies miscellaneous options about the format of symbol descriptions. - - - - - Specifies that no miscellaneous options should be applied. - - - - - Uses keywords for predefined types. - For example, "int" instead of "System.Int32" in C# - or "Integer" instead of "System.Integer" in Visual Basic. - - - - - Escapes identifiers that are also keywords. - For example, "@true" instead of "true" in C# or - "[True]" instead of "True" in Visual Basic. - - - - - Displays asterisks between commas in multi-dimensional arrays. - For example, "int[][*,*]" instead of "int[][,]" in C# or - "Integer()(*,*)" instead of "Integer()(*,*) in Visual Basic. - - - - - Displays "?" for erroneous types that lack names (perhaps due to faulty metadata). - - - - - Displays attributes names without the "Attribute" suffix, if possible. - - - Has no effect outside and only applies - if the context location is one where an attribute ca be referenced without the suffix. - - - - - Displays as a normal generic type, rather than with - the special question mark syntax. - - - - - Specifies how parameters are displayed in the description of a (member, property/indexer, or delegate) symbol. - - - - - Omits parameters from symbol descriptions. - - - If this option is combined with , then only - the parentheses will be shown (e.g. M()). - - - - - Includes the this keyword before the first parameter of an extension method in C#. - - - This option has no effect in Visual Basic. - - - - - Includes the params, ref, out, ByRef, ByVal keywords before parameters. - - - - - Includes parameter types in symbol descriptions. - - - - - Includes parameter names in symbol descriptions. - - - - - Includes parameter default values in symbol descriptions. - - Ignored if is not set. - - - - Includes square brackets around optional parameters. - - - - - A single element of a symbol description. For example, a keyword, a punctuation character or - a class name. - - - - - - - - Gets the kind of this display part. - - - - - Gets the symbol associated with this display part, if there is one. - For example, the associated with a class name. - - - - - - Construct a non-formattable (i.e. with a fixed string value). - - The kind of the display part. - An optional associated symbol. - The fixed string value of the part. - - - - Returns the string value of this symbol display part. - - - - - Specifies the kinds of a piece of classified text (SymbolDisplayPart). - - - - The name of an alias. - - - The name of an assembly. - - - The name of a class. - - - The name of a delegate. - - - The name of an enum. - - - The name of an error type. - - - - The name of an event. - - - The name of a field. - - - The name of an interface. - - - A language keyword. - - - The name of a label. - - - A line-break (i.e. whitespace). - - - A numeric literal. - Typically for the default values of parameters and the constant values of fields. - - - A string literal. - Typically for the default values of parameters and the constant values of fields. - - - The name of a local. - - - The name of a method. - - - The name of a module. - - - The name of a namespace. - - - The symbol of an operator (e.g. "+"). - - - The name of a parameter. - - - The name of a property. - - - A punctuation character (e.g. "(", ".", ",") other than an . - - - A single space character. - - - The name of a struct (structure in Visual Basic). - - - A keyword-like part for anonymous types (not actually a keyword). - - - An unclassified part. - Never returned - only set in user-constructed parts. - - - The name of a type parameter. - - - The name of a query range variable.. - - - - Specifies the options for how properties are displayed in symbol descriptions. - - - - - Shows only the names of properties. - - - - - - Indicates whether the property is readable and/or writable. - In C#, this is accomplished by including accessors. - In Visual Basic, this is accomplished by including the ReadOnly or WriteOnly - keyword, as appropriate. - - - - - Specifies how much qualification is used in symbol descriptions. - - - - - Shows only the name of the symbol. - - - - - Shows the name of the symbol and the names of all containing types. - - - - - Shows the name of the symbol the names of all containing types and namespaces. - - - - - Enumeration for common accessibility combinations. - - - - - No accessibility specified. - - - - - We should not see new anonymous types from source after we finished emit phase. - If this field is true, the collection is sealed; in DEBUG it also is used to check the assertion. - - - - - Collection of anonymous type templates is sealed - - - - - Default attribute usage for attribute types: - (a) Valid targets: AttributeTargets.All - (b) AllowMultiple: false - (c) Inherited: true - - - - - Information decoded from well-known custom attributes applied on an assembly. - - - - - Returns data decoded from security attributes or null if there are no security attributes. - - - - - The attribute class. - - - - - The constructor on the attribute class. - - - - - Constructor arguments on the attribute. - - - - - Named (property value) arguments on the attribute. - - - - - Attribute is conditionally omitted if it is a source attribute and both the following are true: - (a) It has at least one applied conditional attribute AND - (b) None of conditional symbols are true at the attribute source location. - - - - - Checks if an applied attribute with the given attributeType matches the namespace name and type name of the given early attribute's description - and the attribute description has a signature with parameter count equal to the given attributeArgCount. - NOTE: We don't allow early decoded attributes to have optional parameters. - - - - - Returns the value of a constructor argument as type . - Throws if no constructor argument exists or the argument cannot be converted to the type. - - - - - Returns named attribute argument with the given as type . - If there is more than one named argument with this name, it returns the last one. - If no named argument is found then the is returned. - - The metadata property or field name. This name is case sensitive (both VB and C#). - SpecialType of the named argument. - Default value for the named argument. - - For user defined attributes VB allows duplicate named arguments and uses the last value. - Dev11 reports an error for pseudo-custom attributes when emitting metadata. We don't. - - - - - Decode the arguments to ObsoleteAttribute. ObsoleteAttribute can have 0,1 or 2 arguments. - - - - - Decode the arguments to DeprecatedAttribute. DeprecatedAttribute can have 3 or 4 arguments. - - - - - Used to determine if two instances are identical, - i.e. they have the same attribute type, attribute constructor and have identical arguments. - - - - - Information decoded from early well-known custom attributes applied on an event. - - - - - Information decoded from well-known custom attributes applied on an event. - - - - - Information decoded from early well-known custom attributes applied on a field. - - - - - Information decoded from well-known custom attributes applied on a field. - - - - - Returns marshalling data or null of MarshalAs attribute isn't applied on the field. - - - - - Information decoded from early well-known custom attributes applied on a method. - - - - - Information decoded from well-known custom attributes applied on a method. - - - - - Returns data decoded from security attributes or null if there are no security attributes. - - - - - Information decoded from well-known custom attributes applied on a module. - - - - - Information decoded from early well-known custom attributes applied on a parameter. - - - - - Information decoded from well-known custom attributes applied on a parameter. - - - - - Returns marshalling data or null of MarshalAs attribute isn't applied on the parameter. - - - - - Information decoded from early well-known custom attributes applied on a property. - - - - - Information decoded from well-known custom attributes applied on a property. - - - - - Information decoded from well-known custom attributes applied on a method return value. - - - - - Returns marshalling data or null of MarshalAs attribute isn't applied on the return value. - - - - - Information decoded from early well-known custom attributes applied on a type. - - - - - Information decoded from well-known custom attributes applied on a type. - - - - - Returns data decoded from security attributes or null if there are no security attributes. - - - - - Represents a bag of custom attributes and the associated decoded well-known attribute data. - - - - - Instance representing sealed custom attribute bag with no attributes. - - - - - Returns a non-sealed custom attribute bag with null initialized , null initialized and uninitialized . - - - - - Sets the early decoded well-known attribute data on the bag in a thread safe manner. - Stored early decoded data is immutable and cannot be updated further. - - Returns true if early decoded data were stored into the bag on this thread. - - - - Sets the decoded well-known attribute data (except the early data) on the bag in a thread safe manner. - Stored decoded data is immutable and cannot be updated further. - - Returns true if decoded data were stored into the bag on this thread. - - - - Sets the bound attributes on the bag in a thread safe manner. - If store succeeds, it seals the bag and makes the bag immutable. - - Returns true if bound attributes were stored into the bag on this thread. - - - - Gets the stored bound attributes in the bag. - - This property can only be accessed on a sealed bag. - - - - Gets the decoded well-known attribute data (except the early data) in the bag. - - This property can only be accessed on the bag after has been invoked. - - - - Gets the early decoded well-known attribute data in the bag. - - This property can only be accessed on the bag after has been invoked. - - - - Return whether early decoded attribute data has been computed and stored on the bag and it is safe to access from this bag. - Return value of true doesn't guarantee that bound attributes or remaining decoded attribute data has also been initialized. - - - - - Return whether all decoded attribute data has been computed and stored on the bag and it is safe to access from this bag. - Return value of true doesn't guarantee that bound attributes have also been initialized. - - - - - Enum representing the current state of attribute binding/decoding for a corresponding CustomAttributeBag. - - - - - Bag has been created, but no decoded data or attributes have been stored. - CustomAttributeBag is in this state during early decoding phase. - - - - - Early decoded attribute data has been computed and stored on the bag, but bound attributes or remaining decoded attribute data is not stored. - Only can be accessed from this bag. - - - - - All decoded attribute data has been computed and stored on the bag, but bound attributes are not yet stored. - Both and can be accessed from this bag. - - - - - Bound attributes have been computed and stored on this bag. - - - - - CustomAttributeBag is completely initialized and immutable. - - - - - Contains common arguments to Symbol.DecodeWellKnownAttribute method in both the language compilers. - - - - - Object to store the decoded data from bound well-known attributes. - Created lazily only when some decoded data needs to be stored, null otherwise. - - - - - Gets or creates the decoded data object. - - - This method must be called only when some decoded data will be stored into it subsequently. - - - - - Returns true if some decoded data has been stored into . - - - - - Gets the stored decoded data. - - - Assumes is true. - - - - - Syntax of the attribute to decode. Might be null when the attribute information is not coming - from syntax. For example, an assembly attribute propagated from added module to the resulting assembly. - - - - - Bound attribute to decode. - - - - - The index of the attribute in the list of attributes to decode. - - - - - Total count of attributes to decode. - - - - - Diagnostic bag. - - - - - Specific part of the symbol to which the attributes apply, or AttributeLocation.None if the attributes apply to the symbol itself. - Used e.g. for return type attributes of a method symbol. - - - - - Contains common arguments to Symbol.EarlyDecodeWellKnownAttribute method in both the language compilers. - - - - - Object to store the decoded data from early bound well-known attributes. - Created lazily only when some decoded data needs to be stored, null otherwise. - - - - - Gets or creates the decoded data object. - - - This method must be called only when some decoded data will be stored into it subsequently. - - - - - Returns true if some decoded data has been stored into . - - - - - Gets the stored decoded data. - - - Assumes is true. - - - - - Binder to bind early well-known attributes. - - - - - Bound type of the attribute to decode. - - - - - Syntax of the attribute to decode. - - - - - Specific part of the symbol to which the attributes apply, or AttributeLocation.None if the attributes apply to the symbol itself. - Used e.g. for return type attributes of a method symbol. - - - - - Base class for storing information decoded from early well-known custom attributes. - - - CONSIDER: Should we remove this class and let the sub-classes derived from WellKnownAttributeData? - - - - - Information decoded from . - - - - - Returns an instance of with all types replaced by types returned by specified translator. - Returns this instance if it doesn't hold on any types. - - - - - Information decoded from . - - - - - True if an error should be thrown for the . Default is false in which case - a warning is thrown. - - - - - The message that will be shown when an error/warning is created for . - - - - - Information decoded from security attributes, i.e. attributes derived from well-known SecurityAttribute, applied on a method/type/assembly. - - - - - Used for retrieving applied source security attributes, i.e. attributes derived from well-known SecurityAttribute. - - - - - Base class for storing information decoded from well-known custom attributes. - - - - - Used to distinguish cases when attribute is applied with null value and when attribute is not applied. - For some well-known attributes, the latter case will return string stored in - field. - - - - - If true, a language may use the modified storage location without - being aware of the meaning of the modification, modopt vs. modreq. - - - - - A type used as a tag that indicates which type of modification applies. - - - - - Represents a using alias (Imports alias in Visual Basic). - - - This interface is reserved for implementation by its associated APIs. We reserve the right to - change it in the future. - - - - - Gets the for the - namespace or type referenced by the alias. - - - - - Represents an array. - - - This interface is reserved for implementation by its associated APIs. We reserve the right to - change it in the future. - - - - - Gets the number of dimensions of this array. A regular single-dimensional array - has rank 1, a two-dimensional array has rank 2, etc. - - - - - Gets the type of the elements stored in the array. - - - - - Custom modifiers associated with the array type, or an empty array if there are none. - - - - - Represents a .NET assembly, consisting of one or more modules. - - - This interface is reserved for implementation by its associated APIs. We reserve the right to - change it in the future. - - - - - True if the assembly contains interactive code. - - - - - Gets the name of this assembly. - - - - - Gets the merged root namespace that contains all namespaces and types defined in the modules - of this assembly. If there is just one module in this assembly, this property just returns the - GlobalNamespace of that module. - - - - - Gets the modules in this assembly. (There must be at least one.) The first one is the main module - that holds the assembly manifest. - - - - - Gets the set of type identifiers from this assembly. - - - - - Gets the set of namespace names from this assembly. - - - - - Gets a value indicating whether this assembly gives - access to internal symbols - - - - Lookup a type within the assembly using the canonical CLR metadata name of the type. - - Type name. - Symbol for the type or null if type cannot be found or is ambiguous. - - - - Determines if the assembly might contain extension methods. - If false, the assembly does not contain extension methods. - - - - - Returns the type symbol for a forwarded type based its canonical CLR metadata name. - The name should refer to a non-nested type. If type with this name is not forwarded, - null is returned. - - - - - Represents the 'dynamic' type in C#. - - - This interface is reserved for implementation by its associated APIs. We reserve the right to - change it in the future. - - - - - An IErrorTypeSymbol is used when the compiler cannot determine a symbol object to return because - of an error. For example, if a field is declared "Foo x;", and the type "Foo" cannot be - found, an IErrorTypeSymbol is returned when asking the field "x" what it's type is. - - - This interface is reserved for implementation by its associated APIs. We reserve the right to - change it in the future. - - - - - When constructing this type, there may have been symbols that seemed to - be what the user intended, but were unsuitable. For example, a type might have been - inaccessible, or ambiguous. This property returns the possible symbols that the user - might have intended. It will return no symbols if no possible symbols were found. - See the CandidateReason property to understand why the symbols were unsuitable. - - - This only applies if this INamedTypeSymbol has TypeKind TypeKind.Error. - If not, an empty ImmutableArray is returned. - - - - - If CandidateSymbols returns one or more symbols, returns the reason that those - symbols were not chosen. Otherwise, returns None. - - - - - Represents an event. - - - This interface is reserved for implementation by its associated APIs. We reserve the right to - change it in the future. - - - - - The type of the event. - - - - - Returns true if the event is a WinRT type event. - - - - - The 'add' accessor of the event. Null only in error scenarios. - - - - - The 'remove' accessor of the event. Null only in error scenarios. - - - - - The 'raise' accessor of the event. Null if there is no raise method. - - - - - The original definition of the event. If the event is constructed from another - symbol by type substitution, OriginalDefinition gets the original symbol, as it was - defined in source or metadata. - - - - - Returns the overridden event, or null. - - - - - Returns interface properties explicitly implemented by this event. - - - Properties imported from metadata can explicitly implement more than one event. - - - - - Represents a field in a class, struct or enum. - - - This interface is reserved for implementation by its associated APIs. We reserve the right to - change it in the future. - - - - - If this field serves as a backing variable for an automatically generated - property or a field-like event, returns that - property/event. Otherwise returns null. - Note, the set of possible associated symbols might be expanded in the future to - reflect changes in the languages. - - - - - Returns true if this field was declared as "const" (i.e. is a constant declaration). - Also returns true for an enum member. - - - - - Returns true if this field was declared as "readonly". - - - - - Returns true if this field was declared as "volatile". - - - - - Gets the type of this field. - - - - - Returns false if the field wasn't declared as "const", or constant value was omitted or erroneous. - True otherwise. - - - - - Gets the constant value of this field - - - - - Returns custom modifiers associated with the field, or an empty array if there are none. - - - - - Get the original definition of this symbol. If this symbol is derived from another - symbol by (say) type substitution, this gets the original symbol, as it was defined in - source or metadata. - - - - - Represents a label in method body - - - This interface is reserved for implementation by its associated APIs. We reserve the right to - change it in the future. - - - - - Gets the immediately containing of this . - - - - - Represents a local variable in method body. - - - This interface is reserved for implementation by its associated APIs. We reserve the right to - change it in the future. - - - - - Gets the type of this local variable. - - - - - Returns true if this local variable was declared as "const" (i.e. is a constant declaration). - Also returns true for an enum member. - - - - - Returns false if the local variable wasn't declared as "const", or constant value was omitted or erroneous. - True otherwise. - - - - - Gets the constant value of this local variable. - - - - - Represents a method or method-like symbol (including constructor, - destructor, operator, or property/event accessor). - - - This interface is reserved for implementation by its associated APIs. We reserve the right to - change it in the future. - - - - - Gets what kind of method this is. There are several different kinds of things in the - C# language that are represented as methods. This property allow distinguishing those things - without having to decode the name of the method. - - - - - Returns the arity of this method, or the number of type parameters it takes. - A non-generic method has zero arity. - - - - - Returns whether this method is generic; i.e., does it have any type parameters? - - - - - Returns true if this method is an extension method. - - - - - Returns true if this method is an async method - - - - - Returns whether this method is using CLI VARARG calling convention. This is used for - C-style variable argument lists. This is used extremely rarely in C# code and is - represented using the undocumented "__arglist" keyword. - - Note that methods with "params" on the last parameter are indicated with the "IsParams" - property on ParameterSymbol, and are not represented with this property. - - - - - Returns whether this built-in operator checks for integer overflow. - - - - - Returns true if this method hides base methods by name. This cannot be specified directly - in the C# language, but can be true for methods defined in other languages imported from - metadata. The equivalent of the "hidebyname" flag in metadata. - - - - - Returns true if this method has no return type; i.e., returns "void". - - - - - Gets the return type of the method. - - - - - Returns the type arguments that have been substituted for the type parameters. - If nothing has been substituted for a given type parameter, - then the type parameter itself is consider the type argument. - - - - - Get the type parameters on this method. If the method has not generic, - returns an empty list. - - - - - Gets the parameters of this method. If this method has no parameters, returns - an empty list. - - - - - Returns the method symbol that this method was constructed from. The resulting - method symbol - has the same containing type (if any), but has type arguments that are the same - as the type parameters (although its containing type might not). - - - - - Get the original definition of this symbol. If this symbol is derived from another - symbol by (say) type substitution, this gets the original symbol, as it was defined in - source or metadata. - - - - - If this method overrides another method (because it both had the override modifier - and there correctly was a method to override), returns the overridden method. - - - - - If this method can be applied to an object, returns the type of object it is applied to. - - - - - If this method is a reduced extension method, returns the definition of extension - method from which this was reduced. Otherwise, returns null. - - - - - If this method is a reduced extension method, returns a type inferred during reduction process for the type parameter. - - Type parameter of the corresponding method. - Inferred type or Nothing if nothing was inferred. - If this is not a reduced extension method. - If is null. - If doesn't belong to the corresponding method. - - - - If this is an extension method that can be applied to a receiver of the given type, - returns a reduced extension method symbol thus formed. Otherwise, returns null. - - - - - Returns interface methods explicitly implemented by this method. - - - Methods imported from metadata can explicitly implement more than one method, - that is why return type is ImmutableArray. - - - - - Returns the list of custom modifiers, if any, associated with the returned value. - - - - - Returns the list of custom attributes, if any, associated with the returned value. - - - - - Returns a symbol (e.g. property, event, etc.) associated with the method. - - - If this method has of or , - returns the property that this method is the getter or setter for. - If this method has of or , - returns the event that this method is the adder or remover for. - Note, the set of possible associated symbols might be expanded in the future to - reflect changes in the languages. - - - - - Returns a constructed method given its type arguments. - - The immediate type arguments to be replaced for type - parameters in the method. - - - - If this is a partial method implementation part, returns the corresponding - definition part. Otherwise null. - - - - - If this is a partial method declaration without a body, and the method is - implemented with a body, returns that implementing definition. Otherwise - null. - - - - - Platform invoke information, or null if the method isn't a P/Invoke. - - - - - If this method is a Lambda method (MethodKind = MethodKind.LambdaMethod) and - there is an anonymous delegate associated with it, returns this delegate. - - Returns null if the symbol is not a lambda or if it does not have an - anonymous delegate associated with it. - - - - - Represents a module within an assembly. Every assembly contains one or more modules. - - - This interface is reserved for implementation by its associated APIs. We reserve the right to - change it in the future. - - - - - Returns a NamespaceSymbol representing the global (root) namespace, with - module extent, that can be used to browse all of the symbols defined in this module. - - - - - Given a namespace symbol, returns the corresponding module specific namespace symbol - - - - - Returns an array of assembly identities for assemblies referenced by this module. - Items at the same position from ReferencedAssemblies and from ReferencedAssemblySymbols - correspond to each other. - - - - - Returns an array of AssemblySymbol objects corresponding to assemblies referenced - by this module. Items at the same position from ReferencedAssemblies and - from ReferencedAssemblySymbols correspond to each other. - - - - - Represents a type other than an array, a pointer, a type parameter. - - - This interface is reserved for implementation by its associated APIs. We reserve the right to - change it in the future. - - - - - Returns the arity of this type, or the number of type parameters it takes. - A non-generic type has zero arity. - - - - - True if this type or some containing type has type parameters. - - - - - True if this is a reference to an unbound generic type. A generic type is - considered unbound if all of the type argument lists in its fully qualified - name are empty. Note that the type arguments of an unbound generic type will be - returned as error types because they do not really have type arguments. An unbound - generic type yields null for its BaseType and an empty result for its Interfaces. - - - - - Returns true if the type is a Script class. - It might be an interactive submission class or a Script class in a csx file. - - - - - Returns true if the type is the implicit class that holds onto invalid global members (like methods or - statements in a non script file). - - - - - Returns collection of names of members declared within this type. - - - - - Returns the type parameters that this type has. If this is a non-generic type, - returns an empty ImmutableArray. - - - - - Returns the type arguments that have been substituted for the type parameters. - If nothing has been substituted for a give type parameters, - then the type parameter itself is consider the type argument. - - - - - Get the original definition of this type symbol. If this symbol is derived from another - symbol by (say) type substitution, this gets the original symbol, as it was defined in - source or metadata. - - - - - For delegate types, gets the delegate's invoke method. Returns null on - all other kinds of types. Note that it is possible to have an ill-formed - delegate type imported from metadata which does not have an Invoke method. - Such a type will be classified as a delegate but its DelegateInvokeMethod - would be null. - - - - - For enum types, gets the underlying type. Returns null on all other - kinds of types. - - - - - Returns the type symbol that this type was constructed from. This type symbol - has the same containing type (if any), but has type arguments that are the same - as the type parameters (although its containing type might not). - - - - - Returns a constructed type given its type arguments. - - The immediate type arguments to be replaced for type - parameters in the type. - - - - Returns an unbound generic type of this named type. - - - - - Get the instance constructors for this type. - - - - - Get the static constructors for this type. - - - - - Get the both instance and static constructors for this type. - - - - - For implicitly declared delegate types returns the EventSymbol that caused this - delegate type to be generated. - For all other types returns null. - Note, the set of possible associated symbols might be expanded in the future to - reflect changes in the languages. - - - - - Determines if the symbol might contain extension methods. - If false, the symbol does not contain extension methods. - - - - - Represents either a namespace or a type. - - - This interface is reserved for implementation by its associated APIs. We reserve the right to - change it in the future. - - - - - Get all the members of this symbol. - - An ImmutableArray containing all the members of this symbol. If this symbol has no members, - returns an empty ImmutableArray. Never returns Null. - - - - Get all the members of this symbol that have a particular name. - - An ImmutableArray containing all the members of this symbol with the given name. If there are - no members with this name, returns an empty ImmutableArray. Never returns Null. - - - - Get all the members of this symbol that are types. - - An ImmutableArray containing all the types that are members of this symbol. If this symbol has no type members, - returns an empty ImmutableArray. Never returns null. - - - - Get all the members of this symbol that are types that have a particular name, of any arity. - - An ImmutableArray containing all the types that are members of this symbol with the given name. - If this symbol has no type members with this name, - returns an empty ImmutableArray. Never returns null. - - - - Get all the members of this symbol that are types that have a particular name and arity - - An ImmutableArray containing all the types that are members of this symbol with the given name and arity. - If this symbol has no type members with this name and arity, - returns an empty ImmutableArray. Never returns null. - - - - Returns true if this symbol is a namespace. If it is not a namespace, it must be a type. - - - - - Returns true if this symbols is a type. If it is not a type, it must be a namespace. - - - - - Represents a namespace. - - - This interface is reserved for implementation by its associated APIs. We reserve the right to - change it in the future. - - - - - Get all the members of this symbol. - - - - - Get all the members of this symbol that have a particular name. - - - - - Get all the members of this symbol that are namespaces. - - - - - Returns whether this namespace is the unnamed, global namespace that is - at the root of all namespaces. - - - - - The kind of namespace: Module, Assembly or Compilation. - Module namespaces contain only members from the containing module that share the same namespace name. - Assembly namespaces contain members for all modules in the containing assembly that share the same namespace name. - Compilation namespaces contain all members, from source or referenced metadata (assemblies and modules) that share the same namespace name. - - - - - The containing compilation for compilation namespaces. - - - - - If a namespace is an assembly or compilation namespace, it may be composed of multiple - namespaces that are merged together. If so, ConstituentNamespaces returns - all the namespaces that were merged. If this namespace was not merged, returns - an array containing only this namespace. - - - - - Represents a parameter of a method or property. - - - This interface is reserved for implementation by its associated APIs. We reserve the right to - change it in the future. - - - - - Whether the parameter passed by value or by reference. - - - - - Returns true if the parameter was declared as a parameter array. - - - - - Returns true if the parameter is optional. - - - - - Returns true if the parameter is the hidden 'this' ('Me' in Visual Basic) parameter. - - - - - Gets the type of the parameter. - - - - - Custom modifiers associated with the parameter, or an empty array if there are none. - - - - - Gets the ordinal position of the parameter. The first parameter has ordinal zero. - The 'this' parameter ('Me' in Visual Basic) has ordinal -1. - - - - - Returns true if the parameter specifies a default value to be passed - when no value is provided as an argument to a call. The default value - can be obtained with the DefaultValue property. - - - - - Returns the default value of the parameter. - - - Returns null if the parameter type is a struct and the default value of the parameter - is the default value of the struct type. - - The parameter has no default value. - - - - Get the original definition of this symbol. If this symbol is derived from another - symbol by (say) type substitution, this gets the original symbol, as it was defined in - source or metadata. - - - - - Represents a pointer type such as "int *". Pointer types - are used only in unsafe code. - - - This interface is reserved for implementation by its associated APIs. We reserve the right to - change it in the future. - - - - - Gets the type of the storage location that an instance of the pointer type points to. - - - - - Custom modifiers associated with the pointer type, or an empty array if there are none. - - - Some managed languages may represent special information about the pointer type - as a custom modifier on either the pointer type or the element type, or - both. - - - - - Represents a preprocessing conditional compilation symbol. - - - This interface is reserved for implementation by its associated APIs. We reserve the right to - change it in the future. - - - - - Represents a property or indexer. - - - This interface is reserved for implementation by its associated APIs. We reserve the right to - change it in the future. - - - - - Returns whether the property is really an indexer. - - - - - True if this is a read-only property; that is, a property with no set accessor. - - - - - True if this is a write-only property; that is, a property with no get accessor. - - - - - Returns true if this property is an auto-created WithEvents property that takes place of - a field member when the field is marked as WithEvents. - - - - - The type of the property. - - - - - The parameters of this property. If this property has no parameters, returns - an empty list. Parameters are only present on indexers, or on some properties - imported from a COM interface. - - - - - The 'get' accessor of the property, or null if the property is write-only. - - - - - The 'set' accessor of the property, or null if the property is read-only. - - - - - The original definition of the property. If the property is constructed from another - symbol by type substitution, OriginalDefinition gets the original symbol, as it was - defined in source or metadata. - - - - - Returns the overridden property, or null. - - - - - Returns interface properties explicitly implemented by this property. - - - Properties imported from metadata can explicitly implement more than one property. - - - - - The list of custom modifiers, if any, associated with the type of the property. - - - - - Represents a range variable in a query expression. - - - This interface is reserved for implementation by its associated APIs. We reserve the right to - change it in the future. - - - - - Represents a symbol (namespace, class, method, parameter, etc.) - exposed by the compiler. - - - This interface is reserved for implementation by its associated APIs. We reserve the right to - change it in the future. - - - - - Gets the indicating what kind of symbol it is. - - - - - Gets the source language ("C#" or "Visual Basic"). - - - - - Gets the symbol name. Returns the empty string if unnamed. - - - - - Gets the name of a symbol as it appears in metadata. Most of the time, this - is the same as the Name property, with the following exceptions: - 1) The metadata name of generic types includes the "`1", "`2" etc. suffix that - indicates the number of type parameters (it does not include, however, names of - containing types or namespaces). - 2) The metadata name of explicit interface names have spaces removed, compared to - the name property. - 3) The length of names is limited to not exceed metadata restrictions. - - - - - Gets the for the immediately containing symbol. - - - - - Gets the for the containing assembly. Returns null if the - symbol is shared across multiple assemblies. - - - - - Gets the for the containing module. Returns null if the - symbol is shared across multiple modules. - - - - - Gets the for the containing type. Returns null if the - symbol is not contained within a type. - - - - - Gets the for the nearest enclosing namespace. Returns null if the - symbol isn't contained in a namespace. - - - - - Gets a value indicating whether the symbol is the original definition. Returns false - if the symbol is derived from another symbol, by type substitution for instance. - - - - - Gets a value indicating whether the symbol is static. - - - - - Gets a value indicating whether the symbol is virtual. - - - - - Gets a value indicating whether the symbol is an override of a base class symbol. - - - - - Gets a value indicating whether the symbol is abstract. - - - - - Gets a value indicating whether the symbol is sealed. - - - - - Gets a value indicating whether the symbol is defined externally. - - - - - Returns true if this symbol was automatically created by the compiler, and does not have - an explicit corresponding source code declaration. - - - This is intended for symbols that are ordinary symbols in the language sense, and may be - used by code, but that are simply declared implicitly rather than with explicit language - syntax. - - Examples include (this list is not exhaustive): - the default constructor for a class or struct that is created if one is not provided, - the BeginInvoke/Invoke/EndInvoke methods for a delegate, - the generated backing field for an auto property or a field-like event, - the "this" parameter for non-static methods, - the "value" parameter for a property setter, - the parameters on indexer accessor methods (not on the indexer itself), - methods in anonymous types - - - - - Returns true if this symbol can be referenced by its name in code. - - - - - Gets the locations where the symbol was originally defined, either in source or - metadata. Some symbols (for example, partial classes) may be defined in more than one - location. - - - - - Get the syntax node(s) where this symbol was declared in source. Some symbols (for example, - partial classes) may be defined in more than one location. This property should return - one or more syntax nodes only if the symbol was declared in source code and also was - not implicitly declared (see the IsImplicitlyDeclared property). - - Note that for namespace symbol, the declaring syntax might be declaring a nested namespace. - For example, the declaring syntax node for N1 in "namespace N1.N2 {...}" is the entire - NamespaceDeclarationSyntax for N1.N2. For the global namespace, the declaring syntax will - be the CompilationUnitSyntax. - - - The syntax node(s) that declared the symbol. If the symbol was declared in metadata - or was implicitly declared, returns an empty read-only array. - - - - - Gets the attributes for the symbol. Returns an empty - if there are no attributes. - - - - - Gets a indicating the declared accessibility for the symbol. - Returns NotApplicable if no accessibility is declared. - - - - - Gets the for the original definition of the symbol. - If this symbol is derived from another symbol, by type substitution for instance, - this gets the original symbol, as it was defined in source or metadata. - - - - - Returns the Documentation Comment ID for the symbol, or null if the symbol doesn't - support documentation comments. - - - - - Gets the XML (as text) for the comment associated with the symbol. - - Preferred culture or null for the default. - Optionally, expand <include> elements. No impact on non-source documentation comments. - Token allowing cancellation of request. - The XML that would be written to the documentation file for the symbol. - - - - Converts the symbol to a string representation. - - Format or null for the default. - A formatted string representation of the symbol. - - - - Convert a symbol to an array of string parts, each of which has a kind. Useful for - colorizing the display string. - - Formatting rules - null implies - SymbolDisplayFormat.ErrorMessageFormat. - A read-only array of string parts. - - - - Convert a symbol to a string that can be displayed to the user. May be tailored to a - specific location in the source code. - - Binding information (for determining names appropriate to - the context). - A position in the source code (context). - Formatting rules - null implies - SymbolDisplayFormat.MinimallyQualifiedFormat. - A formatted string that can be displayed to the user. - - - - Convert a symbol to an array of string parts, each of which has a kind. May be tailored - to a specific location in the source code. Useful for colorizing the display string. - - Binding information (for determining names appropriate to - the context). - A position in the source code (context). - Formatting rules - null implies - SymbolDisplayFormat.MinimallyQualifiedFormat. - A read-only array of string parts. - - - - Indicates that this symbol uses metadata that cannot be supported by the language. - - Examples include: - - Pointer types in VB - - ByRef return type - - Required custom modifiers - - This is distinguished from, for example, references to metadata symbols defined in assemblies that weren't referenced. - Symbols where this returns true can never be used successfully, and thus should never appear in any IDE feature. - - This is set for metadata symbols, as follows: - Type - if a type is unsupported (e.g., a pointer type, etc.) - Method - parameter or return type is unsupported - Field - type is unsupported - Event - type is unsupported - Property - type is unsupported - Parameter - type is unsupported - - - - - Returns the constructed form of the ReducedFrom property, - including the type arguments that were either inferred during reduction or supplied at the call site. - - - - - Synthesized symbol that implements a method body feature (iterator, async, lambda, etc.) - - - This interface is reserved for implementation by its associated APIs. We reserve the right to - change it in the future. - - - - - The symbol whose body lowering produced this synthesized symbol, - or null if the symbol is synthesized based on declaration. - - - - - True if this symbol body needs to be updated when the body is updated. - False if is null. - - - - - Represents a type parameter in a generic type or generic method. - - - This interface is reserved for implementation by its associated APIs. We reserve the right to - change it in the future. - - - - - The ordinal position of the type parameter in the parameter list which declares - it. The first type parameter has ordinal zero. - - - - - The variance annotation, if any, of the type parameter declaration. Type parameters may be - declared as covariant (out), contravariant (in), or neither. - - - - - The type parameter kind of this type parameter. - - - - - The method that declares the type parameter, or null. - - - - - The type that declares the type parameter, or null. - - - - - True if the reference type constraint (class) was specified for the type parameter. - - - - - True if the value type constraint (struct)was specified for the type parameter. - - - - - True if the parameterless constructor constraint (new()) was specified for the type parameter. - - - - - The types that were directly specified as constraints on the type parameter. - - - - - Get the original definition of this type symbol. If this symbol is derived from another - symbol by (say) type substitution, this gets the original symbol, as it was defined in - source or metadata. - - - - - If this is a type parameter of a reduced extension method, gets the type parameter definition that - this type parameter was reduced from. Otherwise, returns Nothing. - - - - - Represents a type. - - - This interface is reserved for implementation by its associated APIs. We reserve the right to - change it in the future. - - - - - An enumerated value that identifies whether this type is an array, pointer, enum, and so on. - - - - - The declared base type of this type, or null. The object type, interface types, - and pointer types do not have a base type. The base type of a type parameter - is its effective base class. - - - - - Gets the set of interfaces that this type directly implements. This set does not include - interfaces that are base interfaces of directly implemented interfaces. This does - include the interfaces declared as constraints on type parameters. - - - - - The list of all interfaces of which this type is a declared subtype, excluding this type - itself. This includes all declared base interfaces, all declared base interfaces of base - types, and all declared base interfaces of those results (recursively). This also is the effective - interface set of a type parameter. Each result - appears exactly once in the list. This list is topologically sorted by the inheritance - relationship: if interface type A extends interface type B, then A precedes B in the - list. This is not quite the same as "all interfaces of which this type is a proper - subtype" because it does not take into account variance: AllInterfaces for - ]]> will not include ]]>; - - - - - True if this type is known to be a reference type. It is never the case that - and both return true. However, for an unconstrained type - parameter, and will both return false. - - - - - True if this type is known to be a value type. It is never the case that - and both return true. However, for an unconstrained type - parameter, and will both return false. - - - - - Is this a symbol for an anonymous type (including anonymous VB delegate). - - - - - The original definition of this symbol. If this symbol is constructed from another - symbol by type substitution then gets the original symbol as it was defined in - source or metadata. - - - - - An enumerated value that identifies certain 'special' types such as . - Returns if the type is not special. - - - - - Returns the corresponding symbol in this type or a base type that implements - interfaceMember (either implicitly or explicitly), or null if no such symbol exists - (which might be either because this type doesn't implement the container of - interfaceMember, or this type doesn't supply a member that successfully implements - interfaceMember). - - - Must be a non-null interface property, method, or event. - - - - - A class that provides constants for common language names. - - - - - The common name used for the C# language. - - - - - The common name used for the Visual Basic language. - - - - - Enumeration for possible kinds of method symbols. - - - - - An anonymous method or lambda expression - - - - - Method is a constructor. - - - - - Method is a conversion. - - - - - Method is a delegate invoke. - - - - - Method is a destructor. - - - - - Method is an event add. - - - - - Method is an event raise. - - - - - Method is an event remove. - - - - - Method is an explicit interface implementation. - - - - - Method is an operator. - - - - - Method is an ordinary method. - - - - - Method is a property get. - - - - - Method is a property set. - - - - - An extension method with the "this" parameter removed. - - - - - Method is a static constructor. - - - - - A built-in operator. - - - - - Declare Sub or Function. - - - - - Describes the kind of the namespace extent. - - - - - Information that describes how a method from the underlying Platform is to be invoked. - - - - - Module name. Null if value specified in the attribute is not valid. - - - - - Name of the native entry point or null if not specified (the effective name is the same as the name of the target method). - - - - - Controls whether the field causes the common language runtime - to search an unmanaged DLL for entry-point names other than the one specified. - - - - - Indicates how to marshal string parameters and controls name mangling. - - - - - Indicates whether the callee calls the SetLastError Win32 API function before returning from the attributed method. - - - - - Indicates the calling convention of an entry point. - - - - - Enables or disables best-fit mapping behavior when converting Unicode characters to ANSI characters. - Null if not specified (the setting for the containing type or assembly should be used, ). - - - - - Enables or disables the throwing of an exception on an unmappable Unicode character that is converted to an ANSI "?" character. - Null if not specified. - - - - - Denotes the kind of reference parameter. - - - - - Indicates a "value" parameter. - - - - - Indicates a "ref" parameter. - - - - - Indicates an "out" parameter. - - - - - Specifies the possible kinds of symbols. - - - - - Symbol is an alias. - - - - - Symbol is an array type. - - - - - Symbol is an assembly. - - - - - Symbol is a dynamic type. - - - - - Symbol that represents an error - - - - - Symbol is an Event. - - - - - Symbol is a field. - - - - - Symbol is a label. - - - - - Symbol is a local. - - - - - Symbol is a method. - - - - - Symbol is a netmodule. - - - - - Symbol is a named type (e.g. class). - - - - - Symbol is a namespace. - - - - - Symbol is a parameter. - - - - - Symbol is a pointer type. - - - - - Symbol is a property. - - - - - Symbol is a range variable of a query expression. - - - - - Symbol is a type parameter. - - - - - Symbol is a preprocessing/conditional compilation constant. - - - - - Kind of a synthesized local variable. - - - Synthesized local variables are either - 1) Short-lived (temporary) - The lifespan of an temporary variable shall not cross a statement boundary (a PDB sequence point). - These variables are not tracked by EnC and don't have names. - - 2) Long-lived - All variables whose lifespan might cross a statement boundary (include a PDB sequence point) - must be named in a build configuration that supports EnC. Some of them might need to be named in release, to support EE. - The kind of such local must be encoded in the name, so that we can retrieve it from debug metadata during EnC. - - The integer value of the kind must match corresponding Dev11/12 TEMP_KIND enum values for - compatibility with assemblies generated by the native compiler. - - Long-lived local variables must be assigned slots in source order. - - - - - Temp variable created by the optimizer. - - - - - Temp variable created during lowering. - - - - - Temp variable created by the emitter. - - - - - The variable is not synthesized (C#, VB). - - - - - Local variable that stores value of an expression consumed by a subsequent conditional branch instruction that might jump across PDB sequence points. - The value needs to be preserved when remapping the IL offset from old method body to new method body during EnC. - A hidden sequence point also needs to be inserted at the offset where this variable is loaded to be consumed by the branch instruction. - (VB, C#). - - - - - Boolean passed to Monitor.Enter (C#, VB). - - - - - Variable holding on the object being locked while the execution is within the block of the lock statement (C#) or SyncLock statement (VB). - - - - - Local variable that stores the resources to be disposed at the end of using statement (C#, VB). - - - - - Local variable that stores the enumerator instance (C#, VB). - - - - - Local variable that stores the array instance (C#, VB?). - - - - - Local variables that store upper bound of multi-dimensional array, for each dimension (C#, VB?). - - - - - Local variables that store the current index, for each dimension (C#, VB?). - - - - - Local variable that holds a pinned handle of a string passed to a fixed statement (C#). - - - - - Local variable that holds the object passed to With statement (VB). - - - - - Local variable used to store the value of Select Case during the execution of Case statements. - - - - - Local variable that stores the return value of an async method. - - - - - VB: Stores the return value of a function that is not accessible from user code (e.g. operator, lambda, async, iterator). - C#: Stores the return value of a method/lambda with a block body, so that we can put a sequence point on the closing brace of the body. - - - - - Very special corner case involving filters, await and lambdas. - - - - - Local variable that stores the current state of the state machine while MoveNext method is executing. - Used to avoid race conditions due to multiple reads from the lifted state. - - - - - Local that stores an expression value which needs to be spilled. - This local should either be hoisted or its lifespan ends before - the end of the containing await expression. - - - - - Local variable that holds on the display class instance. - - - - - Local variable used to cache a delegate that is used in inner block (possibly a loop), - and can be reused for all iterations of the loop. - - - - - Local variable that stores the result of an await expression (the awaiter object). - The variable is assigned the result of a call to await-expression.GetAwaiter() and subsequently used - to check whether the task completed. Eventually the value is stored in an awaiter field. - - The value assigned to the variable needs to be preserved when remapping the IL offset from old method body - to new method body during EnC. If the awaiter expression is contained in an active statement and the - containing MoveNext method changes the debugger finds the next sequence point that follows the await expression - and transfers the execution to the new method version. This sequence point is placed by the compiler at - the immediately after the stloc instruction that stores the awaiter object to this variable. - The subsequent ldloc then restores it in the new method version. - - (VB, C#). - - - - - All values have to be less than or equal to - () - - - - - An awaiter in async method. - Never actually created as a local variable, immediately lifted to a state machine field. - Not serialized to . - - - - - The receiver of a delegate relaxation stub. - Created as a local variable but always lifted to a relaxation display class field. - We never emit debug info for hoisted relaxation variable. - TODO: Avoid using lambdas and display classes for implementation of relaxation stubs and remove this kind. - - - - - Represents a constant value used as an argument to a custom attribute. - - - - - The kind of the constant. - - - - - Returns the of the constant, - or null if the type can't be determined (error). - - - - - True if the constant represents a null reference. - - - - - The value for a non-array constant. - - - - - The value for an array. - - - - - TypedConstant isn't computing its own kind from the type symbol because it doesn't - have a way to recognize the well-known type System.Type. - - - - - Represents the kind of a TypedConstant. - - - - - Represents a simple value or a read-only array of . - - - - - True if the constant represents a null literal. - - - - - Enumeration for possible kinds of type symbols. - - - - - Type's kind is undefined. - - - - - Type is an array type. - - - - - Type is a class. - - - - - Type is a delegate. - - - - - Type is dynamic. - - - - - Type is an enumeration. - - - - - Type is an error type. - - - - - Type is an interface. - - - - - Type is a module. - - - - - Type is a pointer. - - - - - Type is a C# struct or VB Structure - - - - - Type is a C# struct or VB Structure - - - - - Type is a type parameter. - - - - - Type is an interactive submission. - - - - - Type layout information. - - - - - Layout kind (Layout flags in metadata). - - - - - Field alignment (PackingSize field in metadata). - - - - - Size of the type. - - - - - Represents the different kinds of type parameters. - - - - - Type parameter of a named type. For example: T in ]]>. - - - - - Type parameter of a method. For example: T in ()]]>. - - - - - Type parameter in a cref attribute in XML documentation comments. For example: T in ]]>. - - - - - An enumeration declaring the kinds of variance supported for generic type parameters. - - - - - Invariant. - - - - - Covariant (out). - - - - - Contravariant (in). - - - - - Specifies the member names known to the compiler (such as .ctor or op_Explicit). - - - - - Name of the enum backing field. - - - - - The name assigned to an instance constructor. - - - - - The name assigned to the static constructor. - - - - - The symbol name assigned to all indexers, other than explicit interface implementations. - - - Will not correspond to the name that appears in metadata. - - - - - The name assigned to the destructor. - - - - - The name assigned to the delegate Invoke method. - - - - - The name assigned to the delegate BeginInvoke method. - - - - - The name assigned to the delegate EndInvoke method. - - - - - The name of an entry point method. - - - - - The default fully qualified name of a Script class. - - - - - The name assigned to Object.ToString method. - - - - - The name assigned to Object.Equals method. - - - - - The name assigned to Object.GetHashCode method. - - - - - The name assigned to an implicit (widening) conversion. - - - - - The name assigned to an explicit (narrowing) conversion. - - - - - The name assigned to the Addition operator. - - - - - The name assigned to the BitwiseAnd operator. - - - - - The name assigned to the BitwiseOr operator. - - - - - The name assigned to the Decrement operator. - - - - - The name assigned to the Division operator. - - - - - The name assigned to the Equality operator. - - - - - The name assigned to the ExclusiveOr operator. - - - - - The name assigned to the False operator. - - - - - The name assigned to the GreaterThan operator. - - - - - The name assigned to the GreaterThanOrEqual operator. - - - - - The name assigned to the Increment operator. - - - - - The name assigned to the Inequality operator. - - - - - The name assigned to the LeftShift operator. - - - - - The name assigned to the UnsignedLeftShift operator. - - - - - The name assigned to the LessThan operator. - - - - - The name assigned to the LessThanOrEqual operator. - - - - - The name assigned to the LogicalNot operator. - - - - - The name assigned to the LogicalOr operator. - - - - - The name assigned to the LogicalAnd operator. - - - - - The name assigned to the Modulus operator. - - - - - The name assigned to the Multiply operator. - - - - - The name assigned to the OnesComplement operator. - - - - - The name assigned to the RightShift operator. - - - - - The name assigned to the UnsignedRightShift operator. - - - - - The name assigned to the Subtraction operator. - - - - - The name assigned to the True operator. - - - - - The name assigned to the UnaryNegation operator. - - - - - The name assigned to the UnaryPlus operator. - - - - - The name assigned to the Concatenate operator. - - - - - The name assigned to the Exponent operator. - - - - - The name assigned to the IntegerDivision operator. - - - - - The name assigned to the Like operator. - - - - - The required name for the GetEnumerator method used in a ForEach statement. - - - - - The required name for the MoveNext method used in a ForEach statement. - - - - - The required name for the Current property used in a ForEach statement. - - - - - The required name for the property used in - a ForEach statement when the collection is a nullable struct. - - - - - The name for the Add method to be invoked for each element in a collection initializer expression - (see C# Specification, §7.6.10.3 Collection initializers). - - - - - The required name for the GetAwaiter method used to obtain an awaiter for a task - (see C# Specification, §7.7.7.1 Awaitable expressions). - - - - - The required name for the IsCompleted property used to determine if a task is already complete - (see C# Specification, §7.7.7.1 Awaitable expressions). - - - - - The required name for the GetResult method used to obtain the outcome of a task once it is complete - (see C# Specification, §7.7.7.1 Awaitable expressions). - - - - - The name of the method used to register a resumption delegate - (see C# Specification, §7.7.7.1 Awaitable expressions). - - - - - List of entries sorted in source order, each of which captures a - position in the supplied syntax tree and the set of diagnostics (warnings) - whose reporting should either be suppressed or enabled at this position. - - - - - Returns list of entries sorted in source order, each of which captures a - position in the supplied syntax tree and the set of diagnostics (warnings) - whose reporting should either be suppressed or enabled at this position. - - - - - Returns the reporting state for the supplied diagnostic id at the supplied position - in the associated syntax tree. - - - - - Gets the entry with the largest position less than or equal to supplied position. - - - - - Struct that represents an entry in the warning state map. Sorts by position in the associated syntax tree. - - - - - This is a SyntaxReference implementation that lazily translates the result (SyntaxNode) of the - original syntax reference to another one. - - - - - Creates a new node identical to this node with the specified annotations attached. - - Original node. - Annotations to be added to the new node. - - - - Creates a new node identical to this node with the specified annotations attached. - - Original node. - Annotations to be added to the new node. - - - - Creates a new node identical to this node with the specified annotations removed. - - Original node. - Annotations to be removed from the new node. - - - - Creates a new node identical to this node with the specified annotations removed. - - Original node. - Annotations to be removed from the new node. - - - - Creates a new node identical to this node with the annotations of the specified kind removed. - - Original node. - The kind of annotation to remove. - - - - Gets the number of children contained in the . - - - - Gets the child at the specified index. - The zero-based index of the child to get. - - is less than 0.-or- is equal to or greater than . - - - - internal indexer that does not verify index. - Used when caller has already ensured that index is within bounds. - - - - - Locate the node or token that is a child of the given and contains the given position. - - The to search. - The position. - The node or token that spans the given position. - - Assumes that is within the span of . - - - - - internal indexer that does not verify index. - Used when caller has already ensured that index is within bounds. - - - - - Returns the first child in the list. - - The first child in the list. - The list is empty. - - - - Returns the last child in the list. - - The last child in the list. - The list is empty. - - - - Returns a list which contains all children of in reversed order. - - which contains all children of in reversed order - - - Returns an enumerator that iterates through the . - A for the . - - - Determines whether the specified object is equal to the current instance. - true if the specified object is a structure and is equal to the current instance; otherwise, false. - The object to be compared with the current instance. - - - Determines whether the specified structure is equal to the current instance. - true if the specified structure is equal to the current instance; otherwise, false. - The structure to be compared with the current instance. - - - Returns the hash code for the current instance. - A 32-bit signed integer hash code. - - - Indicates whether two structures are equal. - true if is equal to ; otherwise, false. - The structure on the left side of the equality operator. - The structure on the right side of the equality operator. - - - Indicates whether two structures are unequal. - true if is equal to ; otherwise, false. - The structure on the left side of the inequality operator. - The structure on the right side of the inequality operator. - - - Enumerates the elements of a . - - - Advances the enumerator to the next element of the . - true if the enumerator was successfully advanced to the next element; false if the enumerator has passed the end of the collection. - - - Gets the element at the current position of the enumerator. - The element in the at the current position of the enumerator. - - - Sets the enumerator to its initial position, which is before the first element in the collection. - - - - Gets the element in the collection at the current position of the enumerator. - - - The element in the collection at the current position of the enumerator. - - - - - Gets the element in the collection at the current position of the enumerator. - - - The element in the collection at the current position of the enumerator. - - - - - Advances the enumerator to the next element of the collection. - - - true if the enumerator was successfully advanced to the next element; false if the enumerator has passed the end of the collection. - - - - - Sets the enumerator to its initial position, which is before the first element in the collection. - - - - - Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. - - - - - Gets the element in the collection at the current position of the enumerator. - - - The element in the collection at the current position of the enumerator. - - - - - Gets the element in the collection at the current position of the enumerator. - - - The element in the collection at the current position of the enumerator. - - - - - Advances the enumerator to the next element of the collection. - - - true if the enumerator was successfully advanced to the next element; false if the enumerator has passed the end of the collection. - - The collection was modified after the enumerator was created. - - - - Sets the enumerator to its initial position, which is before the first element in the collection. - - The collection was modified after the enumerator was created. - - - - Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. - - - - - Find the slot that contains the given offset. - - The target offset. Must be between 0 and . - The slot index of the slot containing the given offset. - - The base implementation is a linear search. This should be overridden - if a derived class can implement it more efficiently. - - - - - Represents the root node of a structured trivia tree (for example, a preprocessor directive - or a documentation comment). From this root node you can traverse back up to the containing - trivia in the outer tree that contains it. - - - - - Returns the parent trivia syntax for this structured trivia syntax. - - The parent trivia syntax for this structured trivia syntax. - - - - The LineDirectiveMap is created to enable translating positions, using the #line directives - in a file. The basic implementation creates an ordered array of line mapping entries, one - for each #line directive in the file (plus one at the beginning). If the file has no - directives, then the array has just one element in it. To map line numbers, a binary search - of the mapping entries is done and nearest line mapping is applied. - - - - - Determines whether the position is considered to be hidden from the debugger or not. - - - - - Combines TranslateSpan and IsHiddenPosition to not search the entries twice when emitting sequence points - - - - - Are there any hidden regions in the map? - - True if there's at least one hidden region in the map. - - - - Enum that describes the state related to the #line or #externalsource directives at a position in source. - - - - - Used in VB when the position is not hidden, but it's not known yet that there is a (nonempty) #ExternalSource - following. - - - - - Used in C# for spans outside of #line directives - - - - - Used in C# for spans inside of "#line linenumber" directive - - - - - Used in VB for spans inside of a "#ExternalSource" directive that followed an unknown span - - - - - Used in VB for spans inside of a "#ExternalSource" directive that followed a hidden span - - - - - Used in C# and VB for spans that are inside of #line hidden (C#) or outside of #ExternalSource (VB) - directives - - - - - The state of the visibility of a line. - - - - - The line is located before any #line directive and there is at least one #line directive present in this syntax tree. - This enum value is used for C# only to enable the consumer to define how to interpret the lines before the first - line directive. - - - - - The line is following a #line hidden directive. - - - - - The line is following a #line default directive or a #line directive with at least a line number. - If there is no line directive at all, Visible is returned for all lines. - - - - - Gets the separator at the given index in this list. - - The index. - - - - - Returns the sequence of just the separator tokens. - - - - - The absolute span of the list elements in characters, including the leading and trailing trivia of the first and last elements. - - - - - The absolute span of the list elements in characters, not including the leading and trailing trivia of the first and last elements. - - - - - Returns the string representation of the nodes in this list including separators but not including - the first node's leading trivia and the last node or token's trailing trivia. - - - The string representation of the nodes in this list including separators but not including - the first node's leading trivia and the last node or token's trailing trivia. - - - - - Returns the full string representation of the nodes in this list including separators, - the first node's leading trivia, and the last node or token's trailing trivia. - - - The full string representation of the nodes in this list including separators including separators, - the first node's leading trivia, and the last node or token's trailing trivia. - - - - - Creates a new list with the specified node added to the end. - - The node to add. - - - - Creates a new list with the specified nodes added to the end. - - The nodes to add. - - - - Creates a new list with the specified node inserted at the index. - - The index to insert at. - The node to insert. - - - - Creates a new list with the specified nodes inserted at the index. - - The index to insert at. - The nodes to insert. - - - - Creates a new list with the element at the specified index removed. - - The index of the element to remove. - - - - Creates a new list with specified element removed. - - The element to remove. - - - - Creates a new list with the specified element replaced by the new node. - - The element to replace. - The new node. - - - - Creates a new list with the specified element replaced by the new nodes. - - The element to replace. - The new nodes. - - - - Creates a new list with the specified separator token replaced with the new separator. - - The separator token to be replaced. - The new separator token. - - - - A SyntaxAnnotation is used to annotate syntax elements with additional information. - - Since syntax elements are immutable, annotating them requires creating new instances of them - with the annotations attached. - - - - - A predefined syntax annotation that indicates whether the syntax element has elastic trivia. - - - - - A list of . - - - - - The number of nodes in the list. - - - - - Gets the node at the specified index. - - The zero-based index of the node to get or set. - The node at the specified index. - - - - The absolute span of the list elements in characters, including the leading and trailing trivia of the first and last elements. - - - - - The absolute span of the list elements in characters, not including the leading and trailing trivia of the first and last elements. - - - - - Returns the string representation of the nodes in this list, not including - the first node's leading trivia and the last node's trailing trivia. - - - The string representation of the nodes in this list, not including - the first node's leading trivia and the last node's trailing trivia. - - - - - Returns the full string representation of the nodes in this list including - the first node's leading trivia and the last node's trailing trivia. - - - The full string representation of the nodes in this list including - the first node's leading trivia and the last node's trailing trivia. - - - - - Creates a new list with the specified node added at the end. - - The node to add. - - - - Creates a new list with the specified nodes added at the end. - - The nodes to add. - - - - Creates a new list with the specified node inserted at the index. - - The index to insert at. - The node to insert. - - - - Creates a new list with the specified nodes inserted at the index. - - The index to insert at. - The nodes to insert. - - - - Creates a new list with the element at specified index removed. - - The index of the element to remove. - - - - Creates a new list with the element removed. - - The element to remove. - - - - Creates a new list with the specified element replaced with the new node. - - The element to replace. - The new node. - - - - Creates a new list with the specified element replaced with new nodes. - - The element to replace. - The new nodes. - - - - The first node in the list. - - - - - The first node in the list or default if the list is empty. - - - - - The last node in the list. - - - - - The last node in the list or default if the list is empty. - - - - - True if the list has at least one node. - - - - - Get's the enumerator for this list. - - - - - The index of the node in this list, or -1 if the node is not in the list. - - - - - Represents a non-terminal node in the syntax tree. This is the language agnostic equivalent of and . - - - - - Used by structured trivia which has "parent == null", and therefore must know its - SyntaxTree explicitly when created. - - - - - An integer representing the language specific kind of this node. - - - - - The language name that this node is syntax of. - - - - - Returns SyntaxTree that owns the node or null if node does not belong to a - SyntaxTree - - - - - The absolute span of this node in characters, including its leading and trailing trivia. - - - - - The absolute span of this node in characters, not including its leading and trailing trivia. - - - - - Same as accessing on . - - - Slight performance improvement. - - - - - The width of the node in characters, not including leading and trailing trivia. - - - The Width property returns the same value as Span.Length, but is somewhat more efficient. - - - - - The complete width of the node in characters, including leading and trailing trivia. - - The FullWidth property returns the same value as FullSpan.Length, but is - somewhat more efficient. - - - - This works the same as GetRed, but intended to be used in lists - The only difference is that the public parent of the node is not the list, - but the list's parent. (element's grand parent). - - - - - special cased helper for 2 and 3 children lists where child #1 may map to a token - - - - - Returns the string representation of this node, not including its leading and trailing trivia. - - The string representation of this node, not including its leading and trailing trivia. - The length of the returned string is always the same as Span.Length - - - - Returns full string representation of this node including its leading and trailing trivia. - - The full string representation of this node including its leading and trailing trivia. - The length of the returned string is always the same as FullSpan.Length - - - - Writes the full text of this node to the specified . - - - - - Gets the full text of this node as an new instance. - - - Encoding of the file that the text was read from or is going to be saved to. - null if the encoding is unspecified. - If the encoding is not specified the isn't debuggable. - If an encoding-less is written to a file a shall be used as a default. - - - Hash algorithm to use to calculate checksum of the text that's saved to PDB. - - is not supported. - - - - Determine whether this node is structurally equivalent to another. - - - - - Determines whether the node represents a language construct that was actually parsed - from the source code. Missing nodes are generated by the parser in error scenarios to - represent constructs that should have been present in the source code in order to - compile successfully but were actually missing. - - - - - Determines whether this node is a descendant of a structured trivia. - - - - - Determines whether this node represents a structured trivia. - - - - - Determines whether a descendant trivia of this node is structured. - - - - - Determines whether this node has any descendant skipped text. - - - - - Determines whether this node has any descendant preprocessor directives. - - - - - Determines whether this node or any of its descendant nodes, tokens or trivia have any diagnostics on them. - - - - - Determines if the specified node is a descendant of this node. - - - - - Determines whether this node has any leading trivia. - - - - - Determines whether this node has any trailing trivia. - - - - - Gets a node at given node index without forcing its creation. - If node was not created it would return null. - - - - - This function calculates the offset of a child at given position. It is very common that - some children to the left of the given index already know their positions so we first - check if that is the case. In a worst case the cost is O(n), but it is not generally an - issue because number of children in regular nodes is fixed and small. In a case where - the number of children could be large (lists) this function is overridden with more - efficient implementations. - - - - - Gets a list of all the diagnostics in the sub tree that has this node as its root. - This method does not filter diagnostics based on #pragmas and compiler options - like nowarn, warnaserror etc. - - - - - Gets a for this syntax node. CommonSyntaxReferences can be used to - regain access to a syntax node without keeping the entire tree and source text in - memory. - - - - - When invoked on a node that represents an anonymous function or a query clause [1] - with a of another anonymous function or a query clause of the same kind [2], - returns the body of the [1] that positionally corresponds to the specified . - - E.g. join clause declares left expression and right expression -- each of these expressions is a lambda body. - JoinClause1.GetCorrespondingLambdaBody(JoinClause2.RightExpression) returns JoinClause1.RightExpression. - - - - - The node that contains this node in its collection. - - - - - The list of child nodes and tokens of this node, where each element is a SyntaxNodeOrToken instance. - - - - - Gets node at given node index. - This WILL force node creation if node has not yet been created. - - - - - Gets a list of the child nodes in prefix document order. - - - - - Gets a list of ancestor nodes - - - - - Gets a list of ancestor nodes (including this node) - - - - - Gets the first node of type TNode that matches the predicate. - - - - - Gets a list of descendant nodes in prefix document order. - - An optional function that determines if the search descends into the argument node's children. - Determines if nodes that are part of structured trivia are included in the list. - - - - Gets a list of descendant nodes in prefix document order. - - The span the node's full span must intersect. - An optional function that determines if the search descends into the argument node's children. - Determines if nodes that are part of structured trivia are included in the list. - - - - Gets a list of descendant nodes (including this node) in prefix document order. - - An optional function that determines if the search descends into the argument node's children. - Determines if nodes that are part of structured trivia are included in the list. - - - - Gets a list of descendant nodes (including this node) in prefix document order. - - The span the node's full span must intersect. - An optional function that determines if the search descends into the argument node's children. - Determines if nodes that are part of structured trivia are included in the list. - - - - Gets a list of descendant nodes and tokens in prefix document order. - - An optional function that determines if the search descends into the argument node's children. - Determines if nodes that are part of structured trivia are included in the list. - - - - Gets a list of the descendant nodes and tokens in prefix document order. - - The span the node's full span must intersect. - An optional function that determines if the search descends into the argument node's children. - Determines if nodes that are part of structured trivia are included in the list. - - - - Gets a list of descendant nodes and tokens (including this node) in prefix document order. - - An optional function that determines if the search descends into the argument node's children. - Determines if nodes that are part of structured trivia are included in the list. - - - - Gets a list of the descendant nodes and tokens (including this node) in prefix document order. - - The span the node's full span must intersect. - An optional function that determines if the search descends into the argument node's children. - Determines if nodes that are part of structured trivia are included in the list. - - - - Finds the node with the smallest that contains . - is used to determine the behavior in case of a tie (i.e. a node having the same span as its parent). - If is true, then it returns lowest descending node encompassing the given . - Otherwise, it returns the outermost node encompassing the given . - - - TODO: This should probably be reimplemented with - - This exception is thrown if doesn't contain the given span. - - - - Finds a descendant token of this node whose span includes the supplied position. - - The character position of the token relative to the beginning of the file. - - True to return tokens that are part of trivia. If false finds the token whose full span (including trivia) - includes the position. - - - - - Gets the first token of the tree rooted by this node. Skips zero-width tokens. - - The first token or default(SyntaxToken) if it doesn't exist. - - - - Gets the last token of the tree rooted by this node. Skips zero-width tokens. - - The last token or default(SyntaxToken) if it doesn't exist. - - - - Gets a list of the direct child tokens of this node. - - - - - Gets a list of all the tokens in the span of this node. - - - - - Gets a list of all the tokens in the full span of this node. - - - - - The list of trivia that appears before this node in the source code and are attached to a token that is a - descendant of this node. - - - - - The list of trivia that appears after this node in the source code and are attached to a token that is a - descendant of this node. - - - - - Finds a descendant trivia of this node whose span includes the supplied position. - - The character position of the trivia relative to the beginning of the file. - - True to return tokens that are part of trivia. If false finds the token whose full span (including trivia) - includes the position. - - - - - Get a list of all the trivia associated with the descendant nodes and tokens. - - - - - Get a list of all the trivia associated with the descendant nodes and tokens. - - - - - Determines whether this node or any sub node, token or trivia has annotations. - - - - - Determines whether this node has any annotations with the specific annotation kind. - - - - - Determines whether this node has any annotations with any of the specific annotation kinds. - - - - - Determines whether this node has the specific annotation. - - - - - Gets all the annotations with the specified annotation kind. - - - - - Gets all the annotations with the specified annotation kinds. - - - - - Gets all nodes and tokens with an annotation of the specified annotation kind. - - - - - Gets all nodes and tokens with an annotation of the specified annotation kinds. - - - - - Gets all nodes and tokens with the specified annotation. - - - - - Gets all nodes with the specified annotation. - - - - - Gets all nodes with the specified annotation kind. - - - - - - - Gets all tokens with the specified annotation. - - - - - Gets all tokens with the specified annotation kind. - - - - - Gets all trivia with an annotation of the specified annotation kind. - - - - - Gets all trivia with an annotation of the specified annotation kinds. - - - - - Gets all trivia with the specified annotation. - - - - - Copies all SyntaxAnnotations, if any, from this SyntaxNode instance and attaches them to a new instance based on . - - - - If no annotations are copied, just returns . - - - It can also be used manually to preserve annotations in a more complex tree - modification, even if the type of a node changes. - - - - - - Determines if two nodes are the same, disregarding trivia differences. - - The node to compare against. - If true then the nodes are equivalent if the contained nodes and - tokens declaring metadata visible symbolic information are equivalent, ignoring any - differences of nodes inside method bodies or initializer expressions, otherwise all - nodes and tokens must be equivalent. - - - - - Determine if this node is structurally equivalent to another. - - - - - Returns SyntaxTree that owns the node or null if node does not belong to a - SyntaxTree - - - - - Finds a descendant token of this node whose span includes the supplied position. - - The character position of the token relative to the beginning of the file. - - True to return tokens that are part of trivia. - If false finds the token whose full span (including trivia) includes the position. - - - - - Finds a descendant token of this node whose span includes the supplied position. - - The character position of the token relative to the beginning of the file. - - Applied on every structured trivia. Return false if the tokens included in the trivia should be skipped. - Pass null to skip all structured trivia. - - - - - Finds a descendant trivia of this node whose span includes the supplied position. - - The character position of the trivia relative to the beginning of the file. - Whether to search inside structured trivia. - - - - Creates a new tree of nodes with the specified nodes, tokens or trivia replaced. - - - - - Creates a new tree of nodes with the specified node removed. - - - - - Determines if two nodes are the same, disregarding trivia differences. - - The node to compare against. - If true then the nodes are equivalent if the contained nodes and - tokens declaring metadata visible symbolic information are equivalent, ignoring any - differences of nodes inside method bodies or initializer expressions, otherwise all - nodes and tokens must be equivalent. - - - - - Creates a new tree of nodes with the specified nodes, tokens and trivia replaced. - - The type of the root node. - The root node of the tree of nodes. - The nodes to be replaced. - A function that computes a replacement node for the - argument nodes. The first argument is the original node. The second argument is the same - node potentially rewritten with replaced descendants. - The tokens to be replaced. - A function that computes a replacement token for - the argument tokens. The first argument is the original token. The second argument is - the same token potentially rewritten with replaced trivia. - The trivia to be replaced. - A function that computes replacement trivia for - the specified arguments. The first argument is the original trivia. The second argument is - the same trivia with potentially rewritten sub structure. - - - - Creates a new tree of nodes with the specified old node replaced with a new node. - - The type of the root node. - The type of the nodes being replaced. - The root node of the tree of nodes. - The nodes to be replaced; descendants of the root node. - A function that computes a replacement node for the - argument nodes. The first argument is the original node. The second argument is the same - node potentially rewritten with replaced descendants. - - - - Creates a new tree of nodes with the specified old node replaced with a new node. - - The type of the root node. - The root node of the tree of nodes. - The node to be replaced; a descendant of the root node. - The new node to use in the new tree in place of the old node. - - - - Creates a new tree of nodes with specified old node replaced with a new nodes. - - The type of the root node. - The root of the tree of nodes. - The node to be replaced; a descendant of the root node and an element of a list member. - A sequence of nodes to use in the tree in place of the old node. - - - - Creates a new tree of nodes with new nodes inserted before the specified node. - - The type of the root node. - The root of the tree of nodes. - The node to insert before; a descendant of the root node an element of a list member. - A sequence of nodes to insert into the tree immediately before the specified node. - - - - Creates a new tree of nodes with new nodes inserted after the specified node. - - The type of the root node. - The root of the tree of nodes. - The node to insert after; a descendant of the root node an element of a list member. - A sequence of nodes to insert into the tree immediately after the specified node. - - - - Creates a new tree of nodes with the specified old token replaced with new tokens. - - The type of the root node. - The root of the tree of nodes. - The token to be replaced; a descendant of the root node and an element of a list member. - A sequence of tokens to use in the tree in place of the specified token. - - - - Creates a new tree of nodes with new tokens inserted before the specified token. - - The type of the root node. - The root of the tree of nodes. - The token to insert before; a descendant of the root node and an element of a list member. - A sequence of tokens to insert into the tree immediately before the specified token. - - - - Creates a new tree of nodes with new tokens inserted after the specified token. - - The type of the root node. - The root of the tree of nodes. - The token to insert after; a descendant of the root node and an element of a list member. - A sequence of tokens to insert into the tree immediately after the specified token. - - - - Creates a new tree of nodes with the specified old trivia replaced with new trivia. - - The type of the root node. - The root of the tree of nodes. - The trivia to be replaced; a descendant of the root node. - A sequence of trivia to use in the tree in place of the specified trivia. - - - - Creates a new tree of nodes with new trivia inserted before the specified trivia. - - The type of the root node. - The root of the tree of nodes. - The trivia to insert before; a descendant of the root node. - A sequence of trivia to insert into the tree immediately before the specified trivia. - - - - Creates a new tree of nodes with new trivia inserted after the specified trivia. - - The type of the root node. - The root of the tree of nodes. - The trivia to insert after; a descendant of the root node. - A sequence of trivia to insert into the tree immediately after the specified trivia. - - - - Creates a new tree of nodes with the specified old node replaced with a new node. - - The type of the root node. - The root node of the tree of nodes. - The token to be replaced; descendants of the root node. - A function that computes a replacement token for - the argument tokens. The first argument is the original token. The second argument is - the same token potentially rewritten with replaced trivia. - - - - Creates a new tree of nodes with the specified old token replaced with a new token. - - The type of the root node. - The root node of the tree of nodes. - The token to be replaced. - The new token to use in the new tree in place of the old - token. - - - - Creates a new tree of nodes with the specified trivia replaced with new trivia. - - The type of the root node. - The root node of the tree of nodes. - The trivia to be replaced; descendants of the root node. - A function that computes replacement trivia for - the specified arguments. The first argument is the original trivia. The second argument is - the same trivia with potentially rewritten sub structure. - - - - Creates a new tree of nodes with the specified trivia replaced with new trivia. - - The type of the root node. - The root node of the tree of nodes. - The trivia to be replaced. - The new trivia to use in the new tree in place of the old trivia. - - - - Creates a new tree of nodes with the specified node removed. - - The type of the root node. - The root node from which to remove a descendant node from. - The node to remove. - Options that determine how the node's trivia is treated. - - - - Creates a new tree of nodes with the specified nodes removed. - - The type of the root node. - The root node from which to remove a descendant node from. - The nodes to remove. - Options that determine how the nodes' trivia is treated. - - - - Creates a new syntax node with all whitespace and end of line trivia replaced with - regularly formatted trivia. - - The type of the node. - The node to format. - A sequence of whitespace characters that defines a single level of indentation. - If true the replaced trivia is elastic trivia. - - - - Creates a new syntax node with all whitespace and end of line trivia replaced with - regularly formatted trivia. - - The type of the node. - The node to format. - An optional sequence of whitespace characters that defines a single level of indentation. - An optional sequence of whitespace characters used for end of line. - If true the replaced trivia is elastic trivia. - - - - Creates a new node from this node with both the leading and trailing trivia of the specified node. - - - - - Creates a new node from this node without leading or trailing trivia. - - - - - Creates a new node from this node with the leading trivia replaced. - - - - - Creates a new node from this node with the leading trivia replaced. - - - - - Creates a new node from this node with the leading trivia removed. - - - - - Creates a new node from this node with the leading trivia replaced. - - - - - Creates a new node from this node with the trailing trivia replaced. - - - - - Creates a new node from this node with the trailing trivia replaced. - - - - - Creates a new node from this node with the trailing trivia removed. - - - - - Creates a new node from this node with the trailing trivia replaced. - - - - - Creates a new tree of nodes with the specified nodes being tracked. - - Use GetCurrentNode on the subtree resulting from this operation, or any transformation of it, - to get the current node corresponding to the original tracked node. - - The root of the subtree containing the nodes to be tracked. - One or more nodes that are descendants of the root node. - - - - Creates a new tree of nodes with the specified nodes being tracked. - - Use GetCurrentNode on the subtree resulting from this operation, or any transformation of it, - to get the current node corresponding to the original tracked node. - - The root of the subtree containing the nodes to be tracked. - One or more nodes that are descendants of the root node. - - - - Gets the nodes within the subtree corresponding to the original tracked node. - Use TrackNodes to start tracking nodes. - - The root of the subtree containing the current node corresponding to the original tracked node. - The node instance originally tracked. - - - - Gets the node within the subtree corresponding to the original tracked node. - Use TrackNodes to start tracking nodes. - - The root of the subtree containing the current node corresponding to the original tracked node. - The node instance originally tracked. - - - - Gets the nodes within the subtree corresponding to the original tracked nodes. - Use TrackNodes to start tracking nodes. - - The root of the subtree containing the current nodes corresponding to the original tracked nodes. - One or more node instances originally tracked. - - - - A wrapper for either a syntax node () or a syntax token (). - - - Note that we do not store the token directly, we just store enough information to reconstruct it. - This allows us to reuse nodeOrToken as a token's parent. - - - - - An integer representing the language specific kind of the underlying node or token. - - - - - The language name that this node or token is syntax of. - - - - - Determines whether the underlying node or token represents a language construct that was actually parsed - from source code. Missing nodes and tokens are typically generated by the parser in error scenarios to - represent constructs that should have been present in the source code for the source code to compile - successfully but were actually missing. - - - - - The node that contains the underlying node or token in its Children collection. - - - - - Determines whether this is wrapping a token. - - - - - Determines whether this is wrapping a node. - - - - - Returns the underlying token if this is wrapping a - token. - - - The underlying token if this is wrapping a token. - - - - - Returns the underlying node if this is wrapping a - node. - - - The underlying node if this is wrapping a node. - - - - - The list of child nodes and tokens of the underlying node or token. - - - - - The absolute span of the underlying node or token in characters, not including its leading and trailing - trivia. - - - - - Same as accessing on . - - - Slight performance improvement. - - - - - The absolute span of the underlying node or token in characters, including its leading and trailing trivia. - - - - - Returns the string representation of this node or token, not including its leading and trailing - trivia. - - - The string representation of this node or token, not including its leading and trailing trivia. - - The length of the returned string is always the same as Span.Length - - - - Returns the full string representation of this node or token including its leading and trailing trivia. - - The full string representation of this node or token including its leading and trailing - trivia. - The length of the returned string is always the same as FullSpan.Length - - - - Writes the full text of this node or token to the specified TextWriter. - - - - - Determines whether the underlying node or token has any leading trivia. - - - - - The list of trivia that appear before the underlying node or token in the source code and are attached to a - token that is a descendant of the underlying node or token. - - - - - Determines whether the underlying node or token has any trailing trivia. - - - - - The list of trivia that appear after the underlying node or token in the source code and are attached to a - token that is a descendant of the underlying node or token. - - - - - Determines whether the underlying node or token or any of its descendant nodes, tokens or trivia have any - diagnostics on them. - - - - - Gets a list of all the diagnostics in either the sub tree that has this node as its root or - associated with this token and its related trivia. - This method does not filter diagnostics based on #pragmas and compiler options - like nowarn, warnaserror etc. - - - - - Determines whether the underlying node or token has any descendant preprocessor directives. - - - - - Determines whether this node or token (or any sub node, token or trivia) as annotations. - - - - - Determines whether this node or token has annotations of the specified kind. - - - - - Determines whether this node or token has annotations of the specified kind. - - - - - Determines if this node or token has the specific annotation. - - - - - Gets all annotations of the specified annotation kind. - - - - - Gets all annotations of the specified annotation kind. - - - - - Creates a new node or token identical to this one with the specified annotations. - - - - - Creates a new node or token identical to this one with the specified annotations. - - - - - Creates a new node or token identical to this one without the specified annotations. - - - - - Creates a new node or token identical to this one without the specified annotations. - - - - - Creates a new node or token identical to this one without annotations of the specified kind. - - - - - Determines whether the supplied is equal to this - . - - - - - Determines whether two s are equal. - - - - - Determines whether two s are unequal. - - - - - Determines whether the supplied is equal to this - . - - - - - Serves as hash function for . - - - - - Determines if the two nodes or tokens are equivalent. - - - - - Returns a new that wraps the supplied token. - - The input token. - - A that wraps the supplied token. - - - - - Returns the underlying token wrapped by the supplied . - - - The input . - - - The underlying token wrapped by the supplied . - - - - - Returns a new that wraps the supplied node. - - The input node. - - A that wraps the supplied node. - - - - - Returns the underlying node wrapped by the supplied . - - - The input . - - - The underlying node wrapped by the supplied . - - - - - SyntaxTree which contains current SyntaxNodeOrToken. - - - - - Get the location of this node or token. - - - - - A list of structures. - - - - - The underlying field - - - - - The index from the parent's children list of this node. - - - - - Initializes a new instance of the structure. - - The underlying syntax node. - The index. - - - - Gets the underlying syntax node. - - - - - Gets the count of nodes in this list - - - - - Gets the at the specified index. - - is out of range. - - - - The absolute span of the list elements in characters, including the leading and trailing trivia of the first and last elements. - - - - - The absolute span of the list elements in characters, not including the leading and trailing trivia of the first and last elements. - - - - - Returns the string representation of the nodes and tokens in this list, not including the first node or token's leading trivia - and the last node or token's trailing trivia. - - - The string representation of the nodes and tokens in this list, not including the first node or token's leading trivia - and the last node or token's trailing trivia. - - - - - Returns the full string representation of the nodes and tokens in this list including the first node or token's leading trivia - and the last node or token's trailing trivia. - - - The full string representation of the nodes and tokens in this list including the first node or token's leading trivia - and the last node or token's trailing trivia. - - - - - Gets the first SyntaxNodeOrToken structure from this list. - - - - - Gets the first SyntaxNodeOrToken structure from this list if present, else default(SyntaxNodeOrToken). - - - - - Gets the last SyntaxNodeOrToken structure from this list. - - - - - Gets the last SyntaxNodeOrToken structure from this list if present, else default(SyntaxNodeOrToken). - - - - - Returns the index from the list for the given . - - The node or token to search for in the list. - The index of the found nodeOrToken, or -1 if it wasn't found - - - - Indicates whether there is any element in the list. - - true if there are any elements in the list, else false. - - - - Copies a given count of elements into the given array at specified offsets. - - The offset to start copying from. - The array to copy the elements into. - The array offset to start writing to. - The count of elements to copy. - - - - Creates a new with the specified node or token added to the end. - - The node or token to add. - - - - Creates a new with the specified nodes or tokens added to the end. - - The nodes or tokens to add. - - - - Creates a new with the specified node or token inserted at the index. - - The index to insert at. - The node or token to insert. - - - - Creates a new with the specified nodes or tokens inserted at the index. - - The index to insert at. - The nodes or tokens to insert. - - - - Creates a new with the element at the specified index removed. - - The index of the element to remove. - - - - Creates a new with the specified element removed. - - The element to remove. - - - - Creates a new with the specified element replaced with a new node or token. - - The element to replace. - The new node or token. - - - - Creates a new with the specified element replaced with a new nodes and tokens. - - The element to replace. - The new nodes and tokens. - - - - Gets the enumerator. - - - - - Returns an enumerator that iterates through the collection. - - - A that can be used to iterate through the collection. - - - - - Returns an enumerator that iterates through a collection. - - - An object that can be used to iterate through the collection. - - - - - Implements the operator ==. - - The left SyntaxNodeOrTokenList - The right SyntaxNodeOrTokenList - - true if both lists equal, else false. - - - - - Implements the operator !=. - - The left SyntaxNodeOrTokenList - The right SyntaxNodeOrTokenList - - true if both lists not equal, else false. - - - - - Indicates whether the current object is equal to another object of the same type. - - An object to compare with this object. - - true if the current object is equal to the parameter; otherwise, - false. - - - - - Determines whether the specified is equal to this instance. - - The to compare with this instance. - - true if the specified is equal to this instance; otherwise, false. - - - - - Returns a hash code for this instance. - - - A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. - - - - - Enumerator for lists of SyntaxNodeOrToken structs. - - - - - Advances the enumerator to the next element of the collection. - - - true if the enumerator was successfully advanced to the next element; false if the enumerator has passed the end of the collection. - - The collection was modified after the enumerator was created. - - - - Gets the struct that this enumerator instance is currently pointing to. - - - - - Gets the struct that this enumerator instance is currently pointing to. - - - - - Sets the enumerator to its initial position, which is before the first element in the collection. - - The collection was modified after the enumerator was created. - - - - Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. - - - - - A reference to a syntax node. - - - - - The syntax tree that this references a node within. - - - - - The span of the node referenced. - - - - - Retrieves the original referenced syntax node. - This action may cause a parse to happen to recover the syntax node. - - The original referenced syntax node. - - - - Retrieves the original referenced syntax node. - This action may cause a parse to happen to recover the syntax node. - - The original referenced syntax node. - - - - The location of this syntax reference. - - The location of this syntax reference. - - More performant than GetSyntax().GetLocation(). - - - - - None of the trivia associated with the node or token is kept. - - - - - The leading trivia associated with the node or token is kept. - - - - - The trailing trivia associated with the node or token is kept. - - - - - The leading and trailing trivia associated with the node or token is kept. - - - - - Any directives that would become unbalanced are kept. - - - - - All directives are kept - - - - - Ensure that at least one EndOfLine trivia is kept if one was present - - - - - Adds elastic marker trivia - - - - - Represents a token in the syntax tree. This is the language agnostic equivalent of and . - - - - - An integer representing the language specific kind of this token. - - - - - The language name that this token is syntax of. - - - - - The kind of token, given its position in the syntax. This differs from when a contextual keyword is used in a place in the syntax that gives it - its keyword meaning. - - - The ContextualKind is relevant only on contextual keyword tokens. ContextualKind differs - from Kind when a token is used in context where the token should be interpreted as a - keyword. - - - - - The node that contains this token in its Children collection. - - - - - The width of the token in characters, not including its leading and trailing trivia. - - - - - The complete width of the token in characters including its leading and trailing trivia. - - - - - The absolute span of this token in characters, not including its leading and trailing trivia. - - - - - Same as accessing on . - - - Slight performance improvement. - - - - - The absolute span of this token in characters, including its leading and trailing trivia. - - - - - Determines whether this token represents a language construct that was actually parsed from source code. - Missing tokens are typically generated by the parser in error scenarios to represent constructs that should - have been present in the source code for the source code to compile successfully but were actually missing. - - - - - Returns the value of the token. For example, if the token represents an integer literal, then this property - would return the actual integer. - - - - - Returns the text representation of the value of the token. For example, if the token represents an integer - literal, then this property would return a string representing the integer. - - - - - Returns the string representation of this token, not including its leading and trailing trivia. - - The string representation of this token, not including its leading and trailing trivia. - The length of the returned string is always the same as Span.Length - - - - Returns the full string representation of this token including its leading and trailing trivia. - - The full string representation of this token including its leading and trailing trivia. - The length of the returned string is always the same as FullSpan.Length - - - - Writes the full text of this token to the specified . - - - - - Writes the text of this token to the specified TextWriter, optionally including trivia. - - - - - Determines whether this token has any leading trivia. - - - - - Determines whether this token has any trailing trivia. - - - - - Full width of the leading trivia of this token. - - - - - Full width of the trailing trivia of this token. - - - - - Determines whether this token or any of its descendant trivia have any diagnostics on them. - - - - - Determines whether this token has any descendant preprocessor directives. - - - - - Determines whether this token is a descendant of a structured trivia. - - - - - Determines whether any of this token's trivia is structured. - - - - - True if this token or its trivia has any annotations. - - - - - True if this token has annotations of the specified annotation kind. - - - - - True if this token has annotations of the specified annotation kinds. - - - - - True if this token has the specified annotation. - - - - - Gets all the annotations of the specified annotation kind. - - - - - Gets all the annotations of the specified annotation kind. - - - - - Gets all the annotations of the specified annotation kind. - - - - - Adds this annotation to a given syntax token, creating a new syntax token of the same type with the - annotation on it. - - - - - Adds this annotation to a given syntax token, creating a new syntax token of the same type with the - annotation on it. - - - - - Creates a new syntax token identical to this one without the specified annotations. - - - - - Creates a new syntax token identical to this one without the specified annotations. - - - - - Creates a new syntax token identical to this one without annotations of the specified kind. - - - - - Copies all SyntaxAnnotations, if any, from this SyntaxToken instance and attaches them to a new instance based on . - - - If no annotations are copied, just returns . - - - - - The list of trivia that appear before this token in the source code. - - - - - The list of trivia that appear after this token in the source code and are attached to this token or any of - its descendants. - - - - - Creates a new token from this token with the leading and trailing trivia from the specified token. - - - - - Creates a new token from this token with the leading trivia specified. - - - - - Creates a new token from this token with the leading trivia specified.. - - - - - Creates a new token from this token with the leading trivia specified.. - - - - - Creates a new token from this token with the trailing trivia specified. - - - - - Creates a new token from this token with the trailing trivia specified. - - - - - Creates a new token from this token with the trailing trivia specified. - - - - - Gets a list of all the trivia (both leading and trailing) for this token. - - - - - Determines whether two s are equal. - - - - - Determines whether two s are unequal. - - - - - Determines whether the supplied is equal to this - . - - - - - Determines whether the supplied is equal to this - . - - - - - Serves as hash function for . - - - - - Gets the token that follows this token in the syntax tree. - - The token that follows this token in the syntax tree. - - - - Returns the token after this token in the syntax tree. - - Delegate applied to each token. The token is returned if the predicate returns - true. - Delegate applied to trivia. If this delegate is present then trailing trivia is - included in the search. - - - - Gets the token that precedes this token in the syntax tree. - - The next token that follows this token in the syntax tree. - - - - Returns the token before this token in the syntax tree. - - Delegate applied to each token. The token is returned if the predicate returns - true. - Delegate applied to trivia. If this delegate is present then trailing trivia is - included in the search. - - - - The SyntaxTree that contains this token. - - - - - Gets the location for this token. - - - - - Gets a list of all the diagnostics associated with this token and any related trivia. - This method does not filter diagnostics based on #pragmas and compiler options - like nowarn, warnaserror etc. - - - - - Determines if this token is equivalent to the specified token. - - - - - Represents a read-only list of . - - - Represents a read-only list of s. - - - - - Returns the number of tokens in the list. - - - - - Gets the token at the specified index. - - The zero-based index of the token to get. - The token at the specified index. - - is less than 0.-or- is equal to or greater than . - - - - The absolute span of the list elements in characters, including the leading and trailing trivia of the first and last elements. - - - - - The absolute span of the list elements in characters, not including the leading and trailing trivia of the first and last elements. - - - - - Returns the string representation of the tokens in this list, not including - the first token's leading trivia and the last token's trailing trivia. - - - The string representation of the tokens in this list, not including - the first token's leading trivia and the last token's trailing trivia. - - - - - Returns the full string representation of the tokens in this list including - the first token's leading trivia and the last token's trailing trivia. - - - The full string representation of the tokens in this list including - the first token's leading trivia and the last token's trailing trivia. - - - - - Returns the first token in the list. - - The first token in the list. - The list is empty. - - - - Returns the last token in the list. - - The last token in the list. - The list is empty. - - - - Tests whether the list is non-empty. - - True if the list contains any tokens. - - - - Returns a list which contains all elements of in reversed order. - - which contains all elements of in reversed order - - - - get the green node at the given slot - - - - - get the green node at the given slot - - - - - Creates a new with the specified token added to the end. - - The token to add. - - - - Creates a new with the specified tokens added to the end. - - The tokens to add. - - - - Creates a new with the specified token insert at the index. - - The index to insert the new token. - The token to insert. - - - - Creates a new with the specified tokens insert at the index. - - The index to insert the new tokens. - The tokens to insert. - - - - Creates a new with the token at the specified index removed. - - The index of the token to remove. - - - - Creates a new with the specified token removed. - - The token to remove. - - - - Creates a new with the specified token replaced with a new token. - - The token to replace. - The new token. - - - - Creates a new with the specified token replaced with new tokens. - - The token to replace. - The new tokens. - - - - Returns an enumerator for the tokens in the - - - - - Compares and for equality. - - - - True if the two s are equal. - - - - Compares and for inequality. - - - - True if the two s are not equal. - - - - Compares this with the for equality. - - True if the two objects are equal. - - - - Serves as a hash function for the - - - - - Create a new Token List - - Element of the return Token List - - - - A structure for enumerating a - - - - - Advances the enumerator to the next token in the collection. - - true if the enumerator was successfully advanced to the next element; false if the enumerator - has passed the end of the collection. - - - - Gets the current element in the collection. - - - - - Reversed enumerable. - - - - - The parsed representation of a source document. - - - - - The path of the source document file. - - - If this syntax tree is not associated with a file, this value can be empty. - The path shall not be null. - - The file doesn't need to exist on disk. The path is opaque to the compiler. - The only requirement on the path format is that the implementations of - , and - passed to the compilation that contains the tree understand it. - - Clients must also not assume that the values of this property are unique - within a Compilation. - - The path is used as follows: - - When debug information is emitted, this path is embedded in the debug information. - - When resolving and normalizing relative paths in #r, #load, #line/#ExternalSource, - #pragma checksum, #ExternalChecksum directives, XML doc comment include elements, etc. - - - - - Returns true if this syntax tree has a root with SyntaxKind "CompilationUnit". - - - - - The options used by the parser to produce the syntax tree. - - - - - The options used by the parser to produce the syntax tree. - - - - - The length of the text of the syntax tree. - - - - - Gets the syntax tree's text if it is available. - - - - - Gets the text of the source document. - - - - - The text encoding of the source document. - - - - - Gets the text of the source document asynchronously. - - - By default, the work associated with this method will be executed immediately on the current thread. - Implementations that wish to schedule this work differently should override . - - - - - Gets the root of the syntax tree if it is available. - - - - - Gets the root of the syntax tree if it is available. - - - - - Gets the root node of the syntax tree, causing computation if necessary. - - - - - Gets the root node of the syntax tree, causing computation if necessary. - - - - - Gets the root node of the syntax tree asynchronously. - - - - - Gets the root node of the syntax tree asynchronously. - - - - - Create a new syntax tree based off this tree using a new source text. - - If the new source text is a minor change from the current source text an incremental - parse will occur reusing most of the current syntax tree internal data. Otherwise, a - full parse will occur using the new source text. - - - - - Gets a list of all the diagnostics in the syntax tree. - This method does not filter diagnostics based on #pragmas and compiler options - like nowarn, warnaserror etc. - - - - - Gets a list of all the diagnostics in the sub tree that has the specified node as its root. - This method does not filter diagnostics based on #pragmas and compiler options - like nowarn, warnaserror etc. - - - - - Gets a list of all the diagnostics associated with the token and any related trivia. - This method does not filter diagnostics based on #pragmas and compiler options - like nowarn, warnaserror etc. - - - - - Gets a list of all the diagnostics associated with the trivia. - This method does not filter diagnostics based on #pragmas and compiler options - like nowarn, warnaserror etc. - - - - - Gets a list of all the diagnostics in either the sub tree that has the specified node as its root or - associated with the token and its related trivia. - This method does not filter diagnostics based on #pragmas and compiler options - like nowarn, warnaserror etc. - - - - - Gets the location in terms of path, line and column for a given span. - - Span within the tree. - Cancellation token. - - A valid that contains path, line and column information. - The values are not affected by line mapping directives (#line). - - - - - Gets the location in terms of path, line and column after applying source line mapping directives - (#line in C# or #ExternalSource in VB). - - Span within the tree. - Cancellation token. - - A valid that contains path, line and column information. - - If the location path is mapped the resulting path is the path specified in the corresponding #line, - otherwise it's . - - A location path is considered mapped if the first #line directive that precedes it and that - either specifies an explicit file path or is #line default exists and specifies an explicit path. - - - - - Returns the visibility for the line at the given position. - - The position to check. - The cancellation token. - - - - Gets a FileLinePositionSpan for a TextSpan and the information whether this span is considered to be hidden or not. - FileLinePositionSpans are used primarily for diagnostics and source locations. - This method combines a call to GetLineSpan and IsHiddenPosition. - - - Returns a boolean indicating whether this span is considered hidden or not. - This function is being called only in the context of sequence point creation and therefore interprets the - LineVisibility accordingly (BeforeFirstRemappingDirective -> Visible). - - - - Returns a path for particular location in source that is presented to the user. - - - Used for implementation of - or for embedding source paths in error messages. - - Unlike Dev12 we do account for #line and #ExternalSource directives when determining value for - . - - - - - Returns a line number for particular location in source that is presented to the user. - - - Used for implementation of - or for embedding source line numbers in error messages. - - Unlike Dev12 we do account for #line and #ExternalSource directives when determining value for - . - - - - - Are there any hidden regions in the tree? - - True if there is at least one hidden region. - - - - Returns a list of the changed regions between this tree and the specified tree. The list is conservative for - performance reasons. It may return larger regions than what has actually changed. - - - - - Gets a location for the specified text span. - - - - - Determines if two trees are the same, disregarding trivia differences. - - The tree to compare against. - If true then the trees are equivalent if the contained nodes and tokens declaring - metadata visible symbolic information are equivalent, ignoring any differences of nodes inside method bodies - or initializer expressions, otherwise all nodes and tokens must be equivalent. - - - - - Gets a SyntaxReference for a specified syntax node. SyntaxReferences can be used to - regain access to a syntax node without keeping the entire tree and source text in - memory. - - - - - Gets a list of text changes that when applied to the old tree produce this tree. - - The old tree. - The list of changes may be different than the original changes that produced - this tree. - - - - Returns a new tree whose root and options are as specified and other properties are copied from the current tree. - - - - - Returns a new tree whose is the specified node and other properties are copied from the current tree. - - - - - Returns a that represents the entire source text of this . - - - - - Verify nodes match source. - - - - - Return the index of the first difference between - the two strings, or -1 if the strings are the same. - - - - - Represents a trivia in the syntax tree. This is the language agnostic equivalent of and . - - - - - An integer representing the language specific kind of this trivia. - - - - - The language name that this trivia is syntax of. - - - - - The parent token that contains this token in its LeadingTrivia or TrailingTrivia collection. - - - - - The width of this trivia in characters. If this trivia is a structured trivia then the returned width will - not include the widths of any leading or trailing trivia present on the child non-terminal node of this - trivia. - - - - - The width of this trivia in characters. If this trivia is a structured trivia then the returned width will - include the widths of any leading or trailing trivia present on the child non-terminal node of this trivia. - - - - - The absolute span of this trivia in characters. If this trivia is a structured trivia then the returned span - will not include spans of any leading or trailing trivia present on the child non-terminal node of this - trivia. - - - - - Same as accessing on . - - - Slight performance improvement. - - - - - The absolute span of this trivia in characters. If this trivia is a structured trivia then the returned span - will include spans of any leading or trailing trivia present on the child non-terminal node of this trivia. - - - - - Determines whether this trivia has any diagnostics on it. If this trivia is a structured trivia then the - returned value will indicate whether this trivia or any of its descendant nodes, tokens or trivia have any - diagnostics on them. - > - - - - Determines whether this trivia is a structured trivia. - - - - - Determines whether this trivia is a descendant of a structured trivia. - - - - - Determines whether this trivia or any of its structure has annotations. - - - - - Determines where this trivia has annotations of the specified annotation kind. - - - - - Determines where this trivia has any annotations of the specified annotation kinds. - - - - - Determines whether this trivia has the specific annotation. - - - - - Get all the annotations of the specified annotation kind. - - - - - Get all the annotations of the specified annotation kinds. - - - - - Determines whether this trivia represents a preprocessor directive. - - - - - Returns the child non-terminal node representing the syntax tree structure under this structured trivia. - - The child non-terminal node representing the syntax tree structure under this structured - trivia. - - - - Returns the string representation of this trivia. If this trivia is structured trivia then the returned string - will not include any leading or trailing trivia present on the StructuredTriviaSyntax node of this trivia. - - The string representation of this trivia. - The length of the returned string is always the same as Span.Length - - - - Returns the full string representation of this trivia. If this trivia is structured trivia then the returned string will - include any leading or trailing trivia present on the StructuredTriviaSyntax node of this trivia. - - The full string representation of this trivia. - The length of the returned string is always the same as FullSpan.Length - - - - Writes the full text of this trivia to the specified TextWriter. - - - - - Determines whether two s are equal. - - - - - Determines whether two s are unequal. - - - - - Determines whether the supplied is equal to this - . - - - - - Determines whether the supplied is equal to this - . - - - - - Serves as hash function for . - - - - - Creates a new SyntaxTrivia with the specified annotations. - - - - - Creates a new SyntaxTrivia with the specified annotations. - - - - - Creates a new SyntaxTrivia without the specified annotations. - - - - - Creates a new SyntaxTrivia without the specified annotations. - - - - - Creates a new SyntaxTrivia without annotations of the specified kind. - - - - - Copies all SyntaxAnnotations, if any, from this SyntaxTrivia instance and attaches them to a new instance based on . - - - - - SyntaxTree which contains current SyntaxTrivia. - - - - - Get the location of this trivia. - - - - - Gets a list of all the diagnostics associated with this trivia. - This method does not filter diagnostics based on #pragmas and compiler options - like nowarn, warnaserror etc. - - - - - Determines if this trivia is equivalent to the specified trivia. - - - - - Represents a read-only list of . - - - - - Gets the trivia at the specified index. - - The zero-based index of the trivia to get. - The token at the specified index. - - is less than 0.-or- is equal to or greater than . - - - - The absolute span of the list elements in characters, including the leading and trailing trivia of the first and last elements. - - - - - The absolute span of the list elements in characters, not including the leading and trailing trivia of the first and last elements. - - - - - Returns the first trivia in the list. - - The first trivia in the list. - The list is empty. - - - - Returns the last trivia in the list. - - The last trivia in the list. - The list is empty. - - - - Does this list have any items. - - - - - Returns a list which contains all elements of in reversed order. - - which contains all elements of in reversed order - - - - Creates a new with the specified trivia added to the end. - - The trivia to add. - - - - Creates a new with the specified trivia added to the end. - - The trivia to add. - - - - Creates a new with the specified trivia inserted at the index. - - The index in the list to insert the trivia at. - The trivia to insert. - - - - Creates a new with the specified trivia inserted at the index. - - The index in the list to insert the trivia at. - The trivia to insert. - - - - Creates a new with the element at the specified index removed. - - The index identifying the element to remove. - - - - Creates a new with the specified element removed. - - The trivia element to remove. - - - - Creates a new with the specified element replaced with new trivia. - - The trivia element to replace. - The trivia to replace the element with. - - - - Creates a new with the specified element replaced with new trivia. - - The trivia element to replace. - The trivia to replace the element with. - - - - get the green node at the specific slot - - - - - Copy number of items starting at from this list into starting at . - - - - - Reversed enumerable. - - - - - Walks the syntax tree, allowing subclasses to operate on all nodes, token and trivia. The - walker will perform a depth first walk of the tree. - - - - - Syntax the should descent into. - - - - - Creates a new walker instance. - - Syntax the should descent into. - - - - Called when the walker visits a node. This method may be overridden if subclasses want - to handle the node. Overrides should call back into this base method if they want the - children of this node to be visited. - - The current node that the walker is visiting. - - - - Called when the walker visits a token. This method may be overridden if subclasses want - to handle the token. Overrides should call back into this base method if they want the - trivia of this token to be visited. - - The current token that the walker is visiting. - - - - Called when the walker visits a trivia syntax. This method may be overridden if - subclasses want to handle the token. Overrides should call back into this base method if - they want the children of this trivia syntax to be visited. - - The current trivia syntax that the walker is visiting. - - - - Syntax the should descent into. - - - - - descend into only nodes - - - - - descend into nodes and tokens - - - - - descend into nodes, tokens and trivia - - - - - descend into everything - - - - - This is ONLY used id BoundNode.cs Debug method - Dump() - - - - - This is ONLY used for debugging purpose - - - - - Parses a version string of the form "major [ '.' minor [ '.' build [ '.' revision ] ] ]". - - The version string to parse. - If parsing succeeds, the parsed version. Null otherwise. - True when parsing succeeds completely (i.e. every character in the string was consumed), false otherwise. - - - - Parses a version string of the form "major [ '.' minor [ '.' ( '*' | ( build [ '.' ( '*' | revision ) ] ) ) ] ]" - as accepted by System.Reflection.AssemblyVersionAttribute. - - The version string to parse. - Indicates whether or not a wildcard is accepted as the terminal component. - If parsing succeeded, the parsed version. Null otherwise. - True when parsing succeeds completely (i.e. every character in the string was consumed), false otherwise. - - - - Parses a version string of the form "major [ '.' minor [ '.' ( '*' | ( build [ '.' ( '*' | revision ) ] ) ) ] ]" - as accepted by System.Reflection.AssemblyVersionAttribute. - - The version string to parse. - Indicates whether or not we're parsing an assembly version string. If so, wildcards are accepted and each component must be less than 65535. - The maximum value that a version component may have. - If parsing succeeded, the parsed version. Null otherwise. - True when parsing succeeds completely (i.e. every character in the string was consumed), false otherwise. - - - - This function defines whether an attribute is optional or not. - - The attribute member. - - - - Ids of well known runtime types. - Values should not intersect with SpecialType enum! - - - - - - Number of well known types in WellKnownType enum - - - - - Array of names for types. - The names should correspond to ids from WellKnownType enum so - that we could use ids to index into the array - - - - - - Resolves references to XML files specified in the source. - - - - - Resolves XML document file path. - - - Value of the "file" attribute of an <include> documentation comment element. - - - Path of the source file () or XML document that contains the . - If not null used as a base path of , if is relative. - If is relative is used as the base path of . - - Normalized XML document file path or null if not found. - - - - The XmlCharType class is used for quick character type recognition - which is optimized for the first 127 ascii characters. - - - - - start >= value <= end - - - - - Struct containing information about a source declaration. - - - - - Topmost syntax node for this declaration. - - - - - Syntax nodes for executable code blocks (method body, initializers, etc.) associated with this declaration. - - - - - Symbol declared by this declaration. - - - - - Realizes the array. - - - - - Realizes the array. - - - - - Realizes the array, downcasting each element to a derived type. - - - - - Realizes the array and disposes the builder in one operation. - - - - - struct enumerator used in foreach. - - - - - This class is used to store the module serialization properties for a compilation. - - - - - The alignment factor (in bytes) that is used to align the raw data of sections in the image file. - The value should be a power of 2 between 512 and 64K, inclusive. The default is 512. - - - - - The alignment (in bytes) of sections when they are loaded into memory. - It must be greater than or equal to . - The default is the page size for the architecture. - - - - - Identifies the version of the CLR that is required to load this module or assembly. - - - - - Specifies the target CPU. means AnyCPU. - - - - - True if the module contains only IL and is processor independent. Should there be a choice between launching as a 64-bit or 32-bit - process, this setting will cause the host to launch it as a 32-bit process. - - - - - The first part of a two part version number indicating the version of the format used to persist this module. For example, the 1 in 1.0. - - - - - The second part of a two part version number indicating the version of the format used to persist this module. For example, the 0 in 1.0. - - - - - A globally unique persistent identifier for this module. - - - - - True if the module contains only IL and is processor independent. - - - - - True if the instructions in this module must be compiled in such a way that the debugging experience is not compromised. - To set the value of this property, add an instance of System.Diagnostics.DebuggableAttribute to the MetadataAttributes list. - - - - - The preferred memory address at which the module is to be loaded at runtime. - - - - - The size of the virtual memory to reserve for the initial process heap. - Must fit into 32 bits if the target platform is 32 bit. - - - - - The size of the virtual memory initially committed for the initial process heap. - Must fit into 32 bits if the target platform is 32 bit. - - - - - The size of the virtual memory to reserve for the initial thread's stack. - Must fit into 32 bits if the target platform is 32 bit. - - - - - The first part of a two part version number indicating the version of the linker that produced this module. For example, the 8 in 8.0. - - - - - The first part of a two part version number indicating the version of the linker that produced this module. For example, the 0 in 8.0. - - - - - Flags that control the behavior of the target operating system. CLI implementations are supposed to ignore this, but some operating system pay attention. - - - - - If set, the module must include a machine code stub that transfers control to the virtual execution system. - - - - - If set, the module contains instructions or assumptions that are specific to the AMD 64 bit instruction set. - - - - - If set, the module contains instructions that assume a 32 bit instruction set. For example it may depend on an address being 32 bits. - This may be true even if the module contains only IL instructions because of PlatformInvoke and COM interop. - - - - - If set, the module contains instructions that assume a 64 bit instruction set. For example it may depend on an address being 64 bits. - This may be true even if the module contains only IL instructions because of PlatformInvoke and COM interop. - - - - - Compares the current content of this writer with another one. - - - - Range specified by and falls outside of the bounds of the buffer content. - - - Range specified by and falls outside of the bounds of the buffer content. - - - is negative. - - - is null. - is negative. - - - is null. - - - is null. - is negative. - - - is null. - - - is null. - Range specified by and falls outside of the bounds of the . - - - is null. - - - is null. - Range specified by and falls outside of the bounds of the . - - - - Writes a reference to a heap (heap index) or a table (row id). - - - References may be small (2B) or large (4B). - - - - - Writes UTF16 (little-endian) encoded string at the current position. - - is null. - - - - Writes UTF16 (little-endian) encoded string at the current position. - - is null. - - - - Writes string in SerString format (see ECMA-335-II 23.3 Custom attributes): - The string is UTF8 encoded and prefixed by the its size in bytes. - Null string is represented as a single byte 0xFF. - - - - - Writes UTF8 encoded string at the current position. - - is null. - - - - Implements compressed signed integer encoding as defined by ECMA-335-II chapter 23.2: Blobs and signatures. - - - If the value lies between -64 (0xFFFFFFC0) and 63 (0x3F), inclusive, encode as a one-byte integer: - bit 7 clear, value bits 5 through 0 held in bits 6 through 1, sign bit (value bit 31) in bit 0. - - If the value lies between -8192 (0xFFFFE000) and 8191 (0x1FFF), inclusive, encode as a two-byte integer: - 15 set, bit 14 clear, value bits 12 through 0 held in bits 13 through 1, sign bit(value bit 31) in bit 0. - - If the value lies between -268435456 (0xF000000) and 268435455 (0x0FFFFFFF), inclusive, encode as a four-byte integer: - 31 set, 30 set, bit 29 clear, value bits 27 through 0 held in bits 28 through 1, sign bit(value bit 31) in bit 0. - - can't be represented as a compressed signed integer. - - - - Implements compressed unsigned integer encoding as defined by ECMA-335-II chapter 23.2: Blobs and signatures. - - - If the value lies between 0 (0x00) and 127 (0x7F), inclusive, - encode as a one-byte integer (bit 7 is clear, value held in bits 6 through 0). - - If the value lies between 28 (0x80) and 214 – 1 (0x3FFF), inclusive, - encode as a 2-byte integer with bit 15 set, bit 14 clear(value held in bits 13 through 0). - - Otherwise, encode as a 4-byte integer, with bit 31 set, bit 30 set, bit 29 clear (value held in bits 28 through 0). - - can't be represented as a compressed signed integer. - - - - Writes a constant value (see ECMA-335 Partition II section 22.9) at the current position. - - is not of a constant type. - - - - The type of target machine. - - - - - The number of sections. This indicates the size of the section table, which immediately follows the headers. - - - - - The low 32 bits of the number of seconds since 00:00 January 1, 1970, that indicates when the file was created. - - - - - The file pointer to the COFF symbol table, or zero if no COFF symbol table is present. - This value should be zero for a PE image. - - - - - The number of entries in the symbol table. This data can be used to locate the string table, - which immediately follows the symbol table. This value should be zero for a PE image. - - - - - The size of the optional header, which is required for executable files but not for object files. - This value should be zero for an object file. - - - - - The flags that indicate the attributes of the file. - - - - - Represents a value on #String heap that has not been serialized yet. - - - - - Represents a value on #Blob heap that has not been serialized yet. - - - - - Fills in stringIndexMap with data from stringIndex and write to stringWriter. - Releases stringIndex as the stringTable is sealed after this point. - - - - - Sorts strings such that a string is followed immediately by all strings - that are a suffix of it. - - - - - This is the maximum length of a type or member name in metadata, assuming - the name is in UTF-8 format and not (yet) null-terminated. - - - Source names may have to be shorter still to accommodate mangling. - Used for event names, field names, property names, field names, method def names, - member ref names, type def (full) names, type ref (full) names, exported type - (full) names, parameter names, manifest resource names, and unmanaged method names - (ImplMap table). - - See CLI Part II, section 22. - - - - - This is the maximum length of a path in metadata, assuming the path is in UTF-8 - format and not (yet) null-terminated. - - - Used for file names, module names, and module ref names. - - See CLI Part II, section 22. - - - - - This is the maximum length of a string in the PDB, assuming it is in UTF-8 format - and not (yet) null-terminated. - - - Used for import strings, locals, and local constants. - - - - - Returns true if writing full metadata, false if writing delta. - - - - - True if writing delta metadata in a minimal format. - - - - - NetModules and EnC deltas don't have AssemblyDef record. - We don't emit it for EnC deltas since assembly identity has to be preserved across generations (CLR/debugger get confused otherwise). - - - - - Returns metadata generation ordinal. Zero for - full metadata and non-zero for delta. - - - - - Returns unique Guid for this delta, or default(Guid) - if full metadata. - - - - - Returns Guid of previous delta, or default(Guid) - if full metadata or generation 1 delta. - - - - - Returns true and the 1-based index of the type definition - if the type definition is recognized. Otherwise returns false. - The index is into the full metadata. - - - - - The 1-based index of the type definition. - The index is into the full metadata. - - - - - The type definition at the 0-based index into the full set. Deltas - are only required to support indexing into current generation. - - - - - The type definitions to be emitted, in row order. These - are just the type definitions from the current generation. - - - - - The 1-based index of the event definition. - The index is into the full metadata. - - - - - The event definitions to be emitted, in row order. These - are just the event definitions from the current generation. - - - - - The 1-based index of the field definition. - The index is into the full metadata. - - - - - The field definitions to be emitted, in row order. These - are just the field definitions from the current generation. - - - - - Returns true and the 1-based index of the method definition - if the method definition is recognized. Otherwise returns false. - The index is into the full metadata. - - - - - The 1-based index of the method definition. - The index is into the full metadata. - - - - - The method definition at the 0-based index into the full set. Deltas - are only required to support indexing into current generation. - - - - - The method definitions to be emitted, in row order. These - are just the method definitions from the current generation. - - - - - The 1-based index of the property definition. - The index is into the full metadata. - - - - - The property definitions to be emitted, in row order. These - are just the property definitions from the current generation. - - - - - The 1-based index of the parameter definition. - The index is into the full metadata. - - - - - The parameter definitions to be emitted, in row order. These - are just the parameter definitions from the current generation. - - - - - The generic parameter definitions to be emitted, in row order. These - are just the generic parameter definitions from the current generation. - - - - - The 1-based index of the first field of the type. - - - - - The 1-based index of the first method of the type. - - - - - The 1-based index of the first parameter of the method. - - - - - Return the 1-based index of the assembly reference, adding - the reference to the index for this generation if missing. - The index is into the full metadata. However, deltas - are not required to return rows from previous generations. - - - - - The assembly references to be emitted, in row order. These - are just the assembly references from the current generation. - - - - - Return the 1-based index of the module reference, adding - the reference to the index for this generation if missing. - The index is into the full metadata. However, deltas - are not required to return rows from previous generations. - - - - - The module references to be emitted, in row order. These - are just the module references from the current generation. - - - - - Return the 1-based index of the member reference, adding - the reference to the index for this generation if missing. - The index is into the full metadata. However, deltas - are not required to return rows from previous generations. - - - - - The member references to be emitted, in row order. These - are just the member references from the current generation. - - - - - Return the 1-based index of the method spec, adding - the spec to the index for this generation if missing. - The index is into the full metadata. However, deltas - are not required to return rows from previous generations. - - - - - The method specs to be emitted, in row order. These - are just the method specs from the current generation. - - - - - Return true and the 1-based index of the type reference - if the reference is available in the current generation. - The index is into the full metadata. However, deltas - are not required to return rows from previous generations. - - - - - Return the 1-based index of the type reference, adding - the reference to the index for this generation if missing. - The index is into the full metadata. However, deltas - are not required to return rows from previous generations. - - - - - The type references to be emitted, in row order. These - are just the type references from the current generation. - - - - - Return the 1-based index of the type spec, adding - the spec to the index for this generation if missing. - The index is into the full metadata. However, deltas - are not required to return rows from previous generations. - - - - - The type specs to be emitted, in row order. These - are just the type specs from the current generation. - - - - - Return the 1-based index of the signature index, adding - the signature to the index for this generation if missing. - The index is into the full metadata. However, deltas - are not required to return rows from previous generations. - - - - - The signature indices to be emitted, in row order. These - are just the signature indices from the current generation. - - - - - Return a visitor for traversing all references to be emitted. - - - - - Populate EventMap table. - - - - - Populate PropertyMap table. - - - - - Populate EncLog table. - - - - - Populate EncMap table. - - - - - Returns a reference to the unit that defines the given referenced type. If the referenced type is a structural type, such as a pointer or a generic type instance, - then the result is null. - - - - - The Microsoft CLR requires that {namespace} + "." + {name} fit in MAX_CLASS_NAME - (even though the name and namespace are stored separately in the Microsoft - implementation). Note that the namespace name of a nested type is always blank - (since comes from the container). - - We're trying to add the containing namespace of this type to the string heap. - Namespace names are never used on their own - this is the type that is adding the namespace name. - Used only for length checking. - - - - Test the given name to see if it fits in metadata. - - String to test (non-null). - Max length for name. (Expected to be at least 5.) - True if the name is too long. - Internal for test purposes. - - - - Compares quality of assembly references to achieve unique rows in AssemblyRef table. - Metadata spec: "The AssemblyRef table shall contain no duplicates (where duplicate rows are deemed to - be those having the same MajorVersion, MinorVersion, BuildNumber, RevisionNumber, PublicKeyOrToken, - Name, and Culture)". - - - - - Serialize the method local signature to the blob. - - Standalone signature token - - - - Computes the string representing the strong name of the given assembly reference. - - - - - Visitor to force translation of all symbols that will be referred to - in metadata. Allows us to build the set of types that must be embedded - as local types. - - - - - Strip off *, &, and []. - - - - - Qualified name of namespace. - e.g. "A.B.C" - - - - - The offset of the first operation in the scope. - - - - - The offset of the first operation outside of the scope, or the method body length. - - - - - An object corresponding to a metadata entity such as a type or a field. - - - - - An object corresponding to reference to a metadata entity such as a type or a field. - - - - - A collection of metadata custom attributes that are associated with this definition. - - - - - Calls the visitor.Visit(T) method where T is the most derived object model node interface type implemented by the concrete type - of the object implementing IDefinition. The dispatch method does not invoke Dispatch on any child objects. If child traversal - is desired, the implementations of the Visit methods should do the subsequent dispatching. - - - - - Gets the definition object corresponding to this reference within the given context, - or null if the referenced entity isn't defined in the context. - - - - - Constants for producing and consuming streams of binary custom debug info. - - - - - Returns true if the namespace scope for this method should be forwarded to another method. - Returns non-null if the forwarding should be done directly via UsingNamespace, - null if the forwarding is done via custom debug info. - - - - - Use to create a document when checksum is computed based on actual source stream. - - - - - Use to create a document when checksum is suggested via external checksum pragma/directive - - - - - returns true when checksum was computed base on an actual source stream - as opposed to be suggested via a checksum directive/pragma - - - - - A region representing an exception handler clause. The region exposes the type (catch or - finally) and the bounds of the try block and catch or finally block as needed by - - - - - Handler kind for this SEH info - - - - - If HandlerKind == HandlerKind.Catch, this is the type of exception to catch. If HandlerKind == HandlerKind.Filter, this is System.Object. - Otherwise this is a Dummy.TypeReference. - - - - - Label instruction corresponding to the start of filter decision block - - - - - Label instruction corresponding to the start of try block - - - - - Label instruction corresponding to the end of try block - - - - - Label instruction corresponding to the start of handler block - - - - - Label instruction corresponding to the end of handler block - - - - - An expression that does not change its value at runtime and can be evaluated at compile time. - - - - - The compile time value of the expression. Null to represent a null object reference or a null array. - - - - - An expression that creates an array instance in metadata. Only for use in custom attributes. - - - - - The element type of the array. - - - - - The values of the array elements. May be empty to represent an empty array. - - - - - The number of elements in the array. - - - - - An expression that can be represented directly in metadata. - - - - - Calls the visitor.Visit(T) method where T is the most derived object model node interface type implemented by the concrete type - of the object implementing IStatement. The dispatch method does not invoke Dispatch on any child objects. If child traversal - is desired, the implementations of the Visit methods should do the subsequent dispatching. - - - - - The type of value the expression represents. - - - - - An expression that represents a (name, value) pair and that is typically used in method calls, custom attributes and object initializers. - - - - - The name of the parameter or property or field that corresponds to the argument. - - - - - The value of the argument. - - - - - True if the named argument provides the value of a field. - - - - - An expression that results in a System.Type instance. - - - - - The type that will be represented by the System.Type instance. - - - - - Represents an assembly reference with an alias (C# only, /r:Name=Reference on command line). - - - - - An alias for the global namespace of the assembly. - - - - - The assembly reference. - - - - - A metadata custom attribute. - - - - - Zero or more positional arguments for the attribute constructor. - - - - - A reference to the constructor that will be used to instantiate this custom attribute during execution (if the attribute is inspected via Reflection). - - - - - Zero or more named arguments that specify values for fields and properties of the attribute. - - - - - The number of positional arguments. - - - - - The number of named arguments. - - - - - The type of the attribute. For example System.AttributeUsageAttribute. - - - - - Whether attribute allows multiple. - - - - - Represents a file referenced by an assembly. - - - - - True if the file has metadata. - - - - - File name with extension. - - - - - A hash of the file contents. - - - - - has type , rather than , - so that we can do custom marshalling of . Unfortunately, .NET marshals - s as the number of days since 1899/12/30, whereas the native VB compiler - marshalled them as the number of ticks since the Unix epoch (i.e. a much, much larger number). - - - - - A struct with the same size and layout as the native VARIANT type: - 2 bytes for a discriminator (i.e. which type of variant it is). - 6 bytes of padding - 8 or 16 bytes of data - - - - - This field determines the size of the struct - (16 bytes on 32-bit platforms, 24 bytes on 64-bit platforms). - - - - - This type is 8 bytes on a 32-bit platforms and 16 bytes on 64-bit platforms. - - - - - A range of CLR IL operations that comprise a lexical scope. - - - - - The offset of the first operation in the scope. - - - - - The offset of the first operation outside of the scope, or the method body length. - - - - - Returns zero or more local constant definitions that are local to the given scope. - - - - - Returns zero or more local variable definitions that are local to the given scope. - - - - - streamProvider callers will dispose result after use. - and are mutually exclusive. - - - - - Specifies how the caller passes parameters to the callee and who cleans up the stack. - - - - - C/C++ style calling convention for unmanaged methods. The call stack is cleaned up by the caller, - which makes this convention suitable for calling methods that accept extra arguments. - - - - - The convention for calling managed methods with a fixed number of arguments. - - - - - The convention for calling managed methods that accept extra arguments. - - - - - Arguments are passed in registers when possible. This calling convention is not yet supported. - - - - - Win32 API calling convention for calling unmanaged methods via PlatformInvoke. The call stack is cleaned up by the callee. - - - - - C++ member unmanaged method (non-vararg) calling convention. The callee cleans the stack and the this pointer is pushed on the stack last. - - - - - The convention for calling a generic method. - - - - - The convention for calling an instance method with an implicit this parameter (the method does not have an explicit parameter definition for this). - - - - - The convention for calling an instance method that explicitly declares its first parameter to correspond to the this instance. - - - - - An event is a member that enables an object or class to provide notifications. Clients can attach executable code for events by supplying event handlers. - This interface models the metadata representation of an event. - - - - - A list of methods that are associated with the event. - - - - - The method used to add a handler to the event. - - - - - The method used to call the event handlers when the event occurs. May be null. - - - - - True if the event gets special treatment from the runtime. - - - - - This event is special in some way, as specified by the name. - - - - - The method used to add a handler to the event. - - - - - The (delegate) type of the handlers that will handle the event. - - - - - A field is a member that represents a variable associated with an object or class. - This interface models the metadata representation of a field. - - - - - The compile time value of the field. This value should be used directly in IL, rather than a reference to the field. - If the field does not have a valid compile time value, Dummy.Constant is returned. - - - - - Mapped field data, or null if the field is not mapped. - - - - - This field is a compile-time constant. The field has no runtime location and cannot be directly addressed from IL. - - - - - This field has associated field marshalling information. - - - - - The field does not have to be serialized when its containing instance is serialized. - - - - - This field can only be read. Initialization takes place in a constructor. - - - - - True if the field gets special treatment from the runtime. - - - - - This field is special in some way, as specified by the name. - - - - - This field is static (shared by all instances of its declaring type). - - - - - Specifies how this field is marshalled when it is accessed from unmanaged code. - - - - - Checked if IsMarshalledExplicitly == true and MarshallingInformation is null - - - - - Offset of the field. - - - - - A reference to a field. - - - - - The type of value that is stored in this field. - - - - - The Field being referred to. - - - - - True, if field is an IContextualNamedEntity, even if field reference implements the interface, - doesn't mean it is contextual. - - - - - An object that represents a local variable or constant. - - - - - The compile time value of the definition, if it is a local constant. - - - - - Custom modifiers associated with local variable definition. - - - - - TODO: use instead. - True if the value referenced by the local must not be moved by the actions of the garbage collector. - - - - - TODO: use instead. - True if the local contains a managed pointer (for example a reference to a local variable or a reference to a field of an object). - - - - - True if the local variable is of type Dynamic. - - - - - Each local has an attributes field in the PDB. To match the native compiler, - we emit "1" for locals that should definitely not bind in the debugger and "0" - for all other locals. - - - A value of "1" is a sufficient, but not a necessary, condition for hiding the - local in the debugger. Locals with value "0" may also be hidden. - - Hidden locals must still be emitted because they participate in evaluation. - - - - - Should return the synthesized dynamic attributes of the local definition if any. Else null. - - - - - The type of the local. - - - - - Location for reporting diagnostics about the local. - - - Use rather than null. - - - - - Slot index or -1 if not applicable. - - - - - Optional serialized local signature. - - - - - Local id, or if this is a local constant, short-lived temp variable, - or we are not emitting local variable ids (release builds). - - - - - Represents additional info needed by async method implementation methods - (MoveNext() methods) to properly emit necessary PDB data for async debugging. - - - - - Original async method transformed into MoveNext() - - - - - IL offset of catch handler or -1 - - - - - Set of IL offsets where await operators yield control - - - - - Set of IL offsets where await operators are to be resumed - - - - - A metadata (IL) level representation of the body of a method or of a property/event accessor. - - - - - Calls the visitor.Visit(T) method where T is the most derived object model node interface type implemented by the concrete type - of the object implementing IDoubleDispatcher. The dispatch method does not invoke Dispatch on any child objects. If child traversal - is desired, the implementations of the Visit methods should do the subsequent dispatching. - - - - - A list exception data within the method body IL. - - - - - True if the locals are initialized by zeroing the stack upon method entry. - - - - - The local variables of the method. - - - - - The definition of the method whose body this is. - If this is the body of an event or property accessor, this will hold the corresponding adder/remover/setter or getter method. - - - - - Debugging information associated with an async method to support EE. - - - - - The maximum number of elements on the evaluation stack during the execution of the method. - - - - - Returns true if there is at least one dynamic local within the MethodBody - - - - - Returns zero or more local (block) scopes into which the CLR IL operations in the given method body is organized. - - - - - Returns an import scope the method is declared within, or null if there is none - (e.g. the method doesn't contain user code). - - - The chain is a spine of a tree in a forest of import scopes. A tree of import scopes is created by the language for each source file - based on namespace declarations. In VB each tree is trivial single-node tree that declares the imports of a file. - In C# the tree copies the nesting of namespace declarations in the file. There is a separate scope for each dotted component in - the namespace type name. For instance namespace type x.y.z will have two namespace scopes, the first is for the x and the second - is for the y. - - - - - Returns debug information for local variables hoisted to state machine fields, - or null if this method isn't MoveNext method of a state machine. - - - Returns zero or more local (block) scopes, each defining an IL range in which an iterator local is defined. - The scopes are returned for the MoveNext method of the object returned by the iterator method. - The index of the scope corresponds to the index of the local. Specifically local scope i corresponds - to the local stored in a field named <localName>5__i of the class used to store the local values in - between calls to MoveNext, where localName is the original name of the local variable. For example, if - the first local to be moved into the class is named "xyzzy", it will be stored in a field named - "<xyzzy>5__1", and the ILocalScope returned from this method at index 1 (i.e. the second one) will - have the scope information for where that variable is in scope. - - - - - The name of the state machine generated for the method, - or null if the method isn't the kickoff method of a state machine. - - - - - Returns information relevant to EnC on slots of local variables hoisted to state machine fields, - or null if the method isn't the kickoff method of a state machine. - - - - - Returns types of awaiter slots allocated on the state machine, - or null if the method isn't the kickoff method of a state machine. - - - - - This interface models the metadata representation of a method. - - - - - A container for a list of IL instructions providing the implementation (if any) of this method. - - - When emitting metadata-only assemblies this returns null even if returns true. - - - - - If the method is generic then this list contains the type parameters. - - - - - Returns true if this symbol was automatically created by the compiler, and does not have - an explicit corresponding source code declaration. - - - - - True if this method has a non empty collection of SecurityAttributes or the System.Security.SuppressUnmanagedCodeSecurityAttribute. - - - - - True if the method does not provide an implementation. - - - - - True if the method can only be overridden when it is also accessible. - - - - - True if the method is a constructor. - - - - - True if the method has an external implementation (i.e. not supplied by this definition). - - - If the method is not external and not abstract it has to provide an IL body. - - - - - True if this method is hidden if a derived type declares a method with the same name and signature. - If false, any method with the same name hides this method. This flag is ignored by the runtime and is only used by compilers. - - - - - The method always gets a new slot in the virtual method table. - This means the method will hide (not override) a base type method with the same name and signature. - - - - - True if the method is implemented via the invocation of an underlying platform method. - - - - - True if the method gets special treatment from the runtime. For example, it might be a constructor. - - - - - True if the method may not be overridden. - - - - - True if the method is special in some way for tools. For example, it might be a property getter or setter. - - - - - True if the method does not require an instance of its declaring type as its first argument. - - - - - True if the method may be overridden (or if it is an override). - - - - - Implementation flags. - - - - - The parameters forming part of this signature. - - - - - Detailed information about the PInvoke stub. Identifies which method to call, which module has the method and the calling convention among other things. - - - - - True if the method calls another method containing security code. If this flag is set, the method - should have System.Security.DynamicSecurityMethodAttribute present in its list of custom attributes. - - - - - Custom attributes associated with the method's return value. - - - - - The return value has associated marshalling information. - - - - - Specifies how the return value is marshalled when the method is called from unmanaged code. - - - - - Checked if ReturnValueIsMarshalledExplicitly == true and ReturnValueMarshallingInformation is null - - - - - Declarative security actions for this method. - - - - - Namespace containing this method. - TODO: Ideally we would expose INamespace on INamespaceTypeDefinition. Right now we can only get the qualified namespace name. - - - - - This interface models the metadata representation of a method or property parameter. - - - - - A compile time constant value that should be supplied as the corresponding argument value by callers that do not explicitly specify an argument value for this parameter. - Null if the parameter doesn't have default value. - - - - - True if the parameter has a default value that should be supplied as the argument value by a caller for which the argument value has not been explicitly specified. - - - - - True if the argument value must be included in the marshalled arguments passed to a remote callee. - - - - - This parameter has associated marshalling information. - - - - - True if the argument value must be included in the marshalled arguments passed to a remote callee only if it is different from the default value (if there is one). - - - - - True if the final value assigned to the parameter will be marshalled with the return values passed back from a remote callee. - - - - - Specifies how this parameter is marshalled when it is accessed from unmanaged code. - - - - - Checked if IsMarshalledExplicitly == true and MarshallingInformation is null - - - - - A property is a member that provides access to an attribute of an object or a class. - This interface models the metadata representation of a property. - - - - - A list of methods that are associated with the property. - - - - - A compile time constant value that provides the default value for the property. (Who uses this and why?) - - - - - The method used to get the value of this property. May be absent (null). - - - - - True if this property has a compile time constant associated with that serves as a default value for the property. (Who uses this and why?) - - - - - True if this property gets special treatment from the runtime. - - - - - True if this property is special in some way, as specified by the name. - - - - - The parameters forming part of this signature. - - - - - The method used to set the value of this property. May be absent (null). - - - - - The parameters and return type that makes up a method or property signature. - This interface models the metadata representation of a signature. - - - - - Calling convention of the signature. - - - - - The number of required parameters of the signature. - - - - - The parameters forming part of this signature. - - - - - Returns the list of custom modifiers, if any, associated with the returned value. Evaluate this property only if ReturnValueIsModified is true. - - - - - True if the return value is passed by reference (using a managed pointer). - - - - - The return type of the method or type of the property. - - - - - A member of a type definition, such as a field or a method. - This interface models the metadata representation of a type member. - - - - - The type definition that contains this member. - - - - - Indicates if the member is public or confined to its containing type, derived types and/or declaring assembly. - - - - - A reference to a member of a type, such as a field or a method. - This interface models the metadata representation of a type member reference. - - - - - A reference to the containing type of the referenced type member. - - - - - Represents the specialized event definition. - - - - - The event that has been specialized to obtain this event. When the containing type is an instance of type which is itself a specialized member (i.e. it is a nested - type of a generic type instance), then the unspecialized member refers to a member from the unspecialized containing type. (I.e. the unspecialized member always - corresponds to a definition that is not obtained via specialization.) - - - - - Represents reference specialized field. - - - - - A reference to the field definition that has been specialized to obtain the field definition referred to by this field reference. - When the containing type of the referenced specialized field definition is itself a specialized nested type of a generic type instance, - then the unspecialized field reference refers to the corresponding field definition from the unspecialized containing type definition. - (I.e. the unspecialized field reference always refers to a field definition that is not obtained via specialization.) - - - - - Represents reference specialized method. - - - - - A reference to the method definition that has been specialized to obtain the method definition referred to by this method reference. - When the containing type of the referenced specialized method definition is itself a specialized nested type of a generic type instance, - then the unspecialized method reference refers to the corresponding method definition from the unspecialized containing type definition. - (I.e. the unspecialized method reference always refers to a method definition that is not obtained via specialization.) - - - - - Represents the specialized property definition. - - - - - The property that has been specialized to obtain this property. When the containing type is an instance of type which is itself a specialized member (i.e. it is a nested - type of a generic type instance), then the unspecialized member refers to a member from the unspecialized containing type. (I.e. the unspecialized member always - corresponds to a definition that is not obtained via specialization.) - - - - - A reference to a method. - - - - - True if the call sites that references the method with this object supply extra arguments. - - - - - The number of generic parameters of the method. Zero if the referenced method is not generic. - - - - - True if the method has generic parameters; - - - - - The method being referred to. - - - - - Information about this types of the extra arguments supplied at the call sites that references the method with this object. - - - - - A reference to generic method instantiated with a list of type arguments. - - - - - The type arguments that were used to instantiate this.GenericMethod in order to create this method. - - - - - Returns the generic method of which this method is an instance. - - - - - Represents a global field in symbol table. - - - - - Represents a global method in symbol table. - - - - - The name of the method. - - - - - Returns a sequence of all blobs that represent the content of the builder. - - Content is not available, the builder has been linked with another one. - - - - Compares the current content of this writer with another one. - - Content is not available, the builder has been linked with another one. - - - Content is not available, the builder has been linked with another one. - - - Range specified by and falls outside of the bounds of the buffer content. - Content is not available, the builder has been linked with another one. - - - Content is not available, the builder has been linked with another one. - - - Range specified by and falls outside of the bounds of the buffer content. - Content is not available, the builder has been linked with another one. - - - is null. - Content is not available, the builder has been linked with another one. - - - is default(). - Content is not available, the builder has been linked with another one. - - - is null. - Content is not available, the builder has been linked with another one. - - - is null. - Builder is not writable, it has been linked with another one. - - - is null. - Builder is not writable, it has been linked with another one. - - - - Reserves a contiguous block of bytes. - - is negative. - Builder is not writable, it has been linked with another one. - - - is negative. - Builder is not writable, it has been linked with another one. - - - is null. - is negative. - Builder is not writable, it has been linked with another one. - - - is null. - is negative. - Builder is not writable, it has been linked with another one. - Bytes successfully written from the . - - - is null. - Builder is not writable, it has been linked with another one. - - - is null. - Range specified by and falls outside of the bounds of the . - Builder is not writable, it has been linked with another one. - - - is null. - Builder is not writable, it has been linked with another one. - - - is null. - Range specified by and falls outside of the bounds of the . - Builder is not writable, it has been linked with another one. - - - Builder is not writable, it has been linked with another one. - - - Builder is not writable, it has been linked with another one. - - - Builder is not writable, it has been linked with another one. - - - Builder is not writable, it has been linked with another one. - - - Builder is not writable, it has been linked with another one. - - - Builder is not writable, it has been linked with another one. - - - Builder is not writable, it has been linked with another one. - - - Builder is not writable, it has been linked with another one. - - - Builder is not writable, it has been linked with another one. - - - Builder is not writable, it has been linked with another one. - - - Builder is not writable, it has been linked with another one. - - - Builder is not writable, it has been linked with another one. - - - Builder is not writable, it has been linked with another one. - - - Builder is not writable, it has been linked with another one. - - - Builder is not writable, it has been linked with another one. - - - Builder is not writable, it has been linked with another one. - - - Builder is not writable, it has been linked with another one. - - - - Writes a reference to a heap (heap index) or a table (row id). - - - References may be small (2B) or large (4B). - - Builder is not writable, it has been linked with another one. - - - - Writes UTF16 (little-endian) encoded string at the current position. - - is null. - Builder is not writable, it has been linked with another one. - - - - Writes UTF16 (little-endian) encoded string at the current position. - - is null. - Builder is not writable, it has been linked with another one. - - - - Writes string in SerString format (see ECMA-335-II 23.3 Custom attributes): - The string is UTF8 encoded and prefixed by the its size in bytes. - Null string is represented as a single byte 0xFF. - - Builder is not writable, it has been linked with another one. - - - - Writes UTF8 encoded string at the current position. - - is null. - Builder is not writable, it has been linked with another one. - - - - Implements compressed signed integer encoding as defined by ECMA-335-II chapter 23.2: Blobs and signatures. - - - If the value lies between -64 (0xFFFFFFC0) and 63 (0x3F), inclusive, encode as a one-byte integer: - bit 7 clear, value bits 5 through 0 held in bits 6 through 1, sign bit (value bit 31) in bit 0. - - If the value lies between -8192 (0xFFFFE000) and 8191 (0x1FFF), inclusive, encode as a two-byte integer: - 15 set, bit 14 clear, value bits 12 through 0 held in bits 13 through 1, sign bit(value bit 31) in bit 0. - - If the value lies between -268435456 (0xF000000) and 268435455 (0x0FFFFFFF), inclusive, encode as a four-byte integer: - 31 set, 30 set, bit 29 clear, value bits 27 through 0 held in bits 28 through 1, sign bit(value bit 31) in bit 0. - - can't be represented as a compressed signed integer. - Builder is not writable, it has been linked with another one. - - - - Implements compressed unsigned integer encoding as defined by ECMA-335-II chapter 23.2: Blobs and signatures. - - - If the value lies between 0 (0x00) and 127 (0x7F), inclusive, - encode as a one-byte integer (bit 7 is clear, value held in bits 6 through 0). - - If the value lies between 28 (0x80) and 214 – 1 (0x3FFF), inclusive, - encode as a 2-byte integer with bit 15 set, bit 14 clear(value held in bits 13 through 0). - - Otherwise, encode as a 4-byte integer, with bit 31 set, bit 30 set, bit 29 clear (value held in bits 28 through 0). - - can't be represented as a compressed integer. - Builder is not writable, it has been linked with another one. - - - - Writes a constant value (see ECMA-335 Partition II section 22.9) at the current position. - - is not of a constant type. - Builder is not writable, it has been linked with another one. - - - - Table row counts. - - - - - Non-empty tables that are emitted into the metadata table stream. - - - - - Non-empty tables stored in an external metadata table stream that might be referenced from the metadata table stream being emitted. - - - - - Exact (unaligned) heap sizes. - - - - - Overall size of metadata stream storage (stream headers, table stream, heaps, additional streams). - Aligned to . - - - - - The size of metadata stream (#- or #~). Aligned. - Aligned to . - - - - - The size of #Pdb stream. Aligned. - - - - - The size of IL stream. - - - - - The size of mapped field data stream. - Aligned to . - - - - - The size of managed resource data stream. - Aligned to . - - - - - Size of strong name hash. - - - - - Metadata header size. - Includes: - - metadata storage signature - - storage header - - stream headers - - - - - Total size of metadata (header and all streams). - - - - - A visitor base class that traverses the object model in depth first, left to right order. - - - - - Use this routine, rather than ITypeReference.Dispatch, to call the appropriate derived overload of an ITypeReference. - The former routine will call Visit(INamespaceTypeDefinition) rather than Visit(INamespaceTypeReference), etc., - in the case where a definition is used as a reference to itself. - - A reference to a type definition. Note that a type definition can serve as a reference to itself. - - - - Use this routine, rather than IUnitReference.Dispatch, to call the appropriate derived overload of an IUnitReference. - The former routine will call Visit(IAssembly) rather than Visit(IAssemblyReference), etc. - in the case where a definition is used as the reference to itself. - - A reference to a unit. Note that a unit can serve as a reference to itself. - - - - A container for static helper methods that are used for manipulating and computing iterators. - - - - - True if the given enumerable is not null and contains at least one element. - - - - - True if the given enumerable is null or contains no elements - - - - - Returns the number of elements in the given enumerable. A null enumerable is allowed and results in 0. - - - - - A declarative specification of a security action applied to a set of permissions. Used by the CLR loader to enforce security restrictions. - Each security attribute represents a serialized permission or permission set for a specified security action. - The union of the security attributes with identical security action, define the permission set to which the security action applies. - - - - - Information about how values of managed types should be marshalled to and from unmanaged types. - - - - - or a string (usually a fully-qualified type name of a type implementing the custom marshaller, but Dev11 allows any string). - - - - - An argument string (cookie) passed to the custom marshaller at run time. - - - - - The unmanaged element type of the unmanaged array. - -1 if it should be omitted from the marshal blob. - - - - - Specifies the index of the parameter that contains the value of the Interface Identifier (IID) of the marshalled object. - -1 if it should be omitted from the marshal blob. - - - - - The unmanaged type to which the managed type will be marshalled. This can be UnmanagedType.CustomMarshaler, in which case the unmanaged type - is decided at runtime. - - - - - The number of elements in the fixed size portion of the unmanaged array. - -1 if it should be omitted from the marshal blob. - - - - - The zero based index of the parameter in the unmanaged method that contains the number of elements in the variable portion of unmanaged array. - If -1, the variable portion is of size zero, or the caller conveys the size of the variable portion of the array to the unmanaged method in some other way. - - - - - The type to which the variant values of all elements of the safe array must belong. See also SafeArrayElementUserDefinedSubtype. - (The element type of a safe array is VARIANT. The "sub type" specifies the value of all of the tag fields (vt) of the element values. ) - -1 if it should be omitted from the marshal blob. - - - - - A reference to the user defined type to which the variant values of all elements of the safe array must belong. - (The element type of a safe array is VARIANT. The tag fields will all be either VT_DISPATCH or VT_UNKNOWN or VT_RECORD. - The "user defined sub type" specifies the type of value the ppdispVal/ppunkVal/pvRecord fields of the element values may point to.) - - - - - Implemented by any entity that has a name. - - - - - The name of the entity. - - - - - The name of the entity depends on other metadata (tokens, signatures) originated from - PeWriter. - - - - - Method must be called before calling INamedEntity.Name. - - - - - Implemented by an entity that is always a member of a particular parameter list, such as an IParameterDefinition. - Provides a way to determine the position where the entity appears in the parameter list. - - - - - The position in the parameter list where this instance can be found. - - - - - This enum is used internally by BCL. It includes flags that are not in the metadata spec. - - - - - Information that describes how a method from the underlying Platform is to be invoked. - - - - - Module providing the method/field. - - - - - Name of the method providing the implementation. - - - - - Flags that determine marshalling behavior. - - - - - A resource file formatted according to Win32 API conventions and typically obtained from a Portable Executable (PE) file. - See the Win32 UpdateResource method for more details. - - - - - A string that identifies what type of resource this is. Only valid if this.TypeId < 0. - - - - - An integer tag that identifies what type of resource this is. If the value is less than 0, this.TypeName should be used instead. - - - - - The name of the resource. Only valid if this.Id < 0. - - - - - An integer tag that identifies this resource. If the value is less than 0, this.Name should be used instead. - - - - - The language for which this resource is appropriate. - - - - - The code page for which this resource is appropriate. - - - - - The data of the resource. - - - - - Represents a lexical scope that declares imports. - - - - - Zero or more used namespaces. These correspond to using directives in C# or Imports syntax in VB. - - - - - Parent import scope, or null. - - - - - Exception to enable callers to catch all of the exceptions originating - from writing PDBs. We resurface such exceptions as this type, to eventually - be reported as PDB-writing failure diagnostics to the user. - Unfortunately, an exception originating in a user-implemented - Stream derivation will come out of the symbol writer as a COMException - missing all of the original exception info. - - - - - A utility to log all operations and arguments to the native PDB writing - library, so that we can hash that log to generate a deterministic GUID and - timestamp. - - - - - Minimal size of PDB path in Debug Directory. We pad the path to this minimal size to - allow some tools to patch the path without the need to rewrite the entire image. - This is a workaround put in place until these tools are retired. - - - - - True if we should attempt to generate a deterministic output (no timestamps or random data). - - - - - Compute a deterministic Guid and timestamp based on the contents of the stream, and replace - the 16 zero bytes at the given position and one or two 4-byte values with that computed Guid and timestamp. - - PE stream. - Position in the stream of 16 zero bytes to be replaced by a Guid - Position in the stream of four zero bytes to be replaced by a timestamp - - - - The size of a single entry in the "Debug Directory (Image Only)" - - - - - The size of our debug directory: one entry for debug information, and an optional second one indicating - that the timestamp is deterministic (i.e. not really a timestamp) - - - - - Write one entry in the "Debug Directory (Image Only)" - See https://msdn.microsoft.com/en-us/windows/hardware/gg463119.aspx - section 5.1.1 (pages 71-72). - - - - - Write the entire "Debug Directory (Image Only)" along with data that it points to. - - - - - Special type <Module> - - - - - This interface models the metadata representation of an array type reference. - - - - - The type of the elements of this array. - - - - - This type of array is a single dimensional array with zero lower bound for index values. - - - - - A possibly empty list of lower bounds for dimension indices. When not explicitly specified, a lower bound defaults to zero. - The first lower bound in the list corresponds to the first dimension. Dimensions cannot be skipped. - - - - - The number of array dimensions. - - - - - A possible empty list of upper bounds for dimension indices. - The first upper bound in the list corresponds to the first dimension. Dimensions cannot be skipped. - An unspecified upper bound means that instances of this type can have an arbitrary upper bound for that dimension. - - - - - Modifies the set of allowed values for a type, or the semantics of operations allowed on those values. - Custom modifiers are not associated directly with types, but rather with typed storage locations for values. - - - - - If true, a language may use the modified storage location without being aware of the meaning of the modification. - - - - - A type used as a tag that indicates which type of modification applies to the storage location. - - - - - Information that describes a method or property parameter, but does not include all the information in a IParameterDefinition. - - - - - The list of custom modifiers, if any, associated with the parameter. Evaluate this property only if IsModified is true. - - - - - True if the parameter is passed by reference (using a managed pointer). - - - - - The CLI spec says that custom modifiers must precede the ByRef type code in the encoding of a parameter. - Unfortunately, the managed C++ compiler emits them in the reverse order. In order to avoid breaking - interop scenarios, we need to support such signatures. - - - - - The type of argument value that corresponds to this parameter. - - - - - The definition of a type parameter of a generic type or method. - - - - - A list of classes or interfaces. All type arguments matching this parameter must be derived from all of the classes and implement all of the interfaces. - - - - - True if all type arguments matching this parameter are constrained to be reference types. - - - - - True if all type arguments matching this parameter are constrained to be value types. - - - - - True if all type arguments matching this parameter are constrained to be value types or concrete classes with visible default constructors. - - - - - Indicates if the generic type or method with this type parameter is co-, contra-, or non variant with respect to this type parameter. - - - - - A reference to the definition of a type parameter of a generic type or method. - - - - - The definition of a type parameter of a generic method. - - - - - The generic method that defines this type parameter. - - - - - A reference to a type parameter of a generic method. - - - - - A reference to the generic method that defines the referenced type parameter. - - - - - A generic type instantiated with a list of type arguments - - - - - The type arguments that were used to instantiate this.GenericType in order to create this type. - - - - - Returns the generic type of which this type is an instance. - Equivalent to Symbol.OriginalDefinition - - - - - The definition of a type parameter of a generic type. - - - - - The generic type that defines this type parameter. - - - - - A reference to a type parameter of a generic type. - - - - - A reference to the generic type that defines the referenced type parameter. - - - - - A reference to a named type, such as an INamespaceTypeReference or an INestedTypeReference. - - - - - The number of generic parameters. Zero if the type is not generic. - - - - - If true, the persisted type name is mangled by appending "`n" where n is the number of type parameters, if the number of type parameters is greater than 0. - - - - - A named type definition, such as an INamespaceTypeDefinition or an INestedTypeDefinition. - - - - - A type definition that is a member of a namespace definition. - - - - - True if the type can be accessed from other assemblies. - - - - - Represents a namespace. - - - - - Containing namespace or null if this namespace is global. - - - - - A reference to a type definition that is a member of a namespace definition. - - - - - A reference to the unit that defines the referenced type. - - - - - Fully qualified name of the containing namespace. - - - - - A type definition that is a member of another type definition. - - - - - A type definition that is a member of another type definition. - - - - - A reference to a type definition that is a specialized nested type. - - - - - A reference to the nested type that has been specialized to obtain this nested type reference. When the containing type is an instance of type which is itself a specialized member (i.e. it is a nested - type of a generic type instance), then the unspecialized member refers to a member from the unspecialized containing type. (I.e. the unspecialized member always - corresponds to a definition that is not obtained via specialization.) - - - - - Models an explicit implementation or override of a base class virtual method or an explicit implementation of an interface method. - - - - - The type that is explicitly implementing or overriding the base class virtual method or explicitly implementing an interface method. - - - - - A reference to the method that provides the implementation. - - - - - The type that is explicitly implementing or overriding the base class virtual method or explicitly implementing an interface method. - - - - - A type reference that has custom modifiers associated with it. For example a reference to the target type of a managed pointer to a constant. - - - - - Returns the list of custom modifiers associated with the type reference. Evaluate this property only if IsModified is true. - - - - - An unmodified type reference. - - - - - This interface models the metadata representation of a pointer to a location in unmanaged memory. - - - - - The type of value stored at the target memory location. - - - - - This interface models the metadata representation of a managed pointer. - Remark: This should be only used in attributes. For other objects like Local variables etc - there is explicit IsReference field that should be used. - - - - - The type of value stored at the target memory location. - - - - - This interface models the metadata representation of a type. - - - - - The byte alignment that values of the given type ought to have. Must be a power of 2. If zero, the alignment is decided at runtime. - - - - - Returns null for interfaces and System.Object. - - - - - Zero or more events defined by this type. - - - - - Zero or more implementation overrides provided by the class. - - - - - Zero or more fields defined by this type. - - - - - Zero or more parameters that can be used as type annotations. - - - - - The number of generic parameters. Zero if the type is not generic. - - - - - True if this type has a non empty collection of SecurityAttributes or the System.Security.SuppressUnmanagedCodeSecurityAttribute. - - - - - Zero or more interfaces implemented by this type. - - - - - True if the type may not be instantiated. - - - - - Is type initialized anytime before first access to static field - - - - - Is this imported from COM type library - - - - - True if this type is parameterized (this.GenericParameters is a non empty collection). - - - - - True if the type is an interface. - - - - - True if this type gets special treatment from the runtime. - - - - - True if this type is serializable. - - - - - True if the type has special name. - - - - - True if the type is a Windows runtime type. - - - A type can me marked as a Windows runtime type in source by applying the WindowsRuntimeImportAttribute. - WindowsRuntimeImportAttribute is a pseudo custom attribute defined as an internal class in System.Runtime.InteropServices.WindowsRuntime namespace. - This is needed to mark Windows runtime types which are redefined in mscorlib.dll and System.Runtime.WindowsRuntime.dll. - These two assemblies are special as they implement the CLR's support for WinRT. - - - - - True if the type may not be subtyped. - - - - - Layout of the type. - - - - - Zero or more methods defined by this type. - - - - - Zero or more nested types defined by this type. - - - - - Zero or more properties defined by this type. - - - - - Declarative security actions for this type. Will be empty if this.HasSecurity is false. - - - - - Size of an object of this type. In bytes. If zero, the size is unspecified and will be determined at runtime. - - - - - Default marshalling of the Strings in this class. - - - - - A reference to a type. - - - - - True if the type is an enumeration (it extends System.Enum and is sealed). Corresponds to C# enum. - - - - - True if the type is a value type. - Value types are sealed and extend System.ValueType or System.Enum. - A type parameter for which MustBeValueType (the struct constraint in C#) is true also returns true for this property. - - - - - The type definition being referred to. - - - - - Unless the value of TypeCode is PrimitiveTypeCode.NotPrimitive, the type corresponds to a "primitive" CLR type (such as System.Int32) and - the type code identifies which of the primitive types it corresponds to. - - - - - TypeDefs defined in modules linked to the assembly being emitted are listed in the ExportedTypes table. - - - - - A enumeration of all of the value types that are built into the Runtime (and thus have specialized IL instructions that manipulate them). - - - - - A single bit. - - - - - An unsigned 16 bit integer representing a Unicode UTF16 code point. - - - - - A signed 8 bit integer. - - - - - A 32 bit IEEE floating point number. - - - - - A 64 bit IEEE floating point number. - - - - - A signed 16 bit integer. - - - - - A signed 32 bit integer. - - - - - A signed 64 bit integer. - - - - - A signed 32 bit integer or 64 bit integer, depending on the native word size of the underlying processor. - - - - - A pointer to fixed or unmanaged memory. - - - - - A reference to managed memory. - - - - - A string. - - - - - An unsigned 8 bit integer. - - - - - An unsigned 16 bit integer. - - - - - An unsigned 32 bit integer. - - - - - An unsigned 64 bit integer. - - - - - An unsigned 32 bit integer or 64 bit integer, depending on the native word size of the underlying processor. - - - - - A type that denotes the absence of a value. - - - - - Not a primitive type. - - - - - Type is a dummy type. - - - - - Enumerates the different kinds of levels of visibility a type member can have. - - - - - The visibility has not been specified. Use the applicable default. - - - - - The member is visible only within its own assembly. - - - - - The member is visible only within its own type and any subtypes. - - - - - The member is visible only within the intersection of its family (its own type and any subtypes) and assembly. - - - - - The member is visible only within the union of its family and assembly. - - - - - The member is visible only to the compiler producing its assembly. - - - - - The member is visible only within its own type. - - - - - The member is visible everywhere its declaring type is visible. - - - - - A mask that can be used to mask out flag bits when the latter are stored in the same memory word as this enumeration. - - - - - Enumerates the different kinds of variance a generic method or generic type parameter may have. - - - - - Two type or method instances are compatible only if they have exactly the same type argument for this parameter. - - - - - A type or method instance will match another instance if it has a type for this parameter that is the same or a subtype of the type the - other instance has for this parameter. - - - - - A type or method instance will match another instance if it has a type for this parameter that is the same or a supertype of the type the - other instance has for this parameter. - - - - - A mask that can be used to mask out flag bits when the latter are stored in the same memory word as the enumeration. - - - - - Represents a .NET assembly. - - - - - A list of the files that constitute the assembly. These are not the source language files that may have been - used to compile the assembly, but the files that contain constituent modules of a multi-module assembly as well - as any external resources. It corresponds to the File table of the .NET assembly file format. - - - - - A set of bits and bit ranges representing properties of the assembly. The value of can be set - from source code via the AssemblyFlags assembly custom attribute. The interpretation of the property depends on the target platform. - - - - - The public part of the key used to encrypt the SHA1 hash over the persisted form of this assembly. Empty or null if not specified. - This value is used by the loader to decrypt an encrypted hash value stored in the assembly, which it then compares with a freshly computed hash value - in order to verify the integrity of the assembly. - - - - - The contents of the AssemblySignatureKeyAttribute - - - - - A reference to a .NET assembly. - - - - - Identifies the culture associated with the assembly reference. Typically specified for satellite assemblies with localized resources. - Empty if not specified. - - - - - True if the implementation of the referenced assembly used at runtime is not expected to match the version seen at compile time. - - - - - Type of code contained in an assembly. Determines assembly binding model. - - - - - The hashed 8 bytes of the public key of the referenced assembly. - Empty if the referenced assembly does not have a public key. - - - - - The version of the assembly reference. - - - - - An object that represents a .NET module. - - - - - Used to distinguish which style to pick while writing native PDB information. - - - The PDB content for custom debug information is different between Visual Basic and CSharp. - E.g. C# always includes a CustomMetadata Header (MD2) that contains the namespace scope counts, where - as VB only outputs namespace imports into the namespace scopes. - C# defines forwards in that header, VB includes them into the scopes list. - - Currently the compiler doesn't allow mixing C# and VB method bodies. Thus this flag can be per module. - It is possible to move this flag to per-method basis but native PDB CDI forwarding would need to be adjusted accordingly. - - - - - Public types defined in other modules making up this assembly and to which other assemblies may refer to via this assembly. - - - - - A list of objects representing persisted instances of types that extend System.Attribute. Provides an extensible way to associate metadata - with this assembly. - - - - - A list of objects representing persisted instances of pairs of security actions and sets of security permissions. - These apply by default to every method reachable from the module. - - - - - A list of the assemblies that are referenced by this module. - - - - - A list of named byte sequences persisted with the assembly and used during execution, typically via .NET Framework helper classes. - - - - - CorLibrary assembly referenced by this module. - - - - - The Assembly that contains this module. If this module is main module then this returns this. - - - - - The method that will be called to start execution of this executable module. - - - - - Returns zero or more strings used in the module. If the module is produced by reading in a CLR PE file, then this will be the contents - of the user string heap. If the module is produced some other way, the method may return an empty enumeration or an enumeration that is a - subset of the strings actually used in the module. The main purpose of this method is to provide a way to control the order of strings in a - prefix of the user string heap when writing out a module as a PE file. - - - - - Returns all top-level (not nested) types defined in the current module. - - - - - The kind of metadata stored in this module. For example whether this module is an executable or a manifest resource file. - - - - - A list of objects representing persisted instances of types that extend System.Attribute. Provides an extensible way to associate metadata - with this module. - - - - - The name of the module. - - - - - A list of the modules that are referenced by this module. - - - - - A list of named byte sequences persisted with the module and used during execution, typically via the Win32 API. - A module will define Win32 resources rather than "managed" resources mainly to present metadata to legacy tools - and not typically use the data in its own code. - - - - - An alternate form the Win32 resources may take. These represent the rsrc$01 and rsrc$02 section data and relocs - from a COFF object file. - - - - - Builds symbol definition to location map used for emitting token -> location info - into PDB to be consumed by WinMdExp.exe tool (only applicable for /t:winmdobj) - - - - - Assembly reference aliases (C# only). - - - - - Linked assembly names to be stored to native PDB (VB only). - - - - - Project level imports (VB only, TODO: C# scripts). - - - - - Default namespace (VB only). - - - - - A reference to a .NET module. - - - - - The Assembly that contains this module. May be null if the module is not part of an assembly. - - - - - A unit of metadata stored as a single artifact and potentially produced and revised independently from other units. - Examples of units include .NET assemblies and modules, as well C++ object files and compiled headers. - - - - - A reference to a instance of . - - - - - Represents a single using directive (Imports clause). - - - - - This is a marker attribute that can be put on an interface to denote that only internal implementations - of that interface should exist. - - -
-
+ + + + Microsoft.CodeAnalysis + + + + + This is a bridge for APIs that are only available on CoreCLR or .NET 4.6 + and NOT on .NET 4.5. The compiler currently targets .NET 4.5 and CoreCLR + so this shim is necessary for switching on the dependent behavior. + + + + + This is a bridge for APIs that are only available on Desktop + and NOT on CoreCLR. The compiler currently targets .NET 4.5 and CoreCLR + so this shim is necessary for switching on the dependent behavior. + + + + + Given a path to an assembly, identifies files in the same directory + that could satisfy the assembly's dependencies. May throw. + + + Dependencies are identified by simply checking the name of an assembly + reference against a file name; if they match the file is considered a + dependency. Other factors, such as version, culture, public key, etc., + are not considered, and so the returned collection may include items that + cannot in fact satisfy the original assembly's dependencies. + + If the file at does not exist or cannot be accessed. + If the file is not an assembly or is somehow corrupted. + + + + Given a path to an assembly, returns its MVID (Module Version ID). + May throw. + + If the file at does not exist or cannot be accessed. + If the file is not an assembly or is somehow corrupted. + + + + Given a path to an assembly, finds the paths to all of its satellite + assemblies. + + If the file at does not exist or cannot be accessed. + If the file is not an assembly or is somehow corrupted. + + + + Given a path to an assembly and a set of paths to possible dependencies, + identifies which of the assembly's references are missing. May throw. + + If the files does not exist or cannot be accessed. + If one of the files is not an assembly or is somehow corrupted. + + + + Given a path to an assembly, returns the for the assembly. + May throw. + + If the file at does not exist or cannot be accessed. + If the file is not an assembly or is somehow corrupted. + + + + Very cheap trivial comparer that never matches the keys, + should only be used in empty dictionaries. + + + + + Compares string based upon their ordinal equality. + We use this comparer for string identifiers because it does exactly what we need and nothing more + The StringComparer.Ordinal as implemented by StringComparer is more complex to support + case sensitive and insensitive compares depending on flags. + It also defers to the default string hash function that might not be the best for our scenarios. + + + + + A simple, forward-only JSON writer to avoid adding dependencies to the compiler. + Used to generate /errorlogger output. + + Does not guarantee well-formed JSON if misused. It is the caller's reponsibility + to balance array/object start/end, to only write key-value pairs to objects and + elements to arrays, etc. + + Takes ownership of the given at construction and handles its disposal. + + + + + A set that returns the inserted values in insertion order. + The mutation operations are not thread-safe. + + + + + An enumerable that yields the set's elements in insertion order. + + + + + Attempts to read all of the requested bytes from the stream into the buffer + + + The number of bytes read. Less than will + only be returned if the end of stream is reached before all bytes can be read. + + + Unlike it is not guaranteed that + the stream position or the output buffer will be unchanged if an exception is + returned. + + + + + Parse the value provided to an MSBuild Feature option into a list of entries. This will + leave name=value in their raw form. + + + + + Find a instance by first probing the contract name and then the name as it + would exist in mscorlib. This helps satisfy both the CoreCLR and Desktop scenarios. + + + + + This type contains the light up scenarios for various platform and runtimes. Any function + in this type can, and is expected to, fail on various platforms. These are light up scenarios + only. + + + + + Full case-insensitive path. + + + + + Last write time (UTC). + + + + + Constructor. + + Full path. + Last write time (UTC). + + + + + + + Initialize the value referenced by in a thread-safe manner. + The value is changed to only if the current value is null. + + Type of value. + Reference to the target location. + The value to use if the target is currently null. + The new value referenced by . Note that this is + nearly always more useful than the usual return from + because it saves another read to . + + + + Initialize the value referenced by in a thread-safe manner. + The value is changed to only if the current value + is . + + Type of value. + Reference to the target location. + The value to use if the target is currently uninitialized. + The uninitialized value. + The new value referenced by . Note that this is + nearly always more useful than the usual return from + because it saves another read to . + + + + Initialize the immutable array referenced by in a thread-safe manner. + + Elemental type of the array. + Reference to the target location. + The value to use if the target is currently uninitialized (default). + The new value referenced by . Note that this is + nearly always more useful than the usual return from + because it saves another read to . + + + + Search a sorted integer array for the target value in O(log N) time. + + The array of integers which must be sorted in ascending order. + The target value. + An index in the array pointing to the position where should be + inserted in order to maintain the sorted order. All values to the right of this position will be + strictly greater than . Note that this may return a position off the end + of the array if all elements are less than or equal to . + + + + The actual number of bytes read can be fewer than the number of bytes requested + if an error occurs or if the end of the stream is reached during the read operation. + + + + + NOTE!!! adding duplicates will result in exceptions. + Being concurrent only allows accessing the dictionary without taking locks. + Duplicate keys are still not allowed in the hashtable. + If unsure about adding unique items use APIs such as TryAdd, GetOrAdd, etc... + + + + + A concurrent, simplified HashSet. + + + + + The default concurrency level is 2. That means the collection can cope with up to two + threads making simultaneous modifications without blocking. + Note ConcurrentDictionary's default concurrency level is dynamic, scaling according to + the number of processors. + + + + + Taken from ConcurrentDictionary.DEFAULT_CAPACITY + + + + + The backing dictionary. The values are never used; just the keys. + + + + + Construct a concurrent set with the default concurrency level. + + + + + Construct a concurrent set using the specified equality comparer. + + The equality comparer for values in the set. + + + + Obtain the number of elements in the set. + + The number of elements in the set. + + + + Determine whether the set is empty. + true if the set is empty; otherwise, false. + + + + Determine whether the given value is in the set. + + The value to test. + true if the set contains the specified value; otherwise, false. + + + + Attempts to add a value to the set. + + The value to add. + true if the value was added to the set. If the value already exists, this method returns false. + + + + Attempts to remove a value from the set. + + The value to remove. + true if the value was removed successfully; otherwise false. + + + + Clear the set + + + + + Obtain an enumerator that iterates through the elements in the set. + + An enumerator for the set. + + + + a simple Lisp-like immutable list. Good to use when lists are always accessed from the head. + + + + + Names of well-known XML attributes and elements. + + + + + This method is necessary to avoid an ambiguity between and . + + + + + This method is necessary to avoid an ambiguity between and . + + + + + Convert a boxed primitive (generally of the backing type of an enum) into a ulong. + + + + + + + Implements a few file name utilities that are needed by the compiler. + In general the compiler is not supposed to understand the format of the paths. + In rare cases it needs to check if a string is a valid file name or change the extension + (embedded resources, netmodules, output name). + The APIs are intentionally limited to cover just these rare cases. Do not add more APIs. + + + + + Returns true if the string represents an unqualified file name. + The name may contain any characters but directory and volume separators. + + Path. + + True if is a simple file name, false if it is null or includes a directory specification. + + + + + Returns the offset in where the dot that starts an extension is, or -1 if the path doesn't have an extension. + + + Returns 0 for path ".foo". + Returns -1 for path "foo.". + + + + + Returns an extension of the specified path string. + + + The same functionality as but doesn't throw an exception + if there are invalid characters in the path. + + + + + Removes extension from path. + + + Returns "foo" for path "foo.". + Returns "foo.." for path "foo...". + + + + + Returns path with the extension changed to . + + + Equivalent of + + If is null, returns null. + If path does not end with an extension, the new extension is appended to the path. + If extension is null, equivalent to . + + + + + Returns the position in given path where the file name starts. + + -1 if path is null. + + + + Get file name from path. + + Unlike doesn't check for invalid path characters. + + + + Invoke the underlying HashAlgorithm's TransformBlock operation on the provided data. + + + + + This is how VB Anonymous Types combine hash values for fields. + + + + + This is how VB Anonymous Types combine hash values for fields. + PERF: Do not use with enum types because that involves multiple + unnecessary boxing operations. Unfortunately, we can't constrain + T to "non-enum", so we'll use a more restrictive constraint. + + + + + The offset bias value used in the FNV-1a algorithm + See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + + + + + The generative factor used in the FNV-1a algorithm + See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + + + + + Compute the FNV-1a hash of a sequence of bytes + See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + + The sequence of bytes + The FNV-1a hash of + + + + Compute the FNV-1a hash of a sequence of bytes and determines if the byte + sequence is valid ASCII and hence the hash code matches a char sequence + encoding the same text. + See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + + The sequence of bytes that are likely to be ASCII text. + The length of the sequence. + True if the sequence contains only characters in the ASCII range. + The FNV-1a hash of + + + + Compute the FNV-1a hash of a sequence of bytes + See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + + The sequence of bytes + The FNV-1a hash of + + + + Compute the hashcode of a sub-string using FNV-1a + See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + Note: FNV-1a was developed and tuned for 8-bit sequences. We're using it here + for 16-bit Unicode chars on the understanding that the majority of chars will + fit into 8-bits and, therefore, the algorithm will retain its desirable traits + for generating hash codes. + + The input string + The start index of the first character to hash + The number of characters, beginning with to hash + The FNV-1a hash code of the substring beginning at and ending after characters. + + + + Compute the hashcode of a sub-string using FNV-1a + See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + + The input string + The start index of the first character to hash + The FNV-1a hash code of the substring beginning at and ending at the end of the string. + + + + Compute the hashcode of a string using FNV-1a + See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + + The input string + The FNV-1a hash code of + + + + Compute the hashcode of a string using FNV-1a + See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + + The input string + The FNV-1a hash code of + + + + Compute the hashcode of a sub string using FNV-1a + See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + + The input string as a char array + The start index of the first character to hash + The number of characters, beginning with to hash + The FNV-1a hash code of the substring beginning at and ending after characters. + + + + Compute the hashcode of a single character using the FNV-1a algorithm + See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + Note: In general, this isn't any more useful than "char.GetHashCode". However, + it may be needed if you need to generate the same hash code as a string or + substring with just a single character. + + The character to hash + The FNV-1a hash code of the character. + + + + Combine a string with an existing FNV-1a hash code + See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + + The accumulated hash code + The string to combine + The result of combining with using the FNV-1a algorithm + + + + Combine a char with an existing FNV-1a hash code + See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + + The accumulated hash code + The new character to combine + The result of combining with using the FNV-1a algorithm + + + + Represents a single item or many items. + + + Used when a collection usually contains a single item but sometimes might contain multiple. + + + + + Compares objects based upon their reference identity. + + + + + Checks if the given name is a sequence of valid CLR names separated by a dot. + + + + + Remove one set of leading and trailing double quote characters, if both are present. + + + + + This is basically a lossy cache of strings that is searchable by + strings, string sub ranges, character array ranges or string-builder. + + + + + Represents an ordered sequence of weak references. + + + + + Copies all live references from to . + Assumes that all references prior are alive. + + + + + Returns the number of weak references in this list. + Note that some of them might not point to live objects anymore. + + + + + A COM IStream implementation over memory. Supports just enough for DiaSymReader's PDB writing. + Also tuned for performance: + 1. SetSize (and Seek beyond the length) is very fast and doesn't re-allocate the underlying memory. + 2. Read and Write are optimized to avoid copying (see ) + 3. Allocates in chunks instead of a contiguous buffer to avoid re-alloc and copy costs when growing. + + + + + This is a re-definition of COM's IStream interface. The important change is that + the Read and Write methods take an instead of a byte[] to avoid the + allocation cost when called from native code. + + + + + Null or empty. + + + + + "file" + + + + + ".\file" + + + + + "..\file" + + + + + "\dir\file" + + + + + "C:dir\file" + + + + + "C:\file" or "\\machine" (UNC). + + + + + Get directory name from path. + + + Unlike it + doesn't check for invalid path characters, + + Prefix of path that represents a directory. + + + + Exposed for testing purposes only. + + + + + Returns true if given path is absolute and starts with a drive specification ("C:\"). + + + + + Combines an absolute path with a relative. + + Absolute root path. + Relative path. + + An absolute combined path, or null if is + absolute (e.g. "C:\abc", "\\machine\share\abc"), + relative to the current root (e.g. "\abc"), + or relative to a drive directory (e.g. "C:abc\def"). + + + + + + Combine two paths, the first of which may be absolute. + + First path: absolute, relative, or null. + Second path: relative and non-null. + null, if is null; a combined path, otherwise. + + + + + Determines whether an assembly reference is considered an assembly file path or an assembly name. + used, for example, on values of /r and #r. + + + + + Determines if "path" contains 'component' within itself. + i.e. asking if the path "c:\foo\bar\baz" has component "bar" would return 'true'. + On the other hand, if you had "c:\foo\bar1\baz" then it would not have "bar" as a + component. + + A path contains a component if any file name or directory name in the path + matches 'component'. As such, if you had something like "\\foo" then that would + not have "foo" as a component. That's because here "foo" is the server name portion + of the UNC path, and not an actual directory or file name. + + + + + Resolves relative path and returns absolute path. + The method depends only on values of its parameters and their implementation (for fileExists). + It doesn't itself depend on the state of the current process (namely on the current drive directories) or + the state of file system. + + + Path to resolve. + + + Base file path to resolve CWD-relative paths against. Null if not available. + + + Base directory to resolve CWD-relative paths against if isn't specified. + Must be absolute path. + Null if not available. + + + Sequence of paths used to search for unqualified relative paths. + + + Method that tests existence of a file. + + + The resolved path or null if the path can't be resolved or does not exist. + + + + + Normalizes an absolute path. + + Path to normalize. + + Normalized path. + + + + Used to create a file given a path specified by the user. + paramName - Provided by the Public surface APIs to have a clearer message. Internal API just rethrow the exception + + + + + + + + The 4.5 portable API surface area does not contain many of the APIs Roslyn needs to function. In + particular it lacks APIs to access the file system. The Roslyn project though is constrained + from moving to the 4.6 framework until post VS 2015. + + This puts us in a difficult position. These APIs are necessary for us to have our public API set + in the DLLS we prefer (non Desktop variants) but we can't use them directly when targeting + the 4.5 framework. Putting the APIs into the Desktop variants would create instant legacy for + the Roslyn project that we'd have to maintain forever (even if it was just as assemblies with + only type forward entries). This is not a place we'd like to be in. + + As a compromise we've decided to grab these APIs via reflection for the time being. This is a + *very* unfortunate path to be on but it's a short term solution that sets us up for long term + success. + + This is an unfortunate situation but it will all be removed fairly quickly after RTM and converted + to the proper 4.6 portable contracts. + + Note: Only portable APIs should be present here. + + + + + APIs contained here are proposed for CoreFX but not yet finalized. Their contracts are + subject to change. + + + + + A binder that gathers type/reader mappings during object writing + + + + + A binder that used a predetermine list of types and reader functions. + + + + + A class that reads both primitive values and non-cyclical object graphs from a stream that was constructed using + the ObjectWriter class. + + + + + Read a Boolean value from the stream. This value must have been written using . + + + + + Read a Byte value from the stream. This value must have been written using . + + + + + Read a Char value from the stream. This value must have been written using . + + + + + Read a Decimal value from the stream. This value must have been written using . + + + + + Read a Double value from the stream. This value must have been written using . + + + + + Read a Single value from the stream. This value must have been written using . + + + + + Read a Int32 value from the stream. This value must have been written using . + + + + + Read a Int64 value from the stream. This value must have been written using . + + + + + Read a SByte value from the stream. This value must have been written using . + + + + + Read a Int16 value from the stream. This value must have been written using . + + + + + Read a UInt32 value from the stream. This value must have been written using . + + + + + Read a UInt64 value from the stream. This value must have been written using . + + + + + Read a UInt16 value from the stream. This value must have been written using . + + + + + Read a DateTime value from the stream. This value must have been written using the . + + + + + Read a compressed 30-bit integer value from the stream. This value must have been written using . + + + + + Read a value from the stream. The value must have been written using ObjectWriter.WriteValue. + + + + + Read a String value from the stream. This value must have been written using ObjectWriter.WriteString. + + + + + A class that writes both primitive values and non-cyclical object graphs to a stream that may be + later read back using the ObjectReader class. + + + + + Writes a Boolean value to the stream. + + + + + Writes a Byte value to the stream. + + + + + Writes a Char value to the stream. + + + + + Writes a Decimal value to the stream. + + + + + Writes a Double value to the stream. + + + + + Writes a Single value to the stream. + + + + + Writes a Int32 value to the stream. + + + + + Writes a Int64 value to the stream. + + + + + Writes a SByte value to the stream. + + + + + Writes a Int16 value to the stream. + + + + + Writes a UInt32 value to the stream. + + + + + Writes a UInt64 value to the stream. + + + + + Writes a UInt16 value to the stream. + + + + + Writes a DateTime value to the stream. + + + + + Writes a compressed 30 bit integer to the stream. (not 32 bit) + + + + + Writes a String value to the stream. + + + + + Writes any value (primitive or object graph) to the stream. + + + + + A binder that gathers type/reader mappings during object writing + + + + + A binder that gathers type/reader mappings during object writing + + + + + Generic implementation of object pooling pattern with predefined pool size limit. The main + purpose is that limited number of frequently used objects can be kept in the pool for + further recycling. + + Notes: + 1) it is not the goal to keep all returned objects. Pool is not meant for storage. If there + is no space in the pool, extra returned objects will be dropped. + + 2) it is implied that if object was obtained from a pool, the caller will return it back in + a relatively short time. Keeping checked out objects for long durations is ok, but + reduces usefulness of pooling. Just new up your own. + + Not returning objects to the pool in not detrimental to the pool's work, but is a bad practice. + Rationale: + If there is no intent for reusing the object, do not use pool - just use "new". + + + + + Not using System.Func{T} because this file is linked into the (debugger) Formatter, + which does not have that type (since it compiles against .NET 2.0). + + + + + Produces an instance. + + + Search strategy is a simple linear probing which is chosen for it cache-friendliness. + Note that Free will try to store recycled objects close to the start thus statistically + reducing how far we will typically search. + + + + + Returns objects to the pool. + + + Search strategy is a simple linear probing which is chosen for it cache-friendliness. + Note that Free will try to store recycled objects close to the start thus statistically + reducing how far we will typically search in Allocate. + + + + + Removes an object from leak tracking. + + This is called when an object is returned to the pool. It may also be explicitly + called if an object allocated from the pool is intentionally not being returned + to the pool. This can be of use with pooled arrays if the consumer wants to + return a larger array to the pool than was originally allocated. + + + + + Represents a non source code file. + + + + + Path to the file. + + + + + Returns a with the contents of this file, or null if + there were errors reading the file. + + + + + Errors encountered when trying to read the additional file. Always empty if + has not been called. + + + + + If is set, then will be null. + The only arity in that case will be encoded in the symbol. + + + + + + + + + Case-insensitive operations (mostly comparison) on unicode strings. + + + + + ToLower implements the Unicode lowercase mapping + as described in ftp://ftp.unicode.org/Public/UNIDATA/UnicodeData.txt. + VB uses these mappings for case-insensitive comparison. + + + If is upper case, then this returns its Unicode lower case equivalent. Otherwise, is returned unmodified. + + + + This class seeks to perform the lowercase Unicode case mapping. + + + + + Returns a StringComparer that compares strings according the VB identifier comparison rules. + + + + + Returns a StringComparer that compares strings according the VB identifier comparison rules. + + + + + Determines if two VB identifiers are equal according to the VB identifier comparison rules. + + First identifier to compare + Second identifier to compare + true if the identifiers should be considered the same. + + + + Determines if the string 'value' end with string 'possibleEnd'. + + + + + + + + Compares two VB identifiers according to the VB identifier comparison rules. + + First identifier to compare + Second identifier to compare + -1 if < , 1 if > , 0 if they are equal. + + + + Gets a case-insensitive hash code for VB identifiers. + + identifier to get the hash code for + The hash code for the given identifier + + + + Convert a string to lower case per Unicode + + + + + + + In-place convert string in StringBuilder to lower case per Unicode rules + + + + + + Constructs and caches already created pseudo-methods. + Every compiled module is supposed to have one of this, created lazily + (multidimensional arrays are not common). + + + + + Acquires an array constructor for a given array type + + + + + Acquires an element getter method for a given array type + + + + + Acquires an element setter method for a given array type + + + + + Acquires an element referencer method for a given array type + + + + + Maps {array type, method kind} tuples to implementing pseudo-methods. + + + + + lazily fetches or creates a new array method. + + + + + "newobj ArrayConstructor" is equivalent of "newarr ElementType" + when working with multidimensional arrays + + + + + "call ArrayGet" is equivalent of "ldelem ElementType" + when working with multidimensional arrays + + + + + "call ArrayAddress" is equivalent of "ldelema ElementType" + when working with multidimensional arrays + + + + + "call ArraySet" is equivalent of "stelem ElementType" + when working with multidimensional arrays + + + + + Represents a parameter in an array pseudo-method. + + NOTE: It appears that only number of indices is used for verification, + types just have to be Int32. + Even though actual arguments can be native ints. + + + + + Represents the "value" parameter of the Set pseudo-method. + + NOTE: unlike index parameters, type of the value parameter must match + the actual element type. + + + + + Base of all array methods. They have a lot in common. + + + + + Block is not reachable or reachability analysis + has not been performed. + + + + + Block can be reached either falling through + from previous block or from branch. + + + + + Block is reachable from try or catch but + finally prevents falling through. + + + + + Returns true if this block has a branch label + and is not a "nop" branch. + + + + + Instructions that are not branches. + + + + + The block contains only the final branch or nothing at all + + + + + Updates position of the current block to account for shorter sizes of previous blocks. + + + + + + If possible, changes the branch code of the current block to the short version and + updates the delta correspondingly. + + Position delta created by previous block size reductions. + + + + replaces branches with more compact code if possible. + * same branch as in the next ===> nop + * branch to the next block ===> nop + * branch to ret block ===> ret + * cond branch over uncond branch ===> flip condition, skip next block + * cond branch to equivalent ===> pop args + nop + + + + + Blocks are identical if: + 1) have same regular instructions + 2) lead to unconditional control transfer (no fall through) + 3) branch with the same instruction to the same label + + + + + Returns reversed branch operation for the current block. + If no reverse opcode can be obtained Nop is returned. + + + + + Abstract Execution state. + If we know something interesting about IL stream we put it here. + + + + + Eval stack's high watermark. + + + + + Current evaluation stack depth. + + + + + Record effects of that currently emitted instruction on the eval stack. + + + + + In some cases we have to get a final IL offset during emit phase, for example for + proper emitting sequence points. The problem is that before the builder is realized we + don't know the actual IL offset, but only {block/offset-in-the-block} pair. + + Thus, whenever we need to mark some IL position we allocate a new marker id, store it + in allocatedILMarkers and reference this IL marker in the entity requiring the IL offset. + + IL markers will be 'materialized' when the builder is realized; the resulting offsets + will be put into allocatedILMarkers array. Note that only markers from reachable blocks + are materialized, the rest will have offset -1. + + + + + Realizes method body. + No more data can be added to the builder after this call. + + + + + Gets all scopes that contain variables. + + + + + Gets all scopes that contain variables. + + + + + IL opcodes emitted by this builder. + This includes branch instructions that end blocks except if they are fall-through NOPs. + + This count allows compilers to see if emitting a particular statement/expression + actually produced any instructions. + + Example: a label will not result in any code so when emitting debugging information + an extra NOP may be needed if we want to decorate the label with sequence point. + + + + + Marks blocks that are reachable. + + + + + Marks blocks that are recursively reachable from the given block. + + + + + If a label points to a block that does nothing other than passing to block X, + replaces target label's block with block X. + + + + + + Drops blocks that are not reachable + Returns true if any blocks were dropped + + + + + Marks all blocks unreachable. + + + + + Rewrite any block marked as BlockedByFinally as an "infinite loop". + + + Matches the code generated by the native compiler in + ILGENREC::AdjustBlockedLeaveTargets. + + + + + Returns true if the block has the signature of the special + labeled block that follows a complete try/catch or try/finally. + + + + + Returns true if any branches were optimized (that does not include shortening) + We need this because optimizing a branch may result in unreachable code that needs to be eliminated. + + === Example: + + x = 1; + + if (blah) + { + global = 1; + } + else + { + throw null; + } + + return x; + + === rewrites into + + push 1; + + if (blah) + { + global = 1; + ret; + } + else + { + throw null; + } + + // this ret unreachable now! + // even worse - empty stack is assumed thus the ret is illegal. + ret; + + + + + + Define a sequence point with the given syntax tree and span within it. + + + + + Defines a hidden sequence point. + The effect of this is that debugger will not associate following code + with any source (until it sees a lexically following sequence point). + + This is used for synthetic code that is reachable through labels. + + If such code is not separated from previous sequence point by the means of a hidden sequence point + It looks as a part of the statement that previous sequence point specifies. + As a result, when user steps through the code and goes through a jump to such label, + it will appear as if the jump landed at the beginning of the previous statement. + + NOTE: Also inserted as the first statement of a method that would not otherwise have a leading + sequence point so that step-into will find the method body. + + + + + Define a hidden sequence point at the first statement of + the method so that step-into will find the method body. + + + + + This is called when starting emitting a method for which there is some source. + It is done in case the first sequence point is a hidden point. + Even though hidden points do not have syntax, they need to associate with some document. + + + + + Marks the end of filter condition and start of the actual filter handler. + + + + + Puts local variable into current scope. + + + + + Puts local constant into current scope. + + + + + Mark current IL position with a label + + + + + Primary method for emitting string switch jump table + + switch case labels + fall through label for the jump table + Local holding the value to switch on. + This value has already been loaded onto the execution stack. + + Local holding the hash value of the key for emitting + hash table switch. Hash value has already been computed and loaded into keyHash. + This parameter is null if emitting non hash table switch. + + + Delegate to emit string compare call and conditional branch based on the compare result. + + + Delegate to compute string hash consistent with value of keyHash. + + + + + Primary method for emitting integer switch jump table. + + switch case labels + fall through label for the jump table. + Local or parameter holding the value to switch on. + This value has already been loaded onto the execution stack. + + Primitive type code of switch key. + + + + Finishes filter condition (and starts actual handler portion of the handler). + Returns the last block of the condition. + + + + + Generates code that creates an instance of multidimensional array + + + + + Generates code that loads an element of a multidimensional array + + + + + Generates code that loads an address of an element of a multidimensional array. + + + + + Generates code that stores an element of a multidimensional array. + + + + + Contains information about a label. + + + + + Sometimes we need to know if a label is targeted by conditional branches. + For example optimizer can do optimizations of branches into outer try scopes only + if they are unconditional (because there are no conditional Leave opcodes) + + + + + Used when we see a branch, but label is not yet marked. + + + + + Used when label is marked to the code. + + + + + Gets all scopes that contain variables. + + + + + Returns an ExceptionHandlerRegion for each exception handler clause + beneath the root scope. Each ExceptionHandlerRegion indicates the type + of clause (catch or finally) and the bounds of the try block and clause block. + + + + + Base class for IL scopes where a scope contains IL blocks and other nested + scopes. A scope may represent a scope for variable declarations, an exception + handler clause, or an entire exception handler (multiple clauses). + + + + + Recursively calculates the start and end of the given scope. + Only scopes with locals are actually dumped to the list. + + + + + Recursively calculates the start and end of the given scope. + Only scopes with locals are actually dumped to the list. + + + + + Free any basic blocks owned by this scope or sub-scopes. + + + + + Class that collects content of the scope (blocks, nested scopes, variables etc). + There is one for every opened scope. + + + + + A scope for a single try, catch, or finally clause. If the clause + is a catch clause, ExceptionType will be set. + + + + + A scope for an entire exception handler (a try block with either several + catches or a finally block). Unlike other scopes, this scope contains + nested scopes only, no IL blocks (although nested ExceptionHandlerScopes + for the clauses will contain IL blocks). + + + + + Compares scopes by their start (ascending) and then size (descending). + + + + + These opcodes represent control transfer. + They should not appear inside basic blocks. + + + + + Opcodes that represents a branch to a label. + + + + + Opcodes that represents a branch to a label. + + + + + Debug information maintained for each lambda. + + + The information is emitted to PDB in Custom Debug Information record for a method containing the lambda. + + + + + The syntax offset of the syntax node declaring the lambda (lambda expression) or its body (lambda in a query). + + + + + The ordinal of the closure frame the lambda belongs to, or + if the lambda is static, or + if the lambda is closed over "this" pointer only. + + + + + We need a CCI representation for local constants because they are emitted as locals in + PDB scopes to improve the debugging experience (see LocalScopeProvider.GetConstantsInScope). + + + + . + + + + Creates a new LocalDefinition. + + Local symbol, used by edit and continue only, null otherwise. + Name associated with the slot. + Type associated with the slot. + Slot position in the signature. + Contains the synthesized dynamic attributes of the local + Local kind. + Local id. + Value to emit in the attributes field in the PDB. + Specifies whether slot type should have pinned modifier and whether slot should have byref constraint. + Specifies if the type is Dynamic. + + + + At this level there are two kinds of local variables: + + + Locals - have identities by which consuming code refers to them. + Typical use is a local variable or a compiler generated temp that can be accessed in multiple operations. + Any object can be used as identity. Reference equality is used. + + + Temps - do not have identity. They are borrowed and returned to the free list. + Typical use is a scratch temporary or spilling storage. + + + + + + + Structure that represents a local signature (as in ECMA-335, Partition I, §8.6.1.3 Local signatures). + + + + + Retrieve a local slot by its symbol. + + + + + Release a local slot by its symbol. + Slot is not associated with symbol after this. + + + + + Gets a local slot. + + + + + Frees a local slot. + + + + + An expression that creates an array instance in metadata. Only for use in custom attributes. + + + + + The element type of the array. + + + + + The initial values of the array elements. May be empty. + + + + + An expression that represents a (name, value) pair and that is typically used in method calls, custom attributes and object initializers. + + + + + The name of the parameter or property or field that corresponds to the argument. + + + + + The value of the argument. + + + + + True if the named argument provides the value of a field. + + + + + An expression that results in a System.Type instance. + + + + + The type that will be represented by the System.Type instance. + + + + + Holds on to the method body data. + + + + + This is a list of the using directives that were in scope for this method body. + + + + + Unique identification of an emitted entity (method, lambda, closure) used for debugging purposes (EnC). + + + When used for a synthesized method the ordinal and generation numbers are included its name. + For user defined methods the ordinal is included in Custom Debug Information record attached to the method. + + + + + The index of the method in member list of the containing type, or if undefined. + + + + + The EnC generation the method was defined in (0 is the baseline build). + + + + + This class represents the PermissionSetAttribute specified in source which needs fixup during codegen. + + + PermissionSetAttribute needs fixup when it contains an assignment to the 'File' property as a single named attribute argument. + Fixup performed is ported from SecurityAttributes::FixUpPermissionSetAttribute at ndp\clr\src\vm\securityattributes.cpp. + It involves following steps: + 1) Verifying that the specified file name resolves to a valid path: This is done during binding. + 2) Reading the contents of the file into a byte array. + 3) Convert each byte in the file content into two bytes containing hexadecimal characters (see method ). + 4) Replacing the 'File = fileName' named argument with 'Hex = hexFileContent' argument, where hexFileContent is the converted output from step 3) above. + + + + + Zero or more positional arguments for the attribute constructor. + + + + + A reference to the constructor that will be used to instantiate this custom attribute during execution (if the attribute is inspected via Reflection). + + + + + Zero or more named arguments that specify values for fields and properties of the attribute. + + + + + The number of positional arguments. + + + + + The number of named arguments. + + + + + The type of the attribute. For example System.AttributeUsageAttribute. + + + + + Exception class to enable generating ERR_PermissionSetAttributeFileReadError while reading the file for PermissionSetAttribute fixup. + + + + + TypeDefinition that represents <PrivateImplementationDetails> class. + The main purpose of this class so far is to contain mapped fields and their types. + + + + + Simple struct type with explicit size and no members. + + + + + Definition of a simple field mapped to a metadata block + + + + + Just a default implementation of a type definition. + + + + + Represents a sequence point before translation by #line/ExternalSource directives. + + + + + Some features of the compiler (such as anonymous types, pay-as-you-go, NoPIA, ...) + rely on all referenced symbols to go through translate mechanism. Because by default + symbol translator does not translate some of indirectly referenced symbols, such as + type argument, we have to force translation here + + This class provides unified implementation for this functionality. + + + + + Scope of user-defined variable hoisted to state machine. + + + + + Maintains a list of sequence points in a space efficient way. Most of the time sequence points + occur in the same syntax tree, so optimize for that case. Store a sequence point as an offset, and + position in a syntax tree, then translate to CCI format only on demand. + + Use a ArrayBuilder{RawSequencePoint} to create. + + + + + Create a SequencePointList with the raw sequence points from an ArrayBuilder. + A linked list of instances for each syntax tree is created (almost always of length one). + + + + + Get all the sequence points, possibly mapping them using #line/ExternalSource directives, and mapping + file names to debug documents with the given mapping function. + + Function that maps file paths to CCI debug documents + where sequence points should be deposited + + + + Represents the combination of an IL offset and a source text span. + + + + + Handles storage of strings referenced via tokens in metadata. When items are stored + they are uniquely "associated" with fake token, which is basically a sequential number. + IL gen will use these fake tokens during codegen and later, when actual token values + are known the method bodies will be patched. + To support these two scenarios we need two maps - Item-->uint, and uint-->Item. (the second is really just a list). + + + + + Class for emitting the switch jump table for switch statements with integral governing type + + + + + Switch key for the jump table + + + + + Primitive type of the switch key + + + + + Fall through label for the jump table + + + + + Integral case labels sorted and indexed by their ConstantValue + + + + + Try to merge with the nextBucket. + If merge results in a better bucket than two original ones, merge and return true. + Else don't merge and return false. + + + + + Switch key for the jump table + + + + + Switch case labels + + + + + Fall through label for the jump table + + + + + Delegate to emit string compare call and conditional branch based on the compare result. + + Key to compare + Case constant to compare the key against + Target label to branch to if key = stringConstant + + + + Delegate to compute string hash code. + This piece is language-specific because VB treats "" and null as equal while C# does not. + + + + + Delegate to emit string compare call + + + + + Delegate to emit string hash + + + + + Local storing the key hash value, used for emitting hash table based string switch. + + + + + Dispenser of unique ordinals for synthesized variable names that have the same kind and syntax offset. + + + + + Handles storage of items referenced via tokens in metadata (strings or Symbols). + When items are stored they are uniquely "associated" with fake token, which is basically + a sequential number. + IL gen will use these fake tokens during codegen and later, when actual token values are known + the method bodies will be patched. + To support these two scenarios we need two maps - Item-->uint, and uint-->Item. (the second is really just a list). + + + + + + Returns an index of a slot that stores specified hoisted local variable in the previous generation. + + + + + Number of slots reserved for hoisted local variables. + + + Some of the slots might not be used anymore (a variable might have been deleted or its type changed). + Still, new hoisted variables are assigned slots starting with . + + + + + Returns true and an index of a slot that stores an awaiter of a specified type in the previous generation, if any. + + + + + Number of slots reserved for awaiters. + + + Some of the slots might not be used anymore (the type of an awaiter might have changed). + Still, new awaiters are assigned slots starting with . + + + + + The id of the method, or null if the method wasn't assigned one. + + + + + Finds a closure in the previous generation that corresponds to the specified syntax. + + + See LambdaFrame.AssertIsLambdaScopeSyntax for kinds of syntax nodes that represent closures. + + + + + Finds a lambda in the previous generation that corresponds to the specified syntax. + The is either a lambda syntax ( is false), + or lambda body syntax ( is true). + + + + + A local whose type is represented by a metadata signature instead of a type symbol. + + + Used when emitting a new version of a method during EnC for variables that are no longer used. + + + + + This temp is not interesting to the expression compiler. However, it + may be replaced by an interesting local in a later stage. + + + + + Id that associates an emitted user-defined or long-lived synthesized local variable + with a syntax node that defined it. If a syntax node defines multiple variables it + provides information necessary to identify which one of these variables is it. + + + + + We calculate a "syntax offset" for each user-defined and long-lived synthesized variable. + Every such variable symbol has to be associated with a syntax node (its declarator). + In usual cases this is the textual distance of the declarator from the start of the method body. + It gets a bit complicated when the containing method body is not contiguous (constructors). + If the variable is in the body of the constructor the definition of syntax offset is the same. + If the variable is defined in a constructor initializer or in a member initializer + (this is only possible when declaration expressions or closures in primary constructors are involved) + then the distance is a negative sum of the widths of all the initializers that succeed the declarator + of the variable in the emitted constructor body plus the relative offset of the declarator from + the start of the containing initializer. + + + + + If a single node is a declarator for multiple variables of the same synthesized kind (it can only happen for synthesized variables) + we calculate additional number "ordinal" for such variable. We assign the ordinals to the synthesized variables with the same kind + and syntax offset in the order as they appear in the lowered bound tree. It is important that a valid EnC edit can't change + the ordinal of a synthesized variable. If it could it would need to be assigned a different kind or associated with a different declarator node. + + + + + Stores the results of analyzer execution: + 1. Local and non-local diagnostics, per-analyzer. + 2. Analyzer execution times, if requested. + + + + + Analyzers corresponding to this analysis result. + + + + + Syntax diagnostics reported by the . + + + + + Semantic diagnostics reported by the . + + + + + Compilation diagnostics reported by the . + + + + + Analyzer telemetry info (register action counts and execution times). + + + + + Gets all the diagnostics reported by the given . + + + + + Gets all the diagnostics reported by all the . + + + + + Provides custom values associated with instances using the given computeValue delegate. + + + + + Provides values associated with instances using the given . + + Delegate to compute the value associated with a given instance. + Optional equality comparer to determine equivalent instances that have the same value. + If no comparer is provided, then is used by default. + + + + Provides custom values associated with instances using the given computeValue delegate. + + + + + Provides custom values associated with instances using the given . + + Delegate to compute the value associated with a given instance. + Optional equality comparer to determine equivalent instances that have the same value. + If no comparer is provided, then is used by default. + + + + Wrapper over the core which holds a strong reference to key-value pairs for the lifetime of a compilation that this provider is associated with. + This ensures that values are never re-computed for equivalent keys while analyzing each compilation, improving overall analyzer performance. + + + + + Driver to execute diagnostic analyzers for a given compilation. + It uses a of s to drive its analysis. + + + + + Cached semantic model for the compilation trees. + PERF: This cache enables us to re-use semantic model's bound node cache across analyzer execution and diagnostic queries. + + + + + GetSyntax() for the given SyntaxReference. + + + + + Topmost declaration node for analysis. + + + + + All member declarations within the declaration. + + + + + All descendant nodes for syntax node actions. + + + + + Flag indicating if this is a partial analysis. + + + + + Default analysis mode for generated code. + + + This mode should always guarantee that analyzer action callbacks are enabled for generated code, i.e. is set. + However, the default diagnostic reporting mode is liable to change in future. + + + + + Map from non-concurrent analyzers to the gate guarding callback into the analyzer. + + + + + Map from analyzers to their setting. + + + + + True if all analyzers need to analyze and report diagnostics in generated code - we can assume all code to be non-generated code. + + + + + True if no analyzer needs generated code analysis - we can skip all analysis on a generated code symbol/tree. + + + + + Lazily populated dictionary indicating whether a source file is a generated code file or not - we populate it lazily to avoid realizing all syntax trees in the compilation upfront. + + + + + Lazily populated dictionary from tree to declared symbols with GeneratedCodeAttribute. + + + + + Symbol for . + + + + + Driver task which initializes all analyzers. + This task is initialized and executed only once at start of analysis. + + + + + Flag to indicate if the was successfully started. + + + + + Primary driver task which processes all events, runs analyzer actions and signals completion of at the end. + + + + + Number of worker tasks processing compilation events and executing analyzer actions. + + + + + Events queue for analyzer execution. + + + + + that is fed the diagnostics as they are computed. + + + + + Create an analyzer driver. + + The set of analyzers to include in the analysis + AnalyzerManager to manage analyzers for analyzer host's lifetime. + Delegate to identify if the given trivia is a comment. + + + + Initializes the and related actions maps for the analyzer driver. + It kicks off the task for initialization. + Note: This method must be invoked exactly once on the driver. + + + + + Returns true if all analyzers need to analyze and report diagnostics in generated code - we can assume all code to be non-generated code. + + + + + Attaches a pre-populated event queue to the driver and processes all events in the queue. + + Compilation events to analyze. + Scope of analysis. + An optional object to track partial analysis state. + Cancellation token to abort analysis. + Driver must be initialized before invoking this method, i.e. method must have been invoked and must be non-null. + + + + Attaches event queue to the driver and start processing all events pertaining to the given analysis scope. + + Compilation events to analyze. + Scope of analysis. + Cancellation token to abort analysis. + Driver must be initialized before invoking this method, i.e. method must have been invoked and must be non-null. + + + + Create an and attach it to the given compilation. + + The compilation to which the new driver should be attached. + The set of analyzers to include in the analysis. + Options that are passed to analyzers. + AnalyzerManager to manage analyzers for the lifetime of analyzer host. + Delegate to add diagnostics generated for exceptions from third party analyzers. + Report additional information related to analyzers, such as analyzer execution time. + The new compilation with the analyzer driver attached. + A cancellation token that can be used to abort analysis. + A newly created analyzer driver + + Note that since a compilation is immutable, the act of creating a driver and attaching it produces + a new compilation. Any further actions on the compilation should use the new compilation. + + + + + Returns all diagnostics computed by the analyzers since the last time this was invoked. + If has been completed with all compilation events, then it waits for + task for the driver to finish processing all events and generate remaining analyzer diagnostics. + + + + + Return a task that completes when the driver is initialized. + + + + + Return a task that completes when the driver is done producing diagnostics. + + + + + Returns true if all the diagnostics that can be produced by this analyzer are suppressed through options. + + + + + this hold onto analyzer executor context which will be used later to put context information in analyzer exception if it occurs. + + + + + Contains information about the source of diagnostic suppression. + + + + + of the suppressed diagnostic. + + + + + If the diagnostic was suppressed by an attribute, then returns that attribute. + Otherwise, returns null. + + + + + Stores the results of analyzer execution: + 1. Local and non-local diagnostics, per-analyzer. + 2. Analyzer execution times, if requested. + + + + + Scope for analyzer execution. + This scope could either be the entire compilation for all analyzers (command line build) or + could be scoped to a specific tree/span and/or a subset of analyzers (CompilationWithAnalyzers). + + + + + Syntax trees on which we need to perform syntax analysis. + + + + + True if we need to categorize diagnostics into local and non-local diagnostics and track the analyzer reporting each diagnostic. + + + + + True if we need to perform only syntax analysis for a single tree. + + + + + True if we need to perform analysis for a single tree. + + + + + Stores the partial analysis state for analyzers executed on a specific compilation. + + + Stores the current partial analysis state for an analyzer. + + + + + Stores the partial analysis state for a specific event/symbol/tree for a specific analyzer. + + + + + Current state of analysis. + + + + + Set of completed actions. + + + + + Resets the from to . + This method must be invoked after successful analysis completion AND on analysis cancellation. + + + + + Per-analyzer analysis state map. + The integer value points to the index within the array. + + + + + Per-analyzer analysis state. + + + + + Compilation events corresponding to source tree, that are not completely processed for all analyzers. + Events are dropped as and when they are fully processed by all analyzers. + + + + + Compilation events corresponding to the compilation (compilation start and completed events), that are not completely processed for all analyzers. + + + + + Action counts per-analyzer. + + + + + Cached semantic model for the compilation trees. + PERF: This cache enables us to re-use semantic model's bound node cache across analyzer execution and diagnostic queries. + + + + + Invoke this method at completion of event processing for the given analysis scope. + It updates the analysis state of this event for each analyzer and if the event has been fully processed for all analyzers, then removes it from our event cache. + + + + + Gets pending events for given set of analyzers for the given syntax tree. + + + + + Gets pending events for given set of analyzers for the given syntax tree. + + + + + Gets all pending events for given set of analyzers. + + + Indicates if source events (symbol declared, compilation unit completed event) should be included. + Indicates if compilation wide events (compilation started and completed event) should be included. + + + + Returns true if we have any pending syntax analysis for given analysis scope. + + + + + Returns true if we have any pending symbol analysis for given analysis scope. + + + + + Attempts to start processing a compilation event for the given analyzer. + + + Returns false if the event has already been processed for the analyzer OR is currently being processed by another task. + If true, then it returns a non-null representing partial analysis state for the given event for the given analyzer. + + + + + Marks the given event as fully analyzed for the given analyzer. + + + + + Marks the given event as fully analyzed for the given analyzers. + + + + + Attempts to start processing a symbol for the given analyzer's symbol actions. + + + Returns false if the symbol has already been processed for the analyzer OR is currently being processed by another task. + If true, then it returns a non-null representing partial analysis state for the given symbol for the given analyzer. + + + + + Marks the given symbol as fully analyzed for the given analyzer. + + + + + Attempts to start processing a symbol declaration for the given analyzer's syntax node and code block actions. + + + Returns false if the declaration has already been processed for the analyzer OR is currently being processed by another task. + If true, then it returns a non-null representing partial analysis state for the given declaration for the given analyzer. + + + + + True if the given symbol declaration is fully analyzed. + + + + + Marks the given symbol declaration as fully analyzed for the given analyzer. + + + + + Marks the given symbol declaration as fully analyzed for the given analyzers. + + + + + Marks all the symbol declarations for the given symbol as fully analyzed for all the given analyzers. + + + + + Attempts to start processing a syntax tree for the given analyzer's syntax tree actions. + + + Returns false if the tree has already been processed for the analyzer OR is currently being processed by another task. + If true, then it returns a non-null representing partial syntax analysis state for the given tree for the given analyzer. + + + + + Marks the given tree as fully syntactically analyzed for the given analyzer. + + + + + Marks the given tree as fully syntactically analyzed for the given analyzers. + + + + + State kind of per-analyzer tracking an analyzer's partial analysis state. + An analysis state object can be in one of the following states: + 1. Completely unprocessed: + 2. Currently being processed: + 3. Partially processed by one or more older requests that was either completed or cancelled: + 4. Fully processed: . + + + + + Ready for processing. + Indicates it is either completely unprocessed or partially processed by one or more older requests that was either completed or cancelled. + + + + + Currently being processed. + + + + + Fully processed. + + + + + Stores the partial analysis state for a specific symbol declaration for a specific analyzer. + + + + + Partial analysis state for code block actions executed on the declaration. + + + + + Partial analysis state for operation block actions executed on the declaration. + + + + + Stores the partial analysis state for syntax node actions executed on the declaration. + + + + + Stores the partial analysis state for operation actions executed on the declaration. + + + + + Stores the partial analysis state for code block actions or operation block actions executed on the declaration. + + + + + Stores the partial analysis state for code block actions executed on the declaration. + + + + + Stores the partial analysis state for operation block actions executed on the declaration. + + + + + Contains telemetry info for a specific analyzer, such as count of registered actions, the total execution time, etc. + + + + + Count of registered compilation start actions. + + + + + Count of registered compilation end actions. + + + + + Count of registered compilation actions. + + + + + Count of registered syntax tree actions. + + + + + Count of registered semantic model actions. + + + + + Count of registered symbol actions. + + + + + Count of registered syntax node actions. + + + + + Count of registered code block start actions. + + + + + Count of registered code block end actions. + + + + + Count of registered code block actions. + + + + + Count of registered operation actions. + + + + + Count of registered operation block start actions. + + + + + Count of registered operation block end actions. + + + + + Count of registered operation block actions. + + + + + Total execution time. + + + + + Contains the counts of registered actions for an analyzer. + + + + + Count of registered compilation start actions. + + + + + Count of registered compilation end actions. + + + + + Count of registered compilation actions. + + + + + Count of registered syntax tree actions. + + + + + Count of registered semantic model actions. + + + + + Count of registered symbol actions. + + + + + Count of registered syntax node actions. + + + + + Count of code block start actions. + + + + + Count of code block end actions. + + + + + Count of code block actions. + + + + + Count of Operation actions. + + + + + Count of Operation block start actions. + + + + + Count of Operation block end actions. + + + + + Count of Operation block actions. + + + + + Returns true if there are any actions that need to run on executable code. + + + + + Contains the core execution logic for callbacks into analyzers. + + + + + Creates to execute analyzer actions with given arguments + + Compilation to be used in the analysis. + Analyzer options. + Optional delegate to add non-categorized analyzer diagnostics. + + Optional delegate which is invoked when an analyzer throws an exception. + Delegate can do custom tasks such as report the given analyzer exception diagnostic, report a non-fatal watson for the exception, etc. + + + Optional delegate which is invoked when an analyzer throws an exception as an exception filter. + Delegate can do custom tasks such as crash hosting process to create a dump. + + Delegate to determine if the given analyzer is compiler analyzer. + We need to special case the compiler analyzer at few places for performance reasons. + Analyzer manager to fetch supported diagnostics. + + Delegate to fetch the gate object to guard all callbacks into the analyzer. + It should return a unique gate object for the given analyzer instance for non-concurrent analyzers, and null otherwise. + All analyzer callbacks for non-concurrent analyzers will be guarded with a lock on the gate. + + Delegate to identify if analysis should be skipped on generated code. + Delegate to identify if diagnostic reported while analyzing generated code should be suppressed. + Flag indicating whether we need to log analyzer execution time. + Optional delegate to add categorized local analyzer diagnostics. + Optional delegate to add categorized non-local analyzer diagnostics. + Cancellation token. + + + + Creates to fetch . + + + Optional delegate which is invoked when an analyzer throws an exception. + Delegate can do custom tasks such as report the given analyzer exception diagnostic, report a non-fatal watson for the exception, etc. + + Analyzer manager to fetch supported diagnostics. + Flag indicating whether we need to log analyzer execution time. + Cancellation token. + + + + Executes the for the given analyzer. + + Analyzer to get session wide analyzer actions. + Session scope to store register session wide analyzer actions. + + Note that this API doesn't execute any registered by the Initialize invocation. + Use API + to get execute these actions to get the per-compilation analyzer actions. + + + + + Executes the compilation start actions. + + whose compilation start actions are to be executed. + Compilation scope to store the analyzer actions. + + + + Executes compilation actions or compilation end actions. + + Compilation actions to be executed. + Analyzer whose actions are to be executed. + Compilation event. + Scope for analyzer execution. + An optional object to track analysis state. + + + + Executes the symbol actions on the given symbol. + + Symbol actions to be executed. + Analyzer whose actions are to be executed. + Symbol event to be analyzed. + Delegate to get topmost declaration node for a symbol declaration reference. + Scope for analyzer execution. + An optional object to track analysis state. + Flag indicating if this is a generated code symbol. + + + + Executes the semantic model actions on the given semantic model. + + Semantic model actions to be executed. + Analyzer whose actions are to be executed. + Semantic model to analyze. + Compilation event for semantic model analysis. + Scope for analyzer execution. + An optional object to track analysis state. + Flag indicating if the syntax tree being analyzed is generated code. + + + + Executes the syntax tree actions on the given syntax tree. + + Syntax tree actions to be executed. + Analyzer whose actions are to be executed. + Syntax tree to analyze. + Scope for analyzer execution. + An optional object to track analysis state. + Flag indicating if the syntax tree being analyzed is generated code. + + + + Manages properties of analyzers (such as registered actions, supported diagnostics) for analyzer host's lifetime + and executes the callbacks into the analyzers. + + It ensures the following for the lifetime of analyzer host: + 1) is invoked only once per-analyzer. + 2) is invoked only once per-analyzer. + 3) registered during Initialize are invoked only once per-compilation per- + + + TODO: Consider moving and relevant APIs + out of the AnalyzerManager and into analyzer drivers. + + + + + Gets the default instance of the AnalyzerManager for the lifetime of the analyzer host process. + + + + + Cache descriptors for each diagnostic analyzer. We do this since is + a property rather than metadata. We expect it to be cheap and immutable, but we can't force them to be so, we cache them + and ask only once. + + + + + Get all the analyzer actions to execute for the given analyzer against a given compilation. + The returned actions include the actions registered during method as well as + the actions registered during for the given compilation. + + + + + Returns true if the given analyzer has enabled concurrent execution by invoking . + + + + + Returns for the given analyzer. + If an analyzer hasn't configured generated code analysis, returns . + + + + + Compute and exception handler for the given . + + + + + Return of given . + + + + + This method should be invoked when the analyzer host is disposing off the analyzers. + It unregisters the exception handler hooked up to the descriptors' LocalizableString fields and subsequently removes the cached descriptors for the analyzers. + + + + + Returns true if all the diagnostics that can be produced by this analyzer are suppressed through options. + + + + + The last event placed into a compilation's event queue. + + + + + Flush any cached data in this to minimize space usage (at the possible expense of time later). + The principal effect of this is to free cached information on events that have a . + + + + + The first event placed into a compilation's event queue. + + + + + Options to configure analyzer execution within . + + + + + Options passed to s. + + + + + An optional delegate to be invoked when an analyzer throws an exception. + + + + + An optional delegate to be invoked when an analyzer throws an exception as an exception filter. + + + + + Flag indicating whether analysis can be performed concurrently on multiple threads. + + + + + Flag indicating whether analyzer execution time should be logged. + + + + + Flag indicating whether analyzer diagnostics with should be reported. + + + + + Creates a new . + + Options that are passed to analyzers. + Action to invoke if an analyzer throws an exception. + Flag indicating whether analysis can be performed concurrently on multiple threads. + Flag indicating whether analyzer execution time should be logged. + + + + Creates a new . + + Options that are passed to analyzers. + Action to invoke if an analyzer throws an exception. + Flag indicating whether analysis can be performed concurrently on multiple threads. + Flag indicating whether analyzer execution time should be logged. + Flag indicating whether analyzer diagnostics with should be reported. + + + + Creates a new . + + Options that are passed to analyzers. + Action to invoke if an analyzer throws an exception. + Action to invoke if an analyzer throws an exception as an exception filter. + Flag indicating whether analysis can be performed concurrently on multiple threads. + Flag indicating whether analyzer execution time should be logged. + Flag indicating whether analyzer diagnostics with should be reported. + + + + Queue to store analyzer diagnostics on the . + + + + + Simple diagnostics queue: maintains all diagnostics reported by all analyzers in a single queue. + + + + + Categorized diagnostics queue: maintains separate set of simple diagnostic queues for local semantic, local syntax and non-local diagnostics for every analyzer. + + + + + Scope for setting up analyzers for an entire session, automatically associating actions with analyzers. + + + + + Scope for setting up analyzers for a compilation, automatically associating actions with analyzers. + + + + + Scope for setting up analyzers for a code block, automatically associating actions with analyzers. + + + + + Scope for setting up analyzers for an operation block, automatically associating actions with analyzers. + + + + + Scope for setting up analyzers for an entire session, capable of retrieving the actions. + + + + + Scope for setting up analyzers for a compilation, capable of retrieving the actions. + + + + + Scope for setting up analyzers for a code block, capable of retrieving the actions. + + + + + Actions registered by a particular analyzer. + + + + + Append analyzer actions from to actions from this instance. + + Analyzer actions to append. + + + + An event for each declaration in the program (namespace, type, method, field, parameter, etc). + Note that some symbols may have multiple declarations (namespaces, partial types) and may therefore + have multiple events. + + + + + Lockable object only instance is knowledgeable about. + + + + + Represents analyzers stored in an analyzer assembly file. + + + Analyzer are read from the file, owned by the reference, and doesn't change + since the reference is accessed until the reference object is garbage collected. + + If you need to manage the lifetime of the analyzer reference (and the file stream) explicitly use . + + + + + Creates an AnalyzerFileReference with the given and . + + Full path of the analyzer assembly. + Loader for obtaining the from the + + + + Adds the of of + for all languages defined in this assembly reference. + + + + + Adds the of defined in this assembly reference of given . + + + + + Opens the analyzer dll with the metadata reader and builds a map of language -> analyzer type names. + + The PE image format is invalid. + IO error reading the metadata. + + + + If a specific analyzer failed to load the namespace-qualified name of its type, null otherwise. + + + + + Error message. + + + + + Error code. + + + + + Exception that was thrown while loading the analyzer. May be null. + + + + + DiagnosticAnalyzer for compiler's syntax/semantic/compilation diagnostics. + + + + + Per-compilation DiagnosticAnalyzer for compiler's syntax/semantic/compilation diagnostics. + + + + + Driver to execute diagnostic analyzers for a given compilation. + It uses a of s to drive its analysis. + + + + + Create an analyzer driver. + + The set of analyzers to include in the analysis + A delegate that returns the language-specific kind for a given syntax node + AnalyzerManager to manage analyzers for the lifetime of analyzer host. + Delegate to identify if the given trivia is a comment. + + + + Represents an in-memory analyzer reference image. + + + + + Options passed to . + + + + + A set of additional non-code text files that can be used by analyzers. + + + + + Creates analyzer options to be passed to . + + A set of additional non-code text files that can be used by analyzers. + + + + Returns analyzer options with the given . + + + + + Represents an analyzer assembly reference that contains diagnostic analyzers. + + + Represents a logical location of the analyzer reference, not the content of the reference. + The content might change in time. A snapshot is taken when the compiler queries the reference for its analyzers. + + + + + Full path describing the location of the analyzer reference, or null if the reference has no location. + + + + + Path or name used in error messages to identity the reference. + + + Should not be null. + + + + + A unique identifier for this analyzer reference. + + + Should not be null. + Note that this and serve different purposes. An analyzer reference may not + have a path, but it always has an ID. Further, two analyzer references with different paths may + represent two copies of the same analyzer, in which case the IDs should also be the same. + + + + + Gets all the diagnostic analyzers defined in this assembly reference, irrespective of the language supported by the analyzer. + Use this method only if you need all the analyzers defined in the assembly, without a language context. + In most instances, either the analyzer reference is associated with a project or is being queried for analyzers in a particular language context. + If so, use method. + + + + + Gets all the diagnostic analyzers defined in this assembly reference for the given . + + Language name. + + + + Pool of s used for analyzer execution. + + + + + Contains the partial analysis state per-analyzer. It tracks: + 1. Global set of pending compilation events. This is used to populate the event queue for analyzer execution. + 2. Per-analyzer set of pending compilation events, symbols, declarations, etc. Each of these pending entities has a state object to track partial analysis. + + + + + Builder for storing current, possibly partial, analysis results: + 1. Diagnostics reported by analyzers. + 2. AnalyzerTelemetryInfo. + + + + + Set of exception diagnostics reported for exceptions thrown by the analyzers. + + + + + Lock to track the set of active tasks computing tree diagnostics and task computing compilation diagnostics. + + + + + Used to generate a unique token for each tree diagnostics request. + The token is used to determine the priority of each request. + Each new tree diagnostic request gets an incremented token value and has higher priority over other requests for the same tree. + Compilation diagnostics requests always have the lowest priority. + + + + + Map from active tasks computing tree diagnostics to their token number. + + + + + Pool of event queues to serve each diagnostics request. + + + + + Underlying with a non-null , used to drive analyzer execution. + + + + + Analyzers to execute on the compilation. + + + + + Options to configure analyzer execution. + + + + + An optional cancellation token which can be used to cancel analysis. + Note: This token is only used if the API invoked to get diagnostics doesn't provide a cancellation token. + + + + + Creates a new compilation by attaching diagnostic analyzers to an existing compilation. + + The original compilation. + The set of analyzers to include in future analyses. + Options that are passed to analyzers. + A cancellation token that can be used to abort analysis. + + + + Creates a new compilation by attaching diagnostic analyzers to an existing compilation. + + The original compilation. + The set of analyzers to include in future analyses. + Options to configure analyzer execution. + + + + Returns diagnostics produced by all . + + + + + Returns diagnostics produced by all . + + + + + Returns diagnostics produced by given . + + Analyzers whose diagnostics are required. All the given analyzers must be from the analyzers passed into the constructor of . + Cancellation token. + + + + Executes all and returns the corresponding with all diagnostics and telemetry info. + + + + + Executes the given and returns the corresponding with all diagnostics and telemetry info. + + Analyzers whose analysis results are required. All the given analyzers must be from the analyzers passed into the constructor of . + Cancellation token. + + + + Returns all diagnostics produced by compilation and by all . + + + + + Returns all diagnostics produced by compilation and by all . + + + + + Returns diagnostics produced by compilation actions of all . + + + + + Returns diagnostics produced by compilation actions of given . + + Analyzers whose diagnostics are required. All the given analyzers must be from the analyzers passed into the constructor of . + Cancellation token. + + + + Returns syntax diagnostics produced by all from analyzing the given . + Depending on analyzers' behavior, returned diagnostics can have locations outside the tree, + and some diagnostics that would be reported for the tree by an analysis of the complete compilation + can be absent. + + Syntax tree to analyze. + Cancellation token. + + + + Returns syntax diagnostics produced by given from analyzing the given . + Depending on analyzers' behavior, returned diagnostics can have locations outside the tree, + and some diagnostics that would be reported for the tree by an analysis of the complete compilation + can be absent. + + Syntax tree to analyze. + Analyzers whose diagnostics are required. All the given analyzers must be from the analyzers passed into the constructor of . + Cancellation token. + + + + Returns semantic diagnostics produced by all from analyzing the given , optionally scoped to a . + Depending on analyzers' behavior, returned diagnostics can have locations outside the tree, + and some diagnostics that would be reported for the tree by an analysis of the complete compilation + can be absent. + + Semantic model representing the syntax tree to analyze. + An optional span within the tree to scope analysis. + Cancellation token. + + + + Returns semantic diagnostics produced by all from analyzing the given , optionally scoped to a . + Depending on analyzers' behavior, returned diagnostics can have locations outside the tree, + and some diagnostics that would be reported for the tree by an analysis of the complete compilation + can be absent. + + Semantic model representing the syntax tree to analyze. + An optional span within the tree to scope analysis. + Analyzers whose diagnostics are required. All the given analyzers must be from the analyzers passed into the constructor of . + Cancellation token. + + + + Core method for executing analyzers. + + + + + Given a set of compiler or generated , returns the effective diagnostics after applying the below filters: + 1) specified for the given . + 2) specified for the given . + 3) Diagnostic suppression through applied . + 4) Pragma directives for the given . + + + + + Given a set of compiler or generated , returns the effective diagnostics after applying the below filters: + 1) specified for the given . + 2) specified for the given . + 3) Diagnostic suppression through applied . + 4) Pragma directives for the given . + + + + + Returns true if all the diagnostics that can be produced by this analyzer are suppressed through options. + Analyzer to be checked for suppression. + Compilation options. + + Optional delegate which is invoked when an analyzer throws an exception. + Delegate can do custom tasks such as report the given analyzer exception diagnostic, report a non-fatal watson for the exception, etc. + + + + + + This method should be invoked when the analyzer host is disposing off the given . + It clears the cached internal state (supported descriptors, registered actions, exception handlers, etc.) for analyzers. + + Analyzers whose state needs to be cleared. + + + + Gets telemetry info for the given analyzer, such as count of registered actions, the total execution time (if is true), etc. + + + + + Gets the count of registered actions for the analyzer. + + + + + Gets the execution time for the given analyzer. + + + + + Returns a new compilation with attached diagnostic analyzers. + + Compilation to which analyzers are to be added. + The set of analyzers to include in future analyses. + Options that are passed to analyzers. + A cancellation token that can be used to abort analysis. + + + + Returns a new compilation with attached diagnostic analyzers. + + Compilation to which analyzers are to be added. + The set of analyzers to include in future analyses. + Options to configure analyzer execution within . + + + + Represents an analyzer reference that can't be resolved. + + + For error reporting only, can't be used to reference an analyzer assembly. + + + + + Context for initializing an analyzer. + Analyzer initialization can use an to register actions to be executed at any of: + + + compilation start, + + + compilation end, + + + completion of parsing a code document, + + + completion of semantic analysis of a code document, + + + completion of semantic analysis of a symbol, + + + start of semantic analysis of a method body or an expression appearing outside a method body, + + + completion of semantic analysis of a method body or an expression appearing outside a method body, or + + + completion of semantic analysis of a syntax node. + + + + + + + Register an action to be executed at compilation start. + A compilation start action can register other actions and/or collect state information to be used in diagnostic analysis, + but cannot itself report any s. + + Action to be executed at compilation start. + + + + Register an action to be executed for a complete compilation. + A compilation action reports s about the . + + Action to be executed at compilation end. + + + + Register an action to be executed at completion of semantic analysis of a document, + which will operate on the of the document. A semantic model action + reports s about the model. + + Action to be executed for a document's . + + + + Register an action to be executed at completion of semantic analysis of an with an appropriate Kind. + A symbol action reports s about s. + + Action to be executed for an . + Action will be executed only if an 's Kind matches one of the values. + + + + Register an action to be executed at completion of semantic analysis of an with an appropriate Kind. + A symbol action reports s about s. + + Action to be executed for an . + Action will be executed only if an 's Kind matches one of the values. + + + + Register an action to be executed at the start of semantic analysis of a method body or an expression appearing outside a method body. + A code block start action can register other actions and/or collect state information to be used in diagnostic analysis, + but cannot itself report any s. + + Enum type giving the syntax node kinds of the source language for which the action applies. + Action to be executed at the start of semantic analysis of a code block. + + + + Register an action to be executed after semantic analysis of a method body or an expression appearing outside a method body. + A code block action reports s about code blocks. + + Action to be executed for a code block. + + + + Register an action to be executed at completion of parsing of a code document. + A syntax tree action reports s about the of a document. + + Action to be executed at completion of parsing of a document. + + + + Register an action to be executed at completion of semantic analysis of a with an appropriate Kind. + A syntax node action can report s about s, and can also collect + state information to be used by other syntax node actions or code block end actions. + + Enum type giving the syntax node kinds of the source language for which the action applies. + Action to be executed at completion of semantic analysis of a . + Action will be executed only if a 's Kind matches one of the syntax kind values. + + + + Register an action to be executed at completion of semantic analysis of a with an appropriate Kind. + A syntax node action can report s about s, and can also collect + state information to be used by other syntax node actions or code block end actions. + + Enum type giving the syntax node kinds of the source language for which the action applies. + Action to be executed at completion of semantic analysis of a . + Action will be executed only if a 's Kind matches one of the syntax kind values. + + + + Register an action to be executed at the start of semantic analysis of a method body or an expression appearing outside a method body. + An operation block start action can register other actions and/or collect state information to be used in diagnostic analysis, + but cannot itself report any s. + + Action to be executed at the start of semantic analysis of an operation block. + + + + Register an action to be executed after semantic analysis of a method body or an expression appearing outside a method body. + An operation block action reports s about operation blocks. + + Action to be executed for an operation block. + + + + Register an action to be executed at completion of semantic analysis of an with an appropriate Kind. + An operation action can report s about s, and can also collect + state information to be used by other operation actions or code block end actions. + + Action to be executed at completion of semantic analysis of an . + Action will be executed only if an 's Kind matches one of the operation kind values. + + + + Register an action to be executed at completion of semantic analysis of an with an appropriate Kind. + An operation action can report s about s, and can also collect + state information to be used by other operation actions or code block end actions. + + Action to be executed at completion of semantic analysis of an . + Action will be executed only if an 's Kind matches one of the operation kind values. + + + + Enable concurrent execution of analyzer actions registered by this analyzer. + An analyzer that registers for concurrent execution can have better performance than a non-concurrent analyzer. + However, such an analyzer must ensure that its actions can execute correctly in parallel. + + + Even when an analyzer registers for concurrent execution, certain related actions are *never* executed concurrently. + For example, end actions registered on any analysis unit (compilation, code block, operation block, etc.) are by definition semantically dependent on analysis from non-end actions registered on the same analysis unit. + Hence, end actions are never executed concurrently with non-end actions operating on the same analysis unit. + + + + + Configure analysis mode of generated code for this analyzer. + Non-configured analyzers will default to an appropriate default mode for generated code. + It is recommended for the analyzer to invoke this API with the required setting. + + + + + Attempts to compute or get the cached value provided by the given for the given . + Note that the pair {, } acts as the key. + Reusing the same instance across analyzer actions and/or analyzer instances can improve the overall analyzer performance by avoiding recomputation of the values. + + The type of the value associated with the key. + for which the value is queried. + Provider that computes the underlying value. + Value associated with the key. + Returns true on success, false otherwise. + + + + Flags to configure mode of generated code analysis. + + + + + Disable analyzer action callbacks and diagnostic reporting for generated code. + Analyzer driver will not make callbacks into the analyzer for entities (source files, symbols, etc.) that it classifies as generated code. + Additionally, any diagnostic reported by the analyzer with location in generated code will not be reported. + + + + + Enable analyzer action callbacks for generated code. + Analyzer driver will make callbacks into the analyzer for all entities (source files, symbols, etc.) in the compilation, including generated code. + + + + + Enable reporting diagnostics on generated code. + Analyzer driver will not suppress any analyzer diagnostic based on whether or not it's location is in generated code. + + + + + Context for a compilation start action. + A compilation start action can use a to register actions to be executed at any of: + + + compilation end, + + + completion of parsing a code document, + + + completion of semantic analysis of a code document, + + + completion of semantic analysis of a symbol, + + + start of semantic analysis of a method body or an expression appearing outside a method body, + + + completion of semantic analysis of a method body or an expression appearing outside a method body, or + + + completion of semantic analysis of a syntax node. + + + + + + + that is the subject of the analysis. + + + + + Options specified for the analysis. + + + + + Token to check for requested cancellation of the analysis. + + + + + Register an action to be executed at compilation end. + A compilation end action reports s about the . + + Action to be executed at compilation end. + + + + Register an action to be executed at completion of semantic analysis of a document, + which will operate on the of the document. A semantic model action + reports s about the model. + + Action to be executed for a document's . + + + + Register an action to be executed at completion of semantic analysis of an with an appropriate Kind. + A symbol action reports s about s. + + Action to be executed for an . + Action will be executed only if an 's Kind matches one of the values. + + + + Register an action to be executed at completion of semantic analysis of an with an appropriate Kind. + A symbol action reports s about s. + + Action to be executed for an . + Action will be executed only if an 's Kind matches one of the values. + + + + Register an action to be executed at the start of semantic analysis of a method body or an expression appearing outside a method body. + A code block start action can register other actions and/or collect state information to be used in diagnostic analysis, + but cannot itself report any s. + + Enum type giving the syntax node kinds of the source language for which the action applies. + Action to be executed at the start of semantic analysis of a code block. + + + + Register an action to be executed at the end of semantic analysis of a method body or an expression appearing outside a method body. + A code block action reports s about code blocks. + + Action to be executed for a code block. + + + + Register an action to be executed at the start of semantic analysis of a method body or an expression appearing outside a method body. + An operation block start action can register other actions and/or collect state information to be used in diagnostic analysis, + but cannot itself report any s. + + Action to be executed at the start of semantic analysis of an operation block. + + + + Register an action to be executed after semantic analysis of a method body or an expression appearing outside a method body. + An operation block action reports s about operation blocks. + + Action to be executed for an operation block. + + + + Register an action to be executed at completion of parsing of a code document. + A syntax tree action reports s about the of a document. + + Action to be executed at completion of parsing of a document. + + + + Register an action to be executed at completion of semantic analysis of a with an appropriate Kind. + A syntax node action can report s about s, and can also collect + state information to be used by other syntax node actions or code block end actions. + + Enum type giving the syntax node kinds of the source language for which the action applies. + Action to be executed at completion of semantic analysis of a . + Action will be executed only if a 's Kind matches one of the syntax kind values. + + + + Register an action to be executed at completion of semantic analysis of a with an appropriate Kind. + A syntax node action can report s about s, and can also collect + state information to be used by other syntax node actions or code block end actions. + + Enum type giving the syntax node kinds of the source language for which the action applies. + Action to be executed at completion of semantic analysis of a . + Action will be executed only if a 's Kind matches one of the syntax kind values. + + + + Register an action to be executed at completion of semantic analysis of an with an appropriate Kind. + An operation action can report s about s, and can also collect + state information to be used by other operation actions or code block end actions. + + Action to be executed at completion of semantic analysis of an . + Action will be executed only if an 's Kind matches one of the operation kind values. + + + + Register an action to be executed at completion of semantic analysis of an with an appropriate Kind. + An operation action can report s about s, and can also collect + state information to be used by other operation actions or code block end actions. + + Action to be executed at completion of semantic analysis of an . + Action will be executed only if an 's Kind matches one of the operation kind values. + + + + Attempts to compute or get the cached value provided by the given for the given . + Note that the pair {, } acts as the key. + Reusing the same instance across analyzer actions and/or analyzer instances can improve the overall analyzer performance by avoiding recomputation of the values. + + The type of the value associated with the key. + for which the value is queried. + Provider that computes the underlying value. + Value associated with the key. + Returns true on success, false otherwise. + + + + Attempts to compute or get the cached value provided by the given for the given . + Note that the pair {, } acts as the key. + Reusing the same instance across analyzer actions and/or analyzer instances can improve the overall analyzer performance by avoiding recomputation of the values. + + The type of the value associated with the key. + instance for which the value is queried. + Provider that computes the underlying value. + Value associated with the key. + Returns true on success, false otherwise. + + + + Context for a compilation action or compilation end action. + A compilation action or compilation end action can use a to report s about a . + + + + + that is the subject of the analysis. + + + + + Options specified for the analysis. + + + + + Token to check for requested cancellation of the analysis. + + + + + Report a about a . + + to be reported. + + + + Attempts to compute or get the cached value provided by the given for the given . + Note that the pair {, } acts as the key. + Reusing the same instance across analyzer actions and/or analyzer instances can improve the overall analyzer performance by avoiding recomputation of the values. + + The type of the value associated with the key. + for which the value is queried. + Provider that computes the underlying value. + Value associated with the key. + Returns true on success, false otherwise. + + + + Attempts to compute or get the cached value provided by the given for the given . + Note that the pair {, } acts as the key. + Reusing the same instance across analyzer actions and/or analyzer instances can improve the overall analyzer performance by avoiding recomputation of the values. + + The type of the value associated with the key. + for which the value is queried. + Provider that computes the underlying value. + Value associated with the key. + Returns true on success, false otherwise. + + + + Context for a semantic model action. + A semantic model action operates on the of a code document, and can use a to report s about the model. + + + + + that is the subject of the analysis. + + + + + Options specified for the analysis. + + + + + Token to check for requested cancellation of the analysis. + + + + + Report a about a . + + to be reported. + + + + Context for a symbol action. + A symbol action can use a to report s about an . + + + + + that is the subject of the analysis. + + + + + containing the . + + + + + Options specified for the analysis. + + + + + Token to check for requested cancellation of the analysis. + + + + + Report a about an . + + to be reported. + + + + Context for a code block start action. + A code block start action can use a to register actions to be executed + at any of: + + + completion of semantic analysis of a method body or an expression appearing outside a method body, or + + + completion of semantic analysis of a syntax node. + + + + + + + Method body or expression subject to analysis. + + + + + for which the code block provides a definition or value. + + + + + that can provide semantic information about the s in the code block. + + + + + Options specified for the analysis. + + + + + Token to check for requested cancellation of the analysis. + + + + + Register an action to be executed at the end of semantic analysis of a method body or an expression appearing outside a method body. + A code block end action reports s about code blocks. + + Action to be executed at the end of semantic analysis of a code block. + + + + Register an action to be executed at completion of semantic analysis of a with an appropriate Kind. + A syntax node action can report s about s, and can also collect + state information to be used by other syntax node actions or code block end actions. + + Action to be executed at completion of semantic analysis of a . + Action will be executed only if a 's Kind matches one of the syntax kind values. + + + + Register an action to be executed at completion of semantic analysis of a with an appropriate Kind. + A syntax node action can report s about s, and can also collect + state information to be used by other syntax node actions or code block end actions. + + Action to be executed at completion of semantic analysis of a . + Action will be executed only if a 's Kind matches one of the syntax kind values. + + + + Context for a code block action or code block end action. + A code block action or code block end action can use a to report s about a code block. + + + + + Code block that is the subject of the analysis. + + + + + for which the code block provides a definition or value. + + + + + that can provide semantic information about the s in the code block. + + + + + Options specified for the analysis. + + + + + Token to check for requested cancellation of the analysis. + + + + + Report a about a code block. + + to be reported. + + + + Context for an operation block start action. + An operation block start action can use an to register actions to be executed + at any of: + + + completion of semantic analysis of a method body or an expression appearing outside a method body, or + + + completion of semantic analysis of an operation. + + + + + + + Method body and/or expressions subject to analysis. + + + + + for which the code block provides a definition or value. + + + + + containing the operation block. + + + + + Options specified for the analysis. + + + + + Token to check for requested cancellation of the analysis. + + + + + Register an action to be executed at the end of semantic analysis of a method body or an expression appearing outside a method body. + A code block end action reports s about code blocks. + + Action to be executed at the end of semantic analysis of a code block. + + + + Register an action to be executed at completion of semantic analysis of an operation with an appropriate Kind. + An operation action can report s about s, and can also collect + state information to be used by other operation actions or operation block end actions. + + Action to be executed at completion of semantic analysis of an . + Action will be executed only if an 's Kind matches one of the operation kind values. + + + + Register an action to be executed at completion of semantic analysis of an with an appropriate Kind. + An operation action can report s about s, and can also collect + state information to be used by other operation actions or operation block end actions. + + Action to be executed at completion of semantic analysis of an . + Action will be executed only if an 's Kind matches one of the operation kind values. + + + + Context for an operation block action or operation block end action. + An operation block action or operation block end action can use an to report s about an operation block. + + + + + Code block that is the subject of the analysis. + + + + + for which the code block provides a definition or value. + + + + + containing the operation block. + + + + + Options specified for the analysis. + + + + + Token to check for requested cancellation of the analysis. + + + + + Report a about a code block. + + to be reported. + + + + Context for a syntax tree action. + A syntax tree action can use a to report s about a for a code document. + + + + + that is the subject of the analysis. + + + + + Options specified for the analysis. + + + + + Token to check for requested cancellation of the analysis. + + + + + Report a about a . + + to be reported. + + + + Context for a syntax node action. + A syntax node action can use a to report s for a . + + + + + that is the subject of the analysis. + + + + + for the declaration containing the syntax node. + + + + + that can provide semantic information about the . + + + + + containing the . + + + + + Options specified for the analysis. + + + + + Token to check for requested cancellation of the analysis. + + + + + Report a about a . + + to be reported. + + + + Context for an operation action. + An operation action can use an to report s for an . + + + + + that is the subject of the analysis. + + + + + for the declaration containing the operation. + + + + + containing the . + + + + + Options specified for the analysis. + + + + + Token to check for requested cancellation of the analysis. + + + + + Report a about a . + + to be reported. + + + + The base type for diagnostic analyzers. + + + + + Returns a set of descriptors for the diagnostics that this analyzer is capable of producing. + + + + + Called once at session start to register actions in the analysis context. + + + + + + A queue whose enqueue and dequeue operations can be performed in parallel. + + The type of values kept by the queue. + + + + The number of unconsumed elements in the queue. + + + + + Adds an element to the tail of the queue. This method will throw if the queue + is completed. + + The queue is already completed. + The value to add. + + + + Tries to add an element to the tail of the queue. This method will return false if the queue + is completed. + + The value to add. + + + + Attempts to dequeue an existing item and return whether or not it was available. + + + + + Gets a value indicating whether the queue has completed. + + + + + Signals that no further elements will be enqueued. All outstanding and future + Dequeue Task will be cancelled. + + The queue is already completed. + + + + Same operation as except it will not + throw if the queue is already completed. + + Whether or not the operation succeeded. + + + + Gets a task that transitions to a completed state when or + is called. This transition will not happen synchronously. + + This Task will not complete until it has completed all existing values returned + from . + + + + + Gets a task whose result is the element at the head of the queue. If the queue + is empty, the returned task waits for an element to be enqueued. If + is called before an element becomes available, the returned task is cancelled. + + + + + + Note: The early cancellation behavior is intentional. + + + + + Place this attribute onto a type to cause it to be considered a diagnostic analyzer. + + + + + The source languages to which this analyzer applies. See . + + + + + Attribute constructor used to specify automatic application of a diagnostic analyzer. + + One language to which the analyzer applies. + Additional languages to which the analyzer applies. See . + + + + Implements a map from an assembly identity to a value. The map allows to look up the value by an identity + that either exactly matches the original identity key, or corresponds to a key with the lowest version among identities + with higher version than the requested identity key. + + + + + Represents a visitor that visits only the single IOperation + passed into its Visit method. + + + + + Represents a visitor that visits only the single IOperation + passed into its Visit method with an additional argument of the type specified by the + parameter and produces a value of the type specified by + the parameter. + + + The type of the additional argument passed to this visitor's Visit method. + + + The type of the return value of this visitor's Visit method. + + + + + Represents a that descends an entire tree + visiting each IOperation and its child IOperation nodes in depth-first order. + + + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Arguments of the invocation, excluding the instance argument. Arguments are in parameter order, + and params/ParamArray arguments have been collected into arrays. Default values are supplied for + optional arguments missing in source. + + + + + Find the argument supplied for a given parameter of the target method. + + Parameter of the target method. + Argument corresponding to the parameter. + + + + Represents a C# or VB method invocation. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Method to be invoked. + + + + + 'This' or 'Me' instance to be supplied to the method, or null if the method is static. + + + + + True if the invocation uses a virtual mechanism, and false otherwise. + + + + + Arguments of the invocation, excluding the instance argument. Arguments are in the order specified in source, + and params/ParamArray arguments have been collected into arrays. Arguments are not present + unless supplied in source. + + + + + Represents an argument in a method invocation. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Kind of argument. + + + + + Parameter the argument matches. + + + + + Value supplied for the argument. + + + + + Conversion applied to the argument value passing it into the target method. Applicable only to VB Reference arguments. + + + + + Conversion applied to the argument value after the invocation. Applicable only to VB Reference arguments. + + + + + Kinds of arguments. + + + + + Argument is specified positionally and matches the parameter of the same ordinality. + + + + + Argument is specified by name and matches the parameter of the same name. + + + + + Argument becomes an element of an array that matches a trailing C# params or VB ParamArray parameter. + + + + + Argument was omitted in source but has a default value supplied automatically. + + + + + Represents a reference to an array element. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Array to be indexed. + + + + + Indices that specify an individual element. + + + + + Represents a reference through a pointer. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Pointer to be dereferenced. + + + + + Represents a reference to a declared local variable. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Referenced local variable. + + + + + Represents a reference to a parameter. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Referenced parameter. + + + + + Represents a reference to a local variable synthesized by language analysis. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Kind of the synthetic local. + + + + + Statement defining the lifetime of the synthetic local. + + + + + Kinds of synthetic local references. + + + + + Created to capture the step value of a VB for loop. + + + + + Created to capture the limit value of a VB for loop. + + + + + Represents a C# this or base expression, or a VB Me, MyClass, or MyBase expression. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + + Kind of instance reference. + + + + Indicates an implicit this or Me expression. + + + Indicates an explicit this or Me expression. + + + Indicates an explicit base or MyBase expression. + + + Indicates an explicit MyClass expression. + + + + Represents a reference to a member of a class, struct, or interface. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Instance of the type. Null if the reference is to a static/shared member. + + + + + Referenced member. + + + + + Represents a reference to a field. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Referenced field. + + + + + Represents a reference to a method other than as the target of an invocation. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Referenced method. + + + + + Indicates whether the reference uses virtual semantics. + + + + + Represents a reference to a property. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Referenced property. + + + + + Represents a reference to an indexed property. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Represents a reference to an event. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Referenced event. + + + + + Represents a binding of an event. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Event being bound. + + + + + Instance used to refer to the event being bound. + + + + + Handler supplied for the event. + + + + + True for adding a binding, false for removing one. + + + + + Represents an expression that includes a ? or ?. conditional access instance expression. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Expression to be evaluated if the conditional instance is non null. + + + + + Expresson that is conditionally accessed. + + + + + Represents the value of a conditionally-accessed expression within an expression containing a conditional access. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Represents a general placeholder when no more specific kind of placeholder is available. + A placeholder is an expression whose meaning is inferred from context. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Represents a unary, binary, relational, or conversion operation that can use an operator method. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + True if and only if the operation is performed by an operator method. + + + + + Operation method used by the operation, null if the operation does not use an operator method. + + + + + Represents an operation with one operand. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Kind of unary operation. + + + + + Single operand. + + + + + Kinds of unary operations. + + + + + Represents an operation with two operands that produces a result with the same type as at least one of the operands. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Kind of binary operation. + + + + + Left operand. + + + + + Right operand. + + + + + Kinds of binary operations. + + + + + Get unary operation kind independent of data type. + + + + + Get unary operation kind independent of data type. + + + + + Get unary operand kind. + + + + + Get unary operand kind. + + + + + Get binary operation kind independent of data type. + + + + + Get binary operation kind independent of data type. + + + + + Get binary operand kinds. + + + + + Get binary operand kinds. + + + + + Represents a conversion operation. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Value to be converted. + + + + + Kind of conversion. + + + + + True if and only if the conversion is indicated explicity by a cast operation in the source code. + + + + + Kinds of conversions. + + + + + Conversion is defined by the underlying type system and throws an exception if it fails. + + + + + Conversion is defined by the underlying type system and produces a null result if it fails. + + + + + Conversion has VB-specific semantics. + + + + + Conversion has C#-specific semantics. + + + + + Conversion is implemented by a conversion operator method. + + + + + Conversion is invalid. + + + + + Represents a C# ?: or VB If expression. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Condition to be tested. + + + + + Value evaluated if the Condition is true. + + + + + Value evaluated if the Condition is false. + + + + + Represents a null-coalescing expression. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Value to be unconditionally evaluated. + + + + + Value to be evaluated if Primary evaluates to null/Nothing. + + + + + Represents an expression that tests if a value is of a specific type. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Value to test. + + + + + Type for which to test. + + + + + Represents an expression operating on a type. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Type operand. + + + + + Represents a SizeOf expression. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Represents a TypeOf expression. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Represents a lambda expression. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Signature of the lambda. + + + + + Body of the lambda. + + + + + Represents a textual literal numeric, string, etc. expression. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Textual representation of the literal. + + + + + Represents an await expression. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Value to be awaited. + + + + + Represents an expression that creates a pointer value by taking the address of a reference. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Addressed reference. + + + + + Represents a new/New expression. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Constructor to be invoked on the created instance. + + + + + Explicitly-specified member initializers. + + + + + Represents an initializer for a field, property, or parameter. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Represents an initialization of a field. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Initialized fields. There can be multiple fields for Visual Basic fields declared with As New. + + + + + Represents an initialization of a property. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Set method used to initialize the property. + + + + + Represents an initialization of a parameter at the point of declaration. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Initialized parameter. + + + + + Represents the creation of an array instance. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Element type of the created array instance. + + + + + Sizes of the dimensions of the created array instance. + + + + + Values of elements of the created array instance. + + + + + Represents the initialization of an array instance. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Values to initialize array elements. + + + + + Represents an assignment expression. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Target of the assignment. + + + + + Value to be assigned to the target of the assignment. + + + + + Represents an assignment expression that includes a binary operation. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Kind of binary operation. + + + + + Represents an increment expression. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Kind of increment. + + + + + Represents a parenthesized expression. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Operand enclosed in parentheses. + + + + + Represents a late-bound reference to a member of a class or struct. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Instance used to bind the member reference. + + + + + Name of the member. + + + + + Represents an argument value that has been omitted in an invocation. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Represents a block scope. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Statements contained within the block. + + + + + Local declarations contained within the block. + + + + + Represents a local variable declaration statement. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Variables declared by the statement. + + + + + Represents a local variable declaration. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Variable declared by the declaration. + + + + + Initializer of the variable. + + + + + Represents a C# switch or VB Select Case statement. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Value to be switched upon. + + + + + Cases of the switch. + + + + + Represents a C# case or VB Case statement. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Clauses of the case. For C# there is one clause per case, but for VB there can be multiple. + + + + + Statements of the case. + + + + + Represents a clause of a C# case or a VB Case. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Kind of the clause. + + + + + Kinds of cases. + + + + + Indicates case x in C# or Case x in VB. + + + + + Indicates Case Is op x in VB. + + + + + Indicates Case x To Y in VB. + + + + + Indicates default in C# or Case Else in VB. + + + + + Represents case x in C# or Case x in VB. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Case value. + + + + + Relational operator used to compare the switch value with the case value. + + + + + Represents Case Is op x in VB. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Case value. + + + + + Relational operator used to compare the switch value with the case value. + + + + + Represents Case x To y in VB. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Minimum value of the case range. + + + + + Maximum value of the case range. + + + + + Represents an if statement in C# or an If statement in VB. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Condition of the if statement. For C# there is naturally one clause per if, but for VB If statements with multiple clauses are rewritten to have only one. + + + + + Statement executed if the condition is true. + + + + + Statement executed if the condition is false. + + + + + Represents a C# while, for, foreach, or do statement, or a VB While, For, For Each, or Do statement. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Kind of the loop. + + + + + Body of the loop. + + + + + Kinds of loops. + + + + + Indicates a C# while or do loop, or a VB While or Do loop. + + + + + Indicates a C# for loop or a VB For loop. + + + + + Indicates a C# foreach loop or a VB For Each loop. + + + + + Represents a C# while, for, or do statement, or a VB While, For, or Do statement. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Condition of the loop. + + + + + Represents a C# while or do statement, or a VB While or Do statement. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + True if the loop test executes at the top of the loop; false if the loop test executes at the bottom of the loop. + + + + + True if the loop is a while loop; false if the loop is an until loop. + + + + + Represents a C# for statement or a VB For statement. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Statements to execute before entry to the loop. For C# these come from the first clause of the for statement. For VB these initialize the index variable of the For statement. + + + + + Statements to execute at the bottom of the loop. For C# these come from the third clause of the for statement. For VB these increment the index variable of the For statement. + + + + + Declarations local to the loop. + + + + + Represents a C# foreach statement or a VB For Each staement. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Iteration variable of the loop. + + + + + Collection value over which the loop iterates. + + + + + Represents a C# or VB label statement. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Label that can be the target of branches. + + + + + Statement that has been labeled. + + + + + Represents a C# goto, break, or continue statement, or a VB GoTo, Exit ***, or Continue *** statement + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Label that is the target of the branch. + + + + + Kind of the branch. + + + + + Represents a C# throw or a VB Throw statement. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Value to be thrown. + + + + + Represents a C# return or a VB Return statement. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Value to be returned. + + + + + Represents a C# lock or a VB SyncLock statement. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Value to be locked. + + + + + Body of the lock, to be executed while holding the lock. + + + + + Represents a C# try or a VB Try statement. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Body of the try, over which the handlers are active. + + + + + Catch clauses of the try. + + + + + Finally handler of the try. + + + + + Represents a C# catch or VB Catch clause. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Body of the exception handler. + + + + + Type of exception to be handled. + + + + + Filter expression to be executed to determine whether to handle the exception. + + + + + Symbol for the local catch variable bound to the caught exception. + + + + + Represents a C# using or VB Using statement. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Body of the using, over which the resources of the using are maintained. + + + + + Declaration introduced by the using statement. Null if the using statement does not declare any variables. + + + + + Resource held by the using. Can be null if Declaration is not null. + + + + + Represents a C# fixed staement. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Variables to be fixed. + + + + + Body of the fixed, over which the variables are fixed. + + + + + Represents a C# or VB statement that consists solely of an expression. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Expression of the statement. + + + + + Represents a VB With statement. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Body of the with. + + + + + Value to whose members leading-dot-qualified references within the with body bind. + + + + + Reprsents an empty statement. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Represents a VB Stop statement. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Represents a VB End statemnt. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Represents a syntactically or semantically invalid C# or VB statement. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + A set of utilities for converting from a decimal floating-point literal string to its IEEE float + or double representation, which coniders all digits signficant and correctly rounds according to + the IEEE round-to-nearest-ties-to-even mode. This code does not support a leading sign character, + as that is not part of the C# or VB floating-point literal lexical syntax. + + If you change this code, please run the set of long-running random tests in the solution + RandomRealParserTests.sln. That solution is not included in Roslyn.sln as it is Windows-specific. + + + + + Try parsing a correctly-formatted double floating-point literal into the nearest representable double + using IEEE round-to-nearest-ties-to-even rounding mode. Behavior is not defined for inputs that are + not valid C# floating-point literals. + + The decimal floating-point constant's string + The nearest double value, if conversion succeeds + True if the input was converted; false if there was an overflow + + + + Try parsing a correctly-formatted float floating-point literal into the nearest representable float + using IEEE round-to-nearest-ties-to-even rounding mode. Behavior is not defined for inputs that are + not valid C# floating-point literals. + + The float floating-point constant's string + The nearest float value, if conversion succeeds + True if the input was converted; false if there was an overflow + + + + Properties of an IEEE floating-point representation. + + + + + Converts the floating point value 0.mantissa * 2^exponent into the + correct form for the FloatingPointType and stores the bits of the resulting value + into the result object. + The caller must ensure that the mantissa and exponent are correctly computed + such that either [1] the most significant bit of the mantissa is in the + correct position for the FloatingType, or [2] the exponent has been correctly + adjusted to account for the shift of the mantissa that will be required. + + This function correctly handles range errors and stores a zero or infinity in + the result object on underflow and overflow errors, respectively. This + function correctly forms denormal numbers when required. + + If the provided mantissa has more bits of precision than can be stored in the + result object, the mantissa is rounded to the available precision. Thus, if + possible, the caller should provide a mantissa with at least one more bit of + precision than is required, to ensure that the mantissa is correctly rounded. + (The caller should not round the mantissa before calling this function.) + + The bits of the mantissa + The exponent + Whether there are any nonzero bits past the supplied mantissa + Where the bits of the floating-point number are stored + A status indicating whether the conversion succeeded and why + + + + Properties of a C# float. + + + + + Properties of a C# double. + + + + + This type is used to hold a partially-parsed string representation of a + floating point number. The number is stored in the following form: +
+                0.Mantissa * 10^Exponent
+             
+ The Mantissa buffer stores the mantissa digits as characters in a string. + The MantissaCount gives the number of digits present in the Mantissa buffer. + There shall be neither leading nor trailing zero digits in the Mantissa. + Note that this represents only nonnegative floating-point literals; the + negative sign in C# and VB is actually a separate unary negation operator. +
+
+ + + Create a DecimalFloatingPointString from a string representing a floating-point literal. + + The text of the floating-point literal + + + + Convert a DecimalFloatingPointString to the bits of the given floating-point type. + + + + + This function is part of the fast track for integer floating point strings. + It takes an integer stored as an array of bytes (lsb first) and converts the value into its FloatingType + representation, storing the bits into "result". If the value is not + representable, +/-infinity is stored and overflow is reported (since this + function only deals with integers, underflow is impossible). + + the bits of the integer, least significant bits first + the number of bits of precision in integerValueAsBytes + whether there are nonzero digits after the decimal + the kind of real number to build + the result + An indicator of the kind of result + + + + Parse a sequence of digits into a BigInteger. + + The DecimalFloatingPointString containing the digits in its Mantissa + The index of the first digit to convert + The index just past the last digit to convert + The BigInteger result + + + + Return the number of significant bits set. + + + + + Return the number of significant bits set. + + + + + Return the number of significant bits set. + + + + + Return the number of significant bits set. + + + + + Computes value / 2^shift, then rounds the result according to the current + rounding mode. By the time we call this function, we will already have + discarded most digits. The caller must pass true for has_zero_tail if + all discarded bits were zeroes. + + The value to shift + The amount of shift + Whether there are any less significant nonzero bits in the value + + + + + Determines whether a mantissa should be rounded up in the + round-to-nearest-ties-to-even mode given [1] the value of the least + significant bit of the mantissa, [2] the value of the next bit after + the least significant bit (the "round" bit) and [3] whether any + trailing bits after the round bit are set. + + The mantissa is treated as an unsigned integer magnitude. + + For this function, "round up" is defined as "increase the magnitude" of the + mantissa. + + the least-significant bit of the representable value + the bit following the least-significant bit + true if there are any (less significant) bits set following roundBit + + + + + Multiply a BigInteger by the given power of two. + + The BigInteger to multiply by a power of two and replace with the product + The power of two to multiply it by + + + + Multiply a BigInteger by the given power of ten. + + The BigInteger to multiply by a power of ten and replace with the product + The power of ten to multiply it by + + + + Convert a float value to the bits of its representation + + + + + Convert the bits of its representation to a float + + + + + A union used to convert between a float and the bits of its representation + + + + + Adds aliases of a specified reference to the merged set of aliases. + Consider the following special cases: + + o {} + {} = {} + If neither reference has any aliases then the result has no aliases. + + o {A} + {} = {A, global} + {} + {A} = {A, global} + + If one and only one of the references has aliases we add the global alias since the + referenced declarations should now be accessible both via existing aliases + as well as unqualified. + + o {A, A} + {A, B, B} = {A, A, B, B} + We preserve dups in each alias array, but avoid making more dups when merging. + + + + + Try to retrieve the public key from a crypto blob. + + + Can be either a PUBLICKEYBLOB or PRIVATEKEYBLOB. The BLOB must /// be unencrypted. + + + + + Represents a source assembly symbol exposed by the compiler. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Interface implemented by any node that is the root 'CompilationUnit' of a . i.e. + any node returned by where + is true will implement this interface. + + This interface provides a common way to both easily find the root of a + given any , as well as a common way for handling the special + that is needed to store all final trivia in a + that is not owned by any other . + + + + + Represents the end of the source file. This may have + (whitespace, comments, directives) attached to it. + + + + + Represents structured trivia that contains skipped tokens. This is implemented by + and + . + + + + + Append chunk to writer (may reuse char array) + + + + + Encoding to use when there is no byte order mark (BOM) on the stream. This encoder may throw a + if the stream contains invalid UTF-8 bytes. + + + + + Encoding to use when UTF-8 fails. We try to find the following, in order, if available: + 1. The default ANSI codepage + 2. CodePage 1252. + 3. Latin1. + + + + + Initializes an instance of from the provided stream. This version differs + from in two ways: + 1. It attempts to minimize allocations by trying to read the stream into a byte array. + 2. If is null, it will first try UTF8 and, if that fails, it will + try CodePage 1252. If CodePage 1252 is not available on the system, then it will try Latin1. + + The stream containing encoded text. + + Specifies an encoding to be used if the actual encoding can't be determined from the stream content (the stream doesn't start with Byte Order Mark). + If not specified auto-detect heuristics are used to determine the encoding. If these heuristics fail the decoding is assumed to be Encoding.Default. + Note that if the stream starts with Byte Order Mark the value of is ignored. + + Hash algorithm used to calculate document checksum. + + The stream content can't be decoded using the specified , or + is null and the stream appears to be a binary file. + + An IO error occurred while reading from the stream. + + + + Try to create a from the given stream using the given encoding. + + The input stream containing the encoded text. The stream will not be closed. + The expected encoding of the stream. The actual encoding used may be different if byte order marks are detected. + The checksum algorithm to use. + Throw if binary (non-text) data is detected. + The decoded from the stream. + The decoder was unable to decode the stream with the given encoding. + + internal for unit testing + + + + + Some streams are easily represented as byte arrays. + + The stream + + The contents of as a byte array or null if the stream can't easily + be read into a byte array. + + + + + If the MemoryStream was created with publiclyVisible=true, then we can access its buffer + directly and save allocations in StreamReader. The input MemoryStream is not closed on exit. + + True if a byte array could be created. + + + + Read the contents of a FileStream into a byte array. + + The FileStream with encoded text. + A byte array filled with the contents of the file. + True if a byte array could be created. + + + + Computes line starts faster given already computed line starts from text before the change. + + + + + A composite of a sequence of s. + + + + + Validates the arguments passed to against the published contract. + + True if should bother to proceed with copying. + + + + Reduces the number of segments toward the target number of segments, + if the number of regments is deemed to be too large (beyond the maximum). + + + + + Determines the segment size to use for call to CombineSegments, that will result in the segment count + being reduced to less than or equal to the target segment count. + + + + + Determines the segment count that would result if the segments of size less than or equal to + the specified segment size were to be combined. + + + + + Combines contiguous segments with lengths that are each less than or equal to the specified segment size. + + + + + Compute total text length and total size of storage buffers held + + + + + Trim excessive inaccessible text. + + + + + A optimized for very large sources. The text is stored as + a list of chunks (char arrays). + + + + + internal for unit testing + + + + + Check for occurrence of two consecutive NUL (U+0000) characters. + This is unlikely to appear in genuine text, so it's a good heuristic + to detect binary files. + + + + + Called from to initialize the . Thereafter, + the collection is cached. + + A new representing the individual text lines. + + + + Immutable representation of a line number and position within a SourceText instance. + + + + + A that represents position 0 at line 0. + + + + + Initializes a new instance of a with the given line and character. + + + The line of the line position. The first line in a file is defined as line 0 (zero based line numbering). + + + The character position in the line. + + or is less than zero. + + + + The line number. The first line in a file is defined as line 0 (zero based line numbering). + + + + + The character position within the line. + + + + + Determines whether two are the same. + + + + + Determines whether two are different. + + + + + Determines whether two are the same. + + The object to compare. + + + + Determines whether two are the same. + + The object to compare. + + + + Provides a hash function for . + + + + + Provides a string representation for . + + 0,10 + + + + Immutable span represented by a pair of line number and index within the line. + + + + + Creates . + + Start position. + End position. + precedes . + + + + Gets the start position of the span. + + + + + Gets the end position of the span. + + + + + Provides a string representation for . + + (0,0)-(5,6) + + + + Specifies a hash algorithms used for hashing source files. + + + + + No algorithm specified. + + + + + Secure Hash Algorithm 1. + + + + + Secure Hash Algorithm 2 with a hash size of 256 bits. + + + + + An abstraction of source text. + + + + + Constructs a from text in a string. + + Text. + + Encoding of the file that the was read from or is going to be saved to. + null if the encoding is unspecified. + If the encoding is not specified the resulting isn't debuggable. + If an encoding-less is written to a file a shall be used as a default. + + + Hash algorithm to use to calculate checksum of the text that's saved to PDB. + + is null. + is not supported. + + + + Constructs a from stream content. + + Stream. The stream must be seekable. + + Data encoding to use if the stream doesn't start with Byte Order Mark specifying the encoding. + if not specified. + + + Hash algorithm to use to calculate checksum of the text that's saved to PDB. + + If the decoded text contains at least two consecutive NUL + characters, then an is thrown. + is null. + + doesn't support reading or seeking. + is not supported. + + If the given encoding is set to use a throwing decoder as a fallback + Two consecutive NUL characters were detected in the decoded text and was true. + An I/O error occurs. + Reads from the beginning of the stream. Leaves the stream open. + + + + Constructs a from a byte array. + + The encoded source buffer. + The number of bytes to read from the buffer. + + Data encoding to use if the encoded buffer doesn't start with Byte Order Mark. + if not specified. + + + Hash algorithm to use to calculate checksum of the text that's saved to PDB. + + If the decoded text contains at least two consecutive NUL + characters, then an is thrown. + The decoded text. + The is null. + The is negative or longer than the . + is not supported. + If the given encoding is set to use a throwing decoder as a fallback + Two consecutive NUL characters were detected in the decoded text and was true. + + + + Decode text from a stream. + + The stream containing encoded text. + The encoding to use if an encoding cannot be determined from the byte order mark. + The actual encoding used. + The decoded text. + If the given encoding is set to use a throwing decoder as a fallback + + + + Decode text from a byte array. + + The byte array containing encoded text. + The count of valid bytes in . + The encoding to use if an encoding cannot be determined from the byte order mark. + The actual encoding used. + The decoded text. + If the given encoding is set to use a throwing decoder as a fallback + + + + Check for occurrence of two consecutive NUL (U+0000) characters. + This is unlikely to appear in genuine text, so it's a good heuristic + to detect binary files. + + + internal for unit testing + + + + + Hash algorithm to use to calculate checksum of the text that's saved to PDB. + + + + + Encoding of the file that the text was read from or is going to be saved to. + null if the encoding is unspecified. + + + If the encoding is not specified the source isn't debuggable. + If an encoding-less is written to a file a shall be used as a default. + + + + + The length of the text in characters. + + + + + The size of the storage representation of the text (in characters). + This can differ from length when storage buffers are reused to represent fragments/subtext. + + + + + Returns a character at given position. + + The position to get the character from. + The character. + When position is negative or + greater than . + + + + Copy a range of characters from this SourceText to a destination array. + + + + + The container of this . + + + + + Gets a that contains the characters in the specified span of this text. + + + + + Returns a that has the contents of this text including and after the start position. + + + + + Write this to a text writer. + + + + + Write a span of text to a text writer. + + + + + Provides a string representation of the SourceText. + + + + + Gets a string containing the characters in specified span. + + When given span is outside of the text range. + + + + Constructs a new SourceText from this text with the specified changes. + + + + + Constructs a new SourceText from this text with the specified changes. + + + + + Returns a new SourceText with the specified span of characters replaced by the new text. + + + + + Returns a new SourceText with the specified range of characters replaced by the new text. + + + + + Gets the set of that describe how the text changed + between this text an older version. This may be multiple detailed changes + or a single change encompassing the entire text. + + + + + Gets the set of that describe how the text changed + between this text and an older version. This may be multiple detailed changes + or a single change encompassing the entire text. + + + + + The collection of individual text lines. + + + + + Called from to initialize the . Thereafter, + the collection is cached. + + A new representing the individual text lines. + + + + Compares the content with content of another . + + + + + Implements equality comparison of the content of two different instances of . + + + + + Detect an encoding by looking for byte order marks. + + A buffer containing the encoded text. + The length of valid data in the buffer. + The length of any detected byte order marks. + The detected encoding or null if no recognized byte order mark was present. + + + + An object that contains an instance of an SourceText and raises events when its current instance + changes. + + + + + The current text instance. + + + + + Raised when the current text instance changes. + + + + + A read-only, non-seekable over a . + + + + + Implementation of based on a input + + + + + Underlying string on which this SourceText instance is based + + + + + Underlying string which is the source of this SourceText instance + + + + + The length of the text represented by . + + + + + Returns a character at given position. + + The position to get the character from. + The character. + When position is negative or + greater than . + + + + Provides a string representation of the StringBuilderText located within given span. + + When given span is outside of the text range. + + + + Implementation of SourceText based on a input + + + + + Underlying string which is the source of this instance + + + + + The length of the text represented by . + + + + + Returns a character at given position. + + The position to get the character from. + The character. + When position is negative or + greater than . + + + + Provides a string representation of the StringText located within given span. + + When given span is outside of the text range. + + + + An that represents a subrange of another . + + + + + Describes a single change when a particular span is replaced with a new text. + + + + + The original span of the changed text. + + + + + The new text. + + + + + Initializes a new instance of + + The original span of the changed text. + The new text. + + + + Provides a string representation for . + + + + + Converts a to a . + + + + + + An empty set of changes. + + + + + Represents state for a TextChanged event. + + + + + Initializes an instance of . + + The text before the change. + The text after the change. + A non-empty set of ranges for the change. + + + + Initializes an instance of . + + The text before the change. + The text after the change. + A non-empty set of ranges for the change. + + + + Gets the text before the change. + + + + + Gets the text after the change. + + + + + Gets the set of ranges for the change. + + + + + Represents the change to a span of text. + + + + + The span of text before the edit which is being changed + + + + + Width of the span after the edit. A 0 here would represent a delete + + + + + Initializes a new instance of . + + + + + + + Compares current instance of to another. + + + + + Compares current instance of to another. + + + + + Provides hash code for current instance of . + + + + + + Determines if two instances of are same. + + + + + Determines if two instances of are different. + + + + + An empty set of changes. + + + + + Collapse a set of s into a single encompassing range. If + the set of ranges provided is empty, an empty range is returned. + + + + + Information about the character boundaries of a single line of text. + + + + + Creates a instance. + + The source text. + The span of the line. + An instance of . + The span does not represent a text line. + + + + Gets the source text. + + + + + Gets the zero-based line number. + + + + + Gets the start position of the line. + + + + + Gets the end position of the line not including the line break. + + + + + Gets the end position of the line including the line break. + + + + + Gets the line span not including the line break. + + + + + Gets the line span including the line break. + + + + + Abstract base class for collections. + + + + + The count of items in the collection + + + + + Gets the item at the specified index. + + + + + The index of the TextLine that encompasses the character position. + + + + + Gets a that encompasses the character position. + + + + + + + Gets a corresponding to a character position. + + + + + Convert a to a . + + + + + Convert a to a position. + + + + + Convert a to . + + + + + Immutable abstract representation of a span of text. For example, in an error diagnostic that reports a + location, it could come from a parsed string, text from a tool editor buffer, etc. + + + + + Creates a TextSpan instance beginning with the position Start and having the Length + specified with . + + + + + Start point of the span. + + + + + End of the span. + + + + + Length of the span. + + + + + Determines whether or not the span is empty. + + + + + Determines whether the position lies within the span. + + + The position to check. + + + true if the position is greater than or equal to Start and strictly less + than End, otherwise false. + + + + + Determines whether falls completely within this span. + + + The span to check. + + + true if the specified span falls completely within this span, otherwise false. + + + + + Determines whether overlaps this span. Two spans are considered to overlap + if they have positions in common and neither is empty. Empty spans do not overlap with any + other span. + + + The span to check. + + + true if the spans overlap, otherwise false. + + + + + Returns the overlap with the given span, or null if there is no overlap. + + + The span to check. + + + The overlap of the spans, or null if the overlap is empty. + + + + + Determines whether intersects this span. Two spans are considered to + intersect if they have positions in common or the end of one span + coincides with the start of the other span. + + + The span to check. + + + true if the spans intersect, otherwise false. + + + + + Determines whether intersects this span. + A position is considered to intersect if it is between the start and + end positions (inclusive) of this span. + + + The position to check. + + + true if the position intersects, otherwise false. + + + + + Returns the intersection with the given span, or null if there is no intersection. + + + The span to check. + + + The intersection of the spans, or null if the intersection is empty. + + + + + Creates a new from and positions as opposed to a position and length. + + The returned TextSpan contains the range with inclusive, + and exclusive. + + + + + Determines if two instances of are the same. + + + + + Determines if two instances of are different. + + + + + Determines if current instance of is equal to another. + + + + + Determines if current instance of is equal to another. + + + + + Produces a hash code for . + + + + + Provides a string representation for . + + + + + Compares current instance of with another. + + + + + Holder for common Text Utility functions and values + + + + + Return startLineBreak = index-1, lengthLineBreak = 2 if there is a \r\n at index-1 + Return startLineBreak = index, lengthLineBreak = 1 if there is a 1-char newline at index + Return startLineBreak = index+1, lengthLineBreak = 0 if there is no newline at index. + + + + + Determine if the character in question is any line break character + + + + + Defines a set of helper methods to classify Unicode characters. + + + + + Returns true if the Unicode character can be a part of an identifier. + + The Unicode character. + + + + Check that the name is a valid Unicode identifier. + + + + + Returns true if the Unicode character is a formatting character (Unicode class Cf). + + The Unicode character. + + + + Returns true if the Unicode character is a formatting character (Unicode class Cf). + + The Unicode character. + + + + A strongly-typed resource class, for looking up localized strings, etc. + + + + + Returns the cached ResourceManager instance used by this class. + + + + + Overrides the current thread's CurrentUICulture property for all + resource lookups using this strongly typed resource class. + + + + + Looks up a localized string similar to Absolute path expected.. + + + + + Looks up a localized string similar to Analyzer Driver Failure. + + + + + Looks up a localized string similar to Analyzer driver threw an exception of type '{0}' with message '{1}'.. + + + + + Looks up a localized string similar to Analyzer driver threw the following exception: + '{0}'.. + + + + + Looks up a localized string similar to Time (s). + + + + + Looks up a localized string similar to Analyzer. + + + + + Looks up a localized string similar to Total analyzer execution time: {0} seconds.. + + + + + Looks up a localized string similar to Argument cannot be empty.. + + + + + Looks up a localized string similar to Argument cannot have a null element.. + + + + + Looks up a localized string similar to Arrays with more than one dimension cannot be serialized.. + + + + + Looks up a localized string similar to assembly. + + + + + Looks up a localized string similar to Assembly file not found. + + + + + Looks up a localized string similar to Assembly must have at least one module.. + + + + + Looks up a localized string similar to Assembly signing not supported.. + + + + + Looks up a localized string similar to Can't alias a module.. + + + + + Looks up a localized string similar to Can't create a reference to a module.. + + + + + Looks up a localized string similar to Can't create a reference to a submission.. + + + + + Looks up a localized string similar to Can't embed interop types from module.. + + + + + Looks up a localized string similar to Can't create a module reference to an assembly.. + + + + + Looks up a localized string similar to Can't create a metadata reference to an assembly without location.. + + + + + Looks up a localized string similar to Can't create a metadata reference to a dynamic assembly.. + + + + + Looks up a localized string similar to The changes must be ordered and not overlapping.. + + + + + Looks up a localized string similar to class. + + + + + Looks up a localized string similar to Win32 resources, assumed to be in COFF object format, have one or more invalid relocation header values.. + + + + + Looks up a localized string similar to Win32 resources, assumed to be in COFF object format, have an invalid section size.. + + + + + Looks up a localized string similar to Win32 resources, assumed to be in COFF object format, have one or more invalid symbol values.. + + + + + Looks up a localized string similar to Win32 resources, assumed to be in COFF object format, are missing one or both of sections '.rsrc$01' and '.rsrc$02'. + + + + + Looks up a localized string similar to Compilation options must not have errors.. + + + + + Looks up a localized string similar to The compilation references multiple assemblies whose versions only differ in auto-generated build and/or revision numbers.. + + + + + Looks up a localized string similar to Analyzer Failure. + + + + + Looks up a localized string similar to Analyzer '{0}' threw an exception of type '{1}' with message '{2}'.. + + + + + Looks up a localized string similar to Analyzer '{0}' threw the following exception: + '{1}'.. + + + + + Looks up a localized string similar to constructor. + + + + + Looks up a localized string similar to delegate. + + + + + Looks up a localized string similar to A DiagnosticDescriptor must have an Id that is neither null nor an empty string nor a string that only contains white space.. + + + + + Looks up a localized string similar to Argument contains duplicate analyzer instances.. + + + + + Looks up a localized string similar to A key in the pathMap is empty.. + + + + + Looks up a localized string similar to Empty or invalid file name. + + + + + Looks up a localized string similar to Empty or invalid resource name. + + + + + Looks up a localized string similar to 'end' must not be less than 'start'. + + + + + Looks up a localized string similar to enum. + + + + + Looks up a localized string similar to event. + + + + + Looks up a localized string similar to Exception occurred with following context: + {0}. + + + + + Looks up a localized string similar to Expected non-empty public key. + + + + + Looks up a localized string similar to Could not locate the rule set file '{0}'.. + + + + + Looks up a localized string similar to field. + + + + + Looks up a localized string similar to File not found.. + + + + + Looks up a localized string similar to File size exceeds maximum allowed size of a valid metadata file.. + + + + + Looks up a localized string similar to {0}.GetMetadata() must return an instance of {1}.. + + + + + Looks up a localized string similar to Icon stream is not in the expected format.. + + + + + Looks up a localized string similar to Inconsistent language versions. + + + + + Looks up a localized string similar to <in-memory assembly>. + + + + + Looks up a localized string similar to <in-memory module>. + + + + + Looks up a localized string similar to interface. + + + + + Looks up a localized string similar to Invalid alias.. + + + + + Looks up a localized string similar to Invalid assembly name: '{0}'. + + + + + Looks up a localized string similar to Invalid characters in assembly culture name. + + + + + Looks up a localized string similar to Invalid characters in assembly name. + + + + + Looks up a localized string similar to Invalid compilation options -- submission can't be signed.. + + + + + Looks up a localized string similar to Invalid content type. + + + + + Looks up a localized string similar to Invalid culture name: '{0}'. + + + + + Looks up a localized string similar to Invalid data at offset {0}: {1}{2}*{3}{4}. + + + + + Looks up a localized string similar to Reported diagnostic has an ID '{0}', which is not a valid identifier.. + + + + + Looks up a localized string similar to Reported diagnostic '{0}' has a source location in file '{1}', which is not part of the compilation being analyzed.. + + + + + Looks up a localized string similar to Invalid hash.. + + + + + Looks up a localized string similar to Invalid module name specified in metadata module '{0}': '{1}'. + + + + + Looks up a localized string similar to Node to track is not a descendant of the root.. + + + + + Looks up a localized string similar to Invalid output kind for submission. DynamicallyLinkedLibrary expected.. + + + + + Looks up a localized string similar to Invalid public key.. + + + + + Looks up a localized string similar to Invalid public key token.. + + + + + Looks up a localized string similar to An error occurred while loading the included rule set file {0} - {1}. + + + + + Looks up a localized string similar to Invalid size of public key token.. + + + + + Looks up a localized string similar to Syntax tree doesn't belong to the underlying 'Compilation'.. + + + + + Looks up a localized string similar to Feature 'IOperation' is disabled.. + + + + + Looks up a localized string similar to Argument to '/keepalive' option is not a 32-bit integer.. + + + + + Looks up a localized string similar to Arguments to '/keepalive' option below -1 are invalid.. + + + + + Looks up a localized string similar to '/keepalive' option is only valid with '/shared' option.. + + + + + Looks up a localized string similar to A key in the pathMap ends with a path separator.. + + + + + Looks up a localized string similar to method. + + + + + Looks up a localized string similar to Roslyn compiler server reports different protocol version than build task.. + + + + + Looks up a localized string similar to Missing argument for '/keepalive' option.. + + + + + Looks up a localized string similar to The item specified is not the element of a list.. + + + + + Looks up a localized string similar to module. + + + + + Looks up a localized string similar to Module copy can't be used to create an assembly metadata.. + + + + + Looks up a localized string similar to NOTE: Elapsed time may be less than analyzer execution time because analyzers can run concurrently.. + + + + + Looks up a localized string similar to Name cannot be empty.. + + + + + Looks up a localized string similar to Name cannot start with whitespace.. + + + + + Looks up a localized string similar to Name contains invalid characters.. + + + + + Looks up a localized string similar to No analyzers found. + + + + + Looks up a localized string similar to Cannot deserialize type '{0}', no binder supplied.. + + + + + Looks up a localized string similar to A node or token is out of sequence.. + + + + + Looks up a localized string similar to Cannot deserialize type '{0}', it has no deserialization reader.. + + + + + Looks up a localized string similar to The type '{0}' cannot be written, it does not implement IObjectWritable. + + + + + Looks up a localized string similar to A value in the pathMap is null.. + + + + + Looks up a localized string similar to Output kind not supported.. + + + + + Looks up a localized string similar to parameter. + + + + + Looks up a localized string similar to Path returned by {0}.ResolveMetadataFile must be absolute: '{1}'. + + + + + Looks up a localized string similar to Path returned by {0}.ResolveStrongNameKeyFile must be absolute: '{1}'. + + + + + Looks up a localized string similar to PE image doesn't contain managed metadata.. + + + + + Looks up a localized string similar to PE image not available.. + + + + + Looks up a localized string similar to Previous submission has errors.. + + + + + Looks up a localized string similar to property, indexer. + + + + + Looks up a localized string similar to Reference resolver should return readable non-null stream.. + + + + + Looks up a localized string similar to Resource data provider should return non-null stream. + + + + + Looks up a localized string similar to Resource stream ended at {0} bytes, expected {1} bytes.. + + + + + Looks up a localized string similar to Resource stream provider should return non-null stream.. + + + + + Looks up a localized string similar to return. + + + + + Looks up a localized string similar to Return type can't be a value type, pointer, by-ref or open generic type. + + + + + Looks up a localized string similar to Return type can't be void, by-ref or open generic type. + + + + + Looks up a localized string similar to The attribute {0} has an invalid value of {1}.. + + + + + Looks up a localized string similar to The rule set file has duplicate rules for '{0}' with differing actions '{1}' and '{2}'.. + + + + + Looks up a localized string similar to The element {0} is missing an attribute named {1}.. + + + + + Looks up a localized string similar to Value for argument '/shared:' must not be empty. + + + + + Looks up a localized string similar to Size has to be positive.. + + + + + Looks up a localized string similar to The span does not include the end of a line.. + + + + + Looks up a localized string similar to The span does not include the start of a line.. + + + + + Looks up a localized string similar to 'start' must not be negative. + + + + + Looks up a localized string similar to Stream must support read and seek operations.. + + + + + Looks up a localized string similar to Stream must be writable.. + + + + + Looks up a localized string similar to struct. + + + + + Looks up a localized string similar to Windows PDB writer is not available -- could not find Microsoft.DiaSymReader.Native.{0}.dll. + + + + + Looks up a localized string similar to Windows PDB writer doesn't support deterministic compilation -- could not find Microsoft.DiaSymReader.Native.{0}.dll. + + + + + Looks up a localized string similar to type must be a subclass of SyntaxAnnotation.. + + + + + Looks up a localized string similar to Type must be same as host object type of previous submission.. + + + + + Looks up a localized string similar to type parameter. + + + + + Looks up a localized string similar to A node in the list is not of the expected type.. + + + + + Looks up a localized string similar to Unresolved: . + + + + + Looks up a localized string similar to Argument contains an analyzer instance that does not belong to the 'Analyzers' for this CompilationWithAnalyzers instance.. + + + + + Looks up a localized string similar to Reported diagnostic with ID '{0}' is not supported by the analyzer.. + + + + + Looks up a localized string similar to Unsupported hash algorithm.. + + + + + Looks up a localized string similar to Value too large to be represented as a 30 bit unsigned integer.. + + + + + Looks up a localized string similar to WindowsRuntime identity can't be retargetable. + + + + + Looks up a localized string similar to References to XML documents are not supported.. + + + + + Maps an array builder to immutable array. + + + + The array to map + The mapping delegate + If the items's length is 0, this will return an empty immutable array + + + + Maps an array builder to immutable array. + + + + + The sequence to map + The mapping delegate + The extra input used by mapping delegate + If the items's length is 0, this will return an empty immutable array. + + + + Create BitArray with at least the specified number of bits. + + + + + return a bit array with all bits set from index 0 through bitCount-1 + + + + + + + Make a copy of a bit array. + + + + + + Is the given bit array null? + + + + + Modify this bit vector by bitwise AND-ing each element with the other bit vector. + For the purposes of the intersection, any bits beyond the current length will be treated as zeroes. + Return true if any changes were made to the bits of this bit vector. + + + + + Modify this bit vector by '|'ing each element with the other bit vector. + + + + + + The CachingLookup class provides a convenient representation of an ILookup that is based + upon a potentially slow lookup, and caches lookup results so that subsequent lookups are + fast. Internally a ConcurrentDictionary is used to cache lookup results. The client provides + two delegates to perform lookups: One that maps a key to a IEnumerable of values, and one + that provides all keys. + + The client must provide an IEqualityComparer used for comparing keys. Failed lookups are + cached, but that has the disadvantage that every different failed lookup will consume a + small amount of extra memory. However, that memory can be reclaimed by forcing a full + population of the cache. + + Thread safe. + + + + + Create a CachingLookup. + + A function that takes a key, and returns an IEnumerable of values that + correspond to that key. If no values correspond, the function may either return null or an empty + IEnumerable. + A function that returns an IEnumerable of all keys that have associated values. + A IEqualityComparer used to compare keys. + + + + Does this key have one or more associated values? + + + + + Get the values associated with a key. + + Key to look up. + All values associated with key. Returns an empty IEnumerable if + no values are associated. Never returns null. + + + + Get the number of distinct keys. + Forces a full population of the cache. + + + + + Enumerate all the keys. + Forces a full population of the cache. + + + + + Add the values from all keys to a flat array. + Forces a full population of the cache. + + + + + + Create an instance of the concurrent dictionary. + + The concurrent dictionary + + + + Create a dictionary instance suitable for use as the fully populated map. + + A new, empty dictionary, suitable for use as the fully populated map. + + + + Use the underlying (possibly slow) functions to get the values associated with a key. + + + + + Add a new value with the given key to the given concurrent map. + + The concurrent map to augment. + The key of the new entry. + The added entry. If there was a race, and another thread beat this one, then this returns the previously added entry. + + + + Determines if the given map is fully populated. + + The map to test. + true if the map is fully populated. + + + + Create the fully populated map from an existing map and the key generator. + + The existing map which may be null or a ConcurrentDictionary. + + + + + Fully populate the underlying dictionary. Once this returns, the dictionary is guaranteed + to have every key in it. + + + + + A MultiDictionary that allows only adding, and preserves the order of values added to the + dictionary. Thread-safe for reading, but not for adding. + + + Always uses the default comparer. + + + + + Add a value to the dictionary. + + + + + Get all values associated with K, in the order they were added. + Returns empty read-only array if no values were present. + + + + + Get a collection of all the keys. + + + + + Each value is either a single V or an . + Never null. + + + + + The usage is: + var inst = PooledStringBuilder.GetInstance(); + var sb = inst.builder; + ... Do Stuff... + ... sb.ToString() ... + inst.Free(); + + + + + A set of ints that is small, thread-safe and lock free. + Several assumptions have been made that allow it to be small and fast: + 1. Deletes never happen. + 2. The size is small. In dogfooding experiments, 89% had 4 or fewer elements and + 98% had 8 or fewer elements. The largest size was 17. + 3. As a result of assumption 2, linear look-up is good enough. + 4. One value, in this case int.MinValue, is used as a sentinel and may never appear in the set. + + + + + Determine if the given integer appears in the set. + + The value to look up. + true if appears in the set. false otherwise. + + + + Insert the given value into the set. + + The value to insert + true if was added. false if it was already present. + + + + If the given slot is unoccupied, then try to replace it with a new value. + + The slot to examine. + The new value to insert if the slot is unoccupied. + An out param indicating whether the slot was successfully updated. + true if the value in the slot either now contains, or already contained . false otherwise. + + + + Extension methods associated with ConsList. + + + + + Returns the only element of specified sequence if it has exactly one, and default(TSource) otherwise. + Unlike doesn't throw if there is more than one element in the sequence. + + + + + A simple class to implement IGrouping. + + + + + A dictionary that maps strings to all known spellings of that string. Can be used to + efficiently store the set of known type names for a module for both VB and C# while also + answering questions like "do you have a type called Foo" in either a case sensitive or + insensitive manner. + + + + + The collection of extension methods for the type + + + + + Converts a sequence to an immutable array. + + Elemental type of the sequence. + The sequence to convert. + An immutable copy of the contents of the sequence. + If items is null (default) + If the sequence is null, this will throw + + + + Converts a sequence to an immutable array. + + Elemental type of the sequence. + The sequence to convert. + An immutable copy of the contents of the sequence. + If the sequence is null, this will return an empty array. + + + + Converts a sequence to an immutable array. + + Elemental type of the sequence. + The sequence to convert. + An immutable copy of the contents of the sequence. + If the sequence is null, this will return the default (null) array. + + + + Converts an array to an immutable array. The array must not be null. + + + The sequence to convert + + + + + Converts a array to an immutable array. + + + The sequence to convert + + If the sequence is null, this will return the default (null) array. + + + + Converts an array to an immutable array. + + + The sequence to convert + If the array is null, this will return an empty immutable array. + + + + Reads bytes from specified . + + The stream. + Read-only content of the stream. + + + + Maps an immutable array to another immutable array. + + + + The array to map + The mapping delegate + If the items's length is 0, this will return an empty immutable array + + + + Maps an immutable array to another immutable array. + + + + + The sequence to map + The mapping delegate + The extra input used by mapping delegate + If the items's length is 0, this will return an empty immutable array. + + + + Maps an immutable array to another immutable array. + + + + + The sequence to map + The mapping delegate + The extra input used by mapping delegate + If the items's length is 0, this will return an empty immutable array. + + + + Creates a new immutable array based on filtered elements by the predicate. The array must not be null. + + + The array to process + The delegate that defines the conditions of the element to search for. + + + + + Casts the immutable array of a Type to an immutable array of its base type. + + + + + Determines whether this instance and another immutable array are equal. + + + + + The comparer to determine if the two arrays are equal. + True if the two arrays are equal + + + + Returns an empty array if the input array is null (default) + + + + + Returns an array of distinct elements, preserving the order in the original array. + If the array has no duplicates, the original array is returned. The original array must not be null. + + + + + Describes a command line analyzer assembly specification. + + + + + Assembly file path. + + + + + Describes a command line metadata reference (assembly or netmodule) specification. + + + + + Metadata file path or an assembly display name. + + + + + Metadata reference properties. + + + + + Describes a source file specification stored on command line arguments. + + + + + Resolved absolute path of the source file (does not contain wildcards). + + + Although this path is absolute it may not be normalized. That is, it may contain ".." and "." in the middle. + + + + + True if the file should be treated as a script file. + + + + + The base class for representing command line arguments to a + . + + + + + Drop to an interactive loop. If a script is specified in executes the script first. + + + + + Directory used to resolve relative paths stored in the arguments. + + + Except for paths stored in , all + paths stored in the properties of this class are resolved and + absolute. This is the directory that relative paths specified on + command line were resolved against. + + + + + A list of pairs of paths. This stores the value of the command-line compiler + option /pathMap:X1=Y1;X2=Y2... which causes a prefix of X1 followed by a path + separator to be replaced by Y1 followed by a path separator, and so on for each following pair. + + + This option is used to help get build-to-build determinism even when the build + directory is different from one build to the next. The prefix matching is case sensitive. + + + + + Sequence of absolute paths used to search for references. + + + + + Sequence of absolute paths used to search for sources specified as #load directives. + + + + + Sequence of absolute paths used to search for key files. + + + + + If true, use UTF8 for output. + + + + + Compilation name or null if not specified. + + + + + Gets the emit options. + + + + + Name of the output file or null if not specified. + + + + + Path of the PDB file or null if same as output binary path with .pdb extension. + + + + + True to emit PDB file. + + + + + Absolute path of the output directory. + + + + + Absolute path of the documentation comment XML file or null if not specified. + + + + + Absolute path of the error log file or null if not specified. + + + + + An absolute path of the app.config file or null if not specified. + + + + + Errors while parsing the command line arguments. + + + + + References to metadata supplied on the command line. + Includes assemblies specified via /r and netmodules specified via /addmodule. + + + + + References to analyzers supplied on the command line. + + + + + A set of additional non-code text files that can be used by analyzers. + + + + + Report additional information related to analyzers, such as analyzer execution time. + + + + + If true, prepend the command line header logo during + . + + + + + If true, append the command line help during + + + + + + The path to a Win32 resource. + + + + + The path to a .ico icon file. + + + + + The path to a Win32 manifest file to embed + into the output portable executable (PE) file. + + + + + If true, do not embed any Win32 manifest, including + one specified by or any + default manifest. + + + + + Resources specified as arguments to the compilation. + + + + + Encoding to be used for source files or 'null' for autodetect/default. + + + + + Hash algorithm to use to calculate source file debug checksums. + + + + + Arguments following a script file or separator "--". Null if the command line parser is not interactive. + + + + + Source file paths. + + + Includes files specified directly on command line as well as files matching patterns specified + on command line using '*' and '?' wildcards or /recurse option. + + + + + Full path of a log of file paths accessed by the compiler, or null if file logging should be suppressed. + + + Two log files will be created: + One with path and extension ".read" logging the files read, + and second with path and extension ".write" logging the files written to during compilation. + + + + + If true, prints the full path of the file containing errors or + warnings in diagnostics. + + + + + Options to the . + + + + + + Options to the . + + + + + Specify the preferred output language name. + + + + + Resolves metadata references stored in using given file resolver and metadata provider. + + to use for assembly name and relative path resolution. + Yields resolved metadata references or . + is null. + + + + Resolves metadata references stored in using given file resolver and metadata provider. + If a non-null diagnostic bag is provided, it catches exceptions that may be generated while reading the metadata file and + reports appropriate diagnostics. + Otherwise, if is null, the exceptions are unhandled. + + + called by CommonCompiler with diagnostics and message provider + + + + + Resolves analyzer references stored in using given file resolver. + + Load an assembly from a file path + Yields resolved or . + + + + Enumerates files in the specified directory and subdirectories whose name matches the given pattern. + + Full path of the directory to enumerate. + File name pattern. May contain wildcards '*' (matches zero or more characters) and '?' (matches any character). + Specifies whether to search the specified only, or all its subdirectories as well. + Sequence of file paths. + + + + Parses a command line. + + A collection of strings representing the command line arguments. + The base directory used for qualifying file locations. + The directory to search for mscorlib, or null if not available. + A string representing additional reference paths. + a object representing the parsed command line. + + + + Trims all '.' and whitespace from the end of the path + + + + + Returns false if any of the client arguments are invalid and true otherwise. + + + The original args to the client. + + + The original args minus the client args, if no errors were encountered. + + + Only defined if no errors were encountered. + True if '/shared' was an argument, false otherwise. + + + Only defined if no errors were encountered. + The value to the '/keepalive' argument if one was specified, null otherwise. + + + Only defined if errors were encountered. + The error message for the encountered error. + + + Only specified if is true and the session key + was provided. Can be null + + + + + Parse a response file into a set of arguments. Errors opening the response file are output into "errors". + + + + + Take a string of lines from a response file, remove comments, + and split into a set of command line arguments. + + + + + Split a command line by the same rules as Main would get the commands except the original + state of backslashes and quotes are preserved. For example in normal Windows command line + parsing the following command lines would produce equivalent Main arguments: + + - /r:a,b + - /r:"a,b" + + This method will differ as the latter will have the quotes preserved. The only case where + quotes are removed is when the entire argument is surrounded by quotes without any inner + quotes. + + + Rules for command line parsing, according to MSDN: + + Arguments are delimited by white space, which is either a space or a tab. + + A string surrounded by double quotation marks ("string") is interpreted + as a single argument, regardless of white space contained within. + A quoted string can be embedded in an argument. + + A double quotation mark preceded by a backslash (\") is interpreted as a + literal double quotation mark character ("). + + Backslashes are interpreted literally, unless they immediately precede a + double quotation mark. + + If an even number of backslashes is followed by a double quotation mark, + one backslash is placed in the argv array for every pair of backslashes, + and the double quotation mark is interpreted as a string delimiter. + + If an odd number of backslashes is followed by a double quotation mark, + one backslash is placed in the argv array for every pair of backslashes, + and the double quotation mark is "escaped" by the remaining backslash, + causing a literal double quotation mark (") to be placed in argv. + + + + + Remove the extraneous quotes and slashes from the argument. This function is designed to have + compat behavior with the native compiler. + + + Mimics the function RemoveQuotes from the native C# compiler. The native VB equivalent of this + function is called RemoveQuotesAndSlashes. It has virtually the same behavior except for a few + quirks in error cases. + + + + + Mimic behavior of the native function by the same name. + + + + + Split a string, based on whether "splitHere" returned true on each character. + + + + + Split a string by a set of separators, taking quotes into account. + + + + + Tries to parse a UInt64 from string in either decimal, octal or hex format. + + The string value. + The result if parsing was successful. + true if parsing was successful, otherwise false. + + + + Tries to parse a UInt16 from string in either decimal, octal or hex format. + + The string value. + The result if parsing was successful. + true if parsing was successful, otherwise false. + + + + Base class for csc.exe, csi.exe, vbc.exe and vbi.exe implementations. + + + + + This implementation of will delay the creation + of the PE / PDB file until the compiler determines the compilation has succeeded. This prevents + the compiler from deleting output from the previous compilation when a new compilation + fails. + + + + + Resolves metadata references stored in command line arguments and reports errors for those that can't be resolved. + + + + + Reads content of a source file. + + Source file information. + Storage for diagnostics. + File content or null on failure. + + + + Reads content of a source file. + + Source file information. + Storage for diagnostics. + If given opens successfully, set to normalized absolute path of the file, null otherwise. + File content or null on failure. + + + + csc.exe and vbc.exe entry point. + + + + + Given a compilation and a destination directory, determine three names: + 1) The name with which the assembly should be output (default = null, which indicates that the compilation output name should be used). + 2) The path of the assembly/module file (default = destination directory + compilation output name). + 3) The path of the pdb file (default = assembly/module path with ".pdb" extension). + + + C# has a special implementation that implements idiosyncratic behavior of csc. + + + + + Test hook for intercepting File.Open. + + + + + When overridden by a derived class, this property can override the current thread's + CurrentUICulture property for diagnostic message resource lookups. + + + + + The string returned from this function represents the inputs to the compiler which impact determinism. It is + meant to be inline with the specification here: + + - https://github.com/dotnet/roslyn/blob/master/docs/compilers/Deterministic%20Inputs.md + + Issue #8193 tracks filling this out to the full specification. + + https://github.com/dotnet/roslyn/issues/8193 + + + + + Looks for metadata references among the assembly file references given to the compilation when constructed. + When scripts are included into a project we don't want #r's to reference other assemblies than those + specified explicitly in the project references. + + + + + Used for logging all compiler diagnostics into a given . + This logger is responsible for closing the given stream on . + It is incorrect to use the logger concurrently from multiple threads. + + The log format is SARIF (Static Analysis Results Interchange Format) + https://sarifweb.azurewebsites.net + https://github.com/sarif-standard/sarif-spec + + + + + Represents a distinct set of s and provides unique string keys + to distinguish them. + + The first added with a given + value is given that value as its unique key. Subsequent adds with the same ID will have .NNN + apppended to their with an auto-incremented numeric value. + + + + + The total number of descriptors in the set. + + + + + Adds a descriptor to the set if not already present. + + + The unique key assigned to the given descriptor. + + + + + Converts the set to a list of (key, descriptor) pairs sorted by key. + + + + + Compares descriptors by the values that we write to the log and nothing else. + + We cannot just use 's built-in implementation + of for two reasons: + + 1. is part of that built-in + equatability, but we do not write it out, and so descriptors differing only + by MessageFormat (common) would lead to duplicate rule metadata entries in + the log. + + 2. is *not* part of that built-in + equatability, but we do write them out, and so descriptors differening only + by CustomTags (rare) would cause only one set of tags to be reported in the + log. + + + + + Used for logging all the paths which are "touched" (used) in any way + in the process of compilation. + + + + + Adds a fully-qualified path to the Logger for a read file. + Semantics are undefined after a call to . + + + + + Adds a fully-qualified path to the Logger for a written file. + Semantics are undefined after a call to . + + + + + Adds a fully-qualified path to the Logger for a read and written + file. Semantics are undefined after a call to + . + + + + + Writes all of the paths the TouchedFileLogger to the given + TextWriter in upper case. After calling this method the + logger is in an undefined state. + + + + + Writes all of the paths the TouchedFileLogger to the given + TextWriter in upper case. After calling this method the + logger is in an undefined state. + + + + + The compilation object is an immutable representation of a single invocation of the + compiler. Although immutable, a compilation is also on-demand, and will realize and cache + data as necessary. A compilation can produce a new compilation from existing compilation + with the application of small deltas. In many cases, it is more efficient than creating a + new compilation from scratch, as the new compilation can reuse information from the old + compilation. + + + The compilation object is an immutable representation of a single invocation of the + compiler. Although immutable, a compilation is also on-demand, and will realize and cache + data as necessary. A compilation can produce a new compilation from existing compilation + with the application of small deltas. In many cases, it is more efficient than creating a + new compilation from scratch, as the new compilation can reuse information from the old + compilation. + + + + + Abstraction that allows the caller to delay the creation of the values + until they are actually needed. + + + + + Returns an existing open stream or null if no stream has been open. + + + + + This method will be called once during Emit at the time the Compilation needs + to create a stream for writing. It will not be called in the case of + user errors in code. Shall not be called when returns non-null. + + + + + Returns true if this is a case sensitive compilation, false otherwise. Case sensitivity + affects compilation features such as name lookup as well as choosing what names to emit + when there are multiple different choices (for example between a virtual method and an + override). + + + + + Used for test purposes only to emulate missing members. + + + + + Used for test purposes only to emulate missing members. + + + + + Gets the source language ("C#" or "Visual Basic"). + + + + + Checks options passed to submission compilation constructor. + Throws an exception if the options are not applicable to submissions. + + + + + Creates a new compilation equivalent to this one with different symbol instances. + + + + + Returns a new compilation with a given event queue. + + + + + Gets a new for the specified syntax tree. + + The specified syntax tree. + + True if the SemanticModel should ignore accessibility rules when answering semantic questions. + + + + + Returns a new INamedTypeSymbol representing an error type with the given name and arity + in the given optional container. + + + + + Simple assembly name, or null if not specified. + + + The name is used for determining internals-visible-to relationship with referenced assemblies. + + If the compilation represents an assembly the value of is its simple name. + + Unless specifies otherwise the module name + written to metadata is with an extension based upon . + + + + + Creates a compilation with the specified assembly name. + + The new assembly name. + A new compilation. + + + + Gets the options the compilation was created with. + + + + + Creates a new compilation with the specified compilation options. + + The new options. + A new compilation. + + + + True if the compilation represents an interactive submission. + + + + + Gets or allocates a runtime submission slot index for this compilation. + + Non-negative integer if this is a submission and it or a previous submission contains code, negative integer otherwise. + + + + The type object that represents the type of submission result the host requested. + + + + + The type of the globals object or null if not specified for this compilation. + + + + + Gets the syntax trees (parsed from source code) that this compilation was created with. + + + + + Creates a new compilation with additional syntax trees. + + The new syntax trees. + A new compilation. + + + + Creates a new compilation with additional syntax trees. + + The new syntax trees. + A new compilation. + + + + Creates a new compilation without the specified syntax trees. Preserves metadata info for use with trees + added later. + + The new syntax trees. + A new compilation. + + + + Creates a new compilation without the specified syntax trees. Preserves metadata info for use with trees + added later. + + The new syntax trees. + A new compilation. + + + + Creates a new compilation without any syntax trees. Preserves metadata info for use with + trees added later. + + + + + Creates a new compilation with an old syntax tree replaced with a new syntax tree. + Reuses metadata from old compilation object. + + The new tree. + The old tree. + A new compilation. + + + + Returns true if this compilation contains the specified tree. False otherwise. + + A syntax tree. + + + + The event queue that this compilation was created with. + + + + + Metadata references passed to the compilation constructor. + + + + + Unique metadata references specified via #r directive in the source code of this compilation. + + + + + All reference directives used in this compilation. + + + + + Maps values of #r references to resolved metadata references. + + + + + All metadata references -- references passed to the compilation + constructor as well as references specified via #r directives. + + + + + Creates a metadata reference for this compilation. + + + Optional aliases that can be used to refer to the compilation root namespace via extern alias directive. + + + Embed the COM types from the reference so that the compiled + application no longer requires a primary interop assembly (PIA). + + + + + Creates a new compilation with the specified references. + + + The new references. + + A new compilation. + + + + Creates a new compilation with the specified references. + + The new references. + A new compilation. + + + + Creates a new compilation with the specified references. + + + + + Creates a new compilation with additional metadata references. + + The new references. + A new compilation. + + + + Creates a new compilation with additional metadata references. + + The new references. + A new compilation. + + + + Creates a new compilation without the specified metadata references. + + The new references. + A new compilation. + + + + Creates a new compilation without the specified metadata references. + + The new references. + A new compilation. + + + + Creates a new compilation without any metadata references. + + + + + Creates a new compilation with an old metadata reference replaced with a new metadata + reference. + + The new reference. + The old reference. + A new compilation. + + + + Gets the or for a metadata reference used to create this + compilation. + + The target reference. + + Assembly or module symbol corresponding to the given reference or null if there is none. + + + + + Gets the that corresponds to the assembly symbol. + + The target symbol. + + + + Assembly identities of all assemblies directly referenced by this compilation. + + + Includes identities of references passed in the compilation constructor + as well as those specified via directives in source code. + + + + + The that represents the assembly being created. + + + + + Gets the for the module being created by compiling all of + the source code. + + + + + The root namespace that contains all namespaces and types defined in source code or in + referenced metadata, merged into a single namespace hierarchy. + + + + + Gets the corresponding compilation namespace for the specified module or assembly namespace. + + + + + Returns the Main method that will serves as the entry point of the assembly, if it is + executable (and not a script). + + + + + Get the symbol for the predefined type from the Cor Library referenced by this + compilation. + + + + + Returns true if the type is System.Type. + + + + + Returns true if the specified type is equal to or derives from System.Attribute well-known type. + + + + + The INamedTypeSymbol for the .NET System.Object type, which could have a TypeKind of + Error if there was no COR Library in this Compilation. + + + + + The TypeSymbol for the type 'dynamic' in this Compilation. + + + + + A symbol representing the implicit Script class. This is null if the class is not + defined in the compilation. + + + + + Returns a new ArrayTypeSymbol representing an array type tied to the base types of the + COR Library in this Compilation. + + + + + Returns a new PointerTypeSymbol representing a pointer type tied to a type in this + Compilation. + + + + + Gets the type within the compilation's assembly and all referenced assemblies (other than + those that can only be referenced via an extern alias) using its canonical CLR metadata name. + + Null if the type can't be found. + + Since VB does not have the concept of extern aliases, it considers all referenced assemblies. + + + + + Gets the diagnostics produced during the parsing stage. + + + + + Gets the diagnostics produced during symbol declaration. + + + + + Gets the diagnostics produced during the analysis of method bodies and field initializers. + + + + + Gets all the diagnostics for the compilation, including syntax, declaration, and + binding. Does not include any diagnostics that might be produced during emit, see + . + + + + Bag to which filtered diagnostics will be added. + Diagnostics to be filtered. + True if there were no errors or warnings-as-errors. + + + + Create a stream filled with default win32 resources. + + + + + Constructs the module serialization properties out of the compilation options of this compilation. + + + + + The value is not used by Windows loader, but the OS appcompat infrastructure uses it to identify apps. + It is useful for us to have a mechanism to identify the compiler that produced the binary. + This is the appropriate value to use for that. That is what it was invented for. + We don't want to have the high bit set for this in case some users perform a signed comparison to + determine if the value is less than some version. The C++ linker is at 0x0B. + We'll start our numbering at 0x30 for C#, 0x50 for VB. + + + + + Return true if the compilation contains any code or types. + + + + + Emit the IL for the compiled source code into the specified stream. + + Stream to which the compilation will be written. + Stream to which the compilation's debug info will be written. Null to forego PDB generation. + Stream to which the compilation's XML documentation will be written. Null to forego XML generation. + Stream from which the compilation's Win32 resources will be read (in RES format). + Null to indicate that there are none. The RES format begins with a null resource entry. + List of the compilation's managed resources. Null to indicate that there are none. + Emit options. + To cancel the emit process. + + + + Emit the IL for the compiled source code into the specified stream. + + Stream to which the compilation will be written. + Stream to which the compilation's debug info will be written. Null to forego PDB generation. + Stream to which the compilation's XML documentation will be written. Null to forego XML generation. + Stream from which the compilation's Win32 resources will be read (in RES format). + Null to indicate that there are none. The RES format begins with a null resource entry. + List of the compilation's managed resources. Null to indicate that there are none. + Emit options. + + Debug entry-point of the assembly. The method token is stored in the generated PDB stream. + + When a program launches with a debugger attached the debugger places the first breakpoint to the start of the debug entry-point method. + The CLR starts executing the static Main method of type. When the first breakpoint is hit + the debugger steps thru the code statement by statement until user code is reached, skipping methods marked by , + and taking other debugging attributes into consideration. + + By default both entry points in an executable program (, , ) + are the same method (Main). A non-executable program has no entry point. Runtimes that implement a custom loader may specify debug entry-point + to force the debugger to skip over complex custom loader logic executing at the beginning of the .exe and thus improve debugging experience. + + Unlike ordinary entry-point which is limited to a non-generic static method of specific signature, there are no restrictions on the + method other than having a method body (extern, interface, or abstract methods are not allowed). + + To cancel the emit process. + + + + This overload is only intended to be directly called by tests that want to pass . + The map is used for storing a list of methods and their associated IL. + + True if emit succeeded. + + + + Emit the differences between the compilation and the previous generation + for Edit and Continue. The differences are expressed as added and changed + symbols, and are emitted as metadata, IL, and PDB deltas. A representation + of the current compilation is returned as an EmitBaseline for use in a + subsequent Edit and Continue. + + + + + Emit the differences between the compilation and the previous generation + for Edit and Continue. The differences are expressed as added and changed + symbols, and are emitted as metadata, IL, and PDB deltas. A representation + of the current compilation is returned as an EmitBaseline for use in a + subsequent Edit and Continue. + + + + + This overload is only intended to be directly called by tests that want to pass . + The map is used for storing a list of methods and their associated IL. + + True if emit succeeded. + + + + The compiler needs to define an ordering among different partial class in different syntax trees + in some cases, because emit order for fields in structures, for example, is semantically important. + This function defines an ordering among syntax trees in this compilation. + + + + + Compare two source locations, using their containing trees, and then by Span.First within a tree. + Can be used to get a total ordering on declarations, for example. + + + + + Return the lexically first of two locations. + + + + + Return the lexically first of multiple locations. + + + + + Return true if there is a source declaration symbol name that meets given predicate. + + + + + Return source declaration symbols whose name meets given predicate. + + + + + The list of RetargetingAssemblySymbol objects created for this Compilation. + RetargetingAssemblySymbols are created when some other compilation references this one, + but the other references provided are incompatible with it. For example, compilation C1 + references v1 of Lib.dll and compilation C2 references C1 and v2 of Lib.dll. In this + case, in context of C2, all types from v1 of Lib.dll leaking through C1 (through method + signatures, etc.) must be retargeted to the types from v2 of Lib.dll. This is what + RetargetingAssemblySymbol is responsible for. In the example above, modules in C2 do not + reference C1.AssemblySymbol, but reference a special RetargetingAssemblySymbol created + for C1 by ReferenceManager. + + WeakReference is used to allow RetargetingAssemblySymbol to be collected when they become unused. + + Guarded by . + + + + + Adds given retargeting assembly for this compilation into the cache. + must be locked while calling this method. + + + + + Adds cached retargeting symbols into the given list. + must be locked while calling this method. + + + + + Indicate what kinds of declaration symbols will be included + + + + + None + + + + + include namespace symbols + + + + + include type symbols + + + + + include member symbols such as method, event, property, field + + + + + include type and member + + + + + include all namespace, type and member + + + + + Policy to be used when matching assembly reference to an assembly definition across platforms. + + + + + Converts to . + + Major, minor, build or revision number are less than 0 or greater than 0xFFFF. + + + Assembly portability policy, usually provided through an app.config file. + + + + Loads information from XML with app.config schema. + + The stream doesn't contain a well formed XML. + is null. + + Tries to find supportPortability elements in the given XML: + + + + + + + + + ]]> + + Keeps the stream open. + + + + + Returns true if the identity is a Framework 4.5 or lower assembly. + + + + + Provides strong name and signs source assemblies. + + + + + Creates an instance of . + + + An ordered set of fully qualified paths which are searched when locating a cryptographic key file. + + + + + Resolves assembly strong name key file path. + Internal for testing. + + Normalized key file path or null if not found. + + + + + + + + + + + + + + Handles loading analyzer assemblies and their dependencies. + + Before an analyzer assembly is loaded with , + its location and the location of all of its dependencies must first be specified + by calls to . + + + To the extent possible, implementations should remain consistent in the face + of exceptions and allow the caller to handle them. This allows the caller to + decide how to surface issues to the user and whether or not they are fatal. For + example, if asked to load an a non-existent or inaccessible file a command line + tool may wish to exit immediately, while an IDE may wish to keep going and give + the user a chance to correct the issue. + + + + + Given the full path to an assembly on disk, loads and returns the + corresponding object. + + + Multiple calls with the same path should return the same + instance. + + + + + Adds a file to consider when loading an analyzer or its dependencies. + + + + + A localizable resource string that may possibly be formatted differently depending on culture. + + + + + Creates a localizable resource string with no formatting arguments. + + nameof the resource that needs to be localized. + for the calling assembly. + Type handling assembly's resource management. Typically, this is the static class generated for the resources file from which resources are accessed. + + + + Creates a localizable resource string that may possibly be formatted differently depending on culture. + + nameof the resource that needs to be localized. + for the calling assembly. + Type handling assembly's resource management. Typically, this is the static class generated for the resources file from which resources are accessed. + Optional arguments for formatting the localizable resource string. + + + + A string that may possibly be formatted differently depending on culture. + NOTE: Types implementing must be serializable. + + + + + FixedLocalizableString representing an empty string. + + + + + Fired when an exception is raised by any of the public methods of . + If the exception handler itself throws an exception, that exception is ignored. + + + + + Formats the value of the current instance using the optionally specified format. + + + + + Formats the value of the current instance using the optionally specified format. + Provides the implementation of ToString. ToString will provide a default value + if this method throws an exception. + + + + + Provides the implementation of GetHashCode. GetHashCode will provide a default value + if this method throws an exception. + + + + + + Provides the implementation of Equals. Equals will provide a default value + if this method throws an exception. + + + + + + Represents compilation emit options. + + + + + True to emit an assembly excluding executable code such as method bodies. + + + + + Tolerate errors, producing a PE stream and a success result even in the presence of (some) errors. + + + + + Unless set (private) members that don't affect the language semantics of the resulting assembly will be excluded + when emitting with on. + + + Has no effect when is false. + + + + + Subsystem version + + + + + Specifies the size of sections in the output file. + + + Valid values are 0, 512, 1024, 2048, 4096 and 8192. + If the value is 0 the file alignment is determined based upon the value of . + + + + + True to enable high entropy virtual address space for the output binary. + + + + + Specifies the preferred base address at which to load the output DLL. + + + + + Debug information format. + + + + + Assembly name override - file name and extension. If not specified the compilation name is used. + + + By default the name of the output assembly is . Only in rare cases it is necessary + to override the name. + + CAUTION: If this is set to a (non-null) value other than the existing compilation output name, then internals-visible-to + and assembly references may not work as expected. In particular, things that were visible at bind time, based on the + name of the compilation, may not be visible at runtime and vice-versa. + + + + + The name of the PDB file to be embedded in the PE image, or null to use the default. + + + If not specified the file name of the source module with an extension changed to "pdb" is used. + + + + + Runtime metadata version. + + + + + Sets the byte alignment for portable executable file sections. + + Can be one of the following values: 0, 512, 1024, 2048, 4096, 8192 + + + + No change. + + + + + Node value was updated. + + + + + Node was inserted. + + + + + Node was deleted. + + + + + Debugging information associated with the specified method that is emitted by the compiler to support Edit and Continue. + + + + + Deserializes Edit and Continue method debug information from specified blobs. + + Local variable slot map. + Lambda and closure map. + Invalid data. + + + Invalid data. + + + + Merges synthesized members generated during lowering of the current compilation with aggregate synthesized members + from all previous source generations (gen >= 1). + + + Suppose {S -> {A, B, D}, T -> {E, F}} are all synthesized members in previous generations, + and {S' -> {A', B', C}, U -> {G, H}} members are generated in the current compilation. + + Where X matches X' via this matcher, i.e. X' is from the new compilation and + represents the same metadata entity as X in the previous compilation. + + Then the resulting collection shall have the following entries: + {S' -> {A', B', C, D}, U -> {G, H}, T -> {E, F}} + + + + + The result of the Compilation.Emit method. + + + + + True if the compilation successfully produced an executable. + If false then the diagnostics should include at least one error diagnostic + indicating the cause of the failure. + + + + + A list of all the diagnostics associated with compilations. This include parse errors, declaration errors, + compilation errors, and emitting errors. + + + + + Name of the anonymous type field. + + + + + True if the anonymous type field was marked as 'Key' in VB. + + + + + is case insensitive. + + + + + Return tokens for all modified debuggable methods. + + + + + Add an item from a previous generation + that has been updated in this generation. + + + + + Represents a module from a previous compilation. Used in Edit and Continue + to emit the differences in a subsequent compilation. + + + + + A map of the assembly identities of the baseline compilation to the identities of the original metadata AssemblyRefs. + Only includes identities that differ between these two. + + + + + Creates an from the metadata of the module before editing + and from a function that maps from a method to an array of local names. + + The metadata of the module before editing. + + A function that for a method handle returns Edit and Continue debug information emitted by the compiler into the PDB. + The function shall throw if the debug information can't be read for the specified method. + This exception is caught and converted to an emit diagnostic. Other exceptions are passed through. + + An for the module. + + Only the initial baseline is created using this method; subsequent baselines are created + automatically when emitting the differences in subsequent compilations. + + When an active method (one for which a frame is allocated on a stack) is updated the values of its local variables need to be preserved. + The mapping of local variable names to their slots in the frame is not included in the metadata and thus needs to be provided by + . + + The is only needed for the initial generation. The mapping for the subsequent generations + is carried over through . The compiler assigns slots to named local variables (including named temporary variables) + it the order in which they appear in the source code. This property allows the compiler to reconstruct the local variable mapping + for the initial generation. A subsequent generation may add a new variable in between two variables of the previous generation. + Since the slots of the previous generation variables need to be preserved the only option is to add these new variables to the end. + The slot ordering thus no longer matches the syntax ordering. It is therefore necessary to pass + to the next generation (rather than e.g. create new s from scratch based on metadata produced by subsequent compilations). + + + + + The original metadata of the module. + + + + + Metadata generation ordinal. Zero for + full metadata and non-zero for delta. + + + + + Unique Guid for this delta, or default(Guid) + if full metadata. + + + + + EnC metadata for methods added or updated since the initial generation, indexed by method row id. + + + + + Reads EnC debug information of a method from the initial baseline PDB. + The function shall throw if the debug information can't be read for the specified method. + This exception is caught and converted to an emit diagnostic. Other exceptions are passed through. + + + + + No change to symbol or members. + + + + + No change to symbol but may contain changed symbols. + + + + + Symbol updated. + + + + + Symbol added. + + + + + True if the symbol is a source symbol added during EnC session. + The symbol may be declared in any source compilation in the current solution. + + + + + Returns true if the symbol or some child symbol has changed and needs to be compiled. + + + + + Calculate the set of changes up to top-level types. The result + will be used as a filter when traversing the module. + + Note that these changes only include user-defined source symbols, not synthesized symbols since those will be + generated during lowering of the changed user-defined symbols. + + + + + Return the symbol that contains this symbol as far + as changes are concerned. For instance, an auto property + is considered the containing symbol for the backing + field and the accessor methods. By default, the containing + symbol is simply Symbol.ContainingSymbol. + + + + + Error type symbols should be replaced with an object of this class + in the translation layer for emit. + + + + + For the name we will use a word "Error" followed by a guid, generated on the spot. + + + + + A fake containing assembly for an ErrorType object. + + + + + For the name we will use a word "Error" followed by a guid, generated on the spot. + + + + + This is only used for testing. + + + + + This is only used for testing. + + + + + This is only used for testing. + + + + + Returns null if member doesn't belong to an embedded NoPia type. + + + + + Common base class for C# and VB PE module builder. + + + + + EnC generation. + + + + + Captures the set of synthesized definitions that should be added to a type + during emit process. + + + + + Returns null if there are no compiler generated types. + + + + + Returns null if there are no synthesized methods. + + + + + Returns null if there are no synthesized properties. + + + + + Returns null if there are no synthesized fields. + + + + + Builds symbol definition to location map used for emitting token -> location info + into PDB to be consumed by WinMdExp.exe tool (only applicable for /t:winmdobj) + + + + + Describes a symbol edit between two compilations. + For example, an addition of a method, an update of a method, removal of a type, etc. + + + + + The type of edit. + + + + + The symbol from the earlier compilation, + or null if the edit represents an addition. + + + + + The symbol from the later compilation, + or null if the edit represents a deletion. + + + + + A map from syntax node in the later compilation to syntax node in the previous compilation, + or null if is false and the map is not needed or + the source of the current method is the same as the source of the previous method. + + + The map does not need to map all syntax nodes in the active method, only those syntax nodes + that declare a local or generate a long lived local. + + + + + True if the edit is an update of the active method and local values + should be preserved; false otherwise. + + + + + Initializes an instance of . + + The type of edit. + + The symbol from the earlier compilation, or null if the edit represents an addition. + + + The symbol from the later compilation, or null if the edit represents a deletion. + + + A map from syntax node in the later compilation to syntax node in the previous compilation, + or null if is false and the map is not needed or + the source of the current method is the same as the source of the previous method. + + + True if the edit is an update of an active method and local values should be preserved; false otherwise. + + + or is null and the edit isn't an or , respectively. + + + is not a valid kind. + + + + + Emit the IL for the compilation into the specified stream. + + Compilation. + Path of the file to which the compilation will be written. + Path of the file to which the compilation's debug info will be written. + Also embedded in the output file. Null to forego PDB generation. + + Path of the file to which the compilation's XML documentation will be written. Null to forego XML generation. + Path of the file from which the compilation's Win32 resources will be read (in RES format). + Null to indicate that there are none. + List of the compilation's managed resources. Null to indicate that there are none. + To cancel the emit process. + Compilation or path is null. + Path is empty or invalid. + An error occurred while reading or writing a file. + + + + APIs for constructing documentation comment id's, and finding symbols that match ids. + + + + + Creates an id string used by external documentation comment files to identify declarations + of types, namespaces, methods, properties, etc. + + + + + Creates an id string used to reference type symbols (not strictly declarations, includes + arrays, pointers, type parameters, etc.) + + + + + Gets all declaration symbols that match the declaration id string + + + + + Try to get all the declaration symbols that match the declaration id string. + Returns true if at least one symbol matches. + + + + + Gets the first declaration symbol that matches the declaration id string, order undefined. + + + + + Gets the symbols that match the reference id string. + + + + + Try to get all symbols that match the reference id string. + Returns true if at least one symbol matches. + + + + + Gets the first symbol that matches the reference id string, order undefined. + + + + + Checks for the given ; if the is true, + immediately terminates the process without running any pending finally blocks or finalizers + and causes a crash dump to be collected (if the system is configured to do so). + Otherwise, the process continues normally. + + The conditional expression to evaluate. + An optional message to be recorded in the dump in case of failure. Can be null. + + + + Dictionary designed to hold small number of items. + Compared to the regular Dictionary, average overhead per-item is roughly the same, but + unlike regular dictionary, this one is based on an AVL tree and as such does not require + rehashing when items are added. + It does require rebalancing, but that is allocation-free. + + Major caveats: + 1) There is no Remove method. (can be added, but we do not seem to use Remove that much) + 2) foreach [keys|values|pairs] may allocate a small array. + 3) Performance is no longer O(1). At a certain count it becomes slower than regular Dictionary. + In comparison to regular Dictionary on my machine: + On trivial number of elements (5 or so) it is more than 2x faster. + The break even count is about 120 elements for read and 55 for write operations (with unknown initial size). + At UShort.MaxValue elements, this dictionary is 6x slower to read and 4x slower to write + + Generally, this dictionary is a win if number of elements is small, not known beforehand or both. + + If the size of the dictionary is known at creation and it is likely to contain more than 10 elements, + then regular Dictionary is a better choice. + + + + + Implements a readonly collection over a set of existing collections. This can be used to + prevent having to copy items from one collection over to another (thus bloating space). + + Note: this is a *collection*, not a *set*. There is no removal of duplicated elements. This + allows us to be able to efficiently do operations like CopyTo, Count, etc. in O(c) time + instead of O(n) (where 'c' is the number of collections and 'n' is the number of elements). + If you have a few collections with many elements in them, then this is an appropriate + collection for you. + + + + + Indicates the reasons why a candidate (or set of candidate) symbols were not considered + correct in SemanticInfo. Higher values take precedence over lower values, so if, for + example, there a symbol with a given name that was inaccessible, and other with the wrong + arity, only the inaccessible one would be reported in the SemanticInfo. + + + + + No CandidateSymbols. + + + + + Only a type or namespace was valid in the given location, but the candidate symbols was + of the wrong kind. + + + + + Only an event was valid in the given location, but the candidate symbols was + of the wrong kind. + + + + + The candidate symbol must be a WithEvents member, but it was not. + + + + + Only an attribute type was valid in the given location, but the candidate symbol was + of the wrong kind. + + + + + The candidate symbol takes a different number of type parameters that was required. + + + + + The candidate symbol existed, but was not allowed to be created in a new expression. + For example, interfaces, static classes, and unconstrained type parameters. + + + + + The candidate symbol existed, but was not allowed to be referenced. For example, the + "get_XXX" method used to implement a property named "XXX" may not be directly + referenced. Similarly, the type "System.Void" can not be directly referenced. + Also occurs if "this" is used in a context (static method or field initializer) + where "this" is not available. + + + + + The candidate symbol had an accessibility modifier (private, protected, ...) that made + it inaccessible. + + + + + The candidate symbol was in a place where a value was required, but was not a value + (e.g., was a type or namespace). + + + + + The candidate symbol was in a place where a variable (or sometimes, a property) was + required, but was not allowed there because it isn't a symbol that can be assigned to. + For example, the left hand side of an assignment, or a ref or out parameter. + + + + + The candidate symbol was used in a way that an invocable member (method, or variable of + delegate type) was required, but the candidate symbol was not invocable. + + + + + The candidate symbol must be an instance variable, but was used as static, or the + reverse. + + + + + Overload resolution did not choose a method. The candidate symbols are the methods there + were considered during overload resolution (which may or may not be applicable methods). + + + + + Method could not be selected statically. + The candidate symbols are the methods there were considered during overload resolution + (which may or may not be applicable methods). + + + + + Multiple ambiguous symbols were available with the same name. This can occur if "using" + statements bring multiple namespaces into scope, and the same type is available in + multiple. This can also occur if multiple properties of the same name are available in a + multiple interface inheritance situation. + + + + + CandidateSymbols are members of a group of results. This is used when there isn't a problem, + but there is more than one result, for example nameof(int.ToString). + + + + + Represents compilation options common to C# and VB. + + + + + The kind of assembly generated when emitted. + + + + + Name of the primary module, or null if a default name should be used. + + + The name usually (but not necessarily) includes an extension, e.g. "MyModule.dll". + + If is null the actual name written to metadata + is derived from the name of the compilation () + by appending a default extension for . + + + + + The full name of a global implicit class (script class). This class implicitly encapsulates top-level statements, + type declarations, and member declarations. Could be a namespace qualified name. + + + + + The full name of a type that declares static Main method. Must be a valid non-generic namespace-qualified name. + Null if any static Main method is a candidate for an entry point. + + + + + Specifies public key used to generate strong name for the compilation assembly, or empty if not specified. + + + If specified the values of and + must be null. If is true the assembly is marked as fully signed + but only signed with the public key (aka "OSS signing"). + + + + + The name of the file containing the public and private keys to use to generate strong name of the + compilation assembly and to sign it. + + + + To sign the output supply either one of or . + but not both. If both are specified is ignored. + + + If is also set, must be the absolute + path to key file. + + + + + + The CSP container containing the key with which to sign the output. + + + + To sign the output supply either one of or . + but not both. If both are specified is ignored. + + + This setting is obsolete and only supported on Microsoft Windows platform. + Use to generate assemblies with strong name and + a signing tool (Microsoft .NET Framework Strong Name Utility (sn.exe) or equivalent) to sign them. + + + + + + Mark the compilation assembly as delay-signed. + + + If true the resulting assembly is marked as delay signed. + + If false and , , or is specified + or attribute System.Reflection.AssemblyKeyFileAttribute or System.Reflection.AssemblyKeyNameAttribute is applied to the + compilation assembly in source the resulting assembly is signed accordingly to the specified values/attributes. + + If null the semantics is specified by the value of attribute System.Reflection.AssemblyDelaySignAttribute + applied to the compilation assembly in source. If the attribute is not present the value defaults to "false". + + + + + Mark the compilation assembly as fully signed, but only sign with the public key. + + + + If true, the assembly is marked as signed, but is only signed with the public key. + + + The key must be provided through either an absolute path in + or directly via . + + + + + + Whether bounds checking on integer arithmetic is enforced by default or not. + + + + + Specifies which version of the common language runtime (CLR) can run the assembly. + + + + + Specifies whether or not optimizations should be performed on the output IL. + This is independent of whether or not PDB information is generated. + + + + + Global warning report option + + + + + Global warning level (from 0 to 4). + + + + + Specifies whether building compilation may use multiple threads. + + + + + Specifies whether the compilation should be deterministic. + + + + + Used for time-based version generation when contains a wildcard. + If equal to default() the actual current local time will be used. + + + + + Emit extended custom debug information to the PDB file. + + + + + Emit mode that favors debuggability. + + + + + Import internal/private members from all references regardless of "internals-visible-to" relationship. + + + + + Apply additional disambiguation rules during resolution of referenced assemblies. + + + + + Modifies the incoming diagnostic, for example escalating its severity, or discarding it (returning null) based on the compilation options. + + + The modified diagnostic, or null + + + + Warning report option for each warning. + + + + + Whether diagnostics suppressed in source, i.e. is true, should be reported. + + + + + Resolves paths to metadata references specified in source via #r directives. + Null if the compilation can't contain references to metadata other than those explicitly passed to its factory (such as #r directives in sources). + + + + + Gets the resolver for resolving XML document references for the compilation. + Null if the compilation is not allowed to contain XML file references, such as XML doc comment include tags and permission sets stored in an XML file. + + + + + Gets the resolver for resolving source document references for the compilation. + Null if the compilation is not allowed to contain source file references, such as #line pragmas and #load directives. + + + + + Provides strong name and signature the source assembly. + Null if assembly signing is not supported. + + + + + Used to compare assembly identities. May implement unification and portability policies specific to the target platform. + if not specified. + + + + + A set of strings designating experimental compiler features that are to be enabled. + + + + + Creates a new options instance with the specified general diagnostic option. + + + + + Creates a new options instance with the specified diagnostic-specific options. + + + + + Creates a new options instance with the specified diagnostic-specific options. + + + + + Creates a new options instance with the specified suppressed diagnostics reporting option. + + + + + Creates a new options instance with the deterministic property set accordingly. + + + + + Creates a new options instance with the specified output kind. + + + + + Creates a new options instance with the specified platform. + + + + + Creates a new options instance with the specified public sign setting. + + + + + Creates a new options instance with optimizations enabled or disabled. + + + + + Performs validation of options compatibilities and generates diagnostics if needed + + + + + Errors collection related to an incompatible set of compilation options + + + + + Represents the possible compilation stages for which it is possible to get diagnostics + (errors). + + + + + Provides information about statements which transfer control in and out of a region. This + information is returned from a call to . + + + + + The set of statements inside the region what are the + destination of branches outside the region. + + + + + The set of statements inside a region that jump to locations outside + the region. + + + + + Indicates whether a region completes normally. Return true if and only if the end of the + last statement in a region is reachable or the region contains no statements. + + + + + The set of return statements found within a region. + + + + + Returns true iff analysis was successful. Analysis can fail if the region does not properly span a single expression, + a single statement, or a contiguous series of statements within the enclosing block. + + + + + Provides information about how data flows into and out of a region. This information is + returned from a call to + , or one of its language-specific overloads, + where you pass the first and last statements of the region as parameters. + "Inside" means those statements or ones between them. "Outside" are any other statements of the same method. + + + + + The set of local variables that are declared within a region. Note + that the region must be bounded by a method's body or a field's initializer, so + parameter symbols are never included in the result. + + + + + The set of local variables which are assigned a value outside a region + that may be used inside the region. + + + + + The set of local variables which are assigned a value inside a region + that may be used outside the region. + + + + + The set of local variables for which a value is always assigned inside + a region. + + + + + The set of local variables that are read inside a region. + + + + + The set of local variables that are written inside a region. + + + + + The set of the local variables that are read outside a region. + + + + + The set of local variables that are written outside a region. + + + + + The set of the local variables that have been referenced in anonymous + functions within a region and therefore must be moved to a field of a frame class. + + + + + The set of non-constant local variables and parameters that have had their + address (or the address of one of their fields) taken. + + + + + Returns true iff analysis was successful. Analysis can fail if the region does not + properly span a single expression, a single statement, or a contiguous series of + statements within the enclosing block. + + + + + Gets symbol information about a syntax node. + + + The syntax node to get semantic information for. + A cancellation token that can be used to cancel the + process of obtaining the semantic info. + + + + Binds the node in the context of the specified location and get semantic information + such as type, symbols and diagnostics. This method is used to get semantic information + about an expression that did not actually appear in the source code. + + + A character position used to identify a declaration scope and + accessibility. This character position must be within the FullSpan of the Root syntax + node in this SemanticModel. + + A syntax node that represents a parsed expression. This syntax + node need not and typically does not appear in the source code referred to SemanticModel + instance. + Indicates whether to binding the expression as a full expressions, + or as a type or namespace. If SpeculativeBindingOption.BindAsTypeOrNamespace is supplied, then + expression should derive from TypeSyntax. + The semantic information for the topmost node of the expression. + The passed in expression is interpreted as a stand-alone expression, as if it + appeared by itself somewhere within the scope that encloses "position". + + + + Gets type information about a syntax node. + + + The syntax node to get semantic information for. + A cancellation token that can be used to cancel the + process of obtaining the semantic info. + + + + If "nameSyntax" resolves to an alias name, return the IAliasSymbol corresponding + to A. Otherwise return null. + + + Name to get alias info for. + A cancellation token that can be used to cancel the + process of obtaining the alias information. + + + + Binds the name in the context of the specified location and sees if it resolves to an + alias name. If it does, return the AliasSymbol corresponding to it. Otherwise, return null. + + + A character position used to identify a declaration scope and + accessibility. This character position must be within the FullSpan of the Root syntax + node in this SemanticModel. + + A syntax node that represents a name. This syntax + node need not and typically does not appear in the source code referred to by the + SemanticModel instance. + Indicates whether to binding the name as a full expression, + or as a type or namespace. If SpeculativeBindingOption.BindAsTypeOrNamespace is supplied, then + expression should derive from TypeSyntax. + The passed in name is interpreted as a stand-alone name, as if it + appeared by itself somewhere within the scope that encloses "position". + + + + Binds the node in the context of the specified location and get semantic information + such as type, symbols and diagnostics. This method is used to get semantic information + about an expression that did not actually appear in the source code. + + + A character position used to identify a declaration scope and + accessibility. This character position must be within the FullSpan of the Root syntax + node in this SemanticModel. + + A syntax node that represents a parsed expression. This syntax + node need not and typically does not appear in the source code referred to SemanticModel + instance. + Indicates whether to binding the expression as a full expressions, + or as a type or namespace. If SpeculativeBindingOption.BindAsTypeOrNamespace is supplied, then + expression should derive from TypeSyntax. + The semantic information for the topmost node of the expression. + The passed in expression is interpreted as a stand-alone expression, as if it + appeared by itself somewhere within the scope that encloses "position". + + + + Gets the symbol associated with a declaration syntax node. + + + A syntax node that is a declaration. This can be any type + derived from MemberDeclarationSyntax, TypeDeclarationSyntax, EnumDeclarationSyntax, + NamespaceDeclarationSyntax, ParameterSyntax, TypeParameterSyntax, or the alias part of a + UsingDirectiveSyntax + The cancellation token. + The symbol declared by the node or null if the node is not a declaration. + + + + Gets a list of method or indexed property symbols for a syntax node. + + + The syntax node to get semantic information for. + The cancellation token. + + + + Analyze control-flow within a part of a method body. + + + + + Analyze control-flow within a part of a method body. + + + + + Analyze data-flow within a part of a method body. + + + + + Analyze data-flow within a part of a method body. + + + + + Root type for representing the abstract semantics of C# and VB statements and expressions. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Identifies the kind of the operation. + + + + + Indicates whether the operation is invalid, either semantically or syntactically. + + + + + Syntax that was analyzed to produce the operation. + + + + + Result type of the operation, or null if the operation does not produce a result. + + + + + If the operation is an expression that evaluates to a constant value, is true and is the value of the expression. Otherwise, is false. + + + + + All of the kinds of operations, including statements and expressions. + + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + + Determines the level of optimization of the generated code. + + + + + Disables all optimizations and instruments the generated code to improve debugging experience. + + + The compiler prefers debuggability over performance. Do not use for code running in a production environment. + + JIT optimizations are disabled via assembly level attribute (). + Edit and Continue is enabled. + Slots for local variables are not reused, lifetime of local variables is extended to make the values available during debugging. + + + Corresponds to command line argument /optimize-. + + + + + + Enables all optimizations, debugging experience might be degraded. + + + The compiler prefers performance over debuggability. Use for code running in a production environment. + + JIT optimizations are enabled via assembly level attribute (). + Edit and Continue is disabled. + Sequence points may be optimized away. As a result it might not be possible to place or hit a breakpoint. + User-defined locals might be optimized away. They might not be available while debugging. + + + Corresponds to command line argument /optimize+. + + + + + + Represents parse options common to C# and VB. + + + + + Specifies whether to parse as regular code files, script files or interactive code. + + + + + Gets a value indicating whether the documentation comments are parsed. + + true if documentation comments are parsed, false otherwise. + + + + Creates a new options instance with the specified source code kind. + + + + + Creates a new options instance with the specified documentation mode. + + + + + Enable some experimental language features for testing. + + + + + Returns the experimental features. + + + + + Names of defined preprocessor symbols. + + + + + AnyCPU (default) compiles the assembly to run on any platform. + + + + + x86 compiles the assembly to be run by the 32-bit, x86-compatible common language runtime. + + + + + x64 compiles the assembly to be run by the 64-bit common language runtime on a computer that supports the AMD64 or EM64T instruction set. + + + + + Itanium compiles the assembly to be run by the 64-bit common language runtime on a computer with an Itanium processor. + + + + + Compiles your assembly to run on any platform. Your application runs in 32-bit mode on systems that support both 64-bit and 32-bit applications. + + + + + Compiles your assembly to run on a computer that has an Advanced RISC Machine (ARM) processor. + + + + + The symbol that was referred to by the identifier, if any. + + + + + Returns true if this preprocessing symbol is defined at the identifier position. + + + + + Allows asking semantic questions about a tree of syntax nodes in a Compilation. Typically, + an instance is obtained by a call to GetBinding on a Compilation or Compilation. + + + An instance of SemanticModel caches local symbols and semantic information. Thus, it + is much more efficient to use a single instance of SemanticModel when asking multiple + questions about a syntax tree, because information from the first question may be reused. + This also means that holding onto an instance of SemanticModel for a long time may keep a + significant amount of memory from being garbage collected. + + + When an answer is a named symbol that is reachable by traversing from the root of the symbol + table, (that is, from an AssemblySymbol of the Compilation), that symbol will be returned + (i.e. the returned value will be reference-equal to one reachable from the root of the + symbol table). Symbols representing entities without names (e.g. array-of-int) may or may + not exhibit reference equality. However, some named symbols (such as local variables) are + not reachable from the root. These symbols are visible as answers to semantic questions. + When the same SemanticModel object is used, the answers exhibit reference-equality. + + + + + + Gets the source language ("C#" or "Visual Basic"). + + + + + The compilation this model was obtained from. + + + + + The compilation this model was obtained from. + + + + + The syntax tree this model was obtained from. + + + + + The syntax tree this model was obtained from. + + + + + Gets the operation corresponding to the expression or statement syntax node. + + The expression or statement syntax node. + An optional cancellation token. + + + + + Returns true if this is a SemanticModel that ignores accessibility rules when answering semantic questions. + + + + + Gets symbol information about a syntax node. + + The syntax node to get semantic information for. + A cancellation token that can be used to cancel the + process of obtaining the semantic info. + + + + Gets symbol information about a syntax node. + + The syntax node to get semantic information for. + A cancellation token that can be used to cancel the + process of obtaining the semantic info. + + + + Binds the node in the context of the specified location and get semantic information + such as type, symbols and diagnostics. This method is used to get semantic information + about an expression that did not actually appear in the source code. + + A character position used to identify a declaration scope and + accessibility. This character position must be within the FullSpan of the Root syntax + node in this SemanticModel. + + A syntax node that represents a parsed expression. This syntax + node need not and typically does not appear in the source code referred to SemanticModel + instance. + Indicates whether to binding the expression as a full expressions, + or as a type or namespace. If SpeculativeBindingOption.BindAsTypeOrNamespace is supplied, then + expression should derive from TypeSyntax. + The semantic information for the topmost node of the expression. + The passed in expression is interpreted as a stand-alone expression, as if it + appeared by itself somewhere within the scope that encloses "position". + + + + Binds the node in the context of the specified location and get semantic information + such as type, symbols and diagnostics. This method is used to get semantic information + about an expression that did not actually appear in the source code. + + A character position used to identify a declaration scope and + accessibility. This character position must be within the FullSpan of the Root syntax + node in this SemanticModel. + + A syntax node that represents a parsed expression. This syntax + node need not and typically does not appear in the source code referred to SemanticModel + instance. + Indicates whether to binding the expression as a full expressions, + or as a type or namespace. If SpeculativeBindingOption.BindAsTypeOrNamespace is supplied, then + expression should derive from TypeSyntax. + The semantic information for the topmost node of the expression. + The passed in expression is interpreted as a stand-alone expression, as if it + appeared by itself somewhere within the scope that encloses "position". + + + + Binds the node in the context of the specified location and get semantic information + such as type, symbols and diagnostics. This method is used to get semantic information + about an expression that did not actually appear in the source code. + + A character position used to identify a declaration scope and + accessibility. This character position must be within the FullSpan of the Root syntax + node in this SemanticModel. + + A syntax node that represents a parsed expression. This syntax + node need not and typically does not appear in the source code referred to SemanticModel + instance. + Indicates whether to binding the expression as a full expressions, + or as a type or namespace. If SpeculativeBindingOption.BindAsTypeOrNamespace is supplied, then + expression should derive from TypeSyntax. + The semantic information for the topmost node of the expression. + The passed in expression is interpreted as a stand-alone expression, as if it + appeared by itself somewhere within the scope that encloses "position". + + + + Binds the node in the context of the specified location and get semantic information + such as type, symbols and diagnostics. This method is used to get semantic information + about an expression that did not actually appear in the source code. + + A character position used to identify a declaration scope and + accessibility. This character position must be within the FullSpan of the Root syntax + node in this SemanticModel. + + A syntax node that represents a parsed expression. This syntax + node need not and typically does not appear in the source code referred to SemanticModel + instance. + Indicates whether to binding the expression as a full expressions, + or as a type or namespace. If SpeculativeBindingOption.BindAsTypeOrNamespace is supplied, then + expression should derive from TypeSyntax. + The semantic information for the topmost node of the expression. + The passed in expression is interpreted as a stand-alone expression, as if it + appeared by itself somewhere within the scope that encloses "position". + + + + Gets type information about a syntax node. + + The syntax node to get semantic information for. + A cancellation token that can be used to cancel the + process of obtaining the semantic info. + + + + Gets type information about a syntax node. + + The syntax node to get semantic information for. + A cancellation token that can be used to cancel the + process of obtaining the semantic info. + + + + If "nameSyntax" resolves to an alias name, return the IAliasSymbol corresponding + to A. Otherwise return null. + + Name to get alias info for. + A cancellation token that can be used to cancel the + process of obtaining the alias information. + + + + If "nameSyntax" resolves to an alias name, return the IAliasSymbol corresponding + to A. Otherwise return null. + + Name to get alias info for. + A cancellation token that can be used to cancel the + process of obtaining the alias information. + + + + Returns true if this is a speculative semantic model created with any of the TryGetSpeculativeSemanticModel methods. + + + + + If this is a speculative semantic model, returns the original position at which the speculative model was created. + Otherwise, returns 0. + + + + + If this is a speculative semantic model, then returns its parent semantic model. + Otherwise, returns null. + + + + + If this is a speculative semantic model, then returns its parent semantic model. + Otherwise, returns null. + + + + + Binds the name in the context of the specified location and sees if it resolves to an + alias name. If it does, return the AliasSymbol corresponding to it. Otherwise, return null. + + A character position used to identify a declaration scope and + accessibility. This character position must be within the FullSpan of the Root syntax + node in this SemanticModel. + + A syntax node that represents a name. This syntax + node need not and typically does not appear in the source code referred to by the + SemanticModel instance. + Indicates whether to binding the name as a full expression, + or as a type or namespace. If SpeculativeBindingOption.BindAsTypeOrNamespace is supplied, then + expression should derive from TypeSyntax. + The passed in name is interpreted as a stand-alone name, as if it + appeared by itself somewhere within the scope that encloses "position". + + + + Binds the name in the context of the specified location and sees if it resolves to an + alias name. If it does, return the AliasSymbol corresponding to it. Otherwise, return null. + + A character position used to identify a declaration scope and + accessibility. This character position must be within the FullSpan of the Root syntax + node in this SemanticModel. + + A syntax node that represents a name. This syntax + node need not and typically does not appear in the source code referred to by the + SemanticModel instance. + Indicates whether to binding the name as a full expression, + or as a type or namespace. If SpeculativeBindingOption.BindAsTypeOrNamespace is supplied, then + expression should derive from TypeSyntax. + The passed in name is interpreted as a stand-alone name, as if it + appeared by itself somewhere within the scope that encloses "position". + + + + Get all of the syntax errors within the syntax tree associated with this + object. Does not get errors involving declarations or compiling method bodies or initializers. + + Optional span within the syntax tree for which to get diagnostics. + If no argument is specified, then diagnostics for the entire tree are returned. + A cancellation token that can be used to cancel the + process of obtaining the diagnostics. + + + + Get all of the declaration errors within the syntax tree associated with this + object. Does not get errors involving incorrect syntax, compiling method bodies or initializers. + + Optional span within the syntax tree for which to get diagnostics. + If no argument is specified, then diagnostics for the entire tree are returned. + A cancellation token that can be used to cancel the + process of obtaining the diagnostics. + The declaration errors for a syntax tree are cached. The first time this method + is called, all declarations are analyzed for diagnostics. Calling this a second time + will return the cached diagnostics. + + + + + Get all of the method body and initializer errors within the syntax tree associated with this + object. Does not get errors involving incorrect syntax or declarations. + + Optional span within the syntax tree for which to get diagnostics. + If no argument is specified, then diagnostics for the entire tree are returned. + A cancellation token that can be used to cancel the + process of obtaining the diagnostics. + The method body errors for a syntax tree are not cached. The first time this method + is called, all method bodies are analyzed for diagnostics. Calling this a second time + will repeat this work. + + + + + Get all the errors within the syntax tree associated with this object. Includes errors + involving compiling method bodies or initializers, in addition to the errors returned by + GetDeclarationDiagnostics. + + Optional span within the syntax tree for which to get diagnostics. + If no argument is specified, then diagnostics for the entire tree are returned. + A cancellation token that can be used to cancel the + process of obtaining the diagnostics. + + Because this method must semantically bind all method bodies and initializers to check + for diagnostics, it may take a significant amount of time. Unlike + GetDeclarationDiagnostics, diagnostics for method bodies and initializers are not + cached, any semantic information used to obtain the diagnostics is discarded. + + + + + Gets the symbol associated with a declaration syntax node. + + A syntax node that is a declaration. This can be any type + derived from MemberDeclarationSyntax, TypeDeclarationSyntax, EnumDeclarationSyntax, + NamespaceDeclarationSyntax, ParameterSyntax, TypeParameterSyntax, or the alias part of a + UsingDirectiveSyntax + The cancellation token. + The symbol declared by the node or null if the node is not a declaration. + + + + Gets the symbol associated with a declaration syntax node. + + A syntax node that is a declaration. This can be any type + derived from MemberDeclarationSyntax, TypeDeclarationSyntax, EnumDeclarationSyntax, + NamespaceDeclarationSyntax, ParameterSyntax, TypeParameterSyntax, or the alias part of a + UsingDirectiveSyntax + The cancellation token. + The symbol declared by the node or null if the node is not a declaration. + + + + Gets the symbol associated with a declaration syntax node. Unlike , + this method returns all symbols declared by a given declaration syntax node. Specifically, in the case of field declaration syntax nodes, + which can declare multiple symbols, this method returns all declared symbols. + + A syntax node that is a declaration. This can be any type + derived from MemberDeclarationSyntax, TypeDeclarationSyntax, EnumDeclarationSyntax, + NamespaceDeclarationSyntax, ParameterSyntax, TypeParameterSyntax, or the alias part of a + UsingDirectiveSyntax + The cancellation token. + The symbols declared by the node. + + + + Gets the symbol associated with a declaration syntax node. Unlike , + this method returns all symbols declared by a given declaration syntax node. Specifically, in the case of field declaration syntax nodes, + which can declare multiple symbols, this method returns all declared symbols. + + A syntax node that is a declaration. This can be any type + derived from MemberDeclarationSyntax, TypeDeclarationSyntax, EnumDeclarationSyntax, + NamespaceDeclarationSyntax, ParameterSyntax, TypeParameterSyntax, or the alias part of a + UsingDirectiveSyntax + The cancellation token. + The symbols declared by the node. + + + + Gets the available named symbols in the context of the specified location and optional container. Only + symbols that are accessible and visible from the given location are returned. + + The character position for determining the enclosing declaration scope and + accessibility. + The container to search for symbols within. If null then the enclosing declaration + scope around position is used. + The name of the symbol to find. If null is specified then symbols + with any names are returned. + Consider (reduced) extension methods. + A list of symbols that were found. If no symbols were found, an empty list is returned. + + The "position" is used to determine what variables are visible and accessible. Even if "container" is + specified, the "position" location is significant for determining which members of "containing" are + accessible. + + Labels are not considered (see ). + + Non-reduced extension methods are considered regardless of the value of . + + + + + Backing implementation of . + + + + + Gets the available base type members in the context of the specified location. Akin to + calling with the container set to the immediate base type of + the type in which occurs. However, the accessibility rules + are different: protected members of the base type will be visible. + + Consider the following example: + + public class Base + { + protected void M() { } + } + + public class Derived : Base + { + void Test(Base b) + { + b.M(); // Error - cannot access protected member. + base.M(); + } + } + + Protected members of an instance of another type are only accessible if the instance is known + to be "this" instance (as indicated by the "base" keyword). + + The character position for determining the enclosing declaration scope and + accessibility. + The name of the symbol to find. If null is specified then symbols + with any names are returned. + A list of symbols that were found. If no symbols were found, an empty list is returned. + + The "position" is used to determine what variables are visible and accessible. + + Non-reduced extension methods are considered, but reduced extension methods are not. + + + + + Backing implementation of . + + + + + Gets the available named static member symbols in the context of the specified location and optional container. + Only members that are accessible and visible from the given location are returned. + + Non-reduced extension methods are considered, since they are static methods. + + The character position for determining the enclosing declaration scope and + accessibility. + The container to search for symbols within. If null then the enclosing declaration + scope around position is used. + The name of the symbol to find. If null is specified then symbols + with any names are returned. + A list of symbols that were found. If no symbols were found, an empty list is returned. + + The "position" is used to determine what variables are visible and accessible. Even if "container" is + specified, the "position" location is significant for determining which members of "containing" are + accessible. + + Essentially the same as filtering instance members out of the results of an analogous call. + + + + + Backing implementation of . + + + + + Gets the available named namespace and type symbols in the context of the specified location and optional container. + Only members that are accessible and visible from the given location are returned. + + The character position for determining the enclosing declaration scope and + accessibility. + The container to search for symbols within. If null then the enclosing declaration + scope around position is used. + The name of the symbol to find. If null is specified then symbols + with any names are returned. + A list of symbols that were found. If no symbols were found, an empty list is returned. + + The "position" is used to determine what variables are visible and accessible. Even if "container" is + specified, the "position" location is significant for determining which members of "containing" are + accessible. + + Does not return INamespaceOrTypeSymbol, because there could be aliases. + + + + + Backing implementation of . + + + + + Gets the available named label symbols in the context of the specified location and optional container. + Only members that are accessible and visible from the given location are returned. + + The character position for determining the enclosing declaration scope and + accessibility. + The name of the symbol to find. If null is specified then symbols + with any names are returned. + A list of symbols that were found. If no symbols were found, an empty list is returned. + + The "position" is used to determine what variables are visible and accessible. Even if "container" is + specified, the "position" location is significant for determining which members of "containing" are + accessible. + + + + + Backing implementation of . + + + + + Analyze control-flow within a part of a method body. + + The first node to be included within the analysis. + The last node to be included within the analysis. + An object that can be used to obtain the result of the control flow analysis. + The span is not with a method + body. + + The first and last nodes must be fully inside the same method body. + + + + + Analyze control-flow within a part of a method body. + + The first node to be included within the analysis. + The last node to be included within the analysis. + An object that can be used to obtain the result of the control flow analysis. + The span is not with a method + body. + + The first and last nodes must be fully inside the same method body. + + + + + Analyze control-flow within a part of a method body. + + The statement to be analyzed. + An object that can be used to obtain the result of the control flow analysis. + The span is not with a method + body. + + The statement must be fully inside the same method body. + + + + + Analyze control-flow within a part of a method body. + + The statement to be analyzed. + An object that can be used to obtain the result of the control flow analysis. + The span is not with a method + body. + + The statement must be fully inside the same method body. + + + + + Analyze data-flow within a part of a method body. + + The first node to be included within the analysis. + The last node to be included within the analysis. + An object that can be used to obtain the result of the data flow analysis. + The span is not with a method + body. + + The first and last nodes must be fully inside the same method body. + + + + + Analyze data-flow within a part of a method body. + + The first node to be included within the analysis. + The last node to be included within the analysis. + An object that can be used to obtain the result of the data flow analysis. + The span is not with a method + body. + + The first and last nodes must be fully inside the same method body. + + + + + Analyze data-flow within a part of a method body. + + The statement or expression to be analyzed. + An object that can be used to obtain the result of the data flow analysis. + The statement or expression is not with a method + body or field or property initializer. + + The statement or expression must be fully inside a method body. + + + + + Analyze data-flow within a part of a method body. + + The statement or expression to be analyzed. + An object that can be used to obtain the result of the data flow analysis. + The statement or expression is not with a method + body or field or property initializer. + + The statement or expression must be fully inside a method body. + + + + + If the node provided has a constant value an Optional value will be returned with + HasValue set to true and with Value set to the constant. If the node does not have an + constant value, an Optional will be returned with HasValue set to false. + + + + + If the node provided has a constant value an Optional value will be returned with + HasValue set to true and with Value set to the constant. If the node does not have an + constant value, an Optional will be returned with HasValue set to false. + + + + + When getting information for a symbol that resolves to a method group or property group, + from which a method is then chosen; the chosen method or property is present in Symbol; + all methods in the group that was consulted are placed in this property. + + + + + When getting information for a symbol that resolves to a method group or property group, + from which a method is then chosen; the chosen method or property is present in Symbol; + all methods in the group that was consulted are placed in this property. + + + + + Given a position in the SyntaxTree for this SemanticModel returns the innermost Symbol + that the position is considered inside of. + + + + + Given a position in the SyntaxTree for this SemanticModel returns the innermost Symbol + that the position is considered inside of. + + + + + Determines if the symbol is accessible from the specified location. + + A character position used to identify a declaration scope and + accessibility. This character position must be within the FullSpan of the Root syntax + node in this SemanticModel. + + The symbol that we are checking to see if it accessible. + + True if "symbol is accessible, false otherwise. + + This method only checks accessibility from the point of view of the accessibility + modifiers on symbol and its containing types. Even if true is returned, the given symbol + may not be able to be referenced for other reasons, such as name hiding. + + + + + Determines if the symbol is accessible from the specified location. + + A character position used to identify a declaration scope and + accessibility. This character position must be within the FullSpan of the Root syntax + node in this SemanticModel. + + The symbol that we are checking to see if it accessible. + + True if "symbol is accessible, false otherwise. + + This method only checks accessibility from the point of view of the accessibility + modifiers on symbol and its containing types. Even if true is returned, the given symbol + may not be able to be referenced for other reasons, such as name hiding. + + + + + Field-like events can be used as fields in types that can access private + members of the declaring type of the event. + + + Always false for VB events. + + + + + Field-like events can be used as fields in types that can access private + members of the declaring type of the event. + + + Always false for VB events. + + + + + If is an identifier name syntax node, return the corresponding + to it. + + The nameSyntax node to get semantic information for. + + + + If is an identifier name syntax node, return the corresponding + to it. + + The nameSyntax node to get semantic information for. + + + + Gets the for all the declarations whose span overlaps with the given . + + Span to get declarations. + Flag indicating whether should be computed for the returned declaration infos. + If false, then is always null. + Builder to add declarations. + Cancellation token. + + + + Takes a node and returns a set of declarations that overlap the node's span. + + + + + Takes a Symbol and syntax for one of its declaring syntax reference and returns the topmost syntax node to be used by syntax analyzer. + + + + + Resolves references to source documents specified in the source. + + + + + Normalizes specified source path with respect to base file path. + + The source path to normalize. May be absolute or relative. + Path of the source file that contains the (may also be relative), or null if not available. + Normalized path, or null if can't be normalized. The resulting path doesn't need to exist. + + + + Resolves specified path with respect to base file path. + + The path to resolve. May be absolute or relative. + Path of the source file that contains the (may also be relative), or null if not available. + Normalized path, or null if the file can't be resolved. + + + + Opens a that allows reading the content of the specified file. + + Path returned by . + is null. + is not a valid absolute path. + Error reading file . See for details. + + + + Reads the contents of and returns a . + + Path returned by . + + + + Describes the kind of binding to be performed in one of the SemanticModel + speculative binding methods. + + + + + Binds the given expression using the normal expression binding rules + that would occur during normal binding of expressions. + + + + + Binds the given expression as a type or namespace only. If this option + is selected, then the given expression must derive from TypeSyntax. + + + + + Represents subsystem version, see /subsystemversion command line + option for details and valid values. + + The following table lists common subsystem versions of Windows. + + Windows version Subsystem version + - Windows 2000 5.00 + - Windows XP 5.01 + - Windows Vista 6.00 + - Windows 7 6.01 + - Windows 8 Release Preview 6.02 + + + + + Major subsystem version + + + + + Minor subsystem version + + + + + Subsystem version not specified + + + + + Subsystem version: Windows 2000 + + + + + Subsystem version: Windows XP + + + + + Subsystem version: Windows Vista + + + + + Subsystem version: Windows 7 + + + + + Subsystem version: Windows 8 + + + + + Try parse subsystem version in "x.y" format. Note, no spaces are allowed in string representation. + + String to parse + the value if successfully parsed or None otherwise + true if parsed successfully, false otherwise + + + + Create a new instance of subsystem version with specified major and minor values. + + major subsystem version + minor subsystem version + subsystem version with provided major and minor + + + + Subsystem version default for the specified output kind and platform combination + + Output kind + Platform + Subsystem version + + + + True if the subsystem version has a valid value + + + + + The symbol that was referred to by the syntax node, if any. Returns null if the given + expression did not bind successfully to a single symbol. If null is returned, it may + still be that case that we have one or more "best guesses" as to what symbol was + intended. These best guesses are available via the CandidateSymbols property. + + + + + If the expression did not successfully resolve to a symbol, but there were one or more + symbols that may have been considered but discarded, this property returns those + symbols. The reason that the symbols did not successfully resolve to a symbol are + available in the CandidateReason property. For example, if the symbol was inaccessible, + ambiguous, or used in the wrong context. + + + + + If the expression did not successfully resolve to a symbol, but there were one or more + symbols that may have been considered but discarded, this property describes why those + symbol or symbols were not considered suitable. + + + + + The type of the expression represented by the syntax node. For expressions that do not + have a type, null is returned. If the type could not be determined due to an error, then + an IErrorTypeSymbol is returned. + + + + + The type of the expression after it has undergone an implicit conversion. If the type + did not undergo an implicit conversion, returns the same as Type. + + + + + Resolves references to XML documents specified in source code. + + + + + Resolves specified XML reference with respect to base file path. + + The reference path to resolve. May be absolute or relative path. + Path of the source file that contains the (may also be relative), or null if not available. + Path to the XML artifact, or null if the file can't be resolved. + + + + Opens a that allows reading the content of the specified file. + + Path returned by . + is null. + is not a valid absolute path. + Error reading file . See for details. + + + + Parses .RES a file into its constituent resource elements. + Mostly translated from cvtres.cpp. + + + + + Assume that 3 WORDs preceded this string and that they began 32-bit aligned. + Given the string length compute the number of bytes that should be written to end + the buffer on a 32-bit boundary + + + + + + assuming the length of bytes submitted began on a 32-bit boundary, + round up this length as necessary so that it ends at a 32-bit boundary. + + + + + + + compute number of chars needed to end up on a 32-bit boundary assuming that three + WORDS preceded this string. + + + + + + + Represents a non source code file. + + + + + Path to the text. + + + + + Retrieves a with the contents of this file. + + + + + Abstracts the ability to classify and load messages for error codes. Allows the error + infrastructure to be reused between C# and VB. + + + + + Given an error code, get the severity (warning or error) of the code. + + + + + Load the message for the given error code. If the message contains + "fill-in" placeholders, those should be expressed in standard string.Format notation + and be in the string. + + + + + Get an optional localizable title for the given diagnostic code. + + + + + Get an optional localizable description for the given diagnostic code. + + + + + Get a localizable message format string for the given diagnostic code. + + + + + Get an optional help link for the given diagnostic code. + + + + + Get the diagnostic category for the given diagnostic code. + Default category is . + + + + + Get the text prefix (e.g., "CS" for C#) used on error messages. + + + + + Get the warning level for warnings (e.g., 1 through 4 for C#). VB does not have warning + levels and always uses 1. Errors should return 0. + + + + + Type that defines error codes. For testing purposes only. + + + + + Create a simple language specific diagnostic for given error code. + + + + + Create a simple language specific diagnostic for given error code. + + + + + Given a message identifier (e.g., CS0219), severity, warning as error and a culture, + get the entire prefix (e.g., "error CS0219: Warning as Error:" for C# or "error BC42024:" for VB) used on error messages. + + + + + Convert given symbol to string representation. + + + + + Given an error code (like 1234) return the identifier (CS1234 or BC1234). + + + + + Produces the filtering action for the diagnostic based on the options passed in. + + + A new with new effective severity based on the options or null if the + diagnostic has been suppressed. + + + + + Filter a based on the compilation options so that /nowarn and /warnaserror etc. take effect.options + + A with effective severity based on option or null if suppressed. + + + + Represents a diagnostic, such as a compiler error or a warning, along with the location where it occurred. + + + A diagnostic (such as a compiler error or a warning), along with the location where it occurred. + + + + + Highest valid warning level for non-error diagnostics. + + + + + Creates a instance. + + A describing the diagnostic + An optional primary location of the diagnostic. If null, will return . + Arguments to the message of the diagnostic + The instance. + + + + Creates a instance. + + A describing the diagnostic. + An optional primary location of the diagnostic. If null, will return . + + An optional set of name-value pairs by means of which the analyzer that creates the diagnostic + can convey more detailed information to the fixer. If null, will return + . + + Arguments to the message of the diagnostic. + The instance. + + + + Creates a instance. + + A describing the diagnostic. + An optional primary location of the diagnostic. If null, will return . + + An optional set of additional locations related to the diagnostic. + Typically, these are locations of other items referenced in the message. + If null, will return an empty list. + + Arguments to the message of the diagnostic. + The instance. + + + + Creates a instance. + + A describing the diagnostic. + An optional primary location of the diagnostic. If null, will return . + + An optional set of additional locations related to the diagnostic. + Typically, these are locations of other items referenced in the message. + If null, will return an empty list. + + + An optional set of name-value pairs by means of which the analyzer that creates the diagnostic + can convey more detailed information to the fixer. If null, will return + . + + Arguments to the message of the diagnostic. + The instance. + + + + Creates a instance which is localizable. + + An identifier for the diagnostic. For diagnostics generated by the compiler, this will be a numeric code with a prefix such as "CS1001". + The category of the diagnostic. For diagnostics generated by the compiler, the category will be "Compiler". + The diagnostic message text. + The diagnostic's effective severity. + The diagnostic's default severity. + True if the diagnostic is enabled by default + The warning level, between 1 and 4 if severity is ; otherwise 0. + An optional short localizable title describing the diagnostic. + An optional longer localizable description for the diagnostic. + An optional hyperlink that provides more detailed information regarding the diagnostic. + An optional primary location of the diagnostic. If null, will return . + + An optional set of additional locations related to the diagnostic. + Typically, these are locations of other items referenced in the message. + If null, will return an empty list. + + + An optional set of custom tags for the diagnostic. See for some well known tags. + If null, will return an empty list. + + + An optional set of name-value pairs by means of which the analyzer that creates the diagnostic + can convey more detailed information to the fixer. If null, will return + . + + The instance. + + + + Creates a instance which is localizable. + + An identifier for the diagnostic. For diagnostics generated by the compiler, this will be a numeric code with a prefix such as "CS1001". + The category of the diagnostic. For diagnostics generated by the compiler, the category will be "Compiler". + The diagnostic message text. + The diagnostic's effective severity. + The diagnostic's default severity. + True if the diagnostic is enabled by default + The warning level, between 1 and 4 if severity is ; otherwise 0. + Flag indicating whether the diagnostic is suppressed by a source suppression. + An optional short localizable title describing the diagnostic. + An optional longer localizable description for the diagnostic. + An optional hyperlink that provides more detailed information regarding the diagnostic. + An optional primary location of the diagnostic. If null, will return . + + An optional set of additional locations related to the diagnostic. + Typically, these are locations of other items referenced in the message. + If null, will return an empty list. + + + An optional set of custom tags for the diagnostic. See for some well known tags. + If null, will return an empty list. + + + An optional set of name-value pairs by means of which the analyzer that creates the diagnostic + can convey more detailed information to the fixer. If null, will return + . + + The instance. + + + + Gets the diagnostic descriptor, which provides a description about a . + + + + + Gets the diagnostic identifier. For diagnostics generated by the compiler, this will be a numeric code with a prefix such as "CS1001". + + + + + Gets the category of diagnostic. For diagnostics generated by the compiler, the category will be "Compiler". + + + + + Get the culture specific text of the message. + + + + + Gets the default of the diagnostic's . + + + To get the effective severity of the diagnostic, use . + + + + + Gets the effective of the diagnostic. + + + To get the default severity of diagnostic's , use . + To determine if this is a warning treated as an error, use . + + + + + Gets the warning level. This is 0 for diagnostics with severity , + otherwise an integer between 1 and 4. + + + + + Returns true if the diagnostic has a source suppression, i.e. an attribute or a pragma suppression. + + + + + Gets the for suppressed diagnostics, i.e. = true. + Otherwise, returns null. + + + + + Returns true if this diagnostic is enabled by default by the author of the diagnostic. + + + + + Returns true if this is a warning treated as an error; otherwise false. + + + True implies = + and = . + + + + + Gets the primary location of the diagnostic, or if no primary location. + + + + + Gets an array of additional locations related to the diagnostic. + Typically these are the locations of other items referenced in the message. + + + + + Gets custom tags for the diagnostic. + + + + + Gets property bag for the diagnostic. it will return if there is no entry. + This can be used to put diagnostic specific information you want to pass around. for example, to corresponding fixer. + + + + + Create a new instance of this diagnostic with the Location property changed. + + + + + Create a new instance of this diagnostic with the Severity property changed. + + + + + Create a new instance of this diagnostic with the suppression info changed. + + + + + Returns true if the diagnostic location (or any additional location) is within the given tree and intersects with the filterSpanWithinTree, if non-null. + + + + + Returns true if a diagnostic is not configurable, i.e. cannot be suppressed or filtered or have its severity changed. + For example, compiler errors are always non-configurable. + + + + + Indicates that the diagnostic is related to some unnecessary source code. + + + + + Indicates that the diagnostic is related to edit and continue. + + + + + Indicates that the diagnostic is related to build. + + + + + Indicates that the diagnostic is reported by the compiler. + + + + + Indicates that the diagnostic can be used for telemetry + + + + + Indicates that the diagnostic is not configurable, i.e. it cannot be suppressed or filtered or have its severity changed. + + + + + Indicates that the diagnostic is related to an exception thrown by a . + + + + + Represents a mutable bag of diagnostics. You can add diagnostics to the bag, + and also get all the diagnostics out of the bag (the bag implements + IEnumerable<Diagnostics>. Once added, diagnostics cannot be removed, and no ordering + is guaranteed. + + It is ok to Add diagnostics to the same bag concurrently on multiple threads. + It is NOT ok to Add concurrently with Clear or Free operations. + + The bag is optimized to be efficient when containing zero errors. + + + + Return true if the bag is completely empty - not even containing void diagnostics. + + + This exists for short-circuiting purposes. Use + to get a resolved Tuple(Of NamedTypeSymbol, ImmutableArray(Of Diagnostic)) (i.e. empty after eliminating void diagnostics). + + + + + Returns true if the bag has any diagnostics with Severity=Error. Does not consider warnings or informationals. + + + Resolves any lazy diagnostics in the bag. + + Generally, this should only be called by the creator (modulo pooling) of the bag (i.e. don't use bags to communicate - + if you need more info, pass more info). + + + + + Returns true if the bag has any non-lazy diagnostics with Severity=Error. + + + Does not resolve any lazy diagnostics in the bag. + + Generally, this should only be called by the creator (modulo pooling) of the bag (i.e. don't use bags to communicate - + if you need more info, pass more info). + + + + + Add a diagnostic to the bag. + + + + + Add multiple diagnostics to the bag. + + + + + Add multiple diagnostics to the bag. + + + + + Add another DiagnosticBag to the bag. + + + + + Add another DiagnosticBag to the bag and free the argument. + + + + + Seal the bag so no further errors can be added, while clearing it and returning the old set of errors. + Return the bag to the pool. + + + + + Generally, this should only be called by the creator (modulo pooling) of the bag (i.e. don't use bags to communicate - + if you need more info, pass more info). + + + + + Using an iterator to avoid copying the list. If perf is a problem, + create an explicit enumerator type. + + + + + Get the underlying concurrent storage, creating it on demand if needed. + NOTE: Concurrent Adding to the bag is supported, but concurrent Clearing is not. + If one thread adds to the bug while another clears it, the scenario is + broken and we cannot do anything about it here. + + + + NOTE: Concurrent Adding to the bag is supported, but concurrent Clearing is not. + If one thread adds to the bug while another clears it, the scenario is + broken and we cannot do anything about it here. + + + + Provides a description about a + + + + + An unique identifier for the diagnostic. + + + + + A short localizable title describing the diagnostic. + + + + + An optional longer localizable description for the diagnostic. + + + + + An optional hyperlink that provides more detailed information regarding the diagnostic. + + + + + A localizable format message string, which can be passed as the first argument to when creating the diagnostic message with this descriptor. + + + + + + The category of the diagnostic (like Design, Naming etc.) + + + + + The default severity of the diagnostic. + + + + + Returns true if the diagnostic is enabled by default. + + + + + Custom tags for the diagnostic. + + + + + Create a DiagnosticDescriptor, which provides description about a . + NOTE: For localizable , and/or , + use constructor overload . + + A unique identifier for the diagnostic. For example, code analysis diagnostic ID "CA1001". + A short title describing the diagnostic. For example, for CA1001: "Types that own disposable fields should be disposable". + A format message string, which can be passed as the first argument to when creating the diagnostic message with this descriptor. + For example, for CA1001: "Implement IDisposable on '{0}' because it creates members of the following IDisposable types: '{1}'." + The category of the diagnostic (like Design, Naming etc.). For example, for CA1001: "Microsoft.Design". + Default severity of the diagnostic. + True if the diagnostic is enabled by default. + An optional longer description of the diagnostic. + An optional hyperlink that provides a more detailed description regarding the diagnostic. + Optional custom tags for the diagnostic. See for some well known tags. + + + + Create a DiagnosticDescriptor, which provides description about a . + + A unique identifier for the diagnostic. For example, code analysis diagnostic ID "CA1001". + A short localizable title describing the diagnostic. For example, for CA1001: "Types that own disposable fields should be disposable". + A localizable format message string, which can be passed as the first argument to when creating the diagnostic message with this descriptor. + For example, for CA1001: "Implement IDisposable on '{0}' because it creates members of the following IDisposable types: '{1}'." + The category of the diagnostic (like Design, Naming etc.). For example, for CA1001: "Microsoft.Design". + Default severity of the diagnostic. + True if the diagnostic is enabled by default. + An optional longer localizable description of the diagnostic. + An optional hyperlink that provides a more detailed description regarding the diagnostic. + Optional custom tags for the diagnostic. See for some well known tags. + Example descriptor for rule CA1001: + internal static DiagnosticDescriptor Rule = new DiagnosticDescriptor(RuleId, + new LocalizableResourceString(nameof(FxCopRulesResources.TypesThatOwnDisposableFieldsShouldBeDisposable), FxCopRulesResources.ResourceManager, typeof(FxCopRulesResources)), + new LocalizableResourceString(nameof(FxCopRulesResources.TypeOwnsDisposableFieldButIsNotDisposable), FxCopRulesResources.ResourceManager, typeof(FxCopRulesResources)), + FxCopDiagnosticCategory.Design, + DiagnosticSeverity.Warning, + isEnabledByDefault: true, + helpLinkUri: "http://msdn.microsoft.com/library/ms182172.aspx", + customTags: DiagnosticCustomTags.Microsoft); + + + + + Gets the effective severity of diagnostics created based on this descriptor and the given . + + Compilation options + + + + Returns true if diagnostic descriptor is not configurable, i.e. cannot be suppressed or filtered or have its severity changed. + For example, compiler errors are always non-configurable. + + + + + Formats messages. + + + + + Formats the message using the optional . + + The diagnostic. + The formatter; or null to use the default formatter. + The formatted message. + + + + A DiagnosticInfo object has information about a diagnostic, but without any attached location information. + + + More specialized diagnostics with additional information (e.g., ambiguity errors) can derive from this class to + provide access to additional information about the error, such as what symbols were involved in the ambiguity. + + + + + The error code, as an integer. + + + + + Returns the effective severity of the diagnostic: whether this diagnostic is informational, warning, or error. + If IsWarningsAsError is true, then this returns , while returns . + + + + + Returns whether this diagnostic is informational, warning, or error by default, based on the error code. + To get diagnostic's effective severity, use . + + + + + Gets the warning level. This is 0 for diagnostics with severity , + otherwise an integer between 1 and 4. + + + + + Returns true if this is a warning treated as an error. + + + True implies = and + = . + + + + + Get the diagnostic category for the given diagnostic code. + Default category is . + + + + + If a derived class has additional information about other referenced symbols, it can + expose the locations of those symbols in a general way, so they can be reported along + with the error. + + + + + Get the message id (for example "CS1001") for the message. This includes both the error number + and a prefix identifying the source. + + + + + Get the text of the message in the given language. + + + + + For a DiagnosticInfo that is lazily evaluated, this method evaluates it + and returns a non-lazy DiagnosticInfo. + + + + + Describes how severe a diagnostic is. + + + + + Something that is an issue, as determined by some authority, + but is not surfaced through normal means. + There may be different mechanisms that act on these issues. + + + + + Information that does not indicate a problem (i.e. not prescriptive). + + + + + Something suspicious but allowed. + + + + + Something not allowed by the rules of the language or other authority. + + + + + Values for severity that are used internally by the compiler but are not exposed. + + + + + An unknown severity diagnostic is something whose severity has not yet been determined. + + + + + If an unknown diagnostic is resolved and found to be unnecessary then it is + treated as a "Void" diagnostic + + + + + Values for ErrorCode/ERRID that are used internally by the compiler but are not exposed. + + + + + The code has yet to be determined. + + + + + The code was lazily determined and does not need to be reported. + + + + + A diagnostic (such as a compiler error or a warning), along with the location where it occurred. + + + + + Get the information about the diagnostic: the code, severity, message, etc. + + + + + True if the DiagnosticInfo for this diagnostic requires (or required - this property + is immutable) resolution. + + + + + Represents a span of text in a source code file in terms of file name, line number, and offset within line. + However, the file is actually whatever was passed in when asked to parse; there may not really be a file. + + + + + Path, or null if the span represents an invalid value. + + + Path may be if not available. + + + + + True if the is a mapped path. + + + A mapped path is a path specified in source via #line (C#) or #ExternalSource (VB) directives. + + + + + Gets the of the start of the span. + + + + + + Gets the of the end of the span. + + + + + + Gets the span. + + + + + Initializes the instance. + + The file identifier - typically a relative or absolute path. + The start line position. + The end line position. + is null. + + + + Initializes the instance. + + The file identifier - typically a relative or absolute path. + The span. + is null. + + + + Returns true if the span represents a valid location. + + + + + Determines if two FileLinePositionSpan objects are equal. + + + The path is treated as an opaque string, i.e. a case-sensitive comparison is used. + + + + + Determines if two FileLinePositionSpan objects are equal. + + + + + Serves as a hash function for FileLinePositionSpan. + + The hash code. + + The path is treated as an opaque string, i.e. a case-sensitive hash is calculated. + + + + + Returns a that represents FileLinePositionSpan. + + The string representation of FileLinePositionSpan. + Path: (0,0)-(5,6) + + + + A program location in source code. + + + + + Indicates that the implementing type can be serialized via + for diagnostic message purposes. + + + Not appropriate on types that require localization, since localization should + happen after serialization. + + + + + A program location in source code. + + + + + Location kind (None/SourceFile/MetadataFile). + + + + + Returns true if the location represents a specific location in a source code file. + + + + + Returns true if the location is in metadata. + + + + + The syntax tree this location is located in or null if not in a syntax tree. + + + + + Returns the metadata module the location is associated with or null if the module is not available. + + + Might return null even if returns true. The module symbol might not be available anymore, + for example, if the location is serialized and deserialized. + + + + + The location within the syntax tree that this location is associated with. + + + If returns False this method returns an empty which starts at position 0. + + + + + Gets the location in terms of path, line and column. + + + that contains path, line and column information. + + Returns an invalid span (see ) if the information is not available. + + The values are not affected by line mapping directives (#line in C# or #ExternalSource in VB). + + + + + Gets the location in terms of path, line and column after applying source line mapping directives + (#line in C# or #ExternalSource in VB). + + + that contains file, line and column information, + or an invalid span (see ) if not available. + + + + + A location of kind LocationKind.None. + + + + + Creates an instance of a for a span in a . + + + + + Creates an instance of a for a span in a file. + + + + + Specifies the kind of location (source vs. metadata). + + + + + Unspecified location. + + + + + The location represents a position in a source file. + + + + + The location represents a metadata file. + + + + + The location represents a position in an XML file. + + + + + The location in some external file. + + + + + A program location in metadata. + + + + + A class that represents no location at all. Useful for errors in command line options, for example. + + + + + + Describes how to report a warning diagnostic. + + + + + Report a diagnostic by default. + + + + + Report a diagnostic as an error. + + + + + Report a diagnostic as a warning even though /warnaserror is specified. + + + + + Report a diagnostic as an info. + + + + + Report a diagnostic as hidden. + + + + + Suppress a diagnostic. + + + + + A program location in source code. + + + + + A program location in an XML file. + + + + + WARN: This is a test hook - do not take a dependency on this. + + + + + + + + + + A class used to provide XML documentation to the compiler for members from metadata. A + custom implementation of this class should be returned from a DocumentationResolver to provide XML + documentation comments from custom caches or locations. + + + + + Fetches a documentation comment for the given member ID. + + The documentation member ID of the item to fetch. + The preferred culture to receive a comment in. Null if + there is no preference. This is a preference only, and providers may choose to provide + results from another culture if the preferred culture was unavailable. + A cancellation token for the search. + A DocumentationComment. + + + + DocumentationProviders are compared when determining whether an AssemblySymbol can be reused. + Hence, if multiple instances can represent the same documentation, it is imperative that + Equals (and GetHashCode) be overridden to capture this fact. Otherwise, it is possible to end + up with multiple AssemblySymbols for the same assembly, which plays havoc with the type hierarchy. + + + + + DocumentationProviders are compared when determining whether an AssemblySymbol can be reused. + Hence, if multiple instances can represent the same documentation, it is imperative that + GetHashCode (and Equals) be overridden to capture this fact. Otherwise, it is possible to end + up with multiple AssemblySymbols for the same assembly, which plays havoc with the type hierarchy. + + + + + A trivial DocumentationProvider which never returns documentation. + + + + + Used by the DocumentationCommentCompiler(s) to check doc comments for XML parse errors. + As a performance optimization, this class tries to re-use the same underlying instance + when possible. + + + + + Current text to validate. + + + + + We use to validate XML doc comments. Unfortunately it cannot be reset and thus can't be pooled. + Each time we need to validate a fragment of XML we "append" it to the underlying text reader, implemented by this class, + and advance the reader. By the end of the fragment validation, we keep the reader open in a state + that is ready for the next fragment validation unless the fragment was invalid, in which case we need to create a new XmlReader. + That is why pretends that the stream has extra spaces + at the end. That should be sufficient for to not reach the end of this reader before the next + fragment is appended, unless the current fragment is malformed in one way or another. + + + + + Specifies the different documentation comment processing modes. + + + Order matters: least processing to most processing. + + + + + Treats documentation comments as regular comments. + + + + + Parses documentation comments as structured trivia, but do not report any diagnostics. + + + + + Parses documentation comments as structured trivia and report diagnostics. + + + + + Maps an async/iterator method to the synthesized state machine type that implements the method. + + + + + Generate a ConstantValue of the same integer type as the argument + and offset by the given non-negative amount. Return ConstantValue.Bad + if the generated constant would be outside the valid range of the type. + + + + + Set by the host to a fail fast trigger, + if the host desires to crash the process on a fatal exception. + + + + + Set by the host to a fail fast trigger, + if the host desires to NOT crash the process on a non fatal exception. + + + + + Use in an exception filter to report a fatal error. + Unless the exception is + it calls . The exception is passed through (the method returns false). + + False to avoid catching the exception. + + + + Use in an exception filter to report a non fatal error. + Unless the exception is + it calls . The exception isn't passed through (the method returns true). + + True to catch the exception. + + + + Use in an exception filter to report a fatal error. + Unless the exception is + it calls . The exception is passed through (the method returns false). + + False to avoid catching the exception. + + + + Use in an exception filter to report a fatal error. + Calls and passes the exception through (the method returns false). + + False to avoid catching the exception. + + + + Use in an exception filter to report a non fatal error. + Calls and doesn't pass the exception through (the method returns true). + + True to catch the exception. + + + + Cache with a fixed size that evicts the least recently used members. + Thread-safe. + + + + + Create cache from an array. The cache capacity will be the size + of the array. All elements of the array will be added to the + cache. If any duplicate keys are found in the array a + will be thrown. + + + + + For testing. Very expensive. + + + + + Expects non-empty cache. Does not lock. + + + + + Doesn't lock. + + + + + Doesn't lock. + + + + + Represents an optional bool as a single byte. + + + + + Structure that describes a member of a type. + + + + + Id/token of containing type, usually value from some enum. + For example from SpecialType enum. + I am not using SpecialType as the type for this field because + VB runtime types are not part of SpecialType. + + So, the implication is that any type ids we use outside of the SpecialType + (either for the VB runtime classes, or types like System.Task etc.) will need + to use IDs that are all mutually disjoint. + + + + + Signature of the field or method, similar to metadata signature, + but with the following exceptions: + 1) Truncated on the left, for methods starts at [ParamCount], for fields at [Type] + 2) Type tokens are not compressed + 3) BOOLEAN | CHAR | I1 | U1 | I2 | U2 | I4 | U4 | I8 | U8 | R4 | R8 | I | U | Void types are encoded by + using VALUETYPE+typeId notation. + 4) array bounds are not included. + 5) modifiers are not included. + 6) (CLASS | VALUETYPE) are omitted after GENERICINST + + + + + Helper class to match signatures in format of + MemberDescriptor.Signature to members. + + + + + Returns true if signature matches signature of the field. + Signature should be in format described in MemberDescriptor. + + + + + Returns true if signature matches signature of the property. + Signature should be in format described in MemberDescriptor. + + + + + Returns true if signature matches signature of the method. + Signature should be in format described in MemberDescriptor. + + + + + Does pretty much the same thing as MetadataDecoder.DecodeType only instead of + producing a type symbol it compares encoded type to the target. + + Signature should be in format described in MemberDescriptor. + + + + + Should return null in case of error. + + + + + Should return null in case of error. + + + + + Should only accept Pointer types. + Should return null in case of error. + + + + + Should return null in case of error. + + + + + Should only accept multi-dimensional arrays. + + + + + Should only accept multi-dimensional arrays. + Should return null in case of error. + + + + If the encoded type is invalid. + An exception from metadata reader. + + + If the encoded type is invalid. + An exception from metadata reader. + + + If the encoded type is invalid. + An exception from metadata reader. + + + An exception from metadata reader. + + + If the encoded type is invalid. + An exception from metadata reader. + + + If the encoded local variable type is invalid. + An exception from metadata reader. + + + If the encoded local variable type is invalid. + An exception from metadata reader. + + + + Used to decode signatures of local constants returned by SymReader. + + + + + Returns the local info for all locals indexed by slot. + + + + If the encoded parameter type is invalid. + + + An exception from metadata reader. + + + + Decodes attribute parameter type from method signature. + + If the encoded parameter type is invalid. + An exception from metadata reader. + + + + Decodes attribute argument type from attribute blob (called FieldOrPropType in the spec). + + If the encoded argument type is invalid. + An exception from metadata reader. + + + If the encoded attribute argument is invalid. + An exception from metadata reader. + + + If the encoded attribute argument is invalid. + An exception from metadata reader. + + + If the encoded attribute argument is invalid. + An exception from metadata reader. + + + If the given is invalid. + An exception from metadata reader. + + + If the encoded named argument is invalid. + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + + Find the methods that a given method explicitly overrides. + + + Methods may be on class or interfaces. + Containing classes/interfaces will be supertypes of the implementing type. + + TypeDef handle of the implementing type. + MethodDef handle of the implementing method. + The type symbol for the implementing type. + Array of implemented methods. + + + + Search for the corresponding to the given MethodDef token. Search amongst + the supertypes (classes and interfaces) of a designated type. + + + Generally, the type will be a type that explicitly implements an interface and the method will be the + implemented method (i.e. on the interface). + + TypeDef token of the type from which the search should begin. + MethodDef token of the target method. + Corresponding or null, if none is found. + + + + Enqueue the interfaces implemented and the type extended by a given TypeDef. + + Queue of TypeDefs to search. + Queue of TypeSymbols (representing typeRefs to search). + Handle of the TypeDef for which we want to enqueue supertypes. + An exception from metadata reader. + + + + Helper method for enqueuing a type token in the right queue. + Def -> typeDefsToSearch + Ref -> typeSymbolsToSearch + null -> neither + + + + + Enqueue the interfaces implemented and the type extended by a given TypeDef. + + Queue of TypeDefs to search. + Queue of TypeSymbols (representing typeRefs to search). + Symbol for which we want to enqueue supertypes. + + + + Enqueue the given type as either a def or a ref. + + Queue of TypeDefs to search. + Queue of TypeSymbols (representing typeRefs to search). + Symbol to enqueue. + + + + Search the members of a TypeSymbol to find the one that matches a given MethodDef token. + + Type to search for method. + MethodDef handle of the method to find. + The corresponding MethodSymbol or null. + + + + Search the members of a TypeSymbol to find the one that matches a given FieldDef token. + + Type to search for field. + FieldDef handle of the field to find. + The corresponding FieldSymbol or null. + + + + Given a MemberRef token for a method, we can find a corresponding MethodSymbol by + searching for the name and signature. + + A MemberRef token for a method. + Scope the search to supertypes of the implementing type. + True to only return method symbols, null if the token resolves to a field. + The corresponding MethodSymbol or null. + + + + Given a method symbol, return the MethodDef token, if it is defined in + this module, or a nil token, otherwise. + + The method symbol for which to return a MethodDef token. + A MethodDef token or nil. + + + + Returns a symbol that given token resolves to or null of the token represents an entity that isn't represented by a symbol, + such as vararg MemberRef. + + + + + Given a MemberRef token, return the TypeSymbol for its Class field. + + + + + Checks whether signatures match where the signatures are either from a property + and an accessor or two accessors. When comparing a property or getter to setter, the + setter signature must be the second argument and 'comparingToSetter' must be true. + + + Signature of the property containing the accessor, or the getter (type, then parameters). + + + Signature of the accessor when comparing property and accessor, + or the setter when comparing getter and setter (return type and then parameters). + + + True when comparing a property or getter to a setter, false otherwise. + + + True if differences in IsByRef for parameters should be treated as significant. + + + True if differences in return type (or value parameter for setter) should be treated as significant. + + True if the accessor signature is appropriate for the containing property. + + + + Check whether an event accessor has an appropriate signature. + + Type of the event containing the accessor. + Signature of the accessor (return type and then parameters). + True if the accessor signature is appropriate for the containing event. + + + + Decodes a serialized type name in its canonical form. The canonical name is its full type name, followed + optionally by the assembly where it is defined, its version, culture and public key token. If the assembly + name is omitted, the type name is in the current assembly otherwise it is in the referenced assembly. The + full type name is the fully qualified metadata type name. + + + + + Decodes a type name. A type name is a string which is terminated by the end of the string or one of the + delimiters '+', ',', '[', ']'. '+' separates nested classes. '[' and ']' + enclosed generic type arguments. ',' separates types. + + + + + Decodes a generic name. This is a type name followed optionally by a type parameter count + + + + + An ImmutableArray representing the single string "System" + + + + + Calculates information about types and namespaces immediately contained within a namespace. + + + Is current namespace a global namespace? + + + Length of the fully-qualified name of this namespace. + + + The sequence of groups of TypeDef row ids for types contained within the namespace, + recursively including those from nested namespaces. The row ids must be grouped by the + fully-qualified namespace name in case-sensitive manner. + Key of each IGrouping is a fully-qualified namespace name, which starts with the name of + this namespace. There could be multiple groups for each fully-qualified namespace name. + + The groups must be sorted by the keys in a manner consistent with comparer passed in as + nameComparer. Therefore, all types immediately contained within THIS namespace, if any, + must be in several IGrouping at the very beginning of the sequence. + + + Equality comparer to compare namespace names. + + + Output parameter, never null: + A sequence of groups of TypeDef row ids for types immediately contained within this namespace. + + + Output parameter, never null: + A sequence with information about namespaces immediately contained within this namespace. + For each pair: + Key - contains simple name of a child namespace. + Value – contains a sequence similar to the one passed to this function, but + calculated for the child namespace. + + + + + + Extract a simple name of a top level child namespace from potentially qualified namespace name. + + + Parent namespace name length plus the dot. + + + Fully qualified namespace name. + + + Simple name of a top level child namespace, the left-most name following parent namespace name + in the fully qualified name. + + + + + Determines whether given string can be used as a non-empty metadata identifier (a NUL-terminated UTF8 string). + + + + + True if the string doesn't contain incomplete surrogates. + + + + + Checks that the specified name is a valid metadata String and a file name. + The specification isn't entirely consistent and complete but it mentions: + + 22.19.2: "Name shall index a non-empty string in the String heap. It shall be in the format {filename}.{extension} (e.g., 'foo.dll', but not 'c:\utils\foo.dll')." + 22.30.2: "The format of Name is {file name}.{file extension} with no path or drive letter; on POSIX-compliant systems Name contains no colon, no forward-slash, no backslash." + As Microsoft specific constraint. + + A reasonable restriction seems to be a valid UTF8 non-empty string that doesn't contain '\0', '\', '/', ':' characters. + + + + + Determine if the given namespace and type names combine to produce the given fully qualified name. + + The namespace part of the split name. + The type name part of the split name. + The fully qualified name to compare with. + true if the combination of and equals the fully-qualified name given by + + + + Given an input string changes it to be acceptable as a part of a type name. + + + + + Specifies what symbols to import from metadata. + + + + + Only import public and protected symbols. + + + + + Import public, protected and internal symbols. + + + + + Import all symbols. + + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + + Helper structure to encapsulate/cache various information about metadata name of a type and + name resolution options. + Also, allows us to stop using strings in the APIs that accept only metadata names, + making usage of them less bug prone. + + + + + Full metadata name of a type, includes namespace name for top level types. + + + + + Namespace name for top level types. + + + + + Name of the type without namespace prefix, but possibly with generic arity mangling present. + + + + + Name of the type without namespace prefix and without generic arity mangling. + + + + + Arity of the type inferred based on the name mangling. It doesn't have to match the actual + arity of the type. + + + + + While resolving the name, consider only types with this arity. + (-1) means allow any arity. + If forcedArity >= 0 and useCLSCompliantNameArityEncoding, lookup may + fail because forcedArity doesn't match the one encoded in the name. + + + + + While resolving the name, consider only types following + CLS-compliant generic type names and arity encoding (ECMA-335, section 10.7.2). + I.e. arity is inferred from the name and matching type must have the same + emitted name and arity. + TODO: PERF: Encode this field elsewhere to save 4 bytes + + + + + Individual parts of qualified namespace name. + + + + + Full metadata name of a type, includes namespace name for top level types. + + + + + Namespace name for top level types, empty string for nested types. + + + + + Name of the type without namespace prefix, but possibly with generic arity mangling present. + + + + + Name of the type without namespace prefix and without generic arity mangling. + + + + + Arity of the type inferred based on the name mangling. It doesn't have to match the actual + arity of the type. + + + + + Does name include arity mangling suffix. + + + + + While resolving the name, consider only types following + CLS-compliant generic type names and arity encoding (ECMA-335, section 10.7.2). + I.e. arity is inferred from the name and matching type must have the same + emitted name and arity. + + + + + While resolving the name, consider only types with this arity. + (-1) means allow any arity. + If ForcedArity >= 0 and UseCLSCompliantNameArityEncoding, lookup may + fail because ForcedArity doesn't match the one encoded in the name. + + + + + Individual parts of qualified namespace name. + + + + + A digest of MetadataTypeName's fully qualified name which can be used as the key in a dictionary + + + + + Returns true if the nested type should be imported. + + + + + Returns true if the field should be imported. Visibility + and the value of are considered + + + + + Returns true if the flags represent a field that should be imported. + Visibility and the value of are considered + + + + + Returns true if the method should be imported. Returns false for private methods that are not + explicit interface implementations. For other methods, visibility and the value of + are considered. + + + + + Returns 0 if method name doesn't represent a v-table gap. + Otherwise, returns the gap size. + + + + + All assemblies this assembly references. + + + A concatenation of assemblies referenced by each module in the order they are listed in . + + + + + The number of assemblies referenced by each module in . + + + + + Assembly identity read from Assembly table, or null if the table is empty. + + + + + Using for atomicity. + + + + + We need to store reference to the assembly metadata to keep the metadata alive while + symbols have reference to PEAssembly. + + + + + + + + A set of helpers for extracting elements from metadata. + This type is not responsible for managing the underlying storage + backing the PE image. + + + + + We need to store reference to the module metadata to keep the metadata alive while + symbols have reference to PEModule. + + + + + Using as a type for atomicity. + + + + + If bitmap is not null, each bit indicates whether a TypeDef + with corresponding RowId has been checked if it is a NoPia + local type. If the bit is 1, local type will have an entry + in m_lazyTypeDefToTypeIdentifierMap. + + + + + For each TypeDef that has 1 in m_lazyNoPiaLocalTypeCheckBitMap, + this map stores corresponding TypeIdentifier AttributeInfo. + + + + + Target architecture of the machine. + + + + + Indicates that this PE file makes Win32 calls. See CorPEKind.pe32BitRequired for more information (http://msdn.microsoft.com/en-us/library/ms230275.aspx). + + + + An exception from metadata reader. + + + + Returns the names of linked managed modules. + + An exception from metadata reader. + + + + Returns names of referenced modules. + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + + The function groups types defined in the module by their fully-qualified namespace name. + The case-sensitivity of the grouping depends upon the provided StringComparer. + + The sequence is sorted by name by using provided comparer. Therefore, if there are multiple + groups for a namespace name (e.g. because they differ in case), the groups are going to be + adjacent to each other. + + Empty string is used as namespace name for types in the Global namespace. Therefore, all types + in the Global namespace, if any, should be in the first group (assuming a reasonable StringComparer). + + Comparer to sort the groups. + + + A sorted list of TypeDef row ids, grouped by fully-qualified namespace name. + An exception from metadata reader. + + + + Groups together the RowIds of types in a given namespaces. The types considered are + those defined in this module. + + An exception from metadata reader. + + + + Supplements the namespace-to-RowIDs map with the namespaces of forwarded types. + These types will not have associated row IDs (represented as null, for efficiency). + These namespaces are important because we want lookups of missing forwarded types + to succeed far enough that we can actually find the type forwarder and provide + information about the target assembly. + + For example, consider the following forwarded type: + + .class extern forwarder Namespace.Type {} + + If this type is referenced in source as "Namespace.Type", then dev10 reports + + error CS1070: The type name 'Namespace.Name' could not be found. This type has been + forwarded to assembly 'pe2, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'. + Consider adding a reference to that assembly. + + If we did not include "Namespace" as a child of the global namespace of this module + (the forwarding module), then Roslyn would report that the type "Namespace" was not + found and say nothing about "Name" (because of the diagnostic already attached to + the qualifier). + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + + Returns a collection of interfaces implemented by given type. + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + + Determine if custom attribute application is + NoPia TypeIdentifier. + + + An index of the target constructor signature in + signaturesOfTypeIdentifierAttribute array, -1 if + this is not NoPia TypeIdentifier. + + + + + Determines if a custom attribute matches a namespace and name. + + Handle of the custom attribute. + The custom attribute's namespace in metadata format (case sensitive) + The custom attribute's type name in metadata format (case sensitive) + Constructor of the custom attribute. + Should case be ignored for name comparison? + true if match is found + + + + Determines if a custom attribute matches a namespace and name. + + The metadata reader. + Handle of the custom attribute. + The custom attribute's namespace in metadata format (case sensitive) + The custom attribute's type name in metadata format (case sensitive) + Constructor of the custom attribute. + Should case be ignored for name comparison? + true if match is found + + + + Returns MetadataToken for assembly ref matching name + + The assembly name in metadata format (case sensitive) + Matching assembly ref token or nil (0) + + + + Returns MetadataToken for type ref matching resolution scope and name + + The resolution scope token + The namespace name in metadata format (case sensitive) + The type name in metadata format (case sensitive) + Matching type ref token or nil (0) + + + An exception from metadata reader. + + + + Determine if custom attribute matches the target attribute. + + + Handle of the custom attribute. + + The attribute to match. + + An index of the target constructor signature in + signatures array, -1 if + this is not the target attribute. + + + + + Determine if custom attribute matches the target attribute. + + + The metadata reader. + + + Handle of the custom attribute. + + The attribute to match. + + An index of the target constructor signature in + signatures array, -1 if + this is not the target attribute. + + + + + Given a token for a constructor, return the token for the constructor's type and the blob containing the + constructor's signature. + + True if the function successfully returns the type and signature. + + + + Given a token for a constructor, return the token for the constructor's type and the blob containing the + constructor's signature. + + True if the function successfully returns the type and signature. + + + + Given a token for a type, return the type's name and namespace. Only works for top level types. + namespaceHandle will be NamespaceDefinitionHandle for defs and StringHandle for refs. + + True if the function successfully returns the name and namespace. + + + + Given a token for a type, return the type's name and namespace. Only works for top level types. + namespaceHandle will be NamespaceDefinitionHandle for defs and StringHandle for refs. + + True if the function successfully returns the name and namespace. + + + + For testing purposes only!!! + + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + + Returns an array of tokens for type constraints. Null reference if none. + + + + An array of tokens for type constraints. Null reference if none. + + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + + Returns true if method IL can be retrieved from the module. + + + + + Returns true if the full image of the module is available. + + + + Invalid metadata. + + + + Produce unbound generic type symbol if the type is a generic type. + + + + + Produce constructed type symbol. + + + + Symbol for generic type. + + + Generic type arguments, including those for containing types. + + + Flags for arguments. Each item indicates whether corresponding argument refers to NoPia local types. + + + + + Extracts information from TypeDef flags. + Returns 0 if the value is invalid. + + + + + Lookup a type defined in this module. + + + + + Lookup a type defined in referenced assembly. + + + + + Given the identity of an assembly referenced by this module, finds + the index of that assembly in the list of assemblies referenced by + the current module. + + + + + Represents an identity of an assembly as defined by CLI metadata specification. + + + May represent assembly definition or assembly reference identity. + + + Represents an identity of an assembly as defined by CLI metadata specification. + + + May represent assembly definition or assembly reference identity. + + + + + Constructs an from its constituent parts. + + The simple name of the assembly. + The version of the assembly. + + The name of the culture to associate with the assembly. + Specify null, , or "neutral" (any casing) to represent . + The name can be an arbitrary string that doesn't contain NUL character, the legality of the culture name is not validated. + + The public key or public key token of the assembly. + Indicates whether represents a public key. + Indicates whether the assembly is retargetable. + Specifies the binding model for how this object will be treated in comparisons. + If is null, empty or contains a NUL character. + If contains a NUL character. + is not a value of the enumeration. + contains values that are not greater than or equal to zero and less than or equal to ushort.MaxValue. + is true and is not set. + is false and + contains a value that is not the size of a public key token, 8 bytes. + + + + The simple name of the assembly. + + + + + The version of the assembly. + + + + + The culture name of the assembly, or empty if the culture is neutral. + + + + + The AssemblyNameFlags. + + + + + Specifies assembly binding model for the assembly definition or reference; + that is how assembly references are matched to assembly definitions. + + + + + True if the assembly identity includes full public key. + + + + + Full public key or empty. + + + + + Low 8 bytes of SHA1 hash of the public key, or empty. + + + + + True if the assembly identity has a strong name, ie. either a full public key or a token. + + + + + Gets the value which specifies if the assembly is retargetable. + + + + + Determines whether two instances are equal. + + The operand appearing on the left side of the operator. + The operand appearing on the right side of the operator. + + + + Determines whether two instances are not equal. + + The operand appearing on the left side of the operator. + The operand appearing on the right side of the operator. + + + + Determines whether the specified instance is equal to the current instance. + + The object to be compared with the current instance. + + + + Determines whether the specified instance is equal to the current instance. + + The object to be compared with the current instance. + + + + Returns the hash code for the current instance. + + + + + + Returns true (false) if specified assembly identities are (not) equal + regardless of unification, retargeting or other assembly binding policies. + Returns null if these policies must be consulted to determine name equivalence. + + + + + Retrieves assembly definition identity from given runtime assembly. + + The runtime assembly. + Assembly definition identity. + is null. + + + + Returns the display name of the assembly identity. + + True if the full public key should be included in the name. Otherwise public key token is used. + The display name. + + Characters ',', '=', '"', '\'', '\' occurring in the simple name are escaped by backslash in the display name. + Any character '\t' is replaced by two characters '\' and 't', + Any character '\n' is replaced by two characters '\' and 'n', + Any character '\r' is replaced by two characters '\' and 'r', + The assembly name in the display name is enclosed in double quotes if it starts or ends with + a whitespace character (' ', '\t', '\r', '\n'). + + + + + Returns the display name of the current instance. + + + + + Parses display name filling defaults for any basic properties that are missing. + + Display name. + A full assembly identity. + + Parts of the assembly identity that were specified in the display name, + or 0 if the parsing failed. + + True if display name parsed correctly. + + The simple name has to be non-empty. + A partially specified version might be missing build and/or revision number. The default value for these is 65535. + The default culture is neutral ( is . + If neither public key nor token is specified the identity is considered weak. + + is null. + + + + Compares assembly identities. + Derived types may implement platform specific unification and portability policies. + + + + + A set of possible outcomes of comparison. + + + + + Reference doesn't match definition. + + + + + Strongly named reference matches strongly named definition (strong identity is identity with public key or token), + Or weak reference matches weak definition. + + + + + Reference matches definition except for version (reference version is lower or higher than definition version). + + + + + Compares assembly reference name (possibly partial) with definition identity. + + Partial or full assembly display name. + Full assembly display name. + True if the reference name matches the definition identity. + + + + Compares assembly reference identity with definition identity. + + Reference assembly identity. + Full assembly display name. + True if the reference identity matches the definition identity. + + + + Compares reference assembly identity with definition identity and returns their relationship. + + Reference identity. + Definition identity. + + + + Represents an immutable snapshot of assembly CLI metadata. + + + + + Factory that provides the for additional modules (other than ) of the assembly. + Shall only throw or . + Null of all modules were specified at construction time. + + + + + Modules the was created with, in case they are eagerly allocated. + + + + + Cached assembly symbols. + + + Guarded by . + + + + + Creates a single-module assembly. + + + Manifest module image. + + is null. + + + + Creates a single-module assembly. + + + Manifest module image. + + is null. + The PE image format is invalid. + + + + Creates a single-module assembly. + + Manifest module PE image stream. + False to close the stream upon disposal of the metadata. + The PE image format is invalid. + + + + Creates a single-module assembly. + + Manifest module PE image stream. + False to close the stream upon disposal of the metadata. + The PE image format is invalid. + + + + Finds all modules of an assembly on a specified path and builds an instance of that represents them. + + The full path to the assembly on disk. + is null. + is invalid. + Error reading file . See for details. + Reading from a file path is not supported by the platform. + + + + Creates a single-module assembly. + + + Manifest module. + + This object disposes it when it is itself disposed. + + + + Creates a multi-module assembly. + + + Modules comprising the assembly. The first module is the manifest module of the assembly. + This object disposes the elements of it when it is itself . + is default value. + contains null elements. + is empty or contains a module that doesn't own its image (was created via ). + + + + Creates a multi-module assembly. + + + Modules comprising the assembly. The first module is the manifest module of the assembly. + This object disposes the elements of it when it is itself . + is default value. + contains null elements. + is empty or contains a module that doesn't own its image (was created via ). + + + + Creates a multi-module assembly. + + Modules comprising the assembly. The first module is the manifest module of the assembly. + This object disposes the elements of it when it is itself . + is default value. + contains null elements. + is empty or contains a module that doesn't own its image (was created via ). + + + + Creates a shallow copy of contained modules and wraps them into a new instance of . + + + The resulting copy shares the metadata images and metadata information read from them with the original. + It doesn't own the underlying metadata images and is not responsible for its disposal. + + This is used, for example, when a metadata cache needs to return the cached metadata to its users + while keeping the ownership of the cached metadata object. + + + + + Modules comprising this assembly. The first module is the manifest module. + + The PE image format is invalid. + IO error reading the metadata. See for details. + The object has been disposed. + + + The PE image format is invalid. + IO error while reading the metadata. See for details. + The object has been disposed. + + + The PE image format is invalid. + IO error while reading the metadata. See for details. + The object has been disposed. + + + + Disposes all modules contained in the assembly. + + + + + Checks if the first module has a single row in Assembly table and that all other modules have none. + + The PE image format is invalid. + IO error reading the metadata. See for details. + The object has been disposed. + + + + Returns the metadata kind. + + + + + Creates a reference to the assembly metadata. + + Provider of XML documentation comments for the metadata symbols contained in the module. + Aliases that can be used to refer to the assembly from source code (see "extern alias" directive in C#). + True to embed interop types from the referenced assembly to the referencing compilation. Must be false for a module. + Path describing the location of the metadata, or null if the metadata have no location. + Display string used in error messages to identity the reference. + A reference to the assembly metadata. + + + + Reference to another C# or VB compilation. + + + + + Returns an instance of the reference with specified aliases. + + The new aliases for the reference. + Alias is invalid for the metadata kind. + + + + Returns an instance of the reference with specified aliases. + + The new aliases for the reference. + Alias is invalid for the metadata kind. + + + + Returns an instance of the reference with specified interop types embedding. + + The new value for . + Interop types can't be embedded from modules. + + + + Returns an instance of the reference with specified properties, or this instance if properties haven't changed. + + The new properties for the reference. + Specified values not valid for this reference. + + + + An Id that can be used to identify a metadata instance. If two metadata instances + have the same id then they are guaranteed to have the same content. If two metadata + instances have different ids, then the contents may or may not be the same. As such, + the id is useful as a key in a cache when a client wants to share data for a metadata + reference as long as it has not changed. + + + + + Represents immutable assembly or module CLI metadata. + + + + + The id for this metadata instance. If two metadata instances have the same id, then + they have the same content. If they have different ids they may or may not have the + same content. + + + + + Retrieves the for this instance. + + + + + Releases any resources associated with this instance. + + + + + Creates a copy of this object. + + + + + The kind of metadata a PE file image contains. + + + + + The PE file is an assembly. + + + + + The PE file is a module. + + + + + Represents an in-memory Portable-Executable image. + + + + + Represents metadata image reference. + + + Represents a logical location of the image, not the content of the image. + The content might change in time. A snapshot is taken when the compiler queries the reference for its metadata. + + + + + Path or name used in error messages to identity the reference. + + + + + Returns true if this reference is an unresolved reference. + + + + + Returns an instance of the reference with specified aliases. + + The new aliases for the reference. + Alias is invalid for the metadata kind. + + + + Returns an instance of the reference with specified interop types embedding. + + The new value for . + Interop types can't be embedded from modules. + + + + Returns an instance of the reference with specified aliases. + + The new aliases for the reference. + Alias is invalid for the metadata kind. + + + + Returns an instance of the reference with specified properties, or this instance if properties haven't changed. + + The new properties for the reference. + Specified values not valid for this reference. + + + + Creates a reference to a single-module assembly or a standalone module stored in memory. + + Assembly image. + Reference properties (extern aliases, type embedding, ). + Provides XML documentation for symbol found in the reference. + Optional path that describes the location of the metadata. The file doesn't need to exist on disk. The path is opaque to the compiler. + + Performance considerations: + + It is recommended to use or + API when creating multiple references to the same metadata. + Reusing object to create multiple references allows for sharing data across these references. + + + The method pins in managed heap. The pinned memory is released + when the resulting reference becomes unreachable and GC collects it. To control the lifetime of the pinned memory + deterministically use + to create an metadata object and + to get a reference to it. + + + The method creates a reference to a single-module assembly. To create a reference to a multi-module assembly or a stand-alone module use + and . + + + is null. + + + + Creates a reference to a single-module assembly or a standalone module stored in memory. + + Assembly image. + Reference properties (extern aliases, type embedding, ). + Provides XML documentation for symbol found in the reference. + Optional path that describes the location of the metadata. The file doesn't need to exist on disk. The path is opaque to the compiler. + + Performance considerations: + + It is recommended to use or + API when creating multiple references to the same metadata. + Reusing object to create multiple references allows for sharing data across these references. + + + The method makes a copy of the data and pins it. To avoid making a copy use an overload that takes an . + The pinned memory is released when the resulting reference becomes unreachable and GC collects it. To control the lifetime of the pinned memory + deterministically use + to create an metadata object and + to get a reference to it. + to get a reference to it. + + + is null. + + + + Creates a reference to a single-module assembly or a stand-alone module from data in specified stream. + Reads the content of the stream into memory and closes the stream upon return. + + Assembly image. + Reference properties (extern aliases, type embedding, ). + Provides XML documentation for symbol found in the reference. + Optional path that describes the location of the metadata. The file doesn't need to exist on disk. The path is opaque to the compiler. + doesn't support read and seek operations. + is null. + An error occurred while reading the stream. + + Performance considerations: + + It is recommended to use or + API when creating multiple references to the same metadata. + Reusing object to create multiple references allows for sharing data across these references. + + + The method eagerly reads the entire content of into native heap. The native memory block is released + when the resulting reference becomes unreachable and GC collects it. To decrease memory footprint of the reference and/or manage + the lifetime deterministically use + to create an metadata object and + to get a reference to it. + to get a reference to it. + + + + + + Creates a reference to an assembly or standalone module stored in a file. + Reads the content of the file into memory. + + Path to the assembly file. + Reference properties (extern aliases, type embedding, ). + Provides XML documentation for symbol found in the reference. + is null. + is invalid. + An error occurred while reading the file. + + Performance considerations: + + It is recommended to use or + API when creating multiple references to the same file. + Reusing object allows for sharing data across these references. + + + The method eagerly reads the entire content of the file into native heap. The native memory block is released + when the resulting reference becomes unreachable and GC collects it. To decrease memory footprint of the reference and/or manage + the lifetime deterministically use + to create an metadata object and + + to get a reference to it. + + + + + + Creates a reference to a loaded assembly. + + Path to the module file. + is null. + is dynamic, doesn't have a location, or the platform doesn't support reading from the location. + + Performance considerations: + + It is recommended to use API when creating multiple references to the same assembly. + Reusing object allows for sharing data across these references. + + + + + + Creates a reference to a loaded assembly. + + Path to the module file. + Reference properties (extern aliases, type embedding). + Provides XML documentation for symbol found in the reference. + is null. + . is not . + is dynamic, doesn't have a location, or the platform doesn't support reading from the location. + + Performance considerations: + + It is recommended to use API when creating multiple references to the same assembly. + Reusing object allows for sharing data across these references. + + + + + + Information about a metadata reference. + + + + + Default properties for a module reference. + + + + + Default properties for an assembly reference. + + + + + Initializes reference properties. + + The image kind - assembly or module. + Assembly aliases. Can't be set for a module. + True to embed interop types from the referenced assembly to the referencing compilation. Must be false for a module. + + + + Returns with specified aliases. + + + is , as modules can't be aliased. + + + + + Returns with specified aliases. + + + is , as modules can't be aliased. + + + + + Returns with set to specified value. + + is , as interop types can't be embedded from modules. + + + + Returns with set to specified value. + + + + + The image kind (assembly or module) the reference refers to. + + + + + Alias that represents a global declaration space. + + + Namespaces in references whose contain are available in global declaration space. + + + + + Aliases for the metadata reference. Empty if the reference has no aliases. + + + In C# these aliases can be used in "extern alias" syntax to disambiguate type names. + + + + + True if interop types defined in the referenced metadata should be embedded into the compilation referencing the metadata. + + + + + True to apply recursively on the target assembly and on all its transitive dependencies. + False to apply only on the target assembly. + + + + + Resolves references to metadata specified in the source (#r directives). + + + + + True to instruct the compiler to invoke for each assembly reference that + doesn't match any of the assemblies explicitly referenced by the (via , or #r directives. + + + + + Resolves a missing assembly reference. + + The metadata definition (assembly or module) that declares assembly reference in its list of dependencies. + Identity of the assembly reference that couldn't be resolved against metadata references explicitly specified to in the compilation. + Resolved reference or null if the identity can't be resolved. + + + + Represents an immutable snapshot of module CLI metadata. + + This object may allocate significant resources or lock files depending upon how it is constructed. + + + + Create metadata module from a raw memory pointer to metadata directory of a PE image or .cormeta section of an object file. + Only manifest modules are currently supported. + + Pointer to the start of metadata block. + The size of the metadata block. + is null. + is not positive. + + + + Create metadata module from a raw memory pointer to a PE image or an object file. + + Pointer to the DOS header ("MZ") of a portable executable image. + The size of the image pointed to by . + is null. + is not positive. + + + + Create metadata module from a sequence of bytes. + + The portable executable image beginning with the DOS header ("MZ"). + is null. + + + + Create metadata module from a byte array. + + Portable executable image beginning with the DOS header ("MZ"). + is null. + + + + Create metadata module from a stream. + + Stream containing portable executable image. Position zero should contain the first byte of the DOS header ("MZ"). + + False to close the stream upon disposal of the metadata (the responsibility for disposal of the stream is transferred upon entry of the constructor + unless the arguments given are invalid). + + is null. + The stream doesn't support seek operations. + + + + Create metadata module from a stream. + + Stream containing portable executable image. Position zero should contain the first byte of the DOS header ("MZ"). + + Options specifying how sections of the PE image are read from the stream. + Unless is specified, the responsibility for disposal of the stream is transferred upon entry of the constructor + unless the arguments given are invalid. + + is null. + The stream doesn't support read and seek operations. + has an invalid value. + + or is specified and the PE headers of the image are invalid. + + + or is specified and an error occurs while reading the stream. + + + + + Creates metadata module from a file containing a portable executable image. + + File path. + + The file might remain mapped (and read-locked) until this object is disposed. + The memory map is only created for large files. Small files are read into memory. + + is null. + is invalid. + Error opening file . See for details. + File not found. + Reading from a file path is not supported by the platform. + + + + Creates a shallow copy of this object. + + + The resulting copy shares the metadata image and metadata information read from it with the original. + It doesn't own the underlying metadata image and is not responsible for its disposal. + + This is used, for example, when a metadata cache needs to return the cached metadata to its users + while keeping the ownership of the cached metadata object. + + + + + Frees memory and handles allocated for the module. + + + + + Name of the module. + + Invalid metadata. + Module has been disposed. + + + + Version of the module content. + + Invalid metadata. + Module has been disposed. + + + + Returns the for this instance. + + + + + Returns the file names of linked managed modules. + + When an invalid module name is encountered. + Module has been disposed. + + + + Returns the metadata reader. + + Module has been disposed. + When an invalid module name is encountered. + + + + Creates a reference to the module metadata. + + Provider of XML documentation comments for the metadata symbols contained in the module. + Path describing the location of the metadata, or null if the metadata have no location. + Display string used in error messages to identity the reference. + A reference to the module metadata. + + + + Reference to metadata stored in the standard ECMA-335 metadata format. + + + + + Display string used in error messages to identity the reference. + + + + + Path describing the location of the metadata, or null if the metadata have no location. + + + + + XML documentation comments provider for the reference. + + + + + Create documentation provider for the reference. + + + Called when the compiler needs to read the documentation for the reference. + This method can be called multiple times from different threads. The result of one of the calls + is cached on the reference object. + + + + + Returns an instance of the reference with specified aliases. + + The new aliases for the reference. + Alias is invalid for the metadata kind. + + + + Returns an instance of the reference with specified aliases. + + The new aliases for the reference. + Alias is invalid for the metadata kind. + + + + Returns an instance of the reference with specified interop types embedding. + + The new value for . + Interop types can't be embedded from modules. + + + + Returns an instance of the reference with specified properties, or this instance if properties haven't changed. + + The new properties for the reference. + Specified values not valid for this reference. + + + + Returns an instance of the reference with specified properties. + + The new properties for the reference. + Specified values not supported. + Only invoked if the properties changed. + + + + Get metadata representation for the PE file. + + If the PE image format is invalid. + The metadata image content can't be read. + The metadata image is stored in a file that can't be found. + + Called when the needs to read the reference metadata. + + The listed exceptions are caught and converted to compilation diagnostics. + Any other exception is considered an unexpected error in the implementation and is not caught. + + objects may cache information decoded from the PE image. + Reusing instances across metadata references will result in better performance. + + The calling doesn't take ownership of the objects returned by this method. + The implementation needs to retrieve the object from a provider that manages their lifetime (such as metadata cache). + The object is kept alive by the that called + and by all compilations created from it via calls to With- factory methods on , + other than overloads. A compilation created using + will call to again. + + + + + Returns a copy of the object this + contains. This copy does not need to be d. + + If the PE image format is invalid. + The metadata image content can't be read. + The metadata image is stored in a file that can't be found. + + + + Represents the value of #r reference along with its source location. + + + + + Represents a metadata reference that can't be or is not yet resolved. + + + For error reporting only, can't be used to reference a metadata file. + + + + + Initializes a new instance of the class. + + An ordered set of fully qualified + paths which are searched when resolving assembly names. + Directory used when resolving relative paths. + + + + Represents errors that occur while parsing RuleSet files. + + + + + Represents a set of rules as specified in a ruleset file. + + + + + The file path of the ruleset file. + + + + + The global option specified by the IncludeAll tag. + + + + + Individual rule ids and their associated actions. + + + + + List of rulesets included by this ruleset. + + + + + Create a RuleSet. + + + + + Create a RuleSet with a global effective action applied on it. + + + + + Get the effective ruleset after resolving all the included rulesets. + + + + + Get all the files involved in resolving this ruleset. + + + + + Returns true if the action1 is stricter than action2. + + + + + Load the ruleset from the specified file. This ruleset will contain + all the rules resolved from the includes specified in the ruleset file + as well. See also: . + + + A ruleset that contains resolved rules or null if there were errors. + + + + + Get the paths to all files contributing rules to the ruleset from the specified file. + See also: . + + + The full paths to included files, or an empty array if there were errors. + + + + + Parses the ruleset file at the given and returns the following diagnostic options from the parsed file: + 1) A map of from rule ID to option. + 2) A global option for all rules in the ruleset file. + + + + + Represents a Include tag in a RuleSet file. + + + + + The path of the included file. + + + + + The effective action to apply on this included ruleset. + + + + + Create a RuleSetInclude given the include path and the effective action. + + + + + Gets the RuleSet associated with this ruleset include + + The parent of this ruleset include + + + + Returns a full path to the include file. Relative paths are expanded relative to the current rule set file. + + The parent of this rule set include + + + + This type is responsible for parsing a ruleset xml file and producing a object. + + + + + Creates and loads the rule set from a file + + The file path to load the rule set + + + + Load the rule set from the XML node + + The rule set node from which to create a rule set object + The file path to the rule set file + A rule set object with data from the given XML node + + + + Load the rules from the XML node + + The rules node from which to loop through each child rule node + A list of rule objects with data from the given XML node + + + + Load the rule from the XML node + + The rule node from which to create a rule object + The analyzer this rule belongs to + The namespace this rule belongs to + A rule object with data from the given XML node + + + + Load the included rule set from the XML node + + The include node from which to create a RuleSetInclude object + A RuleSetInclude object with data from the given XML node + + + + Reads the action from the given node + + The node to read the action, it can be a rule node or an include node. + Whether or not the default value is allowed. + The rule action + + + + Load the IncludedAll from the XML node + + The IncludeAll node from which to create a IncludeAll object + A IncludeAll object with data from the given XML node + + + + Reads an attribute from a node and validates that it is not empty. + + The XML node that contains the attribute + The name of the attribute to read + The attribute value + + + + Gets the default settings to read the ruleset xml file. + + + + + Resolves references to source files specified in source code. + + + + + Determines if a flag is set on the enum. + + The value to check. + An enum field that specifies the flag. + Whether the is set on the . + + + + Specifies the options for how generics are displayed in the description of a symbol. + + + + + Format object using default options. + + + + + In C#, include the numeric code point before character literals. + + + + + Whether or not to include type suffix for applicable integral literals. + + + + + Whether or not to display integral literals in hexadecimal. + + + + + Whether or not to quote character and string literals. + + + + + In C#, replace non-printable (e.g. control) characters with dedicated (e.g. \t) or unicode (\u0001) escape sequences. + In Visual Basic, replace non-printable characters with calls to ChrW and vb* constants. + + + + + Represents a value type that can be assigned null. + + + + + + Initializes a new instance to the specified value. + + + + + + Gets a value indicating whether the current object has a value. + + + + + + Gets the value of the current object. + + + + + + Creates a new object initialized to a specified value. + + + + + + Specifies output assembly kinds generated by compiler. + + + + + An .exe with an entry point and a console. + + + + + An .exe with an entry point but no console. + + + + + A .dll file. + + + + + A .netmodule file. + + + + + A .winmdobj file. + + + + + An .exe that can run in an app container. + + + Equivalent to a WindowsApplication, but with an extra bit set in the Portable Executable file + so that the application can only be run in an app container. + Also known as a "Windows Store app". + + + + + The base class for language specific assembly managers. + + Language specific representation for a compilation + Language specific representation for an assembly symbol. + + + + Information about an assembly, used as an input for the Binder class. + + + + + Identity of the assembly. + + + + + Identity of assemblies referenced by this assembly. + References should always be returned in the same order. + + + + + The sequence of AssemblySymbols the Binder can choose from. + + + + + Check if provided AssemblySymbol is created for assembly described by this instance. + This method is expected to return true for every AssemblySymbol returned by + AvailableSymbols property. + + + The AssemblySymbol to check. + + Boolean. + + + + Resolve assembly references against assemblies described by provided AssemblyData objects. + In other words, match assembly identities returned by AssemblyReferences property against + assemblies described by provided AssemblyData objects. + + An array of AssemblyData objects to match against. + Used to compare assembly identities. + + For each assembly referenced by this assembly () + a description of how it binds to one of the input assemblies. + + + + + Get the source compilation backing this assembly, if one exists. + Returns null otherwise. + + + + + Result of binding an AssemblyRef to an AssemblyDef. + + + + + Failed binding. + + + + + Successful binding. + + + + + Returns true if the reference was matched with the identity of the assembly being built. + + + + + True if the definition index is available (reference was successfully matched with the definition). + + + + + 0 if the reference is equivalent to the definition. + -1 if version of the matched definition is lower than version of the reference, but the reference otherwise matches the definition. + +1 if version of the matched definition is higher than version of the reference, but the reference otherwise matches the definition. + + Undefined unless is true. + + + + + Index into assembly definition list. + Undefined unless is true. + + + + + Private helper class to capture information about AssemblySymbol instance we + should check for suitability. Used by the Bind method. + + + + + An index of the AssemblyData object in the input array. AssemblySymbol instance should + be checked for suitability against assembly described by that object, taking into account + assemblies described by other AssemblyData objects in the input array. + + + + + AssemblySymbol instance to check for suitability. + + + + + Convenience constructor to initialize fields of this structure. + + + + + Result of binding an input assembly and its references. + + + + + Suitable AssemblySymbol instance for the corresponding assembly, + null reference if none is available/found. + + + + + For each AssemblyRef of this AssemblyDef specifies which AssemblyDef matches the reference. + + + Result of resolving assembly references of the corresponding assembly + against provided set of assemblies. Essentially, this is an array returned by + AssemblyData.BindAssemblyReferences method. + + Each element describes the assembly the corresponding reference of the input assembly + is bound to. + + + + + For the given set of AssemblyData objects, do the following: + 1) Resolve references from each assembly against other assemblies in the set. + 2) Choose suitable AssemblySymbol instance for each AssemblyData object. + + The first element (index==0) of the assemblies array represents the assembly being built. + One can think about the rest of the items in assemblies array as assembly references given to the compiler to + build executable for the assembly being built. + + Compilation. + + An array of objects describing assemblies, for which this method should + resolve references and find suitable AssemblySymbols. The first slot contains the assembly being built. + + + An array of objects describing standalone modules referenced by the compilation. + + + An array of references passed to the compilation and resolved from #r directives. + May contain references that were skipped during resolution (they don't have a corresponding explicit assmebly). + + + Maps index to to an index of a resolved assembly or module in or modules. + + + Reference resolver used to look up missing assemblies. + + + Hide lower versions of dependencies that have multiple versions behind an alias. + + + Used to filter out assemblies that have the same strong or weak identity. + Maps simple name to a list of identities. The highest version of each name is the first. + + + Import options applied to implicitly resolved references. + + + Updated array with resolved implicitly referenced assemblies appended. + + + Implicitly resolved references. + + + Maps indices of implicitly resolved references to the corresponding indices of resolved assemblies in (explicit + implicit). + + + Any diagnostics reported while resolving missing assemblies. + + + True if the assembly being compiled is indirectly referenced through some of its own references. + + + The definition index of the COR library. + + + An array of structures describing the result. It has the same amount of items as + the input assemblies array, for each input AssemblyData object resides + at the same position. + + Each contains the following data: + + - Suitable AssemblySymbol instance for the corresponding assembly, + null reference if none is available/found. Always null for the first element, which corresponds to the assembly being built. + + - Result of resolving assembly references of the corresponding assembly + against provided set of assembly definitions. Essentially, this is an array returned by + method. + + + + + Determines if it is possible that gives internals + access to assembly . It does not make a conclusive + determination of visibility because the compilation's strong name key is not supplied. + + + + + Return AssemblySymbols referenced by the input AssemblySymbol. The AssemblySymbols must correspond + to the AssemblyNames returned by AssemblyData.AssemblyReferences property. If reference is not + resolved, null reference should be returned in the corresponding item. + + + The target AssemblySymbol instance. + + An array of AssemblySymbols referenced by the input AssemblySymbol. + Implementers may return cached array, Binder does not mutate it. + + + + + Return collection of assemblies involved in canonical type resolution of + NoPia local types defined within target assembly. In other words, all + references used by previous compilation referencing the target assembly. + + + + + Assembly is /l-ed by compilation that is using it as a reference. + + + + + Get Assembly used as COR library for the candidate. + + + + + Checks if the properties of are compatible with properties of . + Reports inconsistencies to the given diagnostic bag. + + True if the properties are compatible and hence merged, false if the duplicate reference should not merge it's properties with primary reference. + + + + Called to compare two weakly named identities with the same name. + + + + + Aliases that should be applied to the referenced assembly. + Empty array means {"global"} (all namespaces and types in the global namespace of the assembly are accessible without qualification). + Null if not applicable (the reference only has recursive aliases). + + + + + Aliases that should be applied recursively to all dependent assemblies. + Empty array means {"global"} (all namespaces and types in the global namespace of the assembly are accessible without qualification). + Null if not applicable (the reference only has simple aliases). + + + + + default() is considered skipped. + + + + + Index into an array of assemblies (not including the assembly being built) or an array of modules, depending on . + + + + + non-negative: Index into the array of all (explicitly and implicitly) referenced assemblies. + negative: ExplicitlyReferencedAssemblies.Count + RelativeAssemblyIndex is an index into the array of assemblies. + + + + + Resolves given metadata references to assemblies and modules. + + The compilation whose references are being resolved. + + Used to filter out assemblies that have the same strong or weak identity. + Maps simple name to a list of identities. The highest version of each name is the first. + + List where to store resolved references. References from #r directives will follow references passed to the compilation constructor. + Maps #r values to successfully resolved metadata references. Does not contain values that failed to resolve. + Unique metadata references resolved from #r directives. + List where to store information about resolved assemblies to. + List where to store information about resolved modules to. + Diagnostic bag where to report resolution errors. + + Maps index to to an index of a resolved assembly or module in or , respectively. + + + + + Creates or gets metadata for PE reference. + + + If any of the following exceptions: , , , + are thrown while reading the metadata file, the exception is caught and an appropriate diagnostic stored in . + + + + + Determines whether references are the same. Compilation references are the same if they refer to the same compilation. + Otherwise, references are represented by their object identities. + + + + + Merges aliases of the first observed reference () with aliases specified for an equivalent reference (). + Empty alias list is considered to be the same as a list containing "global", since in both cases C# allows unqualified access to the symbols. + + + + + Caller is responsible for freeing any allocated ArrayBuilders. + + + + + Caller is responsible for freeing any allocated ArrayBuilders. + + + + + Returns null if an assembly of an equivalent identity has not been added previously, otherwise returns the reference that added it. + Two identities are considered equivalent if + - both assembly names are strong (have keys) and are either equal or FX unified + - both assembly names are weak (no keys) and have the same simple name. + + + + + For each given directive return a bound PE reference, or null if the binding fails. + + + + + Used to match AssemblyRef with AssemblyDef. + + Array of definition identities to match against. + An index of the first definition to consider, preceding this index are ignored. + Reference identity to resolve. + Assembly identity comparer. + + Returns an index the reference is bound. + + + + + If the compilation being built represents an assembly its assembly name. + If the compilation being built represents a module, the name of the + containing assembly or + if not specified (/moduleassemblyname command line option). + + + + + Used to compares assembly identities. + May implement unification and portability policies specific to the target platform. + + + + + Metadata observed by the compiler. + May be shared across multiple Reference Managers. + Access only under lock(). + + + + + Once this is non-zero the state of the manager is fully initialized and immutable. + + + + + True if the compilation has a reference that refers back to the assembly being compiled. + + + If we have a circular reference the bound references can't be shared with other compilations. + + + + + A map from a metadata reference to an index to array. Do not access + directly, use property instead. + + + + + A map from a net-module metadata reference to the index of the corresponding module + symbol in the source assembly symbol for the current compilation. + + + Subtract one from the index (for the manifest module) to find the corresponding elements + of and . + + + + + Maps (containing syntax tree file name, reference string) of #r directive to a resolved metadata reference. + If multiple #r's in the same tree use the same value as a reference the resolved metadata reference is the same as well. + + + + + Array of unique bound #r references. + + + The references are in the order they appear in syntax trees. This order is currently preserved + as syntax trees are added or removed, but we might decide to share reference manager between compilations + with different order of #r's. It doesn't seem this would be an issue since all #r's within the compilation + have the same "priority" with respect to each other. + + + + + Diagnostics produced during reference resolution and binding. + + + When reporting diagnostics be sure not to include any information that can't be shared among + compilations that share the same reference manager (such as full identity of the compilation, + simple assembly name is ok). + + + + + COR library symbol, or null if the compilation itself is the COR library. + + + If the compilation being built is the COR library we don't want to store its source assembly symbol + here since we wouldn't be able to share the state among subsequent compilations that are derived from it + (each of them has its own source assembly symbol). + + + + + Standalone modules referenced by the compilation (doesn't include the manifest module of the compilation). + + + [i] corresponds to [i]. + + + + + References of standalone modules referenced by the compilation (doesn't include the manifest module of the compilation). + + + [i] corresponds to [i]. + + + + + Assemblies referenced directly by the source module of the compilation. + + + + + Assemblies referenced directly by the source module of the compilation. + + + Aliases [i] are of an assembly [i]. + + + + + Unified assemblies referenced directly by the source module of the compilation. + + + + + Call only while holding . + + + + + Call only while holding . + + + + + Global namespaces of assembly references that have been superseded by an assembly reference with a higher version are + hidden behind to avoid ambiguity when they are accessed from source. + All existing aliases of a superseded assembly are discarded. + + + + + Calculates map from the identities of specified symbols to the corresponding identities in the original EnC baseline metadata. + The map only includes an entry for identities that differ, i.e. for symbols representing assembly references of the current compilation that have different identities + than the corresponding identity in baseline metadata AssemblyRef table. The key comparer of the map ignores build and revision parts of the version number, + since these might change if the original version included wildcard. + + Assembly symbols for references of the current compilation. + Identities in the baseline. [i] corresponds to [i]. + + + + Gets the that corresponds to the assembly symbol. + + + + + Must be acquired whenever the following data are about to be modified: + - Compilation.lazyAssemblySymbol + - Compilation.referenceManager + - ReferenceManager state + - + - + + All the above data should be updated at once while holding this lock. + Once lazyAssemblySymbol is set the Compilation.referenceManager field and ReferenceManager + state should not change. + + + + + Enumerates all referenced assemblies. + + + + + Enumerates all referenced assemblies and their aliases. + + + + + A record of the assemblies referenced by a module (their identities, symbols, and unification). + + + + + Identities of referenced assemblies (those that are or will be emitted to metadata). + + + Names[i] is the identity of assembly Symbols[i]. + + + + + Assembly symbols that the identities are resolved against. + + + Names[i] is the identity of assembly Symbols[i]. + Unresolved references are represented as MissingAssemblySymbols. + + + + + A subset of that correspond to references with non-matching (unified) + version along with unification details. + + + + + Assembly symbol referenced by a AssemblyRef for which we couldn't find a matching + compilation reference but we found one that differs in version. + Created only for assemblies that require runtime binding redirection policy, + i.e. not for Framework assemblies. + + + + + Original reference that was unified to the identity of the . + + + + + Representation of a resource whose contents are to be embedded in the output assembly. + + + + + Creates a representation of a resource whose contents are to be embedded in the output assembly. + + Resource name. + The callers will dispose the result after use. + This allows the resources to be opened and read one at a time. + + True if the resource is public. + + Returns a stream of the data to embed. + + + + + Creates a representation of a resource whose file name will be recorded in the assembly. + + Resource name. + File name with an extension to be stored in metadata. + The callers will dispose the result after use. + This allows the resources to be opened and read one at a time. + + True if the resource is public. + + Function returning a stream of the resource content (used to calculate hash). + + + + + Specifies the C# or VB source code kind. + + + + + No scripting. Used for .cs/.vb file parsing. + + + + + Allows top-level statements, declarations, and optional trailing expression. + Used for parsing .csx/.vbx and interactive submissions. + + + + + The same as . + + + + + Specifies the Ids of special runtime types. + + + Only types explicitly mentioned in "Co-located core types" spec + (https://github.com/dotnet/roslyn/blob/master/docs/compilers/Co-located%20core%20types.md) + can be in this enum. + The following things should be in sync: + 1) SpecialType enum + 2) names in SpecialTypes.EmittedNames array. + + + + + Indicates a non-special type (default value). + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Count of special types. This is not a count of enum members. + + + + + Checks if a type is considered a "built-in integral" by CLR. + + + + + Checks if a type is a primitive of a fixed size. + + + + + These special types are structs that contain fields of the same type + (e.g. System.Int32 contains a field of type System.Int32). + + + + + Array of names for types from Cor Library. + The names should correspond to ids from TypeId enum so + that we could use ids to index into the array + + + + + + Gets the name of the special type as it would appear in metadata. + + + + + The strong name key associated with the identity of this assembly. + This contains the contents of the user-supplied key file exactly as extracted. + + + + + Determines source assembly identity. + + + + + A diagnostic created in the process of determining the key. + + + + + The CSP key container containing the public key used to produce the key, + or null if the key was retrieved from . + + + The original value as specified by or + . + + + + + Original key file path, or null if the key is provided by the . + + + The original value as specified by or + + + + + + True if the compilation can be signed using these keys. + + + + + True if a strong name can be created for the compilation using these keys. + + + + + Provides strong name and signs source assemblies. + + + + + Contains helper methods for switch statement label constants + + + + + Method used to compare ConstantValues for switch statement case labels + + + + A value that indicates the relative order of the objects being compared. The return value has these meanings: + Less than zero: first instance precedes second in the sort order. + Zero: first instance occurs in the same position in the sort order as second. + Greater than zero: first instance follows second in the sort order. + + + + + Append a default argument (i.e. the default argument of an optional parameter). + Assumed to be non-null. + + + + + Check if the given type is an enum with System.FlagsAttribute. + + + TODO: Can/should this be done using WellKnownAttributes? + + + + + This class associates a symbol with particular format for display. + It can be passed as an argument for an error message in place where symbol display should go, + which allows to defer building strings and doing many other things (like loading metadata) + associated with that until the error message is actually requested. + + + + + None + + + + + ".ctor" instead of "Foo" + + + + + "List`1" instead of "List<T>" ("List(of T)" in VB). Overrides GenericsOptions on + types. + + + + + Append "[Missing]" to missing Metadata types (for testing). + + + + + Include the Script type when qualifying type names. + + + + + Include custom modifiers (e.g. modopt([mscorlib]System.Runtime.CompilerServices.IsConst)) on + the member (return) type and parameters. + + + CONSIDER: custom modifiers are part of the public API, so we might want to move this to SymbolDisplayMemberOptions. + + + + + For a type written as "int[][,]" in C#, then + a) setting this option will produce "int[,][]", and + b) not setting this option will produce "int[][,]". + + + + + Specifies how to display delegates (just the name or the name with the signature). + + + + + Shows only the name of the delegate (e.g. "SomeDelegate"). + + + + + Shows the name and the parameters of the delegate (e.g. "SomeDelegate(int x)"). + + + The format of the parameters will be determined by the other flags passed. + + + + + Shows the name and the signature of the delegate (e.g. "void SomeDelegate(int x)"). + + + The format of the signature will be determined by the other flags passed. + + + + + Specifies how to display extension methods. + + + + + Displays the extension method based on its . + + + + + Displays the extension method in the form of an instance method. + For example, IEnumerable<TSource>.ElementAt<TSource>(int index). + + + + + Displays the extension method as a static method. + For example, Enumerable.ElementAt<TSource>(this IEnumerable<TSource> source, int index). + + + + + Exposes extension methods for displaying symbol descriptions. + + + + + Converts an immutable array of s to a string. + + The array of parts. + The concatenation of the parts into a single string. + + + + Determines if a flag is set on the enum. + + The value to check. + An enum field that specifies the flag. + Whether the is set on the . + + + + Determines if a flag is set on the enum. + + The value to check. + An enum field that specifies the flag. + Whether the is set on the . + + + + Determines if a flag is set on the enum. + + The value to check. + An enum field that specifies the flag. + Whether the is set on the . + + + + Determines if a flag is set on the enum. + + The value to check. + An enum field that specifies the flag. + Whether the is set on the . + + + + Determines if a flag is set on the enum. + + The value to check. + An enum field that specifies the flag. + Whether the is set on the . + + + + Determines if a flag is set on the enum. + + The value to check. + An enum field that specifies the flag. + Whether the is set on the . + + + + Determines if a flag is set on the enum. + + The value to check. + An enum field that specifies the flag. + Whether the is set on the . + + + + Describes the formatting rules that should be used when displaying symbols. + + + + + Formats a symbol description as in a C# compiler error message. + + + + + Formats a symbol description as in a C# compiler short error message. + + + + + Formats a symbol description as in a Visual Basic compiler error message. + + + + + Formats a symbol description as in a Visual Basic compiler short error message. + + + + + Formats the names of all types and namespaces in a fully qualified style (including the global alias). + + + + + Formats a symbol description in a form that suits . + + + + + A verbose format for displaying symbols (useful for testing). + + + + + this.QualifiedNameOnly = containingSymbol.QualifiedNameOnly + "." + this.Name + + + + + this.QualifiedNameArity = containingSymbol.QualifiedNameArity + "." + this.Name + "`" + this.Arity + + + + + A succinct format for displaying symbols. + + + + + The format used for displaying symbols when visualizing IL. + + + + + Used to normalize explicit interface implementation member names. + Only expected to be applied to interface types (and their type arguments). + + + + + Determines how the global namespace is displayed. + + + + + Determines how types are qualified (e.g. Nested vs Containing.Nested vs Namespace.Containing.Nested). + + + + + Determines how generics (on types and methods) should be described (i.e. the level of detail). + + + + + Determines how fields, properties, events, and methods are displayed. + + + + + Determines how parameters (of methods, properties/indexers, and delegates) are displayed. + + + + + Determines how delegates are displayed (e.g. name vs full signature). + + + + + Determines how extension methods are displayed. + + + + + Determines how properties are displayed. + For example, "Prop" vs "Prop { get; set; }" in C# or "Prop" vs. "ReadOnly Prop" in Visual Basic. + + + + + Determines how local variables are displayed. + + + + + Determines which kind keywords should be included when displaying symbols. + + + + + Determines other characteristics of how symbols are displayed. + + + + + Flags that can only be set within the compiler. + + + + + Constructs a new instance of accepting a variety of optional parameters. + + + The settings that determine how the global namespace is displayed. + + + The settings that determine how types are qualified (e.g. Nested vs Containing.Nested vs Namespace.Containing.Nested). + + + The settings that determine how generics (on types and methods) should be described (i.e. the level of detail). + + + The settings that determine how fields, properties, events, and methods are displayed. + + + The settings that determine how delegates are displayed (e.g. name vs full signature). + + + The settings that determine how extension methods are displayed. + + + The settings that determine how parameters (of methods, properties/indexers, and delegates) are displayed. + + + The settings that determine how properties are displayed. + For example, "Prop" vs "Prop { get; set; }" in C# or "Prop" vs. "ReadOnly Prop" in Visual Basic. + + + The settings that determine how local variables are displayed. + + + The settings that determine which kind keywords should be included when displaying symbols. + + + The settings that determine other characteristics of how symbols are displayed. + + + + + This version also accepts . + + + + + Creates a copy of the SymbolDisplayFormat but with replaced set of . + + + An object representing how miscellaneous symbols will be formatted. + + A duplicate of the SymbolDisplayFormat, with a replaced set of . + + + + Creates a copy of the SymbolDisplayFormat but with an additional set of . + + + An object specifying additional parameters for how miscellaneous symbols will be formatted. + + A duplicate of the SymbolDisplayFormat, with an additional set of . + + + + Creates a copy of the SymbolDisplayFormat but with replaced set of . + + + An object specifying how generic symbols will be formatted. + + A duplicate of the SymbolDisplayFormat, with a replaced set of . + + + + Creates a copy of the SymbolDisplayFormat but with an additional set of . + + + An object specifying additional parameters for how generic symbols will be formatted. + + A duplicate of the SymbolDisplayFormat, with an additional set of . + + + + Creates a copy of the SymbolDisplayFormat but with replaced set of . + + + An object specifying how members will be formatted. + + A duplicate of the SymbolDisplayFormat, with a replaced set of . + + + + Creates a copy of the SymbolDisplayFormat but with an additional set of . + + + An object specifying additional parameters for how members will be formatted. + + + A duplicate of the SymbolDisplayFormat, with an additional set of . + + + + + Creates a copy of the SymbolDisplayFormat but with a set of stripped away from the original object. + + + An object specifying which parameters should not be applied to how members will be formatted. + + + A duplicate of the SymbolDisplayFormat, with a set of stripped away from the original object. + + + + + Creates a copy of the SymbolDisplayFormat but with replaced set of . + + + An object specifying parameters with which symbols belonging to kind keywords should be formatted. + + + A duplicate of the SymbolDisplayFormat, with a replaced set of . + + + + + Creates a copy of the SymbolDisplayFormat but with an additional set of . + + + An object specifying additional parameters with which symbols belonging to kind keywords should be formatted. + + + A duplicate of the SymbolDisplayFormat, with an additional set of . + + + + + Creates a copy of the SymbolDisplayFormat but with a set of stripped away from the original object. + + + The settings that determine other characteristics of how symbols are displayed. + + + A duplicate of the SymbolDisplayFormat, with a set of stripped away from the original object. + + + + + Creates a copy of the SymbolDisplayFormat but with replaced set of . + + + An object specifying how parameters should be formatted. + + A duplicate of the SymbolDisplayFormat, with a replaced set of . + + + + Creates a copy of the SymbolDisplayFormat but with an additional set of . + + + An object specifying additional parameters on how parameters should be formatted. + + + A duplicate of the SymbolDisplayFormat, with an additional set of . + + + + + Creates a copy of the SymbolDisplayFormat but with a set of stripped away from the original object. + + + An object specifying parameters that should not be applied when formatting parameters. + + + A duplicate of the SymbolDisplayFormat, with a set of stripped away from the original object. + + + + + Creates a copy of the SymbolDisplayFormat but with replaced . + + + An object specifying parameters on how namespace symbols should be formatted. + + A duplicate of the SymbolDisplayFormat, with a replaced set of . + + + + Creates a copy of the SymbolDisplayFormat but with replaced set of . + + + An object specifying parameters on how symbols belonging to locals should be formatted. + + A duplicate of the SymbolDisplayFormat, with a replaced set of . + + + + Creates a copy of the SymbolDisplayFormat but with an additional set of . + + + An object specifying additional parameters on how symbols belonging to locals should be formatted. + + + A duplicate of the SymbolDisplayFormat, with an additional set of . + + + + + Specifies the options for how generics are displayed in the description of a symbol. + + + + + Omits the type parameter list entirely. + + + + + Includes the type parameters. + For example, "Foo<T>" in C# or "Foo(Of T)" in Visual Basic. + + + + + Includes type parameters and constraints. + For example, "where T : new()" in C# or "Of T as New" in Visual Basic. + + + + + Includes in or out keywords before variant type parameters. + For example, "Foo<out T>" in C# or (Foo Of Out T" in Visual Basic. + + + + + Specifies the options for how to display the global namespace in the description of a symbol. + + + Any of these styles may be overridden by . + + + + + Omits the global namespace, unconditionally. + + + + + Omits the global namespace if it is being displayed as a containing symbol (i.e. not on its own). + + + + + Include the global namespace, unconditionally. + + + + + Specifies which kind keywords should be included when displaying symbols. + + + + + Omits all kind keywords. + + + + + Includes the namespace keyword before namespaces. + For example, "namespace System", rather than "System". + + + + + Includes the type keyword before types. + For example, "class C" in C# or "Structure S" in Visual Basic. + + + + + Include the member keyword before members (if one exists). + For example, "event D E" in C# or "Function MyFun()" in Visual Basic. + + + + + Specifies the options for how locals are displayed in the description of a symbol. + + + + + Shows only the name of the local. + For example, "x". + + + + + Shows the type of the local in addition to its name. + For example, "int x" in C# or "x As Integer" in Visual Basic. + + + + + Shows the constant value of the local, if there is one, in addition to its name. + For example "x = 1". + + + + + Specifies the options for how members are displayed in the description of a symbol. + + + + + Includes only the name of the member. + + + + + Includes the (return) type of the method/field/property/event. + + + + + Includes the modifiers of the member. + For example, "static readonly" in C# or "Shared ReadOnly" in Visual Basic. + + + Accessibility modifiers are controlled separately by . + + + + + Includes the accessibility modifiers of the member. + For example, "public" in C# or "Public" in Visual Basic. + + + + + Includes the name of corresponding interface on members that explicitly implement + interface members. + For example, "IFoo.Bar { get; }". + + + This option has no effect in Visual Basic. + + + + + Includes the parameters of methods and properties/indexers. + + + See for finer-grained settings. + + + + + Includes the name of the type containing the member. + + + The format of the containing type is determined by . + + + + + Includes the value of the member if is a constant. + + + + + Specifies miscellaneous options about the format of symbol descriptions. + + + + + Specifies that no miscellaneous options should be applied. + + + + + Uses keywords for predefined types. + For example, "int" instead of "System.Int32" in C# + or "Integer" instead of "System.Integer" in Visual Basic. + + + + + Escapes identifiers that are also keywords. + For example, "@true" instead of "true" in C# or + "[True]" instead of "True" in Visual Basic. + + + + + Displays asterisks between commas in multi-dimensional arrays. + For example, "int[][*,*]" instead of "int[][,]" in C# or + "Integer()(*,*)" instead of "Integer()(*,*) in Visual Basic. + + + + + Displays "?" for erroneous types that lack names (perhaps due to faulty metadata). + + + + + Displays attributes names without the "Attribute" suffix, if possible. + + + Has no effect outside and only applies + if the context location is one where an attribute ca be referenced without the suffix. + + + + + Displays as a normal generic type, rather than with + the special question mark syntax. + + + + + Specifies how parameters are displayed in the description of a (member, property/indexer, or delegate) symbol. + + + + + Omits parameters from symbol descriptions. + + + If this option is combined with , then only + the parentheses will be shown (e.g. M()). + + + + + Includes the this keyword before the first parameter of an extension method in C#. + + + This option has no effect in Visual Basic. + + + + + Includes the params, ref, out, ByRef, ByVal keywords before parameters. + + + + + Includes parameter types in symbol descriptions. + + + + + Includes parameter names in symbol descriptions. + + + + + Includes parameter default values in symbol descriptions. + + Ignored if is not set. + + + + Includes square brackets around optional parameters. + + + + + A single element of a symbol description. For example, a keyword, a punctuation character or + a class name. + + + + + + + + Gets the kind of this display part. + + + + + Gets the symbol associated with this display part, if there is one. + For example, the associated with a class name. + + + + + + Construct a non-formattable (i.e. with a fixed string value). + + The kind of the display part. + An optional associated symbol. + The fixed string value of the part. + + + + Returns the string value of this symbol display part. + + + + + Specifies the kinds of a piece of classified text (SymbolDisplayPart). + + + + The name of an alias. + + + The name of an assembly. + + + The name of a class. + + + The name of a delegate. + + + The name of an enum. + + + The name of an error type. + + + + The name of an event. + + + The name of a field. + + + The name of an interface. + + + A language keyword. + + + The name of a label. + + + A line-break (i.e. whitespace). + + + A numeric literal. + Typically for the default values of parameters and the constant values of fields. + + + A string literal. + Typically for the default values of parameters and the constant values of fields. + + + The name of a local. + + + The name of a method. + + + The name of a module. + + + The name of a namespace. + + + The symbol of an operator (e.g. "+"). + + + The name of a parameter. + + + The name of a property. + + + A punctuation character (e.g. "(", ".", ",") other than an . + + + A single space character. + + + The name of a struct (structure in Visual Basic). + + + A keyword-like part for anonymous types (not actually a keyword). + + + An unclassified part. + Never returned - only set in user-constructed parts. + + + The name of a type parameter. + + + The name of a query range variable.. + + + + Specifies the options for how properties are displayed in symbol descriptions. + + + + + Shows only the names of properties. + + + + + + Indicates whether the property is readable and/or writable. + In C#, this is accomplished by including accessors. + In Visual Basic, this is accomplished by including the ReadOnly or WriteOnly + keyword, as appropriate. + + + + + Specifies how much qualification is used in symbol descriptions. + + + + + Shows only the name of the symbol. + + + + + Shows the name of the symbol and the names of all containing types. + + + + + Shows the name of the symbol the names of all containing types and namespaces. + + + + + Enumeration for common accessibility combinations. + + + + + No accessibility specified. + + + + + We should not see new anonymous types from source after we finished emit phase. + If this field is true, the collection is sealed; in DEBUG it also is used to check the assertion. + + + + + Collection of anonymous type templates is sealed + + + + + True if the method is a source method implemented as an iterator. + + + + + Default attribute usage for attribute types: + (a) Valid targets: AttributeTargets.All + (b) AllowMultiple: false + (c) Inherited: true + + + + + Information decoded from well-known custom attributes applied on an assembly. + + + + + Raw assembly version as specified in the AssemblyVersionAttribute, or Nothing if none specified. + If the string passed to AssemblyVersionAttribute contains * the version build and/or revision numbers are set to . + + + + + Returns data decoded from security attributes or null if there are no security attributes. + + + + + The attribute class. + + + + + The constructor on the attribute class. + + + + + Constructor arguments on the attribute. + + + + + Named (property value) arguments on the attribute. + + + + + Attribute is conditionally omitted if it is a source attribute and both the following are true: + (a) It has at least one applied conditional attribute AND + (b) None of conditional symbols are true at the attribute source location. + + + + + Checks if an applied attribute with the given attributeType matches the namespace name and type name of the given early attribute's description + and the attribute description has a signature with parameter count equal to the given attributeArgCount. + NOTE: We don't allow early decoded attributes to have optional parameters. + + + + + Returns the value of a constructor argument as type . + Throws if no constructor argument exists or the argument cannot be converted to the type. + + + + + Returns named attribute argument with the given as type . + If there is more than one named argument with this name, it returns the last one. + If no named argument is found then the is returned. + + The metadata property or field name. This name is case sensitive (both VB and C#). + SpecialType of the named argument. + Default value for the named argument. + + For user defined attributes VB allows duplicate named arguments and uses the last value. + Dev11 reports an error for pseudo-custom attributes when emitting metadata. We don't. + + + + + Decode the arguments to ObsoleteAttribute. ObsoleteAttribute can have 0,1 or 2 arguments. + + + + + Decode the arguments to DeprecatedAttribute. DeprecatedAttribute can have 3 or 4 arguments. + + + + + Used to determine if two instances are identical, + i.e. they have the same attribute type, attribute constructor and have identical arguments. + + + + + Information decoded from early well-known custom attributes applied on an event. + + + + + Information decoded from well-known custom attributes applied on an event. + + + + + Information decoded from early well-known custom attributes applied on a field. + + + + + Information decoded from well-known custom attributes applied on a field. + + + + + Returns marshalling data or null of MarshalAs attribute isn't applied on the field. + + + + + Information decoded from early well-known custom attributes applied on a method. + + + + + Information decoded from well-known custom attributes applied on a method. + + + + + Returns data decoded from security attributes or null if there are no security attributes. + + + + + Information decoded from well-known custom attributes applied on a module. + + + + + Information decoded from early well-known custom attributes applied on a parameter. + + + + + Information decoded from well-known custom attributes applied on a parameter. + + + + + Returns marshalling data or null of MarshalAs attribute isn't applied on the parameter. + + + + + Information decoded from early well-known custom attributes applied on a property. + + + + + Information decoded from well-known custom attributes applied on a property. + + + + + Information decoded from well-known custom attributes applied on a method return value. + + + + + Returns marshalling data or null of MarshalAs attribute isn't applied on the return value. + + + + + Information decoded from early well-known custom attributes applied on a type. + + + + + Information decoded from well-known custom attributes applied on a type. + + + + + Returns data decoded from security attributes or null if there are no security attributes. + + + + + Represents a bag of custom attributes and the associated decoded well-known attribute data. + + + + + Instance representing sealed custom attribute bag with no attributes. + + + + + Returns a non-sealed custom attribute bag with null initialized , null initialized and uninitialized . + + + + + Sets the early decoded well-known attribute data on the bag in a thread safe manner. + Stored early decoded data is immutable and cannot be updated further. + + Returns true if early decoded data were stored into the bag on this thread. + + + + Sets the decoded well-known attribute data (except the early data) on the bag in a thread safe manner. + Stored decoded data is immutable and cannot be updated further. + + Returns true if decoded data were stored into the bag on this thread. + + + + Sets the bound attributes on the bag in a thread safe manner. + If store succeeds, it seals the bag and makes the bag immutable. + + Returns true if bound attributes were stored into the bag on this thread. + + + + Gets the stored bound attributes in the bag. + + This property can only be accessed on a sealed bag. + + + + Gets the decoded well-known attribute data (except the early data) in the bag. + + This property can only be accessed on the bag after has been invoked. + + + + Gets the early decoded well-known attribute data in the bag. + + This property can only be accessed on the bag after has been invoked. + + + + Return whether early decoded attribute data has been computed and stored on the bag and it is safe to access from this bag. + Return value of true doesn't guarantee that bound attributes or remaining decoded attribute data has also been initialized. + + + + + Return whether all decoded attribute data has been computed and stored on the bag and it is safe to access from this bag. + Return value of true doesn't guarantee that bound attributes have also been initialized. + + + + + Enum representing the current state of attribute binding/decoding for a corresponding CustomAttributeBag. + + + + + Bag has been created, but no decoded data or attributes have been stored. + CustomAttributeBag is in this state during early decoding phase. + + + + + Early decoded attribute data has been computed and stored on the bag, but bound attributes or remaining decoded attribute data is not stored. + Only can be accessed from this bag. + + + + + All decoded attribute data has been computed and stored on the bag, but bound attributes are not yet stored. + Both and can be accessed from this bag. + + + + + Bound attributes have been computed and stored on this bag. + + + + + CustomAttributeBag is completely initialized and immutable. + + + + + Contains common arguments to Symbol.DecodeWellKnownAttribute method in both the language compilers. + + + + + Object to store the decoded data from bound well-known attributes. + Created lazily only when some decoded data needs to be stored, null otherwise. + + + + + Gets or creates the decoded data object. + + + This method must be called only when some decoded data will be stored into it subsequently. + + + + + Returns true if some decoded data has been stored into . + + + + + Gets the stored decoded data. + + + Assumes is true. + + + + + Syntax of the attribute to decode. Might be null when the attribute information is not coming + from syntax. For example, an assembly attribute propagated from added module to the resulting assembly. + + + + + Bound attribute to decode. + + + + + The index of the attribute in the list of attributes to decode. + + + + + Total count of attributes to decode. + + + + + Diagnostic bag. + + + + + Specific part of the symbol to which the attributes apply, or AttributeLocation.None if the attributes apply to the symbol itself. + Used e.g. for return type attributes of a method symbol. + + + + + Contains common arguments to Symbol.EarlyDecodeWellKnownAttribute method in both the language compilers. + + + + + Object to store the decoded data from early bound well-known attributes. + Created lazily only when some decoded data needs to be stored, null otherwise. + + + + + Gets or creates the decoded data object. + + + This method must be called only when some decoded data will be stored into it subsequently. + + + + + Returns true if some decoded data has been stored into . + + + + + Gets the stored decoded data. + + + Assumes is true. + + + + + Binder to bind early well-known attributes. + + + + + Bound type of the attribute to decode. + + + + + Syntax of the attribute to decode. + + + + + Specific part of the symbol to which the attributes apply, or AttributeLocation.None if the attributes apply to the symbol itself. + Used e.g. for return type attributes of a method symbol. + + + + + Base class for storing information decoded from early well-known custom attributes. + + + CONSIDER: Should we remove this class and let the sub-classes derived from WellKnownAttributeData? + + + + + Information decoded from . + + + + + Returns an instance of with all types replaced by types returned by specified translator. + Returns this instance if it doesn't hold on any types. + + + + + Information decoded from . + + + + + True if an error should be thrown for the . Default is false in which case + a warning is thrown. + + + + + The message that will be shown when an error/warning is created for . + + + + + Information decoded from security attributes, i.e. attributes derived from well-known SecurityAttribute, applied on a method/type/assembly. + + + + + Used for retrieving applied source security attributes, i.e. attributes derived from well-known SecurityAttribute. + + + + + Base class for storing information decoded from well-known custom attributes. + + + + + Used to distinguish cases when attribute is applied with null value and when attribute is not applied. + For some well-known attributes, the latter case will return string stored in + field. + + + + + If true, a language may use the modified storage location without + being aware of the meaning of the modification, modopt vs. modreq. + + + + + A type used as a tag that indicates which type of modification applies. + + + + + Represents a using alias (Imports alias in Visual Basic). + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Gets the for the + namespace or type referenced by the alias. + + + + + Represents an array. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Gets the number of dimensions of this array. A regular single-dimensional array + has rank 1, a two-dimensional array has rank 2, etc. + + + + + Gets the type of the elements stored in the array. + + + + + Custom modifiers associated with the array type, or an empty array if there are none. + + + + + Represents a .NET assembly, consisting of one or more modules. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + True if the assembly contains interactive code. + + + + + Gets the name of this assembly. + + + + + Gets the merged root namespace that contains all namespaces and types defined in the modules + of this assembly. If there is just one module in this assembly, this property just returns the + GlobalNamespace of that module. + + + + + Gets the modules in this assembly. (There must be at least one.) The first one is the main module + that holds the assembly manifest. + + + + + Gets the set of type identifiers from this assembly. + + + + + Gets the set of namespace names from this assembly. + + + + + Gets a value indicating whether this assembly gives + access to internal symbols + + + + Lookup a type within the assembly using the canonical CLR metadata name of the type. + + Type name. + Symbol for the type or null if type cannot be found or is ambiguous. + + + + Determines if the assembly might contain extension methods. + If false, the assembly does not contain extension methods. + + + + + Returns the type symbol for a forwarded type based its canonical CLR metadata name. + The name should refer to a non-nested type. If type with this name is not forwarded, + null is returned. + + + + + If this symbol represents a metadata assembly returns the underlying . + + Otherwise, this returns null. + + + + + Represents the 'dynamic' type in C#. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + An IErrorTypeSymbol is used when the compiler cannot determine a symbol object to return because + of an error. For example, if a field is declared "Foo x;", and the type "Foo" cannot be + found, an IErrorTypeSymbol is returned when asking the field "x" what it's type is. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + When constructing this type, there may have been symbols that seemed to + be what the user intended, but were unsuitable. For example, a type might have been + inaccessible, or ambiguous. This property returns the possible symbols that the user + might have intended. It will return no symbols if no possible symbols were found. + See the CandidateReason property to understand why the symbols were unsuitable. + + + This only applies if this INamedTypeSymbol has TypeKind TypeKind.Error. + If not, an empty ImmutableArray is returned. + + + + + If CandidateSymbols returns one or more symbols, returns the reason that those + symbols were not chosen. Otherwise, returns None. + + + + + Represents an event. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + The type of the event. + + + + + Returns true if the event is a WinRT type event. + + + + + The 'add' accessor of the event. Null only in error scenarios. + + + + + The 'remove' accessor of the event. Null only in error scenarios. + + + + + The 'raise' accessor of the event. Null if there is no raise method. + + + + + The original definition of the event. If the event is constructed from another + symbol by type substitution, OriginalDefinition gets the original symbol, as it was + defined in source or metadata. + + + + + Returns the overridden event, or null. + + + + + Returns interface properties explicitly implemented by this event. + + + Properties imported from metadata can explicitly implement more than one event. + + + + + Represents a field in a class, struct or enum. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + If this field serves as a backing variable for an automatically generated + property or a field-like event, returns that + property/event. Otherwise returns null. + Note, the set of possible associated symbols might be expanded in the future to + reflect changes in the languages. + + + + + Returns true if this field was declared as "const" (i.e. is a constant declaration). + Also returns true for an enum member. + + + + + Returns true if this field was declared as "readonly". + + + + + Returns true if this field was declared as "volatile". + + + + + Gets the type of this field. + + + + + Returns false if the field wasn't declared as "const", or constant value was omitted or erroneous. + True otherwise. + + + + + Gets the constant value of this field + + + + + Returns custom modifiers associated with the field, or an empty array if there are none. + + + + + Get the original definition of this symbol. If this symbol is derived from another + symbol by (say) type substitution, this gets the original symbol, as it was defined in + source or metadata. + + + + + Represents a label in method body + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Gets the immediately containing of this . + + + + + Represents a local variable in method body. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Gets the type of this local variable. + + + + + Returns true if this local variable was declared as "const" (i.e. is a constant declaration). + Also returns true for an enum member. + + + + + Returns false if the local variable wasn't declared as "const", or constant value was omitted or erroneous. + True otherwise. + + + + + Gets the constant value of this local variable. + + + + + Represents a method or method-like symbol (including constructor, + destructor, operator, or property/event accessor). + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Gets what kind of method this is. There are several different kinds of things in the + C# language that are represented as methods. This property allow distinguishing those things + without having to decode the name of the method. + + + + + Returns the arity of this method, or the number of type parameters it takes. + A non-generic method has zero arity. + + + + + Returns whether this method is generic; i.e., does it have any type parameters? + + + + + Returns true if this method is an extension method. + + + + + Returns true if this method is an async method + + + + + Returns whether this method is using CLI VARARG calling convention. This is used for + C-style variable argument lists. This is used extremely rarely in C# code and is + represented using the undocumented "__arglist" keyword. + + Note that methods with "params" on the last parameter are indicated with the "IsParams" + property on ParameterSymbol, and are not represented with this property. + + + + + Returns whether this built-in operator checks for integer overflow. + + + + + Returns true if this method hides base methods by name. This cannot be specified directly + in the C# language, but can be true for methods defined in other languages imported from + metadata. The equivalent of the "hidebyname" flag in metadata. + + + + + Returns true if this method has no return type; i.e., returns "void". + + + + + Gets the return type of the method. + + + + + Returns the type arguments that have been substituted for the type parameters. + If nothing has been substituted for a given type parameter, + then the type parameter itself is consider the type argument. + + + + + Get the type parameters on this method. If the method has not generic, + returns an empty list. + + + + + Gets the parameters of this method. If this method has no parameters, returns + an empty list. + + + + + Returns the method symbol that this method was constructed from. The resulting + method symbol + has the same containing type (if any), but has type arguments that are the same + as the type parameters (although its containing type might not). + + + + + Get the original definition of this symbol. If this symbol is derived from another + symbol by (say) type substitution, this gets the original symbol, as it was defined in + source or metadata. + + + + + If this method overrides another method (because it both had the override modifier + and there correctly was a method to override), returns the overridden method. + + + + + If this method can be applied to an object, returns the type of object it is applied to. + + + + + If this method is a reduced extension method, returns the definition of extension + method from which this was reduced. Otherwise, returns null. + + + + + If this method is a reduced extension method, returns a type inferred during reduction process for the type parameter. + + Type parameter of the corresponding method. + Inferred type or Nothing if nothing was inferred. + If this is not a reduced extension method. + If is null. + If doesn't belong to the corresponding method. + + + + If this is an extension method that can be applied to a receiver of the given type, + returns a reduced extension method symbol thus formed. Otherwise, returns null. + + + + + Returns interface methods explicitly implemented by this method. + + + Methods imported from metadata can explicitly implement more than one method, + that is why return type is ImmutableArray. + + + + + Returns the list of custom modifiers, if any, associated with the returned value. + + + + + Returns the list of custom attributes, if any, associated with the returned value. + + + + + Returns a symbol (e.g. property, event, etc.) associated with the method. + + + If this method has of or , + returns the property that this method is the getter or setter for. + If this method has of or , + returns the event that this method is the adder or remover for. + Note, the set of possible associated symbols might be expanded in the future to + reflect changes in the languages. + + + + + Returns a constructed method given its type arguments. + + The immediate type arguments to be replaced for type + parameters in the method. + + + + If this is a partial method implementation part, returns the corresponding + definition part. Otherwise null. + + + + + If this is a partial method declaration without a body, and the method is + implemented with a body, returns that implementing definition. Otherwise + null. + + + + + Platform invoke information, or null if the method isn't a P/Invoke. + + + + + If this method is a Lambda method (MethodKind = MethodKind.LambdaMethod) and + there is an anonymous delegate associated with it, returns this delegate. + + Returns null if the symbol is not a lambda or if it does not have an + anonymous delegate associated with it. + + + + + Represents a module within an assembly. Every assembly contains one or more modules. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Returns a NamespaceSymbol representing the global (root) namespace, with + module extent, that can be used to browse all of the symbols defined in this module. + + + + + Given a namespace symbol, returns the corresponding module specific namespace symbol + + + + + Returns an array of assembly identities for assemblies referenced by this module. + Items at the same position from ReferencedAssemblies and from ReferencedAssemblySymbols + correspond to each other. + + + + + Returns an array of AssemblySymbol objects corresponding to assemblies referenced + by this module. Items at the same position from ReferencedAssemblies and + from ReferencedAssemblySymbols correspond to each other. + + + + + If this symbol represents a metadata module returns the underlying . + + Otherwise, this returns null. + + + + + Represents a type other than an array, a pointer, a type parameter. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Returns the arity of this type, or the number of type parameters it takes. + A non-generic type has zero arity. + + + + + True if this type or some containing type has type parameters. + + + + + True if this is a reference to an unbound generic type. A generic type is + considered unbound if all of the type argument lists in its fully qualified + name are empty. Note that the type arguments of an unbound generic type will be + returned as error types because they do not really have type arguments. An unbound + generic type yields null for its BaseType and an empty result for its Interfaces. + + + + + Returns true if the type is a Script class. + It might be an interactive submission class or a Script class in a csx file. + + + + + Returns true if the type is the implicit class that holds onto invalid global members (like methods or + statements in a non script file). + + + + + Returns collection of names of members declared within this type. + + + + + Returns the type parameters that this type has. If this is a non-generic type, + returns an empty ImmutableArray. + + + + + Returns the type arguments that have been substituted for the type parameters. + If nothing has been substituted for a give type parameters, + then the type parameter itself is consider the type argument. + + + + + Get the original definition of this type symbol. If this symbol is derived from another + symbol by (say) type substitution, this gets the original symbol, as it was defined in + source or metadata. + + + + + For delegate types, gets the delegate's invoke method. Returns null on + all other kinds of types. Note that it is possible to have an ill-formed + delegate type imported from metadata which does not have an Invoke method. + Such a type will be classified as a delegate but its DelegateInvokeMethod + would be null. + + + + + For enum types, gets the underlying type. Returns null on all other + kinds of types. + + + + + Returns the type symbol that this type was constructed from. This type symbol + has the same containing type (if any), but has type arguments that are the same + as the type parameters (although its containing type might not). + + + + + Returns a constructed type given its type arguments. + + The immediate type arguments to be replaced for type + parameters in the type. + + + + Returns an unbound generic type of this named type. + + + + + Get the instance constructors for this type. + + + + + Get the static constructors for this type. + + + + + Get the both instance and static constructors for this type. + + + + + For implicitly declared delegate types returns the EventSymbol that caused this + delegate type to be generated. + For all other types returns null. + Note, the set of possible associated symbols might be expanded in the future to + reflect changes in the languages. + + + + + Determines if the symbol might contain extension methods. + If false, the symbol does not contain extension methods. + + + + + Represents either a namespace or a type. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Get all the members of this symbol. + + An ImmutableArray containing all the members of this symbol. If this symbol has no members, + returns an empty ImmutableArray. Never returns Null. + + + + Get all the members of this symbol that have a particular name. + + An ImmutableArray containing all the members of this symbol with the given name. If there are + no members with this name, returns an empty ImmutableArray. Never returns Null. + + + + Get all the members of this symbol that are types. + + An ImmutableArray containing all the types that are members of this symbol. If this symbol has no type members, + returns an empty ImmutableArray. Never returns null. + + + + Get all the members of this symbol that are types that have a particular name, of any arity. + + An ImmutableArray containing all the types that are members of this symbol with the given name. + If this symbol has no type members with this name, + returns an empty ImmutableArray. Never returns null. + + + + Get all the members of this symbol that are types that have a particular name and arity + + An ImmutableArray containing all the types that are members of this symbol with the given name and arity. + If this symbol has no type members with this name and arity, + returns an empty ImmutableArray. Never returns null. + + + + Returns true if this symbol is a namespace. If it is not a namespace, it must be a type. + + + + + Returns true if this symbols is a type. If it is not a type, it must be a namespace. + + + + + Represents a namespace. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Get all the members of this symbol. + + + + + Get all the members of this symbol that have a particular name. + + + + + Get all the members of this symbol that are namespaces. + + + + + Returns whether this namespace is the unnamed, global namespace that is + at the root of all namespaces. + + + + + The kind of namespace: Module, Assembly or Compilation. + Module namespaces contain only members from the containing module that share the same namespace name. + Assembly namespaces contain members for all modules in the containing assembly that share the same namespace name. + Compilation namespaces contain all members, from source or referenced metadata (assemblies and modules) that share the same namespace name. + + + + + The containing compilation for compilation namespaces. + + + + + If a namespace is an assembly or compilation namespace, it may be composed of multiple + namespaces that are merged together. If so, ConstituentNamespaces returns + all the namespaces that were merged. If this namespace was not merged, returns + an array containing only this namespace. + + + + + Represents a parameter of a method or property. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Whether the parameter passed by value or by reference. + + + + + Returns true if the parameter was declared as a parameter array. + + + + + Returns true if the parameter is optional. + + + + + Returns true if the parameter is the hidden 'this' ('Me' in Visual Basic) parameter. + + + + + Gets the type of the parameter. + + + + + Custom modifiers associated with the parameter, or an empty array if there are none. + + + + + Gets the ordinal position of the parameter. The first parameter has ordinal zero. + The 'this' parameter ('Me' in Visual Basic) has ordinal -1. + + + + + Returns true if the parameter specifies a default value to be passed + when no value is provided as an argument to a call. The default value + can be obtained with the DefaultValue property. + + + + + Returns the default value of the parameter. + + + Returns null if the parameter type is a struct and the default value of the parameter + is the default value of the struct type. + + The parameter has no default value. + + + + Get the original definition of this symbol. If this symbol is derived from another + symbol by (say) type substitution, this gets the original symbol, as it was defined in + source or metadata. + + + + + Represents a pointer type such as "int *". Pointer types + are used only in unsafe code. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Gets the type of the storage location that an instance of the pointer type points to. + + + + + Custom modifiers associated with the pointer type, or an empty array if there are none. + + + Some managed languages may represent special information about the pointer type + as a custom modifier on either the pointer type or the element type, or + both. + + + + + Represents a preprocessing conditional compilation symbol. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Represents a property or indexer. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Returns whether the property is really an indexer. + + + + + True if this is a read-only property; that is, a property with no set accessor. + + + + + True if this is a write-only property; that is, a property with no get accessor. + + + + + Returns true if this property is an auto-created WithEvents property that takes place of + a field member when the field is marked as WithEvents. + + + + + The type of the property. + + + + + The parameters of this property. If this property has no parameters, returns + an empty list. Parameters are only present on indexers, or on some properties + imported from a COM interface. + + + + + The 'get' accessor of the property, or null if the property is write-only. + + + + + The 'set' accessor of the property, or null if the property is read-only. + + + + + The original definition of the property. If the property is constructed from another + symbol by type substitution, OriginalDefinition gets the original symbol, as it was + defined in source or metadata. + + + + + Returns the overridden property, or null. + + + + + Returns interface properties explicitly implemented by this property. + + + Properties imported from metadata can explicitly implement more than one property. + + + + + The list of custom modifiers, if any, associated with the type of the property. + + + + + Represents a range variable in a query expression. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Represents a symbol (namespace, class, method, parameter, etc.) + exposed by the compiler. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Gets the indicating what kind of symbol it is. + + + + + Gets the source language ("C#" or "Visual Basic"). + + + + + Gets the symbol name. Returns the empty string if unnamed. + + + + + Gets the name of a symbol as it appears in metadata. Most of the time, this + is the same as the Name property, with the following exceptions: + 1) The metadata name of generic types includes the "`1", "`2" etc. suffix that + indicates the number of type parameters (it does not include, however, names of + containing types or namespaces). + 2) The metadata name of explicit interface names have spaces removed, compared to + the name property. + 3) The length of names is limited to not exceed metadata restrictions. + + + + + Gets the for the immediately containing symbol. + + + + + Gets the for the containing assembly. Returns null if the + symbol is shared across multiple assemblies. + + + + + Gets the for the containing module. Returns null if the + symbol is shared across multiple modules. + + + + + Gets the for the containing type. Returns null if the + symbol is not contained within a type. + + + + + Gets the for the nearest enclosing namespace. Returns null if the + symbol isn't contained in a namespace. + + + + + Gets a value indicating whether the symbol is the original definition. Returns false + if the symbol is derived from another symbol, by type substitution for instance. + + + + + Gets a value indicating whether the symbol is static. + + + + + Gets a value indicating whether the symbol is virtual. + + + + + Gets a value indicating whether the symbol is an override of a base class symbol. + + + + + Gets a value indicating whether the symbol is abstract. + + + + + Gets a value indicating whether the symbol is sealed. + + + + + Gets a value indicating whether the symbol is defined externally. + + + + + Returns true if this symbol was automatically created by the compiler, and does not have + an explicit corresponding source code declaration. + + + This is intended for symbols that are ordinary symbols in the language sense, and may be + used by code, but that are simply declared implicitly rather than with explicit language + syntax. + + Examples include (this list is not exhaustive): + the default constructor for a class or struct that is created if one is not provided, + the BeginInvoke/Invoke/EndInvoke methods for a delegate, + the generated backing field for an auto property or a field-like event, + the "this" parameter for non-static methods, + the "value" parameter for a property setter, + the parameters on indexer accessor methods (not on the indexer itself), + methods in anonymous types + + + + + Returns true if this symbol can be referenced by its name in code. + + + + + Gets the locations where the symbol was originally defined, either in source or + metadata. Some symbols (for example, partial classes) may be defined in more than one + location. + + + + + Get the syntax node(s) where this symbol was declared in source. Some symbols (for example, + partial classes) may be defined in more than one location. This property should return + one or more syntax nodes only if the symbol was declared in source code and also was + not implicitly declared (see the IsImplicitlyDeclared property). + + Note that for namespace symbol, the declaring syntax might be declaring a nested namespace. + For example, the declaring syntax node for N1 in "namespace N1.N2 {...}" is the entire + NamespaceDeclarationSyntax for N1.N2. For the global namespace, the declaring syntax will + be the CompilationUnitSyntax. + + + The syntax node(s) that declared the symbol. If the symbol was declared in metadata + or was implicitly declared, returns an empty read-only array. + + + + + Gets the attributes for the symbol. Returns an empty + if there are no attributes. + + + + + Gets a indicating the declared accessibility for the symbol. + Returns NotApplicable if no accessibility is declared. + + + + + Gets the for the original definition of the symbol. + If this symbol is derived from another symbol, by type substitution for instance, + this gets the original symbol, as it was defined in source or metadata. + + + + + Returns the Documentation Comment ID for the symbol, or null if the symbol doesn't + support documentation comments. + + + + + Gets the XML (as text) for the comment associated with the symbol. + + Preferred culture or null for the default. + Optionally, expand <include> elements. No impact on non-source documentation comments. + Token allowing cancellation of request. + The XML that would be written to the documentation file for the symbol. + + + + Converts the symbol to a string representation. + + Format or null for the default. + A formatted string representation of the symbol. + + + + Convert a symbol to an array of string parts, each of which has a kind. Useful for + colorizing the display string. + + Formatting rules - null implies + SymbolDisplayFormat.ErrorMessageFormat. + A read-only array of string parts. + + + + Convert a symbol to a string that can be displayed to the user. May be tailored to a + specific location in the source code. + + Binding information (for determining names appropriate to + the context). + A position in the source code (context). + Formatting rules - null implies + SymbolDisplayFormat.MinimallyQualifiedFormat. + A formatted string that can be displayed to the user. + + + + Convert a symbol to an array of string parts, each of which has a kind. May be tailored + to a specific location in the source code. Useful for colorizing the display string. + + Binding information (for determining names appropriate to + the context). + A position in the source code (context). + Formatting rules - null implies + SymbolDisplayFormat.MinimallyQualifiedFormat. + A read-only array of string parts. + + + + Indicates that this symbol uses metadata that cannot be supported by the language. + + Examples include: + - Pointer types in VB + - ByRef return type + - Required custom modifiers + + This is distinguished from, for example, references to metadata symbols defined in assemblies that weren't referenced. + Symbols where this returns true can never be used successfully, and thus should never appear in any IDE feature. + + This is set for metadata symbols, as follows: + Type - if a type is unsupported (e.g., a pointer type, etc.) + Method - parameter or return type is unsupported + Field - type is unsupported + Event - type is unsupported + Property - type is unsupported + Parameter - type is unsupported + + + + + Returns the constructed form of the ReducedFrom property, + including the type arguments that were either inferred during reduction or supplied at the call site. + + + + + Synthesized symbol that implements a method body feature (iterator, async, lambda, etc.) + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + The symbol whose body lowering produced this synthesized symbol, + or null if the symbol is synthesized based on declaration. + + + + + True if this symbol body needs to be updated when the body is updated. + False if is null. + + + + + Represents a type parameter in a generic type or generic method. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + The ordinal position of the type parameter in the parameter list which declares + it. The first type parameter has ordinal zero. + + + + + The variance annotation, if any, of the type parameter declaration. Type parameters may be + declared as covariant (out), contravariant (in), or neither. + + + + + The type parameter kind of this type parameter. + + + + + The method that declares the type parameter, or null. + + + + + The type that declares the type parameter, or null. + + + + + True if the reference type constraint (class) was specified for the type parameter. + + + + + True if the value type constraint (struct)was specified for the type parameter. + + + + + True if the parameterless constructor constraint (new()) was specified for the type parameter. + + + + + The types that were directly specified as constraints on the type parameter. + + + + + Get the original definition of this type symbol. If this symbol is derived from another + symbol by (say) type substitution, this gets the original symbol, as it was defined in + source or metadata. + + + + + If this is a type parameter of a reduced extension method, gets the type parameter definition that + this type parameter was reduced from. Otherwise, returns Nothing. + + + + + Represents a type. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + An enumerated value that identifies whether this type is an array, pointer, enum, and so on. + + + + + The declared base type of this type, or null. The object type, interface types, + and pointer types do not have a base type. The base type of a type parameter + is its effective base class. + + + + + Gets the set of interfaces that this type directly implements. This set does not include + interfaces that are base interfaces of directly implemented interfaces. This does + include the interfaces declared as constraints on type parameters. + + + + + The list of all interfaces of which this type is a declared subtype, excluding this type + itself. This includes all declared base interfaces, all declared base interfaces of base + types, and all declared base interfaces of those results (recursively). This also is the effective + interface set of a type parameter. Each result + appears exactly once in the list. This list is topologically sorted by the inheritance + relationship: if interface type A extends interface type B, then A precedes B in the + list. This is not quite the same as "all interfaces of which this type is a proper + subtype" because it does not take into account variance: AllInterfaces for + ]]> will not include ]]>; + + + + + True if this type is known to be a reference type. It is never the case that + and both return true. However, for an unconstrained type + parameter, and will both return false. + + + + + True if this type is known to be a value type. It is never the case that + and both return true. However, for an unconstrained type + parameter, and will both return false. + + + + + Is this a symbol for an anonymous type (including anonymous VB delegate). + + + + + The original definition of this symbol. If this symbol is constructed from another + symbol by type substitution then gets the original symbol as it was defined in + source or metadata. + + + + + An enumerated value that identifies certain 'special' types such as . + Returns if the type is not special. + + + + + Returns the corresponding symbol in this type or a base type that implements + interfaceMember (either implicitly or explicitly), or null if no such symbol exists + (which might be either because this type doesn't implement the container of + interfaceMember, or this type doesn't supply a member that successfully implements + interfaceMember). + + + Must be a non-null interface property, method, or event. + + + + + A class that provides constants for common language names. + + + + + The common name used for the C# language. + + + + + The common name used for the Visual Basic language. + + + + + Enumeration for possible kinds of method symbols. + + + + + An anonymous method or lambda expression + + + + + Method is a constructor. + + + + + Method is a conversion. + + + + + Method is a delegate invoke. + + + + + Method is a destructor. + + + + + Method is an event add. + + + + + Method is an event raise. + + + + + Method is an event remove. + + + + + Method is an explicit interface implementation. + + + + + Method is an operator. + + + + + Method is an ordinary method. + + + + + Method is a property get. + + + + + Method is a property set. + + + + + An extension method with the "this" parameter removed. + + + + + Method is a static constructor. + + + + + A built-in operator. + + + + + Declare Sub or Function. + + + + + Describes the kind of the namespace extent. + + + + + Information that describes how a method from the underlying Platform is to be invoked. + + + + + Module name. Null if value specified in the attribute is not valid. + + + + + Name of the native entry point or null if not specified (the effective name is the same as the name of the target method). + + + + + Controls whether the field causes the common language runtime + to search an unmanaged DLL for entry-point names other than the one specified. + + + + + Indicates how to marshal string parameters and controls name mangling. + + + + + Indicates whether the callee calls the SetLastError Win32 API function before returning from the attributed method. + + + + + Indicates the calling convention of an entry point. + + + + + Enables or disables best-fit mapping behavior when converting Unicode characters to ANSI characters. + Null if not specified (the setting for the containing type or assembly should be used, ). + + + + + Enables or disables the throwing of an exception on an unmappable Unicode character that is converted to an ANSI "?" character. + Null if not specified. + + + + + Denotes the kind of reference parameter. + + + + + Indicates a "value" parameter. + + + + + Indicates a "ref" parameter. + + + + + Indicates an "out" parameter. + + + + + Specifies the possible kinds of symbols. + + + + + Symbol is an alias. + + + + + Symbol is an array type. + + + + + Symbol is an assembly. + + + + + Symbol is a dynamic type. + + + + + Symbol that represents an error + + + + + Symbol is an Event. + + + + + Symbol is a field. + + + + + Symbol is a label. + + + + + Symbol is a local. + + + + + Symbol is a method. + + + + + Symbol is a netmodule. + + + + + Symbol is a named type (e.g. class). + + + + + Symbol is a namespace. + + + + + Symbol is a parameter. + + + + + Symbol is a pointer type. + + + + + Symbol is a property. + + + + + Symbol is a range variable of a query expression. + + + + + Symbol is a type parameter. + + + + + Symbol is a preprocessing/conditional compilation constant. + + + + + Kind of a synthesized local variable. + + + Synthesized local variables are either + 1) Short-lived (temporary) + The lifespan of an temporary variable shall not cross a statement boundary (a PDB sequence point). + These variables are not tracked by EnC and don't have names. + + 2) Long-lived + All variables whose lifespan might cross a statement boundary (include a PDB sequence point) + must be named in a build configuration that supports EnC. Some of them might need to be named in release, to support EE. + The kind of such local must be encoded in the name, so that we can retrieve it from debug metadata during EnC. + + The integer value of the kind must match corresponding Dev11/12 TEMP_KIND enum values for + compatibility with assemblies generated by the native compiler. + + Long-lived local variables must be assigned slots in source order. + + + + + Temp variable created by the optimizer. + + + + + Temp variable created during lowering. + + + + + Temp variable created by the emitter. + + + + + The variable is not synthesized (C#, VB). + + + + + Local variable that stores value of an expression consumed by a subsequent conditional branch instruction that might jump across PDB sequence points. + The value needs to be preserved when remapping the IL offset from old method body to new method body during EnC. + A hidden sequence point also needs to be inserted at the offset where this variable is loaded to be consumed by the branch instruction. + (VB, C#). + + + + + Boolean passed to Monitor.Enter (C#, VB). + + + + + Variable holding on the object being locked while the execution is within the block of the lock statement (C#) or SyncLock statement (VB). + + + + + Local variable that stores the resources to be disposed at the end of using statement (C#, VB). + + + + + Local variable that stores the enumerator instance (C#, VB). + + + + + Local variable that stores the array instance (C#, VB?). + + + + + Local variables that store upper bound of multi-dimensional array, for each dimension (C#, VB?). + + + + + Local variables that store the current index, for each dimension (C#, VB?). + + + + + Local variable that holds a pinned handle of a string passed to a fixed statement (C#). + + + + + Local variable that holds the object passed to With statement (VB). + + + + + Local variable used to store the value of Select Case during the execution of Case statements. + + + + + Local variable that stores the return value of an async method. + + + + + VB: Stores the return value of a function that is not accessible from user code (e.g. operator, lambda, async, iterator). + C#: Stores the return value of a method/lambda with a block body, so that we can put a sequence point on the closing brace of the body. + + + + + Very special corner case involving filters, await and lambdas. + + + + + Local variable that stores the current state of the state machine while MoveNext method is executing. + Used to avoid race conditions due to multiple reads from the lifted state. + + + + + Local that stores an expression value which needs to be spilled. + This local should either be hoisted or its lifespan ends before + the end of the containing await expression. + + + + + Local variable that holds on the display class instance. + + + + + Local variable used to cache a delegate that is used in inner block (possibly a loop), + and can be reused for all iterations of the loop. + + + + + Local variable that stores the result of an await expression (the awaiter object). + The variable is assigned the result of a call to await-expression.GetAwaiter() and subsequently used + to check whether the task completed. Eventually the value is stored in an awaiter field. + + The value assigned to the variable needs to be preserved when remapping the IL offset from old method body + to new method body during EnC. If the awaiter expression is contained in an active statement and the + containing MoveNext method changes the debugger finds the next sequence point that follows the await expression + and transfers the execution to the new method version. This sequence point is placed by the compiler at + the immediately after the stloc instruction that stores the awaiter object to this variable. + The subsequent ldloc then restores it in the new method version. + + (VB, C#). + + + + + All values have to be less than or equal to + () + + + + + An awaiter in async method. + Never actually created as a local variable, immediately lifted to a state machine field. + Not serialized to . + + + + + The receiver of a delegate relaxation stub. + Created as a local variable but always lifted to a relaxation display class field. + We never emit debug info for hoisted relaxation variable. + TODO: Avoid using lambdas and display classes for implementation of relaxation stubs and remove this kind. + + + + + Represents a constant value used as an argument to a custom attribute. + + + + + The kind of the constant. + + + + + Returns the of the constant, + or null if the type can't be determined (error). + + + + + True if the constant represents a null reference. + + + + + The value for a non-array constant. + + + + + The value for an array. + + + + + TypedConstant isn't computing its own kind from the type symbol because it doesn't + have a way to recognize the well-known type System.Type. + + + + + Represents the kind of a TypedConstant. + + + + + Represents a simple value or a read-only array of . + + + + + True if the constant represents a null literal. + + + + + Enumeration for possible kinds of type symbols. + + + + + Type's kind is undefined. + + + + + Type is an array type. + + + + + Type is a class. + + + + + Type is a delegate. + + + + + Type is dynamic. + + + + + Type is an enumeration. + + + + + Type is an error type. + + + + + Type is an interface. + + + + + Type is a module. + + + + + Type is a pointer. + + + + + Type is a C# struct or VB Structure + + + + + Type is a C# struct or VB Structure + + + + + Type is a type parameter. + + + + + Type is an interactive submission. + + + + + Type layout information. + + + + + Layout kind (Layout flags in metadata). + + + + + Field alignment (PackingSize field in metadata). + + + + + Size of the type. + + + + + Represents the different kinds of type parameters. + + + + + Type parameter of a named type. For example: T in ]]>. + + + + + Type parameter of a method. For example: T in ()]]>. + + + + + Type parameter in a cref attribute in XML documentation comments. For example: T in ]]>. + + + + + An enumeration declaring the kinds of variance supported for generic type parameters. + + + + + Invariant. + + + + + Covariant (out). + + + + + Contravariant (in). + + + + + Specifies the member names known to the compiler (such as .ctor or op_Explicit). + + + + + Name of the enum backing field. + + + + + The name assigned to an instance constructor. + + + + + The name assigned to the static constructor. + + + + + The symbol name assigned to all indexers, other than explicit interface implementations. + + + Will not correspond to the name that appears in metadata. + + + + + The name assigned to the destructor. + + + + + The name assigned to the delegate Invoke method. + + + + + The name assigned to the delegate BeginInvoke method. + + + + + The name assigned to the delegate EndInvoke method. + + + + + The name of an entry point method. + + + + + The default fully qualified name of a Script class. + + + + + The name assigned to Object.ToString method. + + + + + The name assigned to Object.Equals method. + + + + + The name assigned to Object.GetHashCode method. + + + + + The name assigned to an implicit (widening) conversion. + + + + + The name assigned to an explicit (narrowing) conversion. + + + + + The name assigned to the Addition operator. + + + + + The name assigned to the BitwiseAnd operator. + + + + + The name assigned to the BitwiseOr operator. + + + + + The name assigned to the Decrement operator. + + + + + The name assigned to the Division operator. + + + + + The name assigned to the Equality operator. + + + + + The name assigned to the ExclusiveOr operator. + + + + + The name assigned to the False operator. + + + + + The name assigned to the GreaterThan operator. + + + + + The name assigned to the GreaterThanOrEqual operator. + + + + + The name assigned to the Increment operator. + + + + + The name assigned to the Inequality operator. + + + + + The name assigned to the LeftShift operator. + + + + + The name assigned to the UnsignedLeftShift operator. + + + + + The name assigned to the LessThan operator. + + + + + The name assigned to the LessThanOrEqual operator. + + + + + The name assigned to the LogicalNot operator. + + + + + The name assigned to the LogicalOr operator. + + + + + The name assigned to the LogicalAnd operator. + + + + + The name assigned to the Modulus operator. + + + + + The name assigned to the Multiply operator. + + + + + The name assigned to the OnesComplement operator. + + + + + The name assigned to the RightShift operator. + + + + + The name assigned to the UnsignedRightShift operator. + + + + + The name assigned to the Subtraction operator. + + + + + The name assigned to the True operator. + + + + + The name assigned to the UnaryNegation operator. + + + + + The name assigned to the UnaryPlus operator. + + + + + The name assigned to the Concatenate operator. + + + + + The name assigned to the Exponent operator. + + + + + The name assigned to the IntegerDivision operator. + + + + + The name assigned to the Like operator. + + + + + The required name for the GetEnumerator method used in a ForEach statement. + + + + + The required name for the MoveNext method used in a ForEach statement. + + + + + The required name for the Current property used in a ForEach statement. + + + + + The required name for the property used in + a ForEach statement when the collection is a nullable struct. + + + + + The name for the Add method to be invoked for each element in a collection initializer expression + (see C# Specification, §7.6.10.3 Collection initializers). + + + + + The required name for the GetAwaiter method used to obtain an awaiter for a task + (see C# Specification, §7.7.7.1 Awaitable expressions). + + + + + The required name for the IsCompleted property used to determine if a task is already complete + (see C# Specification, §7.7.7.1 Awaitable expressions). + + + + + The required name for the GetResult method used to obtain the outcome of a task once it is complete + (see C# Specification, §7.7.7.1 Awaitable expressions). + + + + + The name of the method used to register a resumption delegate + (see C# Specification, §7.7.7.1 Awaitable expressions). + + + + + List of entries sorted in source order, each of which captures a + position in the supplied syntax tree and the set of diagnostics (warnings) + whose reporting should either be suppressed or enabled at this position. + + + + + Returns list of entries sorted in source order, each of which captures a + position in the supplied syntax tree and the set of diagnostics (warnings) + whose reporting should either be suppressed or enabled at this position. + + + + + Returns the reporting state for the supplied diagnostic id at the supplied position + in the associated syntax tree. + + + + + Gets the entry with the largest position less than or equal to supplied position. + + + + + Struct that represents an entry in the warning state map. Sorts by position in the associated syntax tree. + + + + + This is a SyntaxReference implementation that lazily translates the result (SyntaxNode) of the + original syntax reference to another one. + + + + + Creates a new node identical to this node with the specified annotations attached. + + Original node. + Annotations to be added to the new node. + + + + Creates a new node identical to this node with the specified annotations attached. + + Original node. + Annotations to be added to the new node. + + + + Creates a new node identical to this node with the specified annotations removed. + + Original node. + Annotations to be removed from the new node. + + + + Creates a new node identical to this node with the specified annotations removed. + + Original node. + Annotations to be removed from the new node. + + + + Creates a new node identical to this node with the annotations of the specified kind removed. + + Original node. + The kind of annotation to remove. + + + + Gets the number of children contained in the . + + + + Gets the child at the specified index. + The zero-based index of the child to get. + + is less than 0.-or- is equal to or greater than . + + + + internal indexer that does not verify index. + Used when caller has already ensured that index is within bounds. + + + + + Locate the node or token that is a child of the given and contains the given position. + + The to search. + The position. + The node or token that spans the given position. + + Assumes that is within the span of . + + + + + internal indexer that does not verify index. + Used when caller has already ensured that index is within bounds. + + + + + Returns the first child in the list. + + The first child in the list. + The list is empty. + + + + Returns the last child in the list. + + The last child in the list. + The list is empty. + + + + Returns a list which contains all children of in reversed order. + + which contains all children of in reversed order + + + Returns an enumerator that iterates through the . + A for the . + + + Determines whether the specified object is equal to the current instance. + true if the specified object is a structure and is equal to the current instance; otherwise, false. + The object to be compared with the current instance. + + + Determines whether the specified structure is equal to the current instance. + true if the specified structure is equal to the current instance; otherwise, false. + The structure to be compared with the current instance. + + + Returns the hash code for the current instance. + A 32-bit signed integer hash code. + + + Indicates whether two structures are equal. + true if is equal to ; otherwise, false. + The structure on the left side of the equality operator. + The structure on the right side of the equality operator. + + + Indicates whether two structures are unequal. + true if is equal to ; otherwise, false. + The structure on the left side of the inequality operator. + The structure on the right side of the inequality operator. + + + Enumerates the elements of a . + + + Advances the enumerator to the next element of the . + true if the enumerator was successfully advanced to the next element; false if the enumerator has passed the end of the collection. + + + Gets the element at the current position of the enumerator. + The element in the at the current position of the enumerator. + + + Sets the enumerator to its initial position, which is before the first element in the collection. + + + + Gets the element in the collection at the current position of the enumerator. + + + The element in the collection at the current position of the enumerator. + + + + + Gets the element in the collection at the current position of the enumerator. + + + The element in the collection at the current position of the enumerator. + + + + + Advances the enumerator to the next element of the collection. + + + true if the enumerator was successfully advanced to the next element; false if the enumerator has passed the end of the collection. + + + + + Sets the enumerator to its initial position, which is before the first element in the collection. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Gets the element in the collection at the current position of the enumerator. + + + The element in the collection at the current position of the enumerator. + + + + + Gets the element in the collection at the current position of the enumerator. + + + The element in the collection at the current position of the enumerator. + + + + + Advances the enumerator to the next element of the collection. + + + true if the enumerator was successfully advanced to the next element; false if the enumerator has passed the end of the collection. + + The collection was modified after the enumerator was created. + + + + Sets the enumerator to its initial position, which is before the first element in the collection. + + The collection was modified after the enumerator was created. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Find the slot that contains the given offset. + + The target offset. Must be between 0 and . + The slot index of the slot containing the given offset. + + The base implementation is a linear search. This should be overridden + if a derived class can implement it more efficiently. + + + + + Represents the root node of a structured trivia tree (for example, a preprocessor directive + or a documentation comment). From this root node you can traverse back up to the containing + trivia in the outer tree that contains it. + + + + + Returns the parent trivia syntax for this structured trivia syntax. + + The parent trivia syntax for this structured trivia syntax. + + + + The LineDirectiveMap is created to enable translating positions, using the #line directives + in a file. The basic implementation creates an ordered array of line mapping entries, one + for each #line directive in the file (plus one at the beginning). If the file has no + directives, then the array has just one element in it. To map line numbers, a binary search + of the mapping entries is done and nearest line mapping is applied. + + + + + Determines whether the position is considered to be hidden from the debugger or not. + + + + + Combines TranslateSpan and IsHiddenPosition to not search the entries twice when emitting sequence points + + + + + Are there any hidden regions in the map? + + True if there's at least one hidden region in the map. + + + + Enum that describes the state related to the #line or #externalsource directives at a position in source. + + + + + Used in VB when the position is not hidden, but it's not known yet that there is a (nonempty) #ExternalSource + following. + + + + + Used in C# for spans outside of #line directives + + + + + Used in C# for spans inside of "#line linenumber" directive + + + + + Used in VB for spans inside of a "#ExternalSource" directive that followed an unknown span + + + + + Used in VB for spans inside of a "#ExternalSource" directive that followed a hidden span + + + + + Used in C# and VB for spans that are inside of #line hidden (C#) or outside of #ExternalSource (VB) + directives + + + + + The state of the visibility of a line. + + + + + The line is located before any #line directive and there is at least one #line directive present in this syntax tree. + This enum value is used for C# only to enable the consumer to define how to interpret the lines before the first + line directive. + + + + + The line is following a #line hidden directive. + + + + + The line is following a #line default directive or a #line directive with at least a line number. + If there is no line directive at all, Visible is returned for all lines. + + + + + Gets the separator at the given index in this list. + + The index. + + + + + Returns the sequence of just the separator tokens. + + + + + The absolute span of the list elements in characters, including the leading and trailing trivia of the first and last elements. + + + + + The absolute span of the list elements in characters, not including the leading and trailing trivia of the first and last elements. + + + + + Returns the string representation of the nodes in this list including separators but not including + the first node's leading trivia and the last node or token's trailing trivia. + + + The string representation of the nodes in this list including separators but not including + the first node's leading trivia and the last node or token's trailing trivia. + + + + + Returns the full string representation of the nodes in this list including separators, + the first node's leading trivia, and the last node or token's trailing trivia. + + + The full string representation of the nodes in this list including separators including separators, + the first node's leading trivia, and the last node or token's trailing trivia. + + + + + Creates a new list with the specified node added to the end. + + The node to add. + + + + Creates a new list with the specified nodes added to the end. + + The nodes to add. + + + + Creates a new list with the specified node inserted at the index. + + The index to insert at. + The node to insert. + + + + Creates a new list with the specified nodes inserted at the index. + + The index to insert at. + The nodes to insert. + + + + Creates a new list with the element at the specified index removed. + + The index of the element to remove. + + + + Creates a new list with specified element removed. + + The element to remove. + + + + Creates a new list with the specified element replaced by the new node. + + The element to replace. + The new node. + + + + Creates a new list with the specified element replaced by the new nodes. + + The element to replace. + The new nodes. + + + + Creates a new list with the specified separator token replaced with the new separator. + + The separator token to be replaced. + The new separator token. + + + + A SyntaxAnnotation is used to annotate syntax elements with additional information. + + Since syntax elements are immutable, annotating them requires creating new instances of them + with the annotations attached. + + + + + A predefined syntax annotation that indicates whether the syntax element has elastic trivia. + + + + + A list of . + + + + + The number of nodes in the list. + + + + + Gets the node at the specified index. + + The zero-based index of the node to get or set. + The node at the specified index. + + + + The absolute span of the list elements in characters, including the leading and trailing trivia of the first and last elements. + + + + + The absolute span of the list elements in characters, not including the leading and trailing trivia of the first and last elements. + + + + + Returns the string representation of the nodes in this list, not including + the first node's leading trivia and the last node's trailing trivia. + + + The string representation of the nodes in this list, not including + the first node's leading trivia and the last node's trailing trivia. + + + + + Returns the full string representation of the nodes in this list including + the first node's leading trivia and the last node's trailing trivia. + + + The full string representation of the nodes in this list including + the first node's leading trivia and the last node's trailing trivia. + + + + + Creates a new list with the specified node added at the end. + + The node to add. + + + + Creates a new list with the specified nodes added at the end. + + The nodes to add. + + + + Creates a new list with the specified node inserted at the index. + + The index to insert at. + The node to insert. + + + + Creates a new list with the specified nodes inserted at the index. + + The index to insert at. + The nodes to insert. + + + + Creates a new list with the element at specified index removed. + + The index of the element to remove. + + + + Creates a new list with the element removed. + + The element to remove. + + + + Creates a new list with the specified element replaced with the new node. + + The element to replace. + The new node. + + + + Creates a new list with the specified element replaced with new nodes. + + The element to replace. + The new nodes. + + + + The first node in the list. + + + + + The first node in the list or default if the list is empty. + + + + + The last node in the list. + + + + + The last node in the list or default if the list is empty. + + + + + True if the list has at least one node. + + + + + Get's the enumerator for this list. + + + + + The index of the node in this list, or -1 if the node is not in the list. + + + + + Represents a non-terminal node in the syntax tree. This is the language agnostic equivalent of and . + + + + + Used by structured trivia which has "parent == null", and therefore must know its + SyntaxTree explicitly when created. + + + + + An integer representing the language specific kind of this node. + + + + + The language name that this node is syntax of. + + + + + Returns SyntaxTree that owns the node or null if node does not belong to a + SyntaxTree + + + + + The absolute span of this node in characters, including its leading and trailing trivia. + + + + + The absolute span of this node in characters, not including its leading and trailing trivia. + + + + + Same as accessing on . + + + Slight performance improvement. + + + + + The width of the node in characters, not including leading and trailing trivia. + + + The Width property returns the same value as Span.Length, but is somewhat more efficient. + + + + + The complete width of the node in characters, including leading and trailing trivia. + + The FullWidth property returns the same value as FullSpan.Length, but is + somewhat more efficient. + + + + This works the same as GetRed, but intended to be used in lists + The only difference is that the public parent of the node is not the list, + but the list's parent. (element's grand parent). + + + + + special cased helper for 2 and 3 children lists where child #1 may map to a token + + + + + Returns the string representation of this node, not including its leading and trailing trivia. + + The string representation of this node, not including its leading and trailing trivia. + The length of the returned string is always the same as Span.Length + + + + Returns full string representation of this node including its leading and trailing trivia. + + The full string representation of this node including its leading and trailing trivia. + The length of the returned string is always the same as FullSpan.Length + + + + Writes the full text of this node to the specified . + + + + + Gets the full text of this node as an new instance. + + + Encoding of the file that the text was read from or is going to be saved to. + null if the encoding is unspecified. + If the encoding is not specified the isn't debuggable. + If an encoding-less is written to a file a shall be used as a default. + + + Hash algorithm to use to calculate checksum of the text that's saved to PDB. + + is not supported. + + + + Determine whether this node is structurally equivalent to another. + + + + + Determines whether the node represents a language construct that was actually parsed + from the source code. Missing nodes are generated by the parser in error scenarios to + represent constructs that should have been present in the source code in order to + compile successfully but were actually missing. + + + + + Determines whether this node is a descendant of a structured trivia. + + + + + Determines whether this node represents a structured trivia. + + + + + Determines whether a descendant trivia of this node is structured. + + + + + Determines whether this node has any descendant skipped text. + + + + + Determines whether this node has any descendant preprocessor directives. + + + + + Determines whether this node or any of its descendant nodes, tokens or trivia have any diagnostics on them. + + + + + Determines if the specified node is a descendant of this node. + + + + + Determines whether this node has any leading trivia. + + + + + Determines whether this node has any trailing trivia. + + + + + Gets a node at given node index without forcing its creation. + If node was not created it would return null. + + + + + This function calculates the offset of a child at given position. It is very common that + some children to the left of the given index already know their positions so we first + check if that is the case. In a worst case the cost is O(n), but it is not generally an + issue because number of children in regular nodes is fixed and small. In a case where + the number of children could be large (lists) this function is overridden with more + efficient implementations. + + + + + Gets a list of all the diagnostics in the sub tree that has this node as its root. + This method does not filter diagnostics based on #pragmas and compiler options + like nowarn, warnaserror etc. + + + + + Gets a for this syntax node. CommonSyntaxReferences can be used to + regain access to a syntax node without keeping the entire tree and source text in + memory. + + + + + When invoked on a node that represents an anonymous function or a query clause [1] + with a of another anonymous function or a query clause of the same kind [2], + returns the body of the [1] that positionally corresponds to the specified . + + E.g. join clause declares left expression and right expression -- each of these expressions is a lambda body. + JoinClause1.GetCorrespondingLambdaBody(JoinClause2.RightExpression) returns JoinClause1.RightExpression. + + + + + The node that contains this node in its collection. + + + + + The list of child nodes and tokens of this node, where each element is a SyntaxNodeOrToken instance. + + + + + Gets node at given node index. + This WILL force node creation if node has not yet been created. + + + + + Gets a list of the child nodes in prefix document order. + + + + + Gets a list of ancestor nodes + + + + + Gets a list of ancestor nodes (including this node) + + + + + Gets the first node of type TNode that matches the predicate. + + + + + Gets a list of descendant nodes in prefix document order. + + An optional function that determines if the search descends into the argument node's children. + Determines if nodes that are part of structured trivia are included in the list. + + + + Gets a list of descendant nodes in prefix document order. + + The span the node's full span must intersect. + An optional function that determines if the search descends into the argument node's children. + Determines if nodes that are part of structured trivia are included in the list. + + + + Gets a list of descendant nodes (including this node) in prefix document order. + + An optional function that determines if the search descends into the argument node's children. + Determines if nodes that are part of structured trivia are included in the list. + + + + Gets a list of descendant nodes (including this node) in prefix document order. + + The span the node's full span must intersect. + An optional function that determines if the search descends into the argument node's children. + Determines if nodes that are part of structured trivia are included in the list. + + + + Gets a list of descendant nodes and tokens in prefix document order. + + An optional function that determines if the search descends into the argument node's children. + Determines if nodes that are part of structured trivia are included in the list. + + + + Gets a list of the descendant nodes and tokens in prefix document order. + + The span the node's full span must intersect. + An optional function that determines if the search descends into the argument node's children. + Determines if nodes that are part of structured trivia are included in the list. + + + + Gets a list of descendant nodes and tokens (including this node) in prefix document order. + + An optional function that determines if the search descends into the argument node's children. + Determines if nodes that are part of structured trivia are included in the list. + + + + Gets a list of the descendant nodes and tokens (including this node) in prefix document order. + + The span the node's full span must intersect. + An optional function that determines if the search descends into the argument node's children. + Determines if nodes that are part of structured trivia are included in the list. + + + + Finds the node with the smallest that contains . + is used to determine the behavior in case of a tie (i.e. a node having the same span as its parent). + If is true, then it returns lowest descending node encompassing the given . + Otherwise, it returns the outermost node encompassing the given . + + + TODO: This should probably be reimplemented with + + This exception is thrown if doesn't contain the given span. + + + + Finds a descendant token of this node whose span includes the supplied position. + + The character position of the token relative to the beginning of the file. + + True to return tokens that are part of trivia. If false finds the token whose full span (including trivia) + includes the position. + + + + + Gets the first token of the tree rooted by this node. Skips zero-width tokens. + + The first token or default(SyntaxToken) if it doesn't exist. + + + + Gets the last token of the tree rooted by this node. Skips zero-width tokens. + + The last token or default(SyntaxToken) if it doesn't exist. + + + + Gets a list of the direct child tokens of this node. + + + + + Gets a list of all the tokens in the span of this node. + + + + + Gets a list of all the tokens in the full span of this node. + + + + + The list of trivia that appears before this node in the source code and are attached to a token that is a + descendant of this node. + + + + + The list of trivia that appears after this node in the source code and are attached to a token that is a + descendant of this node. + + + + + Finds a descendant trivia of this node whose span includes the supplied position. + + The character position of the trivia relative to the beginning of the file. + + True to return tokens that are part of trivia. If false finds the token whose full span (including trivia) + includes the position. + + + + + Finds a descendant trivia of this node at the specified position, where the position is + within the span of the node. + + The character position of the trivia relative to the beginning of + the file. + Specifies a function that determines per trivia node, whether to + descend into structured trivia of that node. + + + + + Get a list of all the trivia associated with the descendant nodes and tokens. + + + + + Get a list of all the trivia associated with the descendant nodes and tokens. + + + + + Determines whether this node or any sub node, token or trivia has annotations. + + + + + Determines whether this node has any annotations with the specific annotation kind. + + + + + Determines whether this node has any annotations with any of the specific annotation kinds. + + + + + Determines whether this node has the specific annotation. + + + + + Gets all the annotations with the specified annotation kind. + + + + + Gets all the annotations with the specified annotation kinds. + + + + + Gets all nodes and tokens with an annotation of the specified annotation kind. + + + + + Gets all nodes and tokens with an annotation of the specified annotation kinds. + + + + + Gets all nodes and tokens with the specified annotation. + + + + + Gets all nodes with the specified annotation. + + + + + Gets all nodes with the specified annotation kind. + + + + + + + Gets all tokens with the specified annotation. + + + + + Gets all tokens with the specified annotation kind. + + + + + Gets all trivia with an annotation of the specified annotation kind. + + + + + Gets all trivia with an annotation of the specified annotation kinds. + + + + + Gets all trivia with the specified annotation. + + + + + Copies all SyntaxAnnotations, if any, from this SyntaxNode instance and attaches them to a new instance based on . + + + + If no annotations are copied, just returns . + + + It can also be used manually to preserve annotations in a more complex tree + modification, even if the type of a node changes. + + + + + + Determines if two nodes are the same, disregarding trivia differences. + + The node to compare against. + If true then the nodes are equivalent if the contained nodes and + tokens declaring metadata visible symbolic information are equivalent, ignoring any + differences of nodes inside method bodies or initializer expressions, otherwise all + nodes and tokens must be equivalent. + + + + + Determine if this node is structurally equivalent to another. + + + + + Returns SyntaxTree that owns the node or null if node does not belong to a + SyntaxTree + + + + + Finds a descendant token of this node whose span includes the supplied position. + + The character position of the token relative to the beginning of the file. + + True to return tokens that are part of trivia. + If false finds the token whose full span (including trivia) includes the position. + + + + + Finds a descendant token of this node whose span includes the supplied position. + + The character position of the token relative to the beginning of the file. + + Applied on every structured trivia. Return false if the tokens included in the trivia should be skipped. + Pass null to skip all structured trivia. + + + + + Finds a descendant trivia of this node whose span includes the supplied position. + + The character position of the trivia relative to the beginning of the file. + Whether to search inside structured trivia. + + + + Creates a new tree of nodes with the specified nodes, tokens or trivia replaced. + + + + + Creates a new tree of nodes with the specified node removed. + + + + + Determines if two nodes are the same, disregarding trivia differences. + + The node to compare against. + If true then the nodes are equivalent if the contained nodes and + tokens declaring metadata visible symbolic information are equivalent, ignoring any + differences of nodes inside method bodies or initializer expressions, otherwise all + nodes and tokens must be equivalent. + + + + + Creates a new tree of nodes with the specified nodes, tokens and trivia replaced. + + The type of the root node. + The root node of the tree of nodes. + The nodes to be replaced. + A function that computes a replacement node for the + argument nodes. The first argument is the original node. The second argument is the same + node potentially rewritten with replaced descendants. + The tokens to be replaced. + A function that computes a replacement token for + the argument tokens. The first argument is the original token. The second argument is + the same token potentially rewritten with replaced trivia. + The trivia to be replaced. + A function that computes replacement trivia for + the specified arguments. The first argument is the original trivia. The second argument is + the same trivia with potentially rewritten sub structure. + + + + Creates a new tree of nodes with the specified old node replaced with a new node. + + The type of the root node. + The type of the nodes being replaced. + The root node of the tree of nodes. + The nodes to be replaced; descendants of the root node. + A function that computes a replacement node for the + argument nodes. The first argument is the original node. The second argument is the same + node potentially rewritten with replaced descendants. + + + + Creates a new tree of nodes with the specified old node replaced with a new node. + + The type of the root node. + The root node of the tree of nodes. + The node to be replaced; a descendant of the root node. + The new node to use in the new tree in place of the old node. + + + + Creates a new tree of nodes with specified old node replaced with a new nodes. + + The type of the root node. + The root of the tree of nodes. + The node to be replaced; a descendant of the root node and an element of a list member. + A sequence of nodes to use in the tree in place of the old node. + + + + Creates a new tree of nodes with new nodes inserted before the specified node. + + The type of the root node. + The root of the tree of nodes. + The node to insert before; a descendant of the root node an element of a list member. + A sequence of nodes to insert into the tree immediately before the specified node. + + + + Creates a new tree of nodes with new nodes inserted after the specified node. + + The type of the root node. + The root of the tree of nodes. + The node to insert after; a descendant of the root node an element of a list member. + A sequence of nodes to insert into the tree immediately after the specified node. + + + + Creates a new tree of nodes with the specified old token replaced with new tokens. + + The type of the root node. + The root of the tree of nodes. + The token to be replaced; a descendant of the root node and an element of a list member. + A sequence of tokens to use in the tree in place of the specified token. + + + + Creates a new tree of nodes with new tokens inserted before the specified token. + + The type of the root node. + The root of the tree of nodes. + The token to insert before; a descendant of the root node and an element of a list member. + A sequence of tokens to insert into the tree immediately before the specified token. + + + + Creates a new tree of nodes with new tokens inserted after the specified token. + + The type of the root node. + The root of the tree of nodes. + The token to insert after; a descendant of the root node and an element of a list member. + A sequence of tokens to insert into the tree immediately after the specified token. + + + + Creates a new tree of nodes with the specified old trivia replaced with new trivia. + + The type of the root node. + The root of the tree of nodes. + The trivia to be replaced; a descendant of the root node. + A sequence of trivia to use in the tree in place of the specified trivia. + + + + Creates a new tree of nodes with new trivia inserted before the specified trivia. + + The type of the root node. + The root of the tree of nodes. + The trivia to insert before; a descendant of the root node. + A sequence of trivia to insert into the tree immediately before the specified trivia. + + + + Creates a new tree of nodes with new trivia inserted after the specified trivia. + + The type of the root node. + The root of the tree of nodes. + The trivia to insert after; a descendant of the root node. + A sequence of trivia to insert into the tree immediately after the specified trivia. + + + + Creates a new tree of nodes with the specified old node replaced with a new node. + + The type of the root node. + The root node of the tree of nodes. + The token to be replaced; descendants of the root node. + A function that computes a replacement token for + the argument tokens. The first argument is the original token. The second argument is + the same token potentially rewritten with replaced trivia. + + + + Creates a new tree of nodes with the specified old token replaced with a new token. + + The type of the root node. + The root node of the tree of nodes. + The token to be replaced. + The new token to use in the new tree in place of the old + token. + + + + Creates a new tree of nodes with the specified trivia replaced with new trivia. + + The type of the root node. + The root node of the tree of nodes. + The trivia to be replaced; descendants of the root node. + A function that computes replacement trivia for + the specified arguments. The first argument is the original trivia. The second argument is + the same trivia with potentially rewritten sub structure. + + + + Creates a new tree of nodes with the specified trivia replaced with new trivia. + + The type of the root node. + The root node of the tree of nodes. + The trivia to be replaced. + The new trivia to use in the new tree in place of the old trivia. + + + + Creates a new tree of nodes with the specified node removed. + + The type of the root node. + The root node from which to remove a descendant node from. + The node to remove. + Options that determine how the node's trivia is treated. + + + + Creates a new tree of nodes with the specified nodes removed. + + The type of the root node. + The root node from which to remove a descendant node from. + The nodes to remove. + Options that determine how the nodes' trivia is treated. + + + + Creates a new syntax node with all whitespace and end of line trivia replaced with + regularly formatted trivia. + + The type of the node. + The node to format. + A sequence of whitespace characters that defines a single level of indentation. + If true the replaced trivia is elastic trivia. + + + + Creates a new syntax node with all whitespace and end of line trivia replaced with + regularly formatted trivia. + + The type of the node. + The node to format. + An optional sequence of whitespace characters that defines a single level of indentation. + An optional sequence of whitespace characters used for end of line. + If true the replaced trivia is elastic trivia. + + + + Creates a new node from this node with both the leading and trailing trivia of the specified node. + + + + + Creates a new node from this node without leading or trailing trivia. + + + + + Creates a new node from this node with the leading trivia replaced. + + + + + Creates a new node from this node with the leading trivia replaced. + + + + + Creates a new node from this node with the leading trivia removed. + + + + + Creates a new node from this node with the leading trivia replaced. + + + + + Creates a new node from this node with the trailing trivia replaced. + + + + + Creates a new node from this node with the trailing trivia replaced. + + + + + Creates a new node from this node with the trailing trivia removed. + + + + + Creates a new node from this node with the trailing trivia replaced. + + + + + Creates a new tree of nodes with the specified nodes being tracked. + + Use GetCurrentNode on the subtree resulting from this operation, or any transformation of it, + to get the current node corresponding to the original tracked node. + + The root of the subtree containing the nodes to be tracked. + One or more nodes that are descendants of the root node. + + + + Creates a new tree of nodes with the specified nodes being tracked. + + Use GetCurrentNode on the subtree resulting from this operation, or any transformation of it, + to get the current node corresponding to the original tracked node. + + The root of the subtree containing the nodes to be tracked. + One or more nodes that are descendants of the root node. + + + + Gets the nodes within the subtree corresponding to the original tracked node. + Use TrackNodes to start tracking nodes. + + The root of the subtree containing the current node corresponding to the original tracked node. + The node instance originally tracked. + + + + Gets the node within the subtree corresponding to the original tracked node. + Use TrackNodes to start tracking nodes. + + The root of the subtree containing the current node corresponding to the original tracked node. + The node instance originally tracked. + + + + Gets the nodes within the subtree corresponding to the original tracked nodes. + Use TrackNodes to start tracking nodes. + + The root of the subtree containing the current nodes corresponding to the original tracked nodes. + One or more node instances originally tracked. + + + + A wrapper for either a syntax node () or a syntax token (). + + + Note that we do not store the token directly, we just store enough information to reconstruct it. + This allows us to reuse nodeOrToken as a token's parent. + + + + + An integer representing the language specific kind of the underlying node or token. + + + + + The language name that this node or token is syntax of. + + + + + Determines whether the underlying node or token represents a language construct that was actually parsed + from source code. Missing nodes and tokens are typically generated by the parser in error scenarios to + represent constructs that should have been present in the source code for the source code to compile + successfully but were actually missing. + + + + + The node that contains the underlying node or token in its Children collection. + + + + + Determines whether this is wrapping a token. + + + + + Determines whether this is wrapping a node. + + + + + Returns the underlying token if this is wrapping a + token. + + + The underlying token if this is wrapping a token. + + + + + Returns the underlying node if this is wrapping a + node. + + + The underlying node if this is wrapping a node. + + + + + The list of child nodes and tokens of the underlying node or token. + + + + + The absolute span of the underlying node or token in characters, not including its leading and trailing + trivia. + + + + + Same as accessing on . + + + Slight performance improvement. + + + + + The absolute span of the underlying node or token in characters, including its leading and trailing trivia. + + + + + Returns the string representation of this node or token, not including its leading and trailing + trivia. + + + The string representation of this node or token, not including its leading and trailing trivia. + + The length of the returned string is always the same as Span.Length + + + + Returns the full string representation of this node or token including its leading and trailing trivia. + + The full string representation of this node or token including its leading and trailing + trivia. + The length of the returned string is always the same as FullSpan.Length + + + + Writes the full text of this node or token to the specified TextWriter. + + + + + Determines whether the underlying node or token has any leading trivia. + + + + + The list of trivia that appear before the underlying node or token in the source code and are attached to a + token that is a descendant of the underlying node or token. + + + + + Determines whether the underlying node or token has any trailing trivia. + + + + + The list of trivia that appear after the underlying node or token in the source code and are attached to a + token that is a descendant of the underlying node or token. + + + + + Determines whether the underlying node or token or any of its descendant nodes, tokens or trivia have any + diagnostics on them. + + + + + Gets a list of all the diagnostics in either the sub tree that has this node as its root or + associated with this token and its related trivia. + This method does not filter diagnostics based on #pragmas and compiler options + like nowarn, warnaserror etc. + + + + + Determines whether the underlying node or token has any descendant preprocessor directives. + + + + + Determines whether this node or token (or any sub node, token or trivia) as annotations. + + + + + Determines whether this node or token has annotations of the specified kind. + + + + + Determines whether this node or token has annotations of the specified kind. + + + + + Determines if this node or token has the specific annotation. + + + + + Gets all annotations of the specified annotation kind. + + + + + Gets all annotations of the specified annotation kind. + + + + + Creates a new node or token identical to this one with the specified annotations. + + + + + Creates a new node or token identical to this one with the specified annotations. + + + + + Creates a new node or token identical to this one without the specified annotations. + + + + + Creates a new node or token identical to this one without the specified annotations. + + + + + Creates a new node or token identical to this one without annotations of the specified kind. + + + + + Determines whether the supplied is equal to this + . + + + + + Determines whether two s are equal. + + + + + Determines whether two s are unequal. + + + + + Determines whether the supplied is equal to this + . + + + + + Serves as hash function for . + + + + + Determines if the two nodes or tokens are equivalent. + + + + + Returns a new that wraps the supplied token. + + The input token. + + A that wraps the supplied token. + + + + + Returns the underlying token wrapped by the supplied . + + + The input . + + + The underlying token wrapped by the supplied . + + + + + Returns a new that wraps the supplied node. + + The input node. + + A that wraps the supplied node. + + + + + Returns the underlying node wrapped by the supplied . + + + The input . + + + The underlying node wrapped by the supplied . + + + + + SyntaxTree which contains current SyntaxNodeOrToken. + + + + + Get the location of this node or token. + + + + + A list of structures. + + + + + The underlying field + + + + + The index from the parent's children list of this node. + + + + + Initializes a new instance of the structure. + + The underlying syntax node. + The index. + + + + Gets the underlying syntax node. + + + + + Gets the count of nodes in this list + + + + + Gets the at the specified index. + + is out of range. + + + + The absolute span of the list elements in characters, including the leading and trailing trivia of the first and last elements. + + + + + The absolute span of the list elements in characters, not including the leading and trailing trivia of the first and last elements. + + + + + Returns the string representation of the nodes and tokens in this list, not including the first node or token's leading trivia + and the last node or token's trailing trivia. + + + The string representation of the nodes and tokens in this list, not including the first node or token's leading trivia + and the last node or token's trailing trivia. + + + + + Returns the full string representation of the nodes and tokens in this list including the first node or token's leading trivia + and the last node or token's trailing trivia. + + + The full string representation of the nodes and tokens in this list including the first node or token's leading trivia + and the last node or token's trailing trivia. + + + + + Gets the first SyntaxNodeOrToken structure from this list. + + + + + Gets the first SyntaxNodeOrToken structure from this list if present, else default(SyntaxNodeOrToken). + + + + + Gets the last SyntaxNodeOrToken structure from this list. + + + + + Gets the last SyntaxNodeOrToken structure from this list if present, else default(SyntaxNodeOrToken). + + + + + Returns the index from the list for the given . + + The node or token to search for in the list. + The index of the found nodeOrToken, or -1 if it wasn't found + + + + Indicates whether there is any element in the list. + + true if there are any elements in the list, else false. + + + + Copies a given count of elements into the given array at specified offsets. + + The offset to start copying from. + The array to copy the elements into. + The array offset to start writing to. + The count of elements to copy. + + + + Creates a new with the specified node or token added to the end. + + The node or token to add. + + + + Creates a new with the specified nodes or tokens added to the end. + + The nodes or tokens to add. + + + + Creates a new with the specified node or token inserted at the index. + + The index to insert at. + The node or token to insert. + + + + Creates a new with the specified nodes or tokens inserted at the index. + + The index to insert at. + The nodes or tokens to insert. + + + + Creates a new with the element at the specified index removed. + + The index of the element to remove. + + + + Creates a new with the specified element removed. + + The element to remove. + + + + Creates a new with the specified element replaced with a new node or token. + + The element to replace. + The new node or token. + + + + Creates a new with the specified element replaced with a new nodes and tokens. + + The element to replace. + The new nodes and tokens. + + + + Gets the enumerator. + + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + + + + Implements the operator ==. + + The left SyntaxNodeOrTokenList + The right SyntaxNodeOrTokenList + + true if both lists equal, else false. + + + + + Implements the operator !=. + + The left SyntaxNodeOrTokenList + The right SyntaxNodeOrTokenList + + true if both lists not equal, else false. + + + + + Indicates whether the current object is equal to another object of the same type. + + An object to compare with this object. + + true if the current object is equal to the parameter; otherwise, + false. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Enumerator for lists of SyntaxNodeOrToken structs. + + + + + Advances the enumerator to the next element of the collection. + + + true if the enumerator was successfully advanced to the next element; false if the enumerator has passed the end of the collection. + + The collection was modified after the enumerator was created. + + + + Gets the struct that this enumerator instance is currently pointing to. + + + + + Gets the struct that this enumerator instance is currently pointing to. + + + + + Sets the enumerator to its initial position, which is before the first element in the collection. + + The collection was modified after the enumerator was created. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + A reference to a syntax node. + + + + + The syntax tree that this references a node within. + + + + + The span of the node referenced. + + + + + Retrieves the original referenced syntax node. + This action may cause a parse to happen to recover the syntax node. + + The original referenced syntax node. + + + + Retrieves the original referenced syntax node. + This action may cause a parse to happen to recover the syntax node. + + The original referenced syntax node. + + + + The location of this syntax reference. + + The location of this syntax reference. + + More performant than GetSyntax().GetLocation(). + + + + + None of the trivia associated with the node or token is kept. + + + + + The leading trivia associated with the node or token is kept. + + + + + The trailing trivia associated with the node or token is kept. + + + + + The leading and trailing trivia associated with the node or token is kept. + + + + + Any directives that would become unbalanced are kept. + + + + + All directives are kept + + + + + Ensure that at least one EndOfLine trivia is kept if one was present + + + + + Adds elastic marker trivia + + + + + Represents a token in the syntax tree. This is the language agnostic equivalent of and . + + + + + An integer representing the language specific kind of this token. + + + + + The language name that this token is syntax of. + + + + + The kind of token, given its position in the syntax. This differs from when a contextual keyword is used in a place in the syntax that gives it + its keyword meaning. + + + The ContextualKind is relevant only on contextual keyword tokens. ContextualKind differs + from Kind when a token is used in context where the token should be interpreted as a + keyword. + + + + + The node that contains this token in its Children collection. + + + + + The width of the token in characters, not including its leading and trailing trivia. + + + + + The complete width of the token in characters including its leading and trailing trivia. + + + + + The absolute span of this token in characters, not including its leading and trailing trivia. + + + + + Same as accessing on . + + + Slight performance improvement. + + + + + The absolute span of this token in characters, including its leading and trailing trivia. + + + + + Determines whether this token represents a language construct that was actually parsed from source code. + Missing tokens are typically generated by the parser in error scenarios to represent constructs that should + have been present in the source code for the source code to compile successfully but were actually missing. + + + + + Returns the value of the token. For example, if the token represents an integer literal, then this property + would return the actual integer. + + + + + Returns the text representation of the value of the token. For example, if the token represents an integer + literal, then this property would return a string representing the integer. + + + + + Returns the string representation of this token, not including its leading and trailing trivia. + + The string representation of this token, not including its leading and trailing trivia. + The length of the returned string is always the same as Span.Length + + + + Returns the full string representation of this token including its leading and trailing trivia. + + The full string representation of this token including its leading and trailing trivia. + The length of the returned string is always the same as FullSpan.Length + + + + Writes the full text of this token to the specified . + + + + + Writes the text of this token to the specified TextWriter, optionally including trivia. + + + + + Determines whether this token has any leading trivia. + + + + + Determines whether this token has any trailing trivia. + + + + + Full width of the leading trivia of this token. + + + + + Full width of the trailing trivia of this token. + + + + + Determines whether this token or any of its descendant trivia have any diagnostics on them. + + + + + Determines whether this token has any descendant preprocessor directives. + + + + + Determines whether this token is a descendant of a structured trivia. + + + + + Determines whether any of this token's trivia is structured. + + + + + True if this token or its trivia has any annotations. + + + + + True if this token has annotations of the specified annotation kind. + + + + + True if this token has annotations of the specified annotation kinds. + + + + + True if this token has the specified annotation. + + + + + Gets all the annotations of the specified annotation kind. + + + + + Gets all the annotations of the specified annotation kind. + + + + + Gets all the annotations of the specified annotation kind. + + + + + Adds this annotation to a given syntax token, creating a new syntax token of the same type with the + annotation on it. + + + + + Adds this annotation to a given syntax token, creating a new syntax token of the same type with the + annotation on it. + + + + + Creates a new syntax token identical to this one without the specified annotations. + + + + + Creates a new syntax token identical to this one without the specified annotations. + + + + + Creates a new syntax token identical to this one without annotations of the specified kind. + + + + + Copies all SyntaxAnnotations, if any, from this SyntaxToken instance and attaches them to a new instance based on . + + + If no annotations are copied, just returns . + + + + + The list of trivia that appear before this token in the source code. + + + + + The list of trivia that appear after this token in the source code and are attached to this token or any of + its descendants. + + + + + Creates a new token from this token with the leading and trailing trivia from the specified token. + + + + + Creates a new token from this token with the leading trivia specified. + + + + + Creates a new token from this token with the leading trivia specified.. + + + + + Creates a new token from this token with the leading trivia specified.. + + + + + Creates a new token from this token with the trailing trivia specified. + + + + + Creates a new token from this token with the trailing trivia specified. + + + + + Creates a new token from this token with the trailing trivia specified. + + + + + Gets a list of all the trivia (both leading and trailing) for this token. + + + + + Determines whether two s are equal. + + + + + Determines whether two s are unequal. + + + + + Determines whether the supplied is equal to this + . + + + + + Determines whether the supplied is equal to this + . + + + + + Serves as hash function for . + + + + + Gets the token that follows this token in the syntax tree. + + The token that follows this token in the syntax tree. + + + + Returns the token after this token in the syntax tree. + + Delegate applied to each token. The token is returned if the predicate returns + true. + Delegate applied to trivia. If this delegate is present then trailing trivia is + included in the search. + + + + Gets the token that precedes this token in the syntax tree. + + The next token that follows this token in the syntax tree. + + + + Returns the token before this token in the syntax tree. + + Delegate applied to each token. The token is returned if the predicate returns + true. + Delegate applied to trivia. If this delegate is present then trailing trivia is + included in the search. + + + + The SyntaxTree that contains this token. + + + + + Gets the location for this token. + + + + + Gets a list of all the diagnostics associated with this token and any related trivia. + This method does not filter diagnostics based on #pragmas and compiler options + like nowarn, warnaserror etc. + + + + + Determines if this token is equivalent to the specified token. + + + + + Represents a read-only list of . + + + Represents a read-only list of s. + + + + + Returns the number of tokens in the list. + + + + + Gets the token at the specified index. + + The zero-based index of the token to get. + The token at the specified index. + + is less than 0.-or- is equal to or greater than . + + + + The absolute span of the list elements in characters, including the leading and trailing trivia of the first and last elements. + + + + + The absolute span of the list elements in characters, not including the leading and trailing trivia of the first and last elements. + + + + + Returns the string representation of the tokens in this list, not including + the first token's leading trivia and the last token's trailing trivia. + + + The string representation of the tokens in this list, not including + the first token's leading trivia and the last token's trailing trivia. + + + + + Returns the full string representation of the tokens in this list including + the first token's leading trivia and the last token's trailing trivia. + + + The full string representation of the tokens in this list including + the first token's leading trivia and the last token's trailing trivia. + + + + + Returns the first token in the list. + + The first token in the list. + The list is empty. + + + + Returns the last token in the list. + + The last token in the list. + The list is empty. + + + + Tests whether the list is non-empty. + + True if the list contains any tokens. + + + + Returns a list which contains all elements of in reversed order. + + which contains all elements of in reversed order + + + + get the green node at the given slot + + + + + get the green node at the given slot + + + + + Creates a new with the specified token added to the end. + + The token to add. + + + + Creates a new with the specified tokens added to the end. + + The tokens to add. + + + + Creates a new with the specified token insert at the index. + + The index to insert the new token. + The token to insert. + + + + Creates a new with the specified tokens insert at the index. + + The index to insert the new tokens. + The tokens to insert. + + + + Creates a new with the token at the specified index removed. + + The index of the token to remove. + + + + Creates a new with the specified token removed. + + The token to remove. + + + + Creates a new with the specified token replaced with a new token. + + The token to replace. + The new token. + + + + Creates a new with the specified token replaced with new tokens. + + The token to replace. + The new tokens. + + + + Returns an enumerator for the tokens in the + + + + + Compares and for equality. + + + + True if the two s are equal. + + + + Compares and for inequality. + + + + True if the two s are not equal. + + + + Compares this with the for equality. + + True if the two objects are equal. + + + + Serves as a hash function for the + + + + + Create a new Token List + + Element of the return Token List + + + + A structure for enumerating a + + + + + Advances the enumerator to the next token in the collection. + + true if the enumerator was successfully advanced to the next element; false if the enumerator + has passed the end of the collection. + + + + Gets the current element in the collection. + + + + + Reversed enumerable. + + + + + The parsed representation of a source document. + + + + + The path of the source document file. + + + If this syntax tree is not associated with a file, this value can be empty. + The path shall not be null. + + The file doesn't need to exist on disk. The path is opaque to the compiler. + The only requirement on the path format is that the implementations of + , and + passed to the compilation that contains the tree understand it. + + Clients must also not assume that the values of this property are unique + within a Compilation. + + The path is used as follows: + - When debug information is emitted, this path is embedded in the debug information. + - When resolving and normalizing relative paths in #r, #load, #line/#ExternalSource, + #pragma checksum, #ExternalChecksum directives, XML doc comment include elements, etc. + + + + + Returns true if this syntax tree has a root with SyntaxKind "CompilationUnit". + + + + + The options used by the parser to produce the syntax tree. + + + + + The options used by the parser to produce the syntax tree. + + + + + The length of the text of the syntax tree. + + + + + Gets the syntax tree's text if it is available. + + + + + Gets the text of the source document. + + + + + The text encoding of the source document. + + + + + Gets the text of the source document asynchronously. + + + By default, the work associated with this method will be executed immediately on the current thread. + Implementations that wish to schedule this work differently should override . + + + + + Gets the root of the syntax tree if it is available. + + + + + Gets the root of the syntax tree if it is available. + + + + + Gets the root node of the syntax tree, causing computation if necessary. + + + + + Gets the root node of the syntax tree, causing computation if necessary. + + + + + Gets the root node of the syntax tree asynchronously. + + + + + Gets the root node of the syntax tree asynchronously. + + + + + Create a new syntax tree based off this tree using a new source text. + + If the new source text is a minor change from the current source text an incremental + parse will occur reusing most of the current syntax tree internal data. Otherwise, a + full parse will occur using the new source text. + + + + + Gets a list of all the diagnostics in the syntax tree. + This method does not filter diagnostics based on #pragmas and compiler options + like nowarn, warnaserror etc. + + + + + Gets a list of all the diagnostics in the sub tree that has the specified node as its root. + This method does not filter diagnostics based on #pragmas and compiler options + like nowarn, warnaserror etc. + + + + + Gets a list of all the diagnostics associated with the token and any related trivia. + This method does not filter diagnostics based on #pragmas and compiler options + like nowarn, warnaserror etc. + + + + + Gets a list of all the diagnostics associated with the trivia. + This method does not filter diagnostics based on #pragmas and compiler options + like nowarn, warnaserror etc. + + + + + Gets a list of all the diagnostics in either the sub tree that has the specified node as its root or + associated with the token and its related trivia. + This method does not filter diagnostics based on #pragmas and compiler options + like nowarn, warnaserror etc. + + + + + Gets the location in terms of path, line and column for a given span. + + Span within the tree. + Cancellation token. + + A valid that contains path, line and column information. + The values are not affected by line mapping directives (#line). + + + + + Gets the location in terms of path, line and column after applying source line mapping directives + (#line in C# or #ExternalSource in VB). + + Span within the tree. + Cancellation token. + + A valid that contains path, line and column information. + + If the location path is mapped the resulting path is the path specified in the corresponding #line, + otherwise it's . + + A location path is considered mapped if the first #line directive that precedes it and that + either specifies an explicit file path or is #line default exists and specifies an explicit path. + + + + + Returns the visibility for the line at the given position. + + The position to check. + The cancellation token. + + + + Gets a FileLinePositionSpan for a TextSpan and the information whether this span is considered to be hidden or not. + FileLinePositionSpans are used primarily for diagnostics and source locations. + This method combines a call to GetLineSpan and IsHiddenPosition. + + + Returns a boolean indicating whether this span is considered hidden or not. + This function is being called only in the context of sequence point creation and therefore interprets the + LineVisibility accordingly (BeforeFirstRemappingDirective -> Visible). + + + + Returns a path for particular location in source that is presented to the user. + + + Used for implementation of + or for embedding source paths in error messages. + + Unlike Dev12 we do account for #line and #ExternalSource directives when determining value for + . + + + + + Returns a line number for particular location in source that is presented to the user. + + + Used for implementation of + or for embedding source line numbers in error messages. + + Unlike Dev12 we do account for #line and #ExternalSource directives when determining value for + . + + + + + Are there any hidden regions in the tree? + + True if there is at least one hidden region. + + + + Returns a list of the changed regions between this tree and the specified tree. The list is conservative for + performance reasons. It may return larger regions than what has actually changed. + + + + + Gets a location for the specified text span. + + + + + Determines if two trees are the same, disregarding trivia differences. + + The tree to compare against. + If true then the trees are equivalent if the contained nodes and tokens declaring + metadata visible symbolic information are equivalent, ignoring any differences of nodes inside method bodies + or initializer expressions, otherwise all nodes and tokens must be equivalent. + + + + + Gets a SyntaxReference for a specified syntax node. SyntaxReferences can be used to + regain access to a syntax node without keeping the entire tree and source text in + memory. + + + + + Gets a list of text changes that when applied to the old tree produce this tree. + + The old tree. + The list of changes may be different than the original changes that produced + this tree. + + + + Returns a new tree whose root and options are as specified and other properties are copied from the current tree. + + + + + Returns a new tree whose is the specified node and other properties are copied from the current tree. + + + + + Returns a that represents the entire source text of this . + + + + + Verify nodes match source. + + + + + Return the index of the first difference between + the two strings, or -1 if the strings are the same. + + + + + Represents a trivia in the syntax tree. This is the language agnostic equivalent of and . + + + + + An integer representing the language specific kind of this trivia. + + + + + The language name that this trivia is syntax of. + + + + + The parent token that contains this token in its LeadingTrivia or TrailingTrivia collection. + + + + + The width of this trivia in characters. If this trivia is a structured trivia then the returned width will + not include the widths of any leading or trailing trivia present on the child non-terminal node of this + trivia. + + + + + The width of this trivia in characters. If this trivia is a structured trivia then the returned width will + include the widths of any leading or trailing trivia present on the child non-terminal node of this trivia. + + + + + The absolute span of this trivia in characters. If this trivia is a structured trivia then the returned span + will not include spans of any leading or trailing trivia present on the child non-terminal node of this + trivia. + + + + + Same as accessing on . + + + Slight performance improvement. + + + + + The absolute span of this trivia in characters. If this trivia is a structured trivia then the returned span + will include spans of any leading or trailing trivia present on the child non-terminal node of this trivia. + + + + + Determines whether this trivia has any diagnostics on it. If this trivia is a structured trivia then the + returned value will indicate whether this trivia or any of its descendant nodes, tokens or trivia have any + diagnostics on them. + > + + + + Determines whether this trivia is a structured trivia. + + + + + Determines whether this trivia is a descendant of a structured trivia. + + + + + Determines whether this trivia or any of its structure has annotations. + + + + + Determines where this trivia has annotations of the specified annotation kind. + + + + + Determines where this trivia has any annotations of the specified annotation kinds. + + + + + Determines whether this trivia has the specific annotation. + + + + + Get all the annotations of the specified annotation kind. + + + + + Get all the annotations of the specified annotation kinds. + + + + + Determines whether this trivia represents a preprocessor directive. + + + + + Returns the child non-terminal node representing the syntax tree structure under this structured trivia. + + The child non-terminal node representing the syntax tree structure under this structured + trivia. + + + + Returns the string representation of this trivia. If this trivia is structured trivia then the returned string + will not include any leading or trailing trivia present on the StructuredTriviaSyntax node of this trivia. + + The string representation of this trivia. + The length of the returned string is always the same as Span.Length + + + + Returns the full string representation of this trivia. If this trivia is structured trivia then the returned string will + include any leading or trailing trivia present on the StructuredTriviaSyntax node of this trivia. + + The full string representation of this trivia. + The length of the returned string is always the same as FullSpan.Length + + + + Writes the full text of this trivia to the specified TextWriter. + + + + + Determines whether two s are equal. + + + + + Determines whether two s are unequal. + + + + + Determines whether the supplied is equal to this + . + + + + + Determines whether the supplied is equal to this + . + + + + + Serves as hash function for . + + + + + Creates a new SyntaxTrivia with the specified annotations. + + + + + Creates a new SyntaxTrivia with the specified annotations. + + + + + Creates a new SyntaxTrivia without the specified annotations. + + + + + Creates a new SyntaxTrivia without the specified annotations. + + + + + Creates a new SyntaxTrivia without annotations of the specified kind. + + + + + Copies all SyntaxAnnotations, if any, from this SyntaxTrivia instance and attaches them to a new instance based on . + + + + + SyntaxTree which contains current SyntaxTrivia. + + + + + Get the location of this trivia. + + + + + Gets a list of all the diagnostics associated with this trivia. + This method does not filter diagnostics based on #pragmas and compiler options + like nowarn, warnaserror etc. + + + + + Determines if this trivia is equivalent to the specified trivia. + + + + + Represents a read-only list of . + + + + + Gets the trivia at the specified index. + + The zero-based index of the trivia to get. + The token at the specified index. + + is less than 0.-or- is equal to or greater than . + + + + The absolute span of the list elements in characters, including the leading and trailing trivia of the first and last elements. + + + + + The absolute span of the list elements in characters, not including the leading and trailing trivia of the first and last elements. + + + + + Returns the first trivia in the list. + + The first trivia in the list. + The list is empty. + + + + Returns the last trivia in the list. + + The last trivia in the list. + The list is empty. + + + + Does this list have any items. + + + + + Returns a list which contains all elements of in reversed order. + + which contains all elements of in reversed order + + + + Creates a new with the specified trivia added to the end. + + The trivia to add. + + + + Creates a new with the specified trivia added to the end. + + The trivia to add. + + + + Creates a new with the specified trivia inserted at the index. + + The index in the list to insert the trivia at. + The trivia to insert. + + + + Creates a new with the specified trivia inserted at the index. + + The index in the list to insert the trivia at. + The trivia to insert. + + + + Creates a new with the element at the specified index removed. + + The index identifying the element to remove. + + + + Creates a new with the specified element removed. + + The trivia element to remove. + + + + Creates a new with the specified element replaced with new trivia. + + The trivia element to replace. + The trivia to replace the element with. + + + + Creates a new with the specified element replaced with new trivia. + + The trivia element to replace. + The trivia to replace the element with. + + + + get the green node at the specific slot + + + + + Copy number of items starting at from this list into starting at . + + + + + Reversed enumerable. + + + + + Walks the syntax tree, allowing subclasses to operate on all nodes, token and trivia. The + walker will perform a depth first walk of the tree. + + + + + Syntax the should descent into. + + + + + Creates a new walker instance. + + Syntax the should descent into. + + + + Called when the walker visits a node. This method may be overridden if subclasses want + to handle the node. Overrides should call back into this base method if they want the + children of this node to be visited. + + The current node that the walker is visiting. + + + + Called when the walker visits a token. This method may be overridden if subclasses want + to handle the token. Overrides should call back into this base method if they want the + trivia of this token to be visited. + + The current token that the walker is visiting. + + + + Called when the walker visits a trivia syntax. This method may be overridden if + subclasses want to handle the token. Overrides should call back into this base method if + they want the children of this trivia syntax to be visited. + + The current trivia syntax that the walker is visiting. + + + + Syntax the should descent into. + + + + + descend into only nodes + + + + + descend into nodes and tokens + + + + + descend into nodes, tokens and trivia + + + + + descend into everything + + + + + This is ONLY used id BoundNode.cs Debug method - Dump() + + + + + This is ONLY used for debugging purpose + + + + + Parses a version string of the form "major [ '.' minor [ '.' build [ '.' revision ] ] ]". + + The version string to parse. + If parsing succeeds, the parsed version. Otherwise a version that represents as much of the input as could be parsed successfully. + True when parsing succeeds completely (i.e. every character in the string was consumed), false otherwise. + + + + Parses a version string of the form "major [ '.' minor [ '.' ( '*' | ( build [ '.' ( '*' | revision ) ] ) ) ] ]" + as accepted by System.Reflection.AssemblyVersionAttribute. + + The version string to parse. + Indicates whether or not a wildcard is accepted as the terminal component. + + If parsing succeeded, the parsed version. Otherwise a version instance with all parts set to zero. + If contains * the version build and/or revision numbers are set to . + + True when parsing succeeds completely (i.e. every character in the string was consumed), false otherwise. + + + + Parses a version string of the form "major [ '.' minor [ '.' ( '*' | ( build [ '.' ( '*' | revision ) ] ) ) ] ]" + as accepted by System.Reflection.AssemblyVersionAttribute. + + The version string to parse. + Indicates whether or not we're parsing an assembly version string. If so, wildcards are accepted and each component must be less than 65535. + The maximum value that a version component may have. + Allow the parsing of version elements where invalid characters exist. e.g. 1.2.2a.1 + + If parsing succeeded, the parsed version. When is true a version with values up to the first invalid character set. Otherwise a version with all parts set to zero. + If contains * and wildcard is allowed the version build and/or revision numbers are set to . + + True when parsing succeeds completely (i.e. every character in the string was consumed), false otherwise. + + + + If build and/or revision numbers are 65535 they are replaced with time-based values. + + + + + This function defines whether an attribute is optional or not. + + The attribute member. + + + + Ids of well known runtime types. + Values should not intersect with SpecialType enum! + + + + + + Number of well known types in WellKnownType enum + + + + + Array of names for types. + The names should correspond to ids from WellKnownType enum so + that we could use ids to index into the array + + + + + + Resolves references to XML files specified in the source. + + + + + Resolves XML document file path. + + + Value of the "file" attribute of an <include> documentation comment element. + + + Path of the source file () or XML document that contains the . + If not null used as a base path of , if is relative. + If is relative is used as the base path of . + + Normalized XML document file path or null if not found. + + + + The XmlCharType class is used for quick character type recognition + which is optimized for the first 127 ascii characters. + + + + + start >= value <= end + + + + + Struct containing information about a source declaration. + + + + + Topmost syntax node for this declaration. + + + + + Syntax nodes for executable code blocks (method body, initializers, etc.) associated with this declaration. + + + + + Symbol declared by this declaration. + + + + + Realizes the array. + + + + + Write to slot . + Fills in unallocated slots preceding the , if any. + + + + + Realizes the array. + + + + + Realizes the array, downcasting each element to a derived type. + + + + + Realizes the array and disposes the builder in one operation. + + + + + struct enumerator used in foreach. + + + + + This class is used to store the module serialization properties for a compilation. + + + + + The alignment factor (in bytes) that is used to align the raw data of sections in the image file. + The value should be a power of 2 between 512 and 64K, inclusive. The default is 512. + + + + + The alignment (in bytes) of sections when they are loaded into memory. + It must be greater than or equal to . + The default is the page size for the architecture. + + + + + Identifies the version of the CLR that is required to load this module or assembly. + + + + + Specifies the target CPU. means AnyCPU. + + + + + True if the module contains only IL and is processor independent. Should there be a choice between launching as a 64-bit or 32-bit + process, this setting will cause the host to launch it as a 32-bit process. + + + + + The first part of a two part version number indicating the version of the format used to persist this module. For example, the 1 in 1.0. + + + + + The second part of a two part version number indicating the version of the format used to persist this module. For example, the 0 in 1.0. + + + + + A globally unique persistent identifier for this module. + + + + + True if the module contains only IL and is processor independent. + + + + + True if the instructions in this module must be compiled in such a way that the debugging experience is not compromised. + To set the value of this property, add an instance of System.Diagnostics.DebuggableAttribute to the MetadataAttributes list. + + + + + The preferred memory address at which the module is to be loaded at runtime. + + + + + The size of the virtual memory to reserve for the initial process heap. + Must fit into 32 bits if the target platform is 32 bit. + + + + + The size of the virtual memory initially committed for the initial process heap. + Must fit into 32 bits if the target platform is 32 bit. + + + + + The size of the virtual memory to reserve for the initial thread's stack. + Must fit into 32 bits if the target platform is 32 bit. + + + + + The first part of a two part version number indicating the version of the linker that produced this module. For example, the 8 in 8.0. + + + + + The first part of a two part version number indicating the version of the linker that produced this module. For example, the 0 in 8.0. + + + + + Flags that control the behavior of the target operating system. CLI implementations are supposed to ignore this, but some operating system pay attention. + + + + + If set, the module must include a machine code stub that transfers control to the virtual execution system. + + + + + If set, the module contains instructions or assumptions that are specific to the AMD 64 bit instruction set. + + + + + If set, the module contains instructions that assume a 32 bit instruction set. For example it may depend on an address being 32 bits. + This may be true even if the module contains only IL instructions because of PlatformInvoke and COM interop. + + + + + If set, the module contains instructions that assume a 64 bit instruction set. For example it may depend on an address being 64 bits. + This may be true even if the module contains only IL instructions because of PlatformInvoke and COM interop. + + + + + Compares the current content of this writer with another one. + + + + Range specified by and falls outside of the bounds of the buffer content. + + + Range specified by and falls outside of the bounds of the buffer content. + + + is negative. + + + is null. + is negative. + + + is null. + + + is null. + is negative. + + + is null. + + + is null. + Range specified by and falls outside of the bounds of the . + + + is null. + + + is null. + Range specified by and falls outside of the bounds of the . + + + + Writes a reference to a heap (heap index) or a table (row id). + + + References may be small (2B) or large (4B). + + + + + Writes UTF16 (little-endian) encoded string at the current position. + + is null. + + + + Writes UTF16 (little-endian) encoded string at the current position. + + is null. + + + + Writes string in SerString format (see ECMA-335-II 23.3 Custom attributes): + The string is UTF8 encoded and prefixed by the its size in bytes. + Null string is represented as a single byte 0xFF. + + + + + Writes UTF8 encoded string at the current position. + + is null. + + + + Implements compressed signed integer encoding as defined by ECMA-335-II chapter 23.2: Blobs and signatures. + + + If the value lies between -64 (0xFFFFFFC0) and 63 (0x3F), inclusive, encode as a one-byte integer: + bit 7 clear, value bits 5 through 0 held in bits 6 through 1, sign bit (value bit 31) in bit 0. + + If the value lies between -8192 (0xFFFFE000) and 8191 (0x1FFF), inclusive, encode as a two-byte integer: + 15 set, bit 14 clear, value bits 12 through 0 held in bits 13 through 1, sign bit(value bit 31) in bit 0. + + If the value lies between -268435456 (0xF000000) and 268435455 (0x0FFFFFFF), inclusive, encode as a four-byte integer: + 31 set, 30 set, bit 29 clear, value bits 27 through 0 held in bits 28 through 1, sign bit(value bit 31) in bit 0. + + can't be represented as a compressed signed integer. + + + + Implements compressed unsigned integer encoding as defined by ECMA-335-II chapter 23.2: Blobs and signatures. + + + If the value lies between 0 (0x00) and 127 (0x7F), inclusive, + encode as a one-byte integer (bit 7 is clear, value held in bits 6 through 0). + + If the value lies between 28 (0x80) and 214 – 1 (0x3FFF), inclusive, + encode as a 2-byte integer with bit 15 set, bit 14 clear(value held in bits 13 through 0). + + Otherwise, encode as a 4-byte integer, with bit 31 set, bit 30 set, bit 29 clear (value held in bits 28 through 0). + + can't be represented as a compressed signed integer. + + + + Writes a constant value (see ECMA-335 Partition II section 22.9) at the current position. + + is not of a constant type. + + + + The type of target machine. + + + + + The number of sections. This indicates the size of the section table, which immediately follows the headers. + + + + + The low 32 bits of the number of seconds since 00:00 January 1, 1970, that indicates when the file was created. + + + + + The file pointer to the COFF symbol table, or zero if no COFF symbol table is present. + This value should be zero for a PE image. + + + + + The number of entries in the symbol table. This data can be used to locate the string table, + which immediately follows the symbol table. This value should be zero for a PE image. + + + + + The size of the optional header, which is required for executable files but not for object files. + This value should be zero for an object file. + + + + + The flags that indicate the attributes of the file. + + + + + Represents a value on #String heap that has not been serialized yet. + + + + + Represents a value on #Blob heap that has not been serialized yet. + + + + + Fills in stringIndexMap with data from stringIndex and write to stringWriter. + Releases stringIndex as the stringTable is sealed after this point. + + + + + Sorts strings such that a string is followed immediately by all strings + that are a suffix of it. + + + + + Import scopes are associated with binders (in C#) and thus multiple instances might be created for a single set of imports. + We consider scopes with the same parent and the same imports the same. + Internal for testing. + + + + + This is the maximum length of a type or member name in metadata, assuming + the name is in UTF-8 format and not (yet) null-terminated. + + + Source names may have to be shorter still to accommodate mangling. + Used for event names, field names, property names, field names, method def names, + member ref names, type def (full) names, type ref (full) names, exported type + (full) names, parameter names, manifest resource names, and unmanaged method names + (ImplMap table). + + See CLI Part II, section 22. + + + + + This is the maximum length of a path in metadata, assuming the path is in UTF-8 + format and not (yet) null-terminated. + + + Used for file names, module names, and module ref names. + + See CLI Part II, section 22. + + + + + This is the maximum length of a string in the PDB, assuming it is in UTF-8 format + and not (yet) null-terminated. + + + Used for import strings, locals, and local constants. + + + + + Returns true if writing full metadata, false if writing delta. + + + + + True if writing delta metadata in a minimal format. + + + + + NetModules and EnC deltas don't have AssemblyDef record. + We don't emit it for EnC deltas since assembly identity has to be preserved across generations (CLR/debugger get confused otherwise). + + + + + Returns metadata generation ordinal. Zero for + full metadata and non-zero for delta. + + + + + Returns unique Guid for this delta, or default(Guid) + if full metadata. + + + + + Returns Guid of previous delta, or default(Guid) + if full metadata or generation 1 delta. + + + + + Returns true and the 1-based index of the type definition + if the type definition is recognized. Otherwise returns false. + The index is into the full metadata. + + + + + The 1-based index of the type definition. + The index is into the full metadata. + + + + + The type definition at the 0-based index into the full set. Deltas + are only required to support indexing into current generation. + + + + + The type definitions to be emitted, in row order. These + are just the type definitions from the current generation. + + + + + The 1-based index of the event definition. + The index is into the full metadata. + + + + + The event definitions to be emitted, in row order. These + are just the event definitions from the current generation. + + + + + The 1-based index of the field definition. + The index is into the full metadata. + + + + + The field definitions to be emitted, in row order. These + are just the field definitions from the current generation. + + + + + Returns true and the 1-based index of the method definition + if the method definition is recognized. Otherwise returns false. + The index is into the full metadata. + + + + + The 1-based index of the method definition. + The index is into the full metadata. + + + + + The method definition at the 0-based index into the full set. Deltas + are only required to support indexing into current generation. + + + + + The method definitions to be emitted, in row order. These + are just the method definitions from the current generation. + + + + + The 1-based index of the property definition. + The index is into the full metadata. + + + + + The property definitions to be emitted, in row order. These + are just the property definitions from the current generation. + + + + + The 1-based index of the parameter definition. + The index is into the full metadata. + + + + + The parameter definitions to be emitted, in row order. These + are just the parameter definitions from the current generation. + + + + + The generic parameter definitions to be emitted, in row order. These + are just the generic parameter definitions from the current generation. + + + + + The 1-based index of the first field of the type. + + + + + The 1-based index of the first method of the type. + + + + + The 1-based index of the first parameter of the method. + + + + + Return the 1-based index of the assembly reference, adding + the reference to the index for this generation if missing. + The index is into the full metadata. However, deltas + are not required to return rows from previous generations. + + + + + The assembly references to be emitted, in row order. These + are just the assembly references from the current generation. + + + + + Return the 1-based index of the module reference, adding + the reference to the index for this generation if missing. + The index is into the full metadata. However, deltas + are not required to return rows from previous generations. + + + + + The module references to be emitted, in row order. These + are just the module references from the current generation. + + + + + Return the 1-based index of the member reference, adding + the reference to the index for this generation if missing. + The index is into the full metadata. However, deltas + are not required to return rows from previous generations. + + + + + The member references to be emitted, in row order. These + are just the member references from the current generation. + + + + + Return the 1-based index of the method spec, adding + the spec to the index for this generation if missing. + The index is into the full metadata. However, deltas + are not required to return rows from previous generations. + + + + + The method specs to be emitted, in row order. These + are just the method specs from the current generation. + + + + + Return true and the 1-based index of the type reference + if the reference is available in the current generation. + The index is into the full metadata. However, deltas + are not required to return rows from previous generations. + + + + + Return the 1-based index of the type reference, adding + the reference to the index for this generation if missing. + The index is into the full metadata. However, deltas + are not required to return rows from previous generations. + + + + + The type references to be emitted, in row order. These + are just the type references from the current generation. + + + + + Return the 1-based index of the type spec, adding + the spec to the index for this generation if missing. + The index is into the full metadata. However, deltas + are not required to return rows from previous generations. + + + + + The type specs to be emitted, in row order. These + are just the type specs from the current generation. + + + + + Return the 1-based index of the signature index, adding + the signature to the index for this generation if missing. + The index is into the full metadata. However, deltas + are not required to return rows from previous generations. + + + + + The signature indices to be emitted, in row order. These + are just the signature indices from the current generation. + + + + + Return a visitor for traversing all references to be emitted. + + + + + Populate EventMap table. + + + + + Populate PropertyMap table. + + + + + Populate EncLog table. + + + + + Populate EncMap table. + + + + + Returns a reference to the unit that defines the given referenced type. If the referenced type is a structural type, such as a pointer or a generic type instance, + then the result is null. + + + + + The Microsoft CLR requires that {namespace} + "." + {name} fit in MAX_CLASS_NAME + (even though the name and namespace are stored separately in the Microsoft + implementation). Note that the namespace name of a nested type is always blank + (since comes from the container). + + We're trying to add the containing namespace of this type to the string heap. + Namespace names are never used on their own - this is the type that is adding the namespace name. + Used only for length checking. + + + + Test the given name to see if it fits in metadata. + + String to test (non-null). + Max length for name. (Expected to be at least 5.) + True if the name is too long. + Internal for test purposes. + + + + Serialize the method local signature to the blob. + + Standalone signature token + + + + Computes the string representing the strong name of the given assembly reference. + + + + + Visitor to force translation of all symbols that will be referred to + in metadata. Allows us to build the set of types that must be embedded + as local types. + + + + + Strip off *, &, and []. + + + + + Qualified name of namespace. + e.g. "A.B.C" + + + + + The offset of the first operation in the scope. + + + + + The offset of the first operation outside of the scope, or the method body length. + + + + + An object corresponding to a metadata entity such as a type or a field. + + + + + An object corresponding to reference to a metadata entity such as a type or a field. + + + + + A collection of metadata custom attributes that are associated with this definition. + + + + + Calls the visitor.Visit(T) method where T is the most derived object model node interface type implemented by the concrete type + of the object implementing IDefinition. The dispatch method does not invoke Dispatch on any child objects. If child traversal + is desired, the implementations of the Visit methods should do the subsequent dispatching. + + + + + Gets the definition object corresponding to this reference within the given context, + or null if the referenced entity isn't defined in the context. + + + + + Constants for producing and consuming streams of binary custom debug info. + + + + + Returns true if the namespace scope for this method should be forwarded to another method. + Returns non-null if the forwarding should be done directly via UsingNamespace, + null if the forwarding is done via custom debug info. + + + + + Use to create a document when checksum is computed based on actual source stream. + + + + + Use to create a document when checksum is suggested via external checksum pragma/directive + + + + + returns true when checksum was computed base on an actual source stream + as opposed to be suggested via a checksum directive/pragma + + + + + A region representing an exception handler clause. The region exposes the type (catch or + finally) and the bounds of the try block and catch or finally block as needed by + + + + + Handler kind for this SEH info + + + + + If HandlerKind == HandlerKind.Catch, this is the type of exception to catch. If HandlerKind == HandlerKind.Filter, this is System.Object. + Otherwise this is a Dummy.TypeReference. + + + + + Label instruction corresponding to the start of filter decision block + + + + + Label instruction corresponding to the start of try block + + + + + Label instruction corresponding to the end of try block + + + + + Label instruction corresponding to the start of handler block + + + + + Label instruction corresponding to the end of handler block + + + + + An expression that does not change its value at runtime and can be evaluated at compile time. + + + + + The compile time value of the expression. Null to represent a null object reference or a null array. + + + + + An expression that creates an array instance in metadata. Only for use in custom attributes. + + + + + The element type of the array. + + + + + The values of the array elements. May be empty to represent an empty array. + + + + + The number of elements in the array. + + + + + An expression that can be represented directly in metadata. + + + + + Calls the visitor.Visit(T) method where T is the most derived object model node interface type implemented by the concrete type + of the object implementing IStatement. The dispatch method does not invoke Dispatch on any child objects. If child traversal + is desired, the implementations of the Visit methods should do the subsequent dispatching. + + + + + The type of value the expression represents. + + + + + An expression that represents a (name, value) pair and that is typically used in method calls, custom attributes and object initializers. + + + + + The name of the parameter or property or field that corresponds to the argument. + + + + + The value of the argument. + + + + + True if the named argument provides the value of a field. + + + + + An expression that results in a System.Type instance. + + + + + The type that will be represented by the System.Type instance. + + + + + Represents an assembly reference with an alias (C# only, /r:Name=Reference on command line). + + + + + An alias for the global namespace of the assembly. + + + + + The assembly reference. + + + + + A metadata custom attribute. + + + + + Zero or more positional arguments for the attribute constructor. + + + + + A reference to the constructor that will be used to instantiate this custom attribute during execution (if the attribute is inspected via Reflection). + + + + + Zero or more named arguments that specify values for fields and properties of the attribute. + + + + + The number of positional arguments. + + + + + The number of named arguments. + + + + + The type of the attribute. For example System.AttributeUsageAttribute. + + + + + Whether attribute allows multiple. + + + + + Represents a file referenced by an assembly. + + + + + True if the file has metadata. + + + + + File name with extension. + + + + + A hash of the file contents. + + + + + The highest version of the interface available on Desktop FX 4.0+. + + + + + has type , rather than , + so that we can do custom marshalling of . Unfortunately, .NET marshals + s as the number of days since 1899/12/30, whereas the native VB compiler + marshalled them as the number of ticks since the Unix epoch (i.e. a much, much larger number). + + + + + Open a special custom data section to emit token to source span mapping information into. + Opening this section while a method is already open or vice versa is an error. + + + + + Close the special custom data section for token to source span mapping + information. Once it is closed no more mapping information can be added. + + + + + Maps the given metadata token to the given source line span in the specified source file. + Must be called between calls to and . + + + + + The highest version of the interface available in Microsoft.DiaSymReader.Native. + + + + + A struct with the same size and layout as the native VARIANT type: + 2 bytes for a discriminator (i.e. which type of variant it is). + 6 bytes of padding + 8 or 16 bytes of data + + + + + This field determines the size of the struct + (16 bytes on 32-bit platforms, 24 bytes on 64-bit platforms). + + + + + This type is 8 bytes on a 32-bit platforms and 16 bytes on 64-bit platforms. + + + + + A range of CLR IL operations that comprise a lexical scope. + + + + + The offset of the first operation in the scope. + + + + + The offset of the first operation outside of the scope, or the method body length. + + + + + Returns zero or more local constant definitions that are local to the given scope. + + + + + Returns zero or more local variable definitions that are local to the given scope. + + + + + streamProvider callers will dispose result after use. + and are mutually exclusive. + + + + + Specifies how the caller passes parameters to the callee and who cleans up the stack. + + + + + C/C++ style calling convention for unmanaged methods. The call stack is cleaned up by the caller, + which makes this convention suitable for calling methods that accept extra arguments. + + + + + The convention for calling managed methods with a fixed number of arguments. + + + + + The convention for calling managed methods that accept extra arguments. + + + + + Arguments are passed in registers when possible. This calling convention is not yet supported. + + + + + Win32 API calling convention for calling unmanaged methods via PlatformInvoke. The call stack is cleaned up by the callee. + + + + + C++ member unmanaged method (non-vararg) calling convention. The callee cleans the stack and the this pointer is pushed on the stack last. + + + + + The convention for calling a generic method. + + + + + The convention for calling an instance method with an implicit this parameter (the method does not have an explicit parameter definition for this). + + + + + The convention for calling an instance method that explicitly declares its first parameter to correspond to the this instance. + + + + + An event is a member that enables an object or class to provide notifications. Clients can attach executable code for events by supplying event handlers. + This interface models the metadata representation of an event. + + + + + A list of methods that are associated with the event. + + + + + The method used to add a handler to the event. + + + + + The method used to call the event handlers when the event occurs. May be null. + + + + + True if the event gets special treatment from the runtime. + + + + + This event is special in some way, as specified by the name. + + + + + The method used to add a handler to the event. + + + + + The (delegate) type of the handlers that will handle the event. + + + + + A field is a member that represents a variable associated with an object or class. + This interface models the metadata representation of a field. + + + + + The compile time value of the field. This value should be used directly in IL, rather than a reference to the field. + If the field does not have a valid compile time value, Dummy.Constant is returned. + + + + + Mapped field data, or null if the field is not mapped. + + + + + This field is a compile-time constant. The field has no runtime location and cannot be directly addressed from IL. + + + + + This field has associated field marshalling information. + + + + + The field does not have to be serialized when its containing instance is serialized. + + + + + This field can only be read. Initialization takes place in a constructor. + + + + + True if the field gets special treatment from the runtime. + + + + + This field is special in some way, as specified by the name. + + + + + This field is static (shared by all instances of its declaring type). + + + + + Specifies how this field is marshalled when it is accessed from unmanaged code. + + + + + Checked if IsMarshalledExplicitly == true and MarshallingInformation is null + + + + + Offset of the field. + + + + + A reference to a field. + + + + + The type of value that is stored in this field. + + + + + The Field being referred to. + + + + + True, if field is an IContextualNamedEntity, even if field reference implements the interface, + doesn't mean it is contextual. + + + + + An object that represents a local variable or constant. + + + + + The compile time value of the definition, if it is a local constant. + + + + + Custom modifiers associated with local variable definition. + + + + + TODO: use instead. + True if the value referenced by the local must not be moved by the actions of the garbage collector. + + + + + TODO: use instead. + True if the local contains a managed pointer (for example a reference to a local variable or a reference to a field of an object). + + + + + True if the local variable is of type Dynamic. + + + + + Each local has an attributes field in the PDB. To match the native compiler, + we emit "1" for locals that should definitely not bind in the debugger and "0" + for all other locals. + + + A value of "1" is a sufficient, but not a necessary, condition for hiding the + local in the debugger. Locals with value "0" may also be hidden. + + Hidden locals must still be emitted because they participate in evaluation. + + + + + Should return the synthesized dynamic attributes of the local definition if any. Else null. + + + + + The type of the local. + + + + + Location for reporting diagnostics about the local. + + + Use rather than null. + + + + + Slot index or -1 if not applicable. + + + + + Optional serialized local signature. + + + + + Local id, or if this is a local constant, short-lived temp variable, + or we are not emitting local variable ids (release builds). + + + + + Represents additional info needed by async method implementation methods + (MoveNext() methods) to properly emit necessary PDB data for async debugging. + + + + + Original async method transformed into MoveNext() + + + + + IL offset of catch handler or -1 + + + + + Set of IL offsets where await operators yield control + + + + + Set of IL offsets where await operators are to be resumed + + + + + A metadata (IL) level representation of the body of a method or of a property/event accessor. + + + + + Calls the visitor.Visit(T) method where T is the most derived object model node interface type implemented by the concrete type + of the object implementing IDoubleDispatcher. The dispatch method does not invoke Dispatch on any child objects. If child traversal + is desired, the implementations of the Visit methods should do the subsequent dispatching. + + + + + A list exception data within the method body IL. + + + + + True if the locals are initialized by zeroing the stack upon method entry. + + + + + The local variables of the method. + + + + + The definition of the method whose body this is. + If this is the body of an event or property accessor, this will hold the corresponding adder/remover/setter or getter method. + + + + + Debugging information associated with an async method to support EE. + + + + + The maximum number of elements on the evaluation stack during the execution of the method. + + + + + Returns true if there is at least one dynamic local within the MethodBody + + + + + Returns zero or more local (block) scopes into which the CLR IL operations in the given method body is organized. + + + + + Returns an import scope the method is declared within, or null if there is none + (e.g. the method doesn't contain user code). + + + The chain is a spine of a tree in a forest of import scopes. A tree of import scopes is created by the language for each source file + based on namespace declarations. In VB each tree is trivial single-node tree that declares the imports of a file. + In C# the tree copies the nesting of namespace declarations in the file. There is a separate scope for each dotted component in + the namespace type name. For instance namespace type x.y.z will have two namespace scopes, the first is for the x and the second + is for the y. + + + + + Returns debug information for local variables hoisted to state machine fields, + or null if this method isn't MoveNext method of a state machine. + + + Returns zero or more local (block) scopes, each defining an IL range in which an iterator local is defined. + The scopes are returned for the MoveNext method of the object returned by the iterator method. + The index of the scope corresponds to the index of the local. Specifically local scope i corresponds + to the local stored in a field named <localName>5__i of the class used to store the local values in + between calls to MoveNext, where localName is the original name of the local variable. For example, if + the first local to be moved into the class is named "xyzzy", it will be stored in a field named + "<xyzzy>5__1", and the ILocalScope returned from this method at index 1 (i.e. the second one) will + have the scope information for where that variable is in scope. + + + + + The name of the state machine generated for the method, + or null if the method isn't the kickoff method of a state machine. + + + + + Returns information relevant to EnC on slots of local variables hoisted to state machine fields, + or null if the method isn't the kickoff method of a state machine. + + + + + Returns types of awaiter slots allocated on the state machine, + or null if the method isn't the kickoff method of a state machine. + + + + + This interface models the metadata representation of a method. + + + + + A container for a list of IL instructions providing the implementation (if any) of this method. + + + When emitting metadata-only assemblies this returns null even if returns true. + + + + + If the method is generic then this list contains the type parameters. + + + + + Returns true if this symbol was automatically created by the compiler, and does not have + an explicit corresponding source code declaration. + + + + + True if this method has a non empty collection of SecurityAttributes or the System.Security.SuppressUnmanagedCodeSecurityAttribute. + + + + + True if the method does not provide an implementation. + + + + + True if the method can only be overridden when it is also accessible. + + + + + True if the method is a constructor. + + + + + True if the method has an external implementation (i.e. not supplied by this definition). + + + If the method is not external and not abstract it has to provide an IL body. + + + + + True if this method is hidden if a derived type declares a method with the same name and signature. + If false, any method with the same name hides this method. This flag is ignored by the runtime and is only used by compilers. + + + + + The method always gets a new slot in the virtual method table. + This means the method will hide (not override) a base type method with the same name and signature. + + + + + True if the method is implemented via the invocation of an underlying platform method. + + + + + True if the method gets special treatment from the runtime. For example, it might be a constructor. + + + + + True if the method may not be overridden. + + + + + True if the method is special in some way for tools. For example, it might be a property getter or setter. + + + + + True if the method does not require an instance of its declaring type as its first argument. + + + + + True if the method may be overridden (or if it is an override). + + + + + Implementation flags. + + + + + The parameters forming part of this signature. + + + + + Detailed information about the PInvoke stub. Identifies which method to call, which module has the method and the calling convention among other things. + + + + + True if the method calls another method containing security code. If this flag is set, the method + should have System.Security.DynamicSecurityMethodAttribute present in its list of custom attributes. + + + + + Custom attributes associated with the method's return value. + + + + + The return value has associated marshalling information. + + + + + Specifies how the return value is marshalled when the method is called from unmanaged code. + + + + + Checked if ReturnValueIsMarshalledExplicitly == true and ReturnValueMarshallingInformation is null + + + + + Declarative security actions for this method. + + + + + Namespace containing this method. + TODO: Ideally we would expose INamespace on INamespaceTypeDefinition. Right now we can only get the qualified namespace name. + + + + + This interface models the metadata representation of a method or property parameter. + + + + + A compile time constant value that should be supplied as the corresponding argument value by callers that do not explicitly specify an argument value for this parameter. + Null if the parameter doesn't have default value. + + + + + True if the parameter has a default value that should be supplied as the argument value by a caller for which the argument value has not been explicitly specified. + + + + + True if the argument value must be included in the marshalled arguments passed to a remote callee. + + + + + This parameter has associated marshalling information. + + + + + True if the argument value must be included in the marshalled arguments passed to a remote callee only if it is different from the default value (if there is one). + + + + + True if the final value assigned to the parameter will be marshalled with the return values passed back from a remote callee. + + + + + Specifies how this parameter is marshalled when it is accessed from unmanaged code. + + + + + Checked if IsMarshalledExplicitly == true and MarshallingInformation is null + + + + + A property is a member that provides access to an attribute of an object or a class. + This interface models the metadata representation of a property. + + + + + A list of methods that are associated with the property. + + + + + A compile time constant value that provides the default value for the property. (Who uses this and why?) + + + + + The method used to get the value of this property. May be absent (null). + + + + + True if this property has a compile time constant associated with that serves as a default value for the property. (Who uses this and why?) + + + + + True if this property gets special treatment from the runtime. + + + + + True if this property is special in some way, as specified by the name. + + + + + The parameters forming part of this signature. + + + + + The method used to set the value of this property. May be absent (null). + + + + + The parameters and return type that makes up a method or property signature. + This interface models the metadata representation of a signature. + + + + + Calling convention of the signature. + + + + + The number of required parameters of the signature. + + + + + The parameters forming part of this signature. + + + + + Returns the list of custom modifiers, if any, associated with the returned value. Evaluate this property only if ReturnValueIsModified is true. + + + + + True if the return value is passed by reference (using a managed pointer). + + + + + The return type of the method or type of the property. + + + + + A member of a type definition, such as a field or a method. + This interface models the metadata representation of a type member. + + + + + The type definition that contains this member. + + + + + Indicates if the member is public or confined to its containing type, derived types and/or declaring assembly. + + + + + A reference to a member of a type, such as a field or a method. + This interface models the metadata representation of a type member reference. + + + + + A reference to the containing type of the referenced type member. + + + + + Represents the specialized event definition. + + + + + The event that has been specialized to obtain this event. When the containing type is an instance of type which is itself a specialized member (i.e. it is a nested + type of a generic type instance), then the unspecialized member refers to a member from the unspecialized containing type. (I.e. the unspecialized member always + corresponds to a definition that is not obtained via specialization.) + + + + + Represents reference specialized field. + + + + + A reference to the field definition that has been specialized to obtain the field definition referred to by this field reference. + When the containing type of the referenced specialized field definition is itself a specialized nested type of a generic type instance, + then the unspecialized field reference refers to the corresponding field definition from the unspecialized containing type definition. + (I.e. the unspecialized field reference always refers to a field definition that is not obtained via specialization.) + + + + + Represents reference specialized method. + + + + + A reference to the method definition that has been specialized to obtain the method definition referred to by this method reference. + When the containing type of the referenced specialized method definition is itself a specialized nested type of a generic type instance, + then the unspecialized method reference refers to the corresponding method definition from the unspecialized containing type definition. + (I.e. the unspecialized method reference always refers to a method definition that is not obtained via specialization.) + + + + + Represents the specialized property definition. + + + + + The property that has been specialized to obtain this property. When the containing type is an instance of type which is itself a specialized member (i.e. it is a nested + type of a generic type instance), then the unspecialized member refers to a member from the unspecialized containing type. (I.e. the unspecialized member always + corresponds to a definition that is not obtained via specialization.) + + + + + A reference to a method. + + + + + True if the call sites that references the method with this object supply extra arguments. + + + + + The number of generic parameters of the method. Zero if the referenced method is not generic. + + + + + True if the method has generic parameters; + + + + + The method being referred to. + + + + + Information about this types of the extra arguments supplied at the call sites that references the method with this object. + + + + + A reference to generic method instantiated with a list of type arguments. + + + + + The type arguments that were used to instantiate this.GenericMethod in order to create this method. + + + + + Returns the generic method of which this method is an instance. + + + + + Represents a global field in symbol table. + + + + + Represents a global method in symbol table. + + + + + The name of the method. + + + + + Returns a sequence of all blobs that represent the content of the builder. + + Content is not available, the builder has been linked with another one. + + + + Compares the current content of this writer with another one. + + Content is not available, the builder has been linked with another one. + + + Content is not available, the builder has been linked with another one. + + + Range specified by and falls outside of the bounds of the buffer content. + Content is not available, the builder has been linked with another one. + + + Content is not available, the builder has been linked with another one. + + + Range specified by and falls outside of the bounds of the buffer content. + Content is not available, the builder has been linked with another one. + + + is null. + Content is not available, the builder has been linked with another one. + + + is default(). + Content is not available, the builder has been linked with another one. + + + is null. + Content is not available, the builder has been linked with another one. + + + is null. + Builder is not writable, it has been linked with another one. + + + is null. + Builder is not writable, it has been linked with another one. + + + + Reserves a contiguous block of bytes. + + is negative. + Builder is not writable, it has been linked with another one. + + + is negative. + Builder is not writable, it has been linked with another one. + + + is null. + is negative. + Builder is not writable, it has been linked with another one. + + + is null. + is negative. + Builder is not writable, it has been linked with another one. + Bytes successfully written from the . + + + is null. + Builder is not writable, it has been linked with another one. + + + is null. + Range specified by and falls outside of the bounds of the . + Builder is not writable, it has been linked with another one. + + + is null. + Builder is not writable, it has been linked with another one. + + + is null. + Range specified by and falls outside of the bounds of the . + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + + Writes a reference to a heap (heap index) or a table (row id). + + + References may be small (2B) or large (4B). + + Builder is not writable, it has been linked with another one. + + + + Writes UTF16 (little-endian) encoded string at the current position. + + is null. + Builder is not writable, it has been linked with another one. + + + + Writes UTF16 (little-endian) encoded string at the current position. + + is null. + Builder is not writable, it has been linked with another one. + + + + Writes string in SerString format (see ECMA-335-II 23.3 Custom attributes): + The string is UTF8 encoded and prefixed by the its size in bytes. + Null string is represented as a single byte 0xFF. + + Builder is not writable, it has been linked with another one. + + + + Writes UTF8 encoded string at the current position. + + is null. + Builder is not writable, it has been linked with another one. + + + + Implements compressed signed integer encoding as defined by ECMA-335-II chapter 23.2: Blobs and signatures. + + + If the value lies between -64 (0xFFFFFFC0) and 63 (0x3F), inclusive, encode as a one-byte integer: + bit 7 clear, value bits 5 through 0 held in bits 6 through 1, sign bit (value bit 31) in bit 0. + + If the value lies between -8192 (0xFFFFE000) and 8191 (0x1FFF), inclusive, encode as a two-byte integer: + 15 set, bit 14 clear, value bits 12 through 0 held in bits 13 through 1, sign bit(value bit 31) in bit 0. + + If the value lies between -268435456 (0xF000000) and 268435455 (0x0FFFFFFF), inclusive, encode as a four-byte integer: + 31 set, 30 set, bit 29 clear, value bits 27 through 0 held in bits 28 through 1, sign bit(value bit 31) in bit 0. + + can't be represented as a compressed signed integer. + Builder is not writable, it has been linked with another one. + + + + Implements compressed unsigned integer encoding as defined by ECMA-335-II chapter 23.2: Blobs and signatures. + + + If the value lies between 0 (0x00) and 127 (0x7F), inclusive, + encode as a one-byte integer (bit 7 is clear, value held in bits 6 through 0). + + If the value lies between 28 (0x80) and 214 – 1 (0x3FFF), inclusive, + encode as a 2-byte integer with bit 15 set, bit 14 clear(value held in bits 13 through 0). + + Otherwise, encode as a 4-byte integer, with bit 31 set, bit 30 set, bit 29 clear (value held in bits 28 through 0). + + can't be represented as a compressed integer. + Builder is not writable, it has been linked with another one. + + + + Writes a constant value (see ECMA-335 Partition II section 22.9) at the current position. + + is not of a constant type. + Builder is not writable, it has been linked with another one. + + + + Table row counts. + + + + + Non-empty tables that are emitted into the metadata table stream. + + + + + Non-empty tables stored in an external metadata table stream that might be referenced from the metadata table stream being emitted. + + + + + Exact (unaligned) heap sizes. + + + + + Overall size of metadata stream storage (stream headers, table stream, heaps, additional streams). + Aligned to . + + + + + The size of metadata stream (#- or #~). Aligned. + Aligned to . + + + + + The size of #Pdb stream. Aligned. + + + + + The size of IL stream. + + + + + The size of mapped field data stream. + Aligned to . + + + + + The size of managed resource data stream. + Aligned to . + + + + + Size of strong name hash. + + + + + Metadata header size. + Includes: + - metadata storage signature + - storage header + - stream headers + + + + + Total size of metadata (header and all streams). + + + + + A visitor base class that traverses the object model in depth first, left to right order. + + + + + Use this routine, rather than ITypeReference.Dispatch, to call the appropriate derived overload of an ITypeReference. + The former routine will call Visit(INamespaceTypeDefinition) rather than Visit(INamespaceTypeReference), etc., + in the case where a definition is used as a reference to itself. + + A reference to a type definition. Note that a type definition can serve as a reference to itself. + + + + Use this routine, rather than IUnitReference.Dispatch, to call the appropriate derived overload of an IUnitReference. + The former routine will call Visit(IAssembly) rather than Visit(IAssemblyReference), etc. + in the case where a definition is used as the reference to itself. + + A reference to a unit. Note that a unit can serve as a reference to itself. + + + + A container for static helper methods that are used for manipulating and computing iterators. + + + + + True if the given enumerable is not null and contains at least one element. + + + + + True if the given enumerable is null or contains no elements + + + + + Returns the number of elements in the given enumerable. A null enumerable is allowed and results in 0. + + + + + A declarative specification of a security action applied to a set of permissions. Used by the CLR loader to enforce security restrictions. + Each security attribute represents a serialized permission or permission set for a specified security action. + The union of the security attributes with identical security action, define the permission set to which the security action applies. + + + + + Information about how values of managed types should be marshalled to and from unmanaged types. + + + + + or a string (usually a fully-qualified type name of a type implementing the custom marshaller, but Dev11 allows any string). + + + + + An argument string (cookie) passed to the custom marshaller at run time. + + + + + The unmanaged element type of the unmanaged array. + -1 if it should be omitted from the marshal blob. + + + + + Specifies the index of the parameter that contains the value of the Interface Identifier (IID) of the marshalled object. + -1 if it should be omitted from the marshal blob. + + + + + The unmanaged type to which the managed type will be marshalled. This can be UnmanagedType.CustomMarshaler, in which case the unmanaged type + is decided at runtime. + + + + + The number of elements in the fixed size portion of the unmanaged array. + -1 if it should be omitted from the marshal blob. + + + + + The zero based index of the parameter in the unmanaged method that contains the number of elements in the variable portion of unmanaged array. + If -1, the variable portion is of size zero, or the caller conveys the size of the variable portion of the array to the unmanaged method in some other way. + + + + + The type to which the variant values of all elements of the safe array must belong. See also SafeArrayElementUserDefinedSubtype. + (The element type of a safe array is VARIANT. The "sub type" specifies the value of all of the tag fields (vt) of the element values. ) + -1 if it should be omitted from the marshal blob. + + + + + A reference to the user defined type to which the variant values of all elements of the safe array must belong. + (The element type of a safe array is VARIANT. The tag fields will all be either VT_DISPATCH or VT_UNKNOWN or VT_RECORD. + The "user defined sub type" specifies the type of value the ppdispVal/ppunkVal/pvRecord fields of the element values may point to.) + + + + + Implemented by any entity that has a name. + + + + + The name of the entity. + + + + + The name of the entity depends on other metadata (tokens, signatures) originated from + PeWriter. + + + + + Method must be called before calling INamedEntity.Name. + + + + + Implemented by an entity that is always a member of a particular parameter list, such as an IParameterDefinition. + Provides a way to determine the position where the entity appears in the parameter list. + + + + + The position in the parameter list where this instance can be found. + + + + + This enum is used internally by BCL. It includes flags that are not in the metadata spec. + + + + + Information that describes how a method from the underlying Platform is to be invoked. + + + + + Module providing the method/field. + + + + + Name of the method providing the implementation. + + + + + Flags that determine marshalling behavior. + + + + + A resource file formatted according to Win32 API conventions and typically obtained from a Portable Executable (PE) file. + See the Win32 UpdateResource method for more details. + + + + + A string that identifies what type of resource this is. Only valid if this.TypeId < 0. + + + + + An integer tag that identifies what type of resource this is. If the value is less than 0, this.TypeName should be used instead. + + + + + The name of the resource. Only valid if this.Id < 0. + + + + + An integer tag that identifies this resource. If the value is less than 0, this.Name should be used instead. + + + + + The language for which this resource is appropriate. + + + + + The code page for which this resource is appropriate. + + + + + The data of the resource. + + + + + Represents a lexical scope that declares imports. + + + + + Zero or more used namespaces. These correspond to using directives in C# or Imports syntax in VB. + Multiple invocations return the same array instance. + + + + + Parent import scope, or null. + + + + + Exception to enable callers to catch all of the exceptions originating + from writing PDBs. We resurface such exceptions as this type, to eventually + be reported as PDB-writing failure diagnostics to the user. + Unfortunately, an exception originating in a user-implemented + Stream derivation will come out of the symbol writer as a COMException + missing all of the original exception info. + + + + + A utility to log all operations and arguments to the native PDB writing + library, so that we can hash that log to generate a deterministic GUID and + timestamp. + + + + + Minimal size of PDB path in Debug Directory. We pad the path to this minimal size to + allow some tools to patch the path without the need to rewrite the entire image. + This is a workaround put in place until these tools are retired. + + + + + True if we should attempt to generate a deterministic output (no timestamps or random data). + + + + + Compute a deterministic Guid and timestamp based on the contents of the stream, and replace + the 16 zero bytes at the given position and one or two 4-byte values with that computed Guid and timestamp. + + PE stream. + Position in the stream of 16 zero bytes to be replaced by a Guid + Position in the stream of four zero bytes to be replaced by a timestamp + + + + The size of a single entry in the "Debug Directory (Image Only)" + + + + + The size of our debug directory: one entry for debug information, and an optional second one indicating + that the timestamp is deterministic (i.e. not really a timestamp) + + + + + Write one entry in the "Debug Directory (Image Only)" + See https://msdn.microsoft.com/en-us/windows/hardware/gg463119.aspx + section 5.1.1 (pages 71-72). + + + + + Write the entire "Debug Directory (Image Only)" along with data that it points to. + + + + + Special type <Module> + + + + + This interface models the metadata representation of an array type reference. + + + + + The type of the elements of this array. + + + + + This type of array is a single dimensional array with zero lower bound for index values. + + + + + A possibly empty list of lower bounds for dimension indices. When not explicitly specified, a lower bound defaults to zero. + The first lower bound in the list corresponds to the first dimension. Dimensions cannot be skipped. + + + + + The number of array dimensions. + + + + + A possible empty list of upper bounds for dimension indices. + The first upper bound in the list corresponds to the first dimension. Dimensions cannot be skipped. + An unspecified upper bound means that instances of this type can have an arbitrary upper bound for that dimension. + + + + + Modifies the set of allowed values for a type, or the semantics of operations allowed on those values. + Custom modifiers are not associated directly with types, but rather with typed storage locations for values. + + + + + If true, a language may use the modified storage location without being aware of the meaning of the modification. + + + + + A type used as a tag that indicates which type of modification applies to the storage location. + + + + + Information that describes a method or property parameter, but does not include all the information in a IParameterDefinition. + + + + + The list of custom modifiers, if any, associated with the parameter. Evaluate this property only if IsModified is true. + + + + + True if the parameter is passed by reference (using a managed pointer). + + + + + The CLI spec says that custom modifiers must precede the ByRef type code in the encoding of a parameter. + Unfortunately, the managed C++ compiler emits them in the reverse order. In order to avoid breaking + interop scenarios, we need to support such signatures. + + + + + The type of argument value that corresponds to this parameter. + + + + + The definition of a type parameter of a generic type or method. + + + + + A list of classes or interfaces. All type arguments matching this parameter must be derived from all of the classes and implement all of the interfaces. + + + + + True if all type arguments matching this parameter are constrained to be reference types. + + + + + True if all type arguments matching this parameter are constrained to be value types. + + + + + True if all type arguments matching this parameter are constrained to be value types or concrete classes with visible default constructors. + + + + + Indicates if the generic type or method with this type parameter is co-, contra-, or non variant with respect to this type parameter. + + + + + A reference to the definition of a type parameter of a generic type or method. + + + + + The definition of a type parameter of a generic method. + + + + + The generic method that defines this type parameter. + + + + + A reference to a type parameter of a generic method. + + + + + A reference to the generic method that defines the referenced type parameter. + + + + + A generic type instantiated with a list of type arguments + + + + + The type arguments that were used to instantiate this.GenericType in order to create this type. + + + + + Returns the generic type of which this type is an instance. + Equivalent to Symbol.OriginalDefinition + + + + + The definition of a type parameter of a generic type. + + + + + The generic type that defines this type parameter. + + + + + A reference to a type parameter of a generic type. + + + + + A reference to the generic type that defines the referenced type parameter. + + + + + A reference to a named type, such as an INamespaceTypeReference or an INestedTypeReference. + + + + + The number of generic parameters. Zero if the type is not generic. + + + + + If true, the persisted type name is mangled by appending "`n" where n is the number of type parameters, if the number of type parameters is greater than 0. + + + + + A named type definition, such as an INamespaceTypeDefinition or an INestedTypeDefinition. + + + + + A type definition that is a member of a namespace definition. + + + + + True if the type can be accessed from other assemblies. + + + + + Represents a namespace. + + + + + Containing namespace or null if this namespace is global. + + + + + A reference to a type definition that is a member of a namespace definition. + + + + + A reference to the unit that defines the referenced type. + + + + + Fully qualified name of the containing namespace. + + + + + A type definition that is a member of another type definition. + + + + + A type definition that is a member of another type definition. + + + + + A reference to a type definition that is a specialized nested type. + + + + + A reference to the nested type that has been specialized to obtain this nested type reference. When the containing type is an instance of type which is itself a specialized member (i.e. it is a nested + type of a generic type instance), then the unspecialized member refers to a member from the unspecialized containing type. (I.e. the unspecialized member always + corresponds to a definition that is not obtained via specialization.) + + + + + Models an explicit implementation or override of a base class virtual method or an explicit implementation of an interface method. + + + + + The type that is explicitly implementing or overriding the base class virtual method or explicitly implementing an interface method. + + + + + A reference to the method that provides the implementation. + + + + + The type that is explicitly implementing or overriding the base class virtual method or explicitly implementing an interface method. + + + + + A type reference that has custom modifiers associated with it. For example a reference to the target type of a managed pointer to a constant. + + + + + Returns the list of custom modifiers associated with the type reference. Evaluate this property only if IsModified is true. + + + + + An unmodified type reference. + + + + + This interface models the metadata representation of a pointer to a location in unmanaged memory. + + + + + The type of value stored at the target memory location. + + + + + This interface models the metadata representation of a managed pointer. + Remark: This should be only used in attributes. For other objects like Local variables etc + there is explicit IsReference field that should be used. + + + + + The type of value stored at the target memory location. + + + + + This interface models the metadata representation of a type. + + + + + The byte alignment that values of the given type ought to have. Must be a power of 2. If zero, the alignment is decided at runtime. + + + + + Returns null for interfaces and System.Object. + + + + + Zero or more events defined by this type. + + + + + Zero or more implementation overrides provided by the class. + + + + + Zero or more fields defined by this type. + + + + + Zero or more parameters that can be used as type annotations. + + + + + The number of generic parameters. Zero if the type is not generic. + + + + + True if this type has a non empty collection of SecurityAttributes or the System.Security.SuppressUnmanagedCodeSecurityAttribute. + + + + + Zero or more interfaces implemented by this type. + + + + + True if the type may not be instantiated. + + + + + Is type initialized anytime before first access to static field + + + + + Is this imported from COM type library + + + + + True if this type is parameterized (this.GenericParameters is a non empty collection). + + + + + True if the type is an interface. + + + + + True if this type gets special treatment from the runtime. + + + + + True if this type is serializable. + + + + + True if the type has special name. + + + + + True if the type is a Windows runtime type. + + + A type can me marked as a Windows runtime type in source by applying the WindowsRuntimeImportAttribute. + WindowsRuntimeImportAttribute is a pseudo custom attribute defined as an internal class in System.Runtime.InteropServices.WindowsRuntime namespace. + This is needed to mark Windows runtime types which are redefined in mscorlib.dll and System.Runtime.WindowsRuntime.dll. + These two assemblies are special as they implement the CLR's support for WinRT. + + + + + True if the type may not be subtyped. + + + + + Layout of the type. + + + + + Zero or more methods defined by this type. + + + + + Zero or more nested types defined by this type. + + + + + Zero or more properties defined by this type. + + + + + Declarative security actions for this type. Will be empty if this.HasSecurity is false. + + + + + Size of an object of this type. In bytes. If zero, the size is unspecified and will be determined at runtime. + + + + + Default marshalling of the Strings in this class. + + + + + A reference to a type. + + + + + True if the type is an enumeration (it extends System.Enum and is sealed). Corresponds to C# enum. + + + + + True if the type is a value type. + Value types are sealed and extend System.ValueType or System.Enum. + A type parameter for which MustBeValueType (the struct constraint in C#) is true also returns true for this property. + + + + + The type definition being referred to. + + + + + Unless the value of TypeCode is PrimitiveTypeCode.NotPrimitive, the type corresponds to a "primitive" CLR type (such as System.Int32) and + the type code identifies which of the primitive types it corresponds to. + + + + + TypeDefs defined in modules linked to the assembly being emitted are listed in the ExportedTypes table. + + + + + A enumeration of all of the value types that are built into the Runtime (and thus have specialized IL instructions that manipulate them). + + + + + A single bit. + + + + + An unsigned 16 bit integer representing a Unicode UTF16 code point. + + + + + A signed 8 bit integer. + + + + + A 32 bit IEEE floating point number. + + + + + A 64 bit IEEE floating point number. + + + + + A signed 16 bit integer. + + + + + A signed 32 bit integer. + + + + + A signed 64 bit integer. + + + + + A signed 32 bit integer or 64 bit integer, depending on the native word size of the underlying processor. + + + + + A pointer to fixed or unmanaged memory. + + + + + A reference to managed memory. + + + + + A string. + + + + + An unsigned 8 bit integer. + + + + + An unsigned 16 bit integer. + + + + + An unsigned 32 bit integer. + + + + + An unsigned 64 bit integer. + + + + + An unsigned 32 bit integer or 64 bit integer, depending on the native word size of the underlying processor. + + + + + A type that denotes the absence of a value. + + + + + Not a primitive type. + + + + + Type is a dummy type. + + + + + Enumerates the different kinds of levels of visibility a type member can have. + + + + + The visibility has not been specified. Use the applicable default. + + + + + The member is visible only within its own assembly. + + + + + The member is visible only within its own type and any subtypes. + + + + + The member is visible only within the intersection of its family (its own type and any subtypes) and assembly. + + + + + The member is visible only within the union of its family and assembly. + + + + + The member is visible only to the compiler producing its assembly. + + + + + The member is visible only within its own type. + + + + + The member is visible everywhere its declaring type is visible. + + + + + A mask that can be used to mask out flag bits when the latter are stored in the same memory word as this enumeration. + + + + + Enumerates the different kinds of variance a generic method or generic type parameter may have. + + + + + Two type or method instances are compatible only if they have exactly the same type argument for this parameter. + + + + + A type or method instance will match another instance if it has a type for this parameter that is the same or a subtype of the type the + other instance has for this parameter. + + + + + A type or method instance will match another instance if it has a type for this parameter that is the same or a supertype of the type the + other instance has for this parameter. + + + + + A mask that can be used to mask out flag bits when the latter are stored in the same memory word as the enumeration. + + + + + Represents a .NET assembly. + + + + + A list of the files that constitute the assembly. These are not the source language files that may have been + used to compile the assembly, but the files that contain constituent modules of a multi-module assembly as well + as any external resources. It corresponds to the File table of the .NET assembly file format. + + + + + A set of bits and bit ranges representing properties of the assembly. The value of can be set + from source code via the AssemblyFlags assembly custom attribute. The interpretation of the property depends on the target platform. + + + + + The public part of the key used to encrypt the SHA1 hash over the persisted form of this assembly. Empty or null if not specified. + This value is used by the loader to decrypt an encrypted hash value stored in the assembly, which it then compares with a freshly computed hash value + in order to verify the integrity of the assembly. + + + + + The contents of the AssemblySignatureKeyAttribute + + + + + A reference to a .NET assembly. + + + + + An object that represents a .NET module. + + + + + Used to distinguish which style to pick while writing native PDB information. + + + The PDB content for custom debug information is different between Visual Basic and CSharp. + E.g. C# always includes a CustomMetadata Header (MD2) that contains the namespace scope counts, where + as VB only outputs namespace imports into the namespace scopes. + C# defines forwards in that header, VB includes them into the scopes list. + + Currently the compiler doesn't allow mixing C# and VB method bodies. Thus this flag can be per module. + It is possible to move this flag to per-method basis but native PDB CDI forwarding would need to be adjusted accordingly. + + + + + Public types defined in other modules making up this assembly and to which other assemblies may refer to via this assembly. + + + + + A list of objects representing persisted instances of types that extend System.Attribute. Provides an extensible way to associate metadata + with this assembly. + + + + + A list of objects representing persisted instances of pairs of security actions and sets of security permissions. + These apply by default to every method reachable from the module. + + + + + A list of the assemblies that are referenced by this module. + + + + + A list of named byte sequences persisted with the assembly and used during execution, typically via .NET Framework helper classes. + + + + + CorLibrary assembly referenced by this module. + + + + + The Assembly that contains this module. If this module is main module then this returns this. + + + + + The method that will be called to start execution of this executable module. + + + + + Returns zero or more strings used in the module. If the module is produced by reading in a CLR PE file, then this will be the contents + of the user string heap. If the module is produced some other way, the method may return an empty enumeration or an enumeration that is a + subset of the strings actually used in the module. The main purpose of this method is to provide a way to control the order of strings in a + prefix of the user string heap when writing out a module as a PE file. + + + + + Returns all top-level (not nested) types defined in the current module. + + + + + The kind of metadata stored in this module. For example whether this module is an executable or a manifest resource file. + + + + + A list of objects representing persisted instances of types that extend System.Attribute. Provides an extensible way to associate metadata + with this module. + + + + + The name of the module. + + + + + A list of the modules that are referenced by this module. + + + + + A list of named byte sequences persisted with the module and used during execution, typically via the Win32 API. + A module will define Win32 resources rather than "managed" resources mainly to present metadata to legacy tools + and not typically use the data in its own code. + + + + + An alternate form the Win32 resources may take. These represent the rsrc$01 and rsrc$02 section data and relocs + from a COFF object file. + + + + + Builds symbol definition to location map used for emitting token -> location info + into PDB to be consumed by WinMdExp.exe tool (only applicable for /t:winmdobj) + + + + + Assembly reference aliases (C# only). + + + + + Linked assembly names to be stored to native PDB (VB only). + + + + + Project level imports (VB only, TODO: C# scripts). + + + + + Default namespace (VB only). + + + + + A reference to a .NET module. + + + + + The Assembly that contains this module. May be null if the module is not part of an assembly. + + + + + A unit of metadata stored as a single artifact and potentially produced and revised independently from other units. + Examples of units include .NET assemblies and modules, as well C++ object files and compiled headers. + + + + + A reference to a instance of . + + + + + Represents a single using directive (Imports clause). + + + + + This is a marker attribute that can be put on an interface to denote that only internal implementations + of that interface should exist. + + +
+
diff --git a/packages/Microsoft.CodeAnalysis.Common.1.3.2/lib/portable-net45+win8/Microsoft.CodeAnalysis.dll b/packages/Microsoft.CodeAnalysis.Common.1.3.2/lib/portable-net45+win8/Microsoft.CodeAnalysis.dll new file mode 100644 index 0000000..c7d4fb8 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.Common.1.3.2/lib/portable-net45+win8/Microsoft.CodeAnalysis.dll differ diff --git a/packages/Microsoft.CodeAnalysis.Common.1.3.2/lib/portable-net45+win8/Microsoft.CodeAnalysis.xml b/packages/Microsoft.CodeAnalysis.Common.1.3.2/lib/portable-net45+win8/Microsoft.CodeAnalysis.xml new file mode 100644 index 0000000..0fab3ea --- /dev/null +++ b/packages/Microsoft.CodeAnalysis.Common.1.3.2/lib/portable-net45+win8/Microsoft.CodeAnalysis.xml @@ -0,0 +1,27492 @@ + + + + Microsoft.CodeAnalysis + + + + + This is a bridge for APIs that are only available on CoreCLR or .NET 4.6 + and NOT on .NET 4.5. The compiler currently targets .NET 4.5 and CoreCLR + so this shim is necessary for switching on the dependent behavior. + + + + + This is a bridge for APIs that are only available on Desktop + and NOT on CoreCLR. The compiler currently targets .NET 4.5 and CoreCLR + so this shim is necessary for switching on the dependent behavior. + + + + + Given a path to an assembly, identifies files in the same directory + that could satisfy the assembly's dependencies. May throw. + + + Dependencies are identified by simply checking the name of an assembly + reference against a file name; if they match the file is considered a + dependency. Other factors, such as version, culture, public key, etc., + are not considered, and so the returned collection may include items that + cannot in fact satisfy the original assembly's dependencies. + + If the file at does not exist or cannot be accessed. + If the file is not an assembly or is somehow corrupted. + + + + Given a path to an assembly, returns its MVID (Module Version ID). + May throw. + + If the file at does not exist or cannot be accessed. + If the file is not an assembly or is somehow corrupted. + + + + Given a path to an assembly, finds the paths to all of its satellite + assemblies. + + If the file at does not exist or cannot be accessed. + If the file is not an assembly or is somehow corrupted. + + + + Given a path to an assembly and a set of paths to possible dependencies, + identifies which of the assembly's references are missing. May throw. + + If the files does not exist or cannot be accessed. + If one of the files is not an assembly or is somehow corrupted. + + + + Given a path to an assembly, returns the for the assembly. + May throw. + + If the file at does not exist or cannot be accessed. + If the file is not an assembly or is somehow corrupted. + + + + Very cheap trivial comparer that never matches the keys, + should only be used in empty dictionaries. + + + + + Compares string based upon their ordinal equality. + We use this comparer for string identifiers because it does exactly what we need and nothing more + The StringComparer.Ordinal as implemented by StringComparer is more complex to support + case sensitive and insensitive compares depending on flags. + It also defers to the default string hash function that might not be the best for our scenarios. + + + + + A simple, forward-only JSON writer to avoid adding dependencies to the compiler. + Used to generate /errorlogger output. + + Does not guarantee well-formed JSON if misused. It is the caller's reponsibility + to balance array/object start/end, to only write key-value pairs to objects and + elements to arrays, etc. + + Takes ownership of the given at construction and handles its disposal. + + + + + A set that returns the inserted values in insertion order. + The mutation operations are not thread-safe. + + + + + An enumerable that yields the set's elements in insertion order. + + + + + Attempts to read all of the requested bytes from the stream into the buffer + + + The number of bytes read. Less than will + only be returned if the end of stream is reached before all bytes can be read. + + + Unlike it is not guaranteed that + the stream position or the output buffer will be unchanged if an exception is + returned. + + + + + Parse the value provided to an MSBuild Feature option into a list of entries. This will + leave name=value in their raw form. + + + + + Find a instance by first probing the contract name and then the name as it + would exist in mscorlib. This helps satisfy both the CoreCLR and Desktop scenarios. + + + + + This type contains the light up scenarios for various platform and runtimes. Any function + in this type can, and is expected to, fail on various platforms. These are light up scenarios + only. + + + + + Full case-insensitive path. + + + + + Last write time (UTC). + + + + + Constructor. + + Full path. + Last write time (UTC). + + + + + + + Initialize the value referenced by in a thread-safe manner. + The value is changed to only if the current value is null. + + Type of value. + Reference to the target location. + The value to use if the target is currently null. + The new value referenced by . Note that this is + nearly always more useful than the usual return from + because it saves another read to . + + + + Initialize the value referenced by in a thread-safe manner. + The value is changed to only if the current value + is . + + Type of value. + Reference to the target location. + The value to use if the target is currently uninitialized. + The uninitialized value. + The new value referenced by . Note that this is + nearly always more useful than the usual return from + because it saves another read to . + + + + Initialize the immutable array referenced by in a thread-safe manner. + + Elemental type of the array. + Reference to the target location. + The value to use if the target is currently uninitialized (default). + The new value referenced by . Note that this is + nearly always more useful than the usual return from + because it saves another read to . + + + + Search a sorted integer array for the target value in O(log N) time. + + The array of integers which must be sorted in ascending order. + The target value. + An index in the array pointing to the position where should be + inserted in order to maintain the sorted order. All values to the right of this position will be + strictly greater than . Note that this may return a position off the end + of the array if all elements are less than or equal to . + + + + The actual number of bytes read can be fewer than the number of bytes requested + if an error occurs or if the end of the stream is reached during the read operation. + + + + + NOTE!!! adding duplicates will result in exceptions. + Being concurrent only allows accessing the dictionary without taking locks. + Duplicate keys are still not allowed in the hashtable. + If unsure about adding unique items use APIs such as TryAdd, GetOrAdd, etc... + + + + + A concurrent, simplified HashSet. + + + + + The default concurrency level is 2. That means the collection can cope with up to two + threads making simultaneous modifications without blocking. + Note ConcurrentDictionary's default concurrency level is dynamic, scaling according to + the number of processors. + + + + + Taken from ConcurrentDictionary.DEFAULT_CAPACITY + + + + + The backing dictionary. The values are never used; just the keys. + + + + + Construct a concurrent set with the default concurrency level. + + + + + Construct a concurrent set using the specified equality comparer. + + The equality comparer for values in the set. + + + + Obtain the number of elements in the set. + + The number of elements in the set. + + + + Determine whether the set is empty. + true if the set is empty; otherwise, false. + + + + Determine whether the given value is in the set. + + The value to test. + true if the set contains the specified value; otherwise, false. + + + + Attempts to add a value to the set. + + The value to add. + true if the value was added to the set. If the value already exists, this method returns false. + + + + Attempts to remove a value from the set. + + The value to remove. + true if the value was removed successfully; otherwise false. + + + + Clear the set + + + + + Obtain an enumerator that iterates through the elements in the set. + + An enumerator for the set. + + + + a simple Lisp-like immutable list. Good to use when lists are always accessed from the head. + + + + + Names of well-known XML attributes and elements. + + + + + This method is necessary to avoid an ambiguity between and . + + + + + This method is necessary to avoid an ambiguity between and . + + + + + Convert a boxed primitive (generally of the backing type of an enum) into a ulong. + + + + + + + Implements a few file name utilities that are needed by the compiler. + In general the compiler is not supposed to understand the format of the paths. + In rare cases it needs to check if a string is a valid file name or change the extension + (embedded resources, netmodules, output name). + The APIs are intentionally limited to cover just these rare cases. Do not add more APIs. + + + + + Returns true if the string represents an unqualified file name. + The name may contain any characters but directory and volume separators. + + Path. + + True if is a simple file name, false if it is null or includes a directory specification. + + + + + Returns the offset in where the dot that starts an extension is, or -1 if the path doesn't have an extension. + + + Returns 0 for path ".foo". + Returns -1 for path "foo.". + + + + + Returns an extension of the specified path string. + + + The same functionality as but doesn't throw an exception + if there are invalid characters in the path. + + + + + Removes extension from path. + + + Returns "foo" for path "foo.". + Returns "foo.." for path "foo...". + + + + + Returns path with the extension changed to . + + + Equivalent of + + If is null, returns null. + If path does not end with an extension, the new extension is appended to the path. + If extension is null, equivalent to . + + + + + Returns the position in given path where the file name starts. + + -1 if path is null. + + + + Get file name from path. + + Unlike doesn't check for invalid path characters. + + + + Invoke the underlying HashAlgorithm's TransformBlock operation on the provided data. + + + + + This is how VB Anonymous Types combine hash values for fields. + + + + + This is how VB Anonymous Types combine hash values for fields. + PERF: Do not use with enum types because that involves multiple + unnecessary boxing operations. Unfortunately, we can't constrain + T to "non-enum", so we'll use a more restrictive constraint. + + + + + The offset bias value used in the FNV-1a algorithm + See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + + + + + The generative factor used in the FNV-1a algorithm + See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + + + + + Compute the FNV-1a hash of a sequence of bytes + See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + + The sequence of bytes + The FNV-1a hash of + + + + Compute the FNV-1a hash of a sequence of bytes and determines if the byte + sequence is valid ASCII and hence the hash code matches a char sequence + encoding the same text. + See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + + The sequence of bytes that are likely to be ASCII text. + The length of the sequence. + True if the sequence contains only characters in the ASCII range. + The FNV-1a hash of + + + + Compute the FNV-1a hash of a sequence of bytes + See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + + The sequence of bytes + The FNV-1a hash of + + + + Compute the hashcode of a sub-string using FNV-1a + See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + Note: FNV-1a was developed and tuned for 8-bit sequences. We're using it here + for 16-bit Unicode chars on the understanding that the majority of chars will + fit into 8-bits and, therefore, the algorithm will retain its desirable traits + for generating hash codes. + + The input string + The start index of the first character to hash + The number of characters, beginning with to hash + The FNV-1a hash code of the substring beginning at and ending after characters. + + + + Compute the hashcode of a sub-string using FNV-1a + See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + + The input string + The start index of the first character to hash + The FNV-1a hash code of the substring beginning at and ending at the end of the string. + + + + Compute the hashcode of a string using FNV-1a + See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + + The input string + The FNV-1a hash code of + + + + Compute the hashcode of a string using FNV-1a + See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + + The input string + The FNV-1a hash code of + + + + Compute the hashcode of a sub string using FNV-1a + See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + + The input string as a char array + The start index of the first character to hash + The number of characters, beginning with to hash + The FNV-1a hash code of the substring beginning at and ending after characters. + + + + Compute the hashcode of a single character using the FNV-1a algorithm + See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + Note: In general, this isn't any more useful than "char.GetHashCode". However, + it may be needed if you need to generate the same hash code as a string or + substring with just a single character. + + The character to hash + The FNV-1a hash code of the character. + + + + Combine a string with an existing FNV-1a hash code + See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + + The accumulated hash code + The string to combine + The result of combining with using the FNV-1a algorithm + + + + Combine a char with an existing FNV-1a hash code + See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + + The accumulated hash code + The new character to combine + The result of combining with using the FNV-1a algorithm + + + + Represents a single item or many items. + + + Used when a collection usually contains a single item but sometimes might contain multiple. + + + + + Compares objects based upon their reference identity. + + + + + Checks if the given name is a sequence of valid CLR names separated by a dot. + + + + + Remove one set of leading and trailing double quote characters, if both are present. + + + + + This is basically a lossy cache of strings that is searchable by + strings, string sub ranges, character array ranges or string-builder. + + + + + Represents an ordered sequence of weak references. + + + + + Copies all live references from to . + Assumes that all references prior are alive. + + + + + Returns the number of weak references in this list. + Note that some of them might not point to live objects anymore. + + + + + A COM IStream implementation over memory. Supports just enough for DiaSymReader's PDB writing. + Also tuned for performance: + 1. SetSize (and Seek beyond the length) is very fast and doesn't re-allocate the underlying memory. + 2. Read and Write are optimized to avoid copying (see ) + 3. Allocates in chunks instead of a contiguous buffer to avoid re-alloc and copy costs when growing. + + + + + This is a re-definition of COM's IStream interface. The important change is that + the Read and Write methods take an instead of a byte[] to avoid the + allocation cost when called from native code. + + + + + Null or empty. + + + + + "file" + + + + + ".\file" + + + + + "..\file" + + + + + "\dir\file" + + + + + "C:dir\file" + + + + + "C:\file" or "\\machine" (UNC). + + + + + Get directory name from path. + + + Unlike it + doesn't check for invalid path characters, + + Prefix of path that represents a directory. + + + + Exposed for testing purposes only. + + + + + Returns true if given path is absolute and starts with a drive specification ("C:\"). + + + + + Combines an absolute path with a relative. + + Absolute root path. + Relative path. + + An absolute combined path, or null if is + absolute (e.g. "C:\abc", "\\machine\share\abc"), + relative to the current root (e.g. "\abc"), + or relative to a drive directory (e.g. "C:abc\def"). + + + + + + Combine two paths, the first of which may be absolute. + + First path: absolute, relative, or null. + Second path: relative and non-null. + null, if is null; a combined path, otherwise. + + + + + Determines whether an assembly reference is considered an assembly file path or an assembly name. + used, for example, on values of /r and #r. + + + + + Determines if "path" contains 'component' within itself. + i.e. asking if the path "c:\foo\bar\baz" has component "bar" would return 'true'. + On the other hand, if you had "c:\foo\bar1\baz" then it would not have "bar" as a + component. + + A path contains a component if any file name or directory name in the path + matches 'component'. As such, if you had something like "\\foo" then that would + not have "foo" as a component. That's because here "foo" is the server name portion + of the UNC path, and not an actual directory or file name. + + + + + Resolves relative path and returns absolute path. + The method depends only on values of its parameters and their implementation (for fileExists). + It doesn't itself depend on the state of the current process (namely on the current drive directories) or + the state of file system. + + + Path to resolve. + + + Base file path to resolve CWD-relative paths against. Null if not available. + + + Base directory to resolve CWD-relative paths against if isn't specified. + Must be absolute path. + Null if not available. + + + Sequence of paths used to search for unqualified relative paths. + + + Method that tests existence of a file. + + + The resolved path or null if the path can't be resolved or does not exist. + + + + + Normalizes an absolute path. + + Path to normalize. + + Normalized path. + + + + Used to create a file given a path specified by the user. + paramName - Provided by the Public surface APIs to have a clearer message. Internal API just rethrow the exception + + + + + + + + The 4.5 portable API surface area does not contain many of the APIs Roslyn needs to function. In + particular it lacks APIs to access the file system. The Roslyn project though is constrained + from moving to the 4.6 framework until post VS 2015. + + This puts us in a difficult position. These APIs are necessary for us to have our public API set + in the DLLS we prefer (non Desktop variants) but we can't use them directly when targeting + the 4.5 framework. Putting the APIs into the Desktop variants would create instant legacy for + the Roslyn project that we'd have to maintain forever (even if it was just as assemblies with + only type forward entries). This is not a place we'd like to be in. + + As a compromise we've decided to grab these APIs via reflection for the time being. This is a + *very* unfortunate path to be on but it's a short term solution that sets us up for long term + success. + + This is an unfortunate situation but it will all be removed fairly quickly after RTM and converted + to the proper 4.6 portable contracts. + + Note: Only portable APIs should be present here. + + + + + APIs contained here are proposed for CoreFX but not yet finalized. Their contracts are + subject to change. + + + + + A binder that gathers type/reader mappings during object writing + + + + + A binder that used a predetermine list of types and reader functions. + + + + + A class that reads both primitive values and non-cyclical object graphs from a stream that was constructed using + the ObjectWriter class. + + + + + Read a Boolean value from the stream. This value must have been written using . + + + + + Read a Byte value from the stream. This value must have been written using . + + + + + Read a Char value from the stream. This value must have been written using . + + + + + Read a Decimal value from the stream. This value must have been written using . + + + + + Read a Double value from the stream. This value must have been written using . + + + + + Read a Single value from the stream. This value must have been written using . + + + + + Read a Int32 value from the stream. This value must have been written using . + + + + + Read a Int64 value from the stream. This value must have been written using . + + + + + Read a SByte value from the stream. This value must have been written using . + + + + + Read a Int16 value from the stream. This value must have been written using . + + + + + Read a UInt32 value from the stream. This value must have been written using . + + + + + Read a UInt64 value from the stream. This value must have been written using . + + + + + Read a UInt16 value from the stream. This value must have been written using . + + + + + Read a DateTime value from the stream. This value must have been written using the . + + + + + Read a compressed 30-bit integer value from the stream. This value must have been written using . + + + + + Read a value from the stream. The value must have been written using ObjectWriter.WriteValue. + + + + + Read a String value from the stream. This value must have been written using ObjectWriter.WriteString. + + + + + A class that writes both primitive values and non-cyclical object graphs to a stream that may be + later read back using the ObjectReader class. + + + + + Writes a Boolean value to the stream. + + + + + Writes a Byte value to the stream. + + + + + Writes a Char value to the stream. + + + + + Writes a Decimal value to the stream. + + + + + Writes a Double value to the stream. + + + + + Writes a Single value to the stream. + + + + + Writes a Int32 value to the stream. + + + + + Writes a Int64 value to the stream. + + + + + Writes a SByte value to the stream. + + + + + Writes a Int16 value to the stream. + + + + + Writes a UInt32 value to the stream. + + + + + Writes a UInt64 value to the stream. + + + + + Writes a UInt16 value to the stream. + + + + + Writes a DateTime value to the stream. + + + + + Writes a compressed 30 bit integer to the stream. (not 32 bit) + + + + + Writes a String value to the stream. + + + + + Writes any value (primitive or object graph) to the stream. + + + + + A binder that gathers type/reader mappings during object writing + + + + + A binder that gathers type/reader mappings during object writing + + + + + Generic implementation of object pooling pattern with predefined pool size limit. The main + purpose is that limited number of frequently used objects can be kept in the pool for + further recycling. + + Notes: + 1) it is not the goal to keep all returned objects. Pool is not meant for storage. If there + is no space in the pool, extra returned objects will be dropped. + + 2) it is implied that if object was obtained from a pool, the caller will return it back in + a relatively short time. Keeping checked out objects for long durations is ok, but + reduces usefulness of pooling. Just new up your own. + + Not returning objects to the pool in not detrimental to the pool's work, but is a bad practice. + Rationale: + If there is no intent for reusing the object, do not use pool - just use "new". + + + + + Not using System.Func{T} because this file is linked into the (debugger) Formatter, + which does not have that type (since it compiles against .NET 2.0). + + + + + Produces an instance. + + + Search strategy is a simple linear probing which is chosen for it cache-friendliness. + Note that Free will try to store recycled objects close to the start thus statistically + reducing how far we will typically search. + + + + + Returns objects to the pool. + + + Search strategy is a simple linear probing which is chosen for it cache-friendliness. + Note that Free will try to store recycled objects close to the start thus statistically + reducing how far we will typically search in Allocate. + + + + + Removes an object from leak tracking. + + This is called when an object is returned to the pool. It may also be explicitly + called if an object allocated from the pool is intentionally not being returned + to the pool. This can be of use with pooled arrays if the consumer wants to + return a larger array to the pool than was originally allocated. + + + + + Represents a non source code file. + + + + + Path to the file. + + + + + Returns a with the contents of this file, or null if + there were errors reading the file. + + + + + Errors encountered when trying to read the additional file. Always empty if + has not been called. + + + + + If is set, then will be null. + The only arity in that case will be encoded in the symbol. + + + + + + + + + Case-insensitive operations (mostly comparison) on unicode strings. + + + + + ToLower implements the Unicode lowercase mapping + as described in ftp://ftp.unicode.org/Public/UNIDATA/UnicodeData.txt. + VB uses these mappings for case-insensitive comparison. + + + If is upper case, then this returns its Unicode lower case equivalent. Otherwise, is returned unmodified. + + + + This class seeks to perform the lowercase Unicode case mapping. + + + + + Returns a StringComparer that compares strings according the VB identifier comparison rules. + + + + + Returns a StringComparer that compares strings according the VB identifier comparison rules. + + + + + Determines if two VB identifiers are equal according to the VB identifier comparison rules. + + First identifier to compare + Second identifier to compare + true if the identifiers should be considered the same. + + + + Determines if the string 'value' end with string 'possibleEnd'. + + + + + + + + Compares two VB identifiers according to the VB identifier comparison rules. + + First identifier to compare + Second identifier to compare + -1 if < , 1 if > , 0 if they are equal. + + + + Gets a case-insensitive hash code for VB identifiers. + + identifier to get the hash code for + The hash code for the given identifier + + + + Convert a string to lower case per Unicode + + + + + + + In-place convert string in StringBuilder to lower case per Unicode rules + + + + + + Constructs and caches already created pseudo-methods. + Every compiled module is supposed to have one of this, created lazily + (multidimensional arrays are not common). + + + + + Acquires an array constructor for a given array type + + + + + Acquires an element getter method for a given array type + + + + + Acquires an element setter method for a given array type + + + + + Acquires an element referencer method for a given array type + + + + + Maps {array type, method kind} tuples to implementing pseudo-methods. + + + + + lazily fetches or creates a new array method. + + + + + "newobj ArrayConstructor" is equivalent of "newarr ElementType" + when working with multidimensional arrays + + + + + "call ArrayGet" is equivalent of "ldelem ElementType" + when working with multidimensional arrays + + + + + "call ArrayAddress" is equivalent of "ldelema ElementType" + when working with multidimensional arrays + + + + + "call ArraySet" is equivalent of "stelem ElementType" + when working with multidimensional arrays + + + + + Represents a parameter in an array pseudo-method. + + NOTE: It appears that only number of indices is used for verification, + types just have to be Int32. + Even though actual arguments can be native ints. + + + + + Represents the "value" parameter of the Set pseudo-method. + + NOTE: unlike index parameters, type of the value parameter must match + the actual element type. + + + + + Base of all array methods. They have a lot in common. + + + + + Block is not reachable or reachability analysis + has not been performed. + + + + + Block can be reached either falling through + from previous block or from branch. + + + + + Block is reachable from try or catch but + finally prevents falling through. + + + + + Returns true if this block has a branch label + and is not a "nop" branch. + + + + + Instructions that are not branches. + + + + + The block contains only the final branch or nothing at all + + + + + Updates position of the current block to account for shorter sizes of previous blocks. + + + + + + If possible, changes the branch code of the current block to the short version and + updates the delta correspondingly. + + Position delta created by previous block size reductions. + + + + replaces branches with more compact code if possible. + * same branch as in the next ===> nop + * branch to the next block ===> nop + * branch to ret block ===> ret + * cond branch over uncond branch ===> flip condition, skip next block + * cond branch to equivalent ===> pop args + nop + + + + + Blocks are identical if: + 1) have same regular instructions + 2) lead to unconditional control transfer (no fall through) + 3) branch with the same instruction to the same label + + + + + Returns reversed branch operation for the current block. + If no reverse opcode can be obtained Nop is returned. + + + + + Abstract Execution state. + If we know something interesting about IL stream we put it here. + + + + + Eval stack's high watermark. + + + + + Current evaluation stack depth. + + + + + Record effects of that currently emitted instruction on the eval stack. + + + + + In some cases we have to get a final IL offset during emit phase, for example for + proper emitting sequence points. The problem is that before the builder is realized we + don't know the actual IL offset, but only {block/offset-in-the-block} pair. + + Thus, whenever we need to mark some IL position we allocate a new marker id, store it + in allocatedILMarkers and reference this IL marker in the entity requiring the IL offset. + + IL markers will be 'materialized' when the builder is realized; the resulting offsets + will be put into allocatedILMarkers array. Note that only markers from reachable blocks + are materialized, the rest will have offset -1. + + + + + Realizes method body. + No more data can be added to the builder after this call. + + + + + Gets all scopes that contain variables. + + + + + Gets all scopes that contain variables. + + + + + IL opcodes emitted by this builder. + This includes branch instructions that end blocks except if they are fall-through NOPs. + + This count allows compilers to see if emitting a particular statement/expression + actually produced any instructions. + + Example: a label will not result in any code so when emitting debugging information + an extra NOP may be needed if we want to decorate the label with sequence point. + + + + + Marks blocks that are reachable. + + + + + Marks blocks that are recursively reachable from the given block. + + + + + If a label points to a block that does nothing other than passing to block X, + replaces target label's block with block X. + + + + + + Drops blocks that are not reachable + Returns true if any blocks were dropped + + + + + Marks all blocks unreachable. + + + + + Rewrite any block marked as BlockedByFinally as an "infinite loop". + + + Matches the code generated by the native compiler in + ILGENREC::AdjustBlockedLeaveTargets. + + + + + Returns true if the block has the signature of the special + labeled block that follows a complete try/catch or try/finally. + + + + + Returns true if any branches were optimized (that does not include shortening) + We need this because optimizing a branch may result in unreachable code that needs to be eliminated. + + === Example: + + x = 1; + + if (blah) + { + global = 1; + } + else + { + throw null; + } + + return x; + + === rewrites into + + push 1; + + if (blah) + { + global = 1; + ret; + } + else + { + throw null; + } + + // this ret unreachable now! + // even worse - empty stack is assumed thus the ret is illegal. + ret; + + + + + + Define a sequence point with the given syntax tree and span within it. + + + + + Defines a hidden sequence point. + The effect of this is that debugger will not associate following code + with any source (until it sees a lexically following sequence point). + + This is used for synthetic code that is reachable through labels. + + If such code is not separated from previous sequence point by the means of a hidden sequence point + It looks as a part of the statement that previous sequence point specifies. + As a result, when user steps through the code and goes through a jump to such label, + it will appear as if the jump landed at the beginning of the previous statement. + + NOTE: Also inserted as the first statement of a method that would not otherwise have a leading + sequence point so that step-into will find the method body. + + + + + Define a hidden sequence point at the first statement of + the method so that step-into will find the method body. + + + + + This is called when starting emitting a method for which there is some source. + It is done in case the first sequence point is a hidden point. + Even though hidden points do not have syntax, they need to associate with some document. + + + + + Marks the end of filter condition and start of the actual filter handler. + + + + + Puts local variable into current scope. + + + + + Puts local constant into current scope. + + + + + Mark current IL position with a label + + + + + Primary method for emitting string switch jump table + + switch case labels + fall through label for the jump table + Local holding the value to switch on. + This value has already been loaded onto the execution stack. + + Local holding the hash value of the key for emitting + hash table switch. Hash value has already been computed and loaded into keyHash. + This parameter is null if emitting non hash table switch. + + + Delegate to emit string compare call and conditional branch based on the compare result. + + + Delegate to compute string hash consistent with value of keyHash. + + + + + Primary method for emitting integer switch jump table. + + switch case labels + fall through label for the jump table. + Local or parameter holding the value to switch on. + This value has already been loaded onto the execution stack. + + Primitive type code of switch key. + + + + Finishes filter condition (and starts actual handler portion of the handler). + Returns the last block of the condition. + + + + + Generates code that creates an instance of multidimensional array + + + + + Generates code that loads an element of a multidimensional array + + + + + Generates code that loads an address of an element of a multidimensional array. + + + + + Generates code that stores an element of a multidimensional array. + + + + + Contains information about a label. + + + + + Sometimes we need to know if a label is targeted by conditional branches. + For example optimizer can do optimizations of branches into outer try scopes only + if they are unconditional (because there are no conditional Leave opcodes) + + + + + Used when we see a branch, but label is not yet marked. + + + + + Used when label is marked to the code. + + + + + Gets all scopes that contain variables. + + + + + Returns an ExceptionHandlerRegion for each exception handler clause + beneath the root scope. Each ExceptionHandlerRegion indicates the type + of clause (catch or finally) and the bounds of the try block and clause block. + + + + + Base class for IL scopes where a scope contains IL blocks and other nested + scopes. A scope may represent a scope for variable declarations, an exception + handler clause, or an entire exception handler (multiple clauses). + + + + + Recursively calculates the start and end of the given scope. + Only scopes with locals are actually dumped to the list. + + + + + Recursively calculates the start and end of the given scope. + Only scopes with locals are actually dumped to the list. + + + + + Free any basic blocks owned by this scope or sub-scopes. + + + + + Class that collects content of the scope (blocks, nested scopes, variables etc). + There is one for every opened scope. + + + + + A scope for a single try, catch, or finally clause. If the clause + is a catch clause, ExceptionType will be set. + + + + + A scope for an entire exception handler (a try block with either several + catches or a finally block). Unlike other scopes, this scope contains + nested scopes only, no IL blocks (although nested ExceptionHandlerScopes + for the clauses will contain IL blocks). + + + + + Compares scopes by their start (ascending) and then size (descending). + + + + + These opcodes represent control transfer. + They should not appear inside basic blocks. + + + + + Opcodes that represents a branch to a label. + + + + + Opcodes that represents a branch to a label. + + + + + Debug information maintained for each lambda. + + + The information is emitted to PDB in Custom Debug Information record for a method containing the lambda. + + + + + The syntax offset of the syntax node declaring the lambda (lambda expression) or its body (lambda in a query). + + + + + The ordinal of the closure frame the lambda belongs to, or + if the lambda is static, or + if the lambda is closed over "this" pointer only. + + + + + We need a CCI representation for local constants because they are emitted as locals in + PDB scopes to improve the debugging experience (see LocalScopeProvider.GetConstantsInScope). + + + + . + + + + Creates a new LocalDefinition. + + Local symbol, used by edit and continue only, null otherwise. + Name associated with the slot. + Type associated with the slot. + Slot position in the signature. + Contains the synthesized dynamic attributes of the local + Local kind. + Local id. + Value to emit in the attributes field in the PDB. + Specifies whether slot type should have pinned modifier and whether slot should have byref constraint. + Specifies if the type is Dynamic. + + + + At this level there are two kinds of local variables: + + + Locals - have identities by which consuming code refers to them. + Typical use is a local variable or a compiler generated temp that can be accessed in multiple operations. + Any object can be used as identity. Reference equality is used. + + + Temps - do not have identity. They are borrowed and returned to the free list. + Typical use is a scratch temporary or spilling storage. + + + + + + + Structure that represents a local signature (as in ECMA-335, Partition I, §8.6.1.3 Local signatures). + + + + + Retrieve a local slot by its symbol. + + + + + Release a local slot by its symbol. + Slot is not associated with symbol after this. + + + + + Gets a local slot. + + + + + Frees a local slot. + + + + + An expression that creates an array instance in metadata. Only for use in custom attributes. + + + + + The element type of the array. + + + + + The initial values of the array elements. May be empty. + + + + + An expression that represents a (name, value) pair and that is typically used in method calls, custom attributes and object initializers. + + + + + The name of the parameter or property or field that corresponds to the argument. + + + + + The value of the argument. + + + + + True if the named argument provides the value of a field. + + + + + An expression that results in a System.Type instance. + + + + + The type that will be represented by the System.Type instance. + + + + + Holds on to the method body data. + + + + + This is a list of the using directives that were in scope for this method body. + + + + + Unique identification of an emitted entity (method, lambda, closure) used for debugging purposes (EnC). + + + When used for a synthesized method the ordinal and generation numbers are included its name. + For user defined methods the ordinal is included in Custom Debug Information record attached to the method. + + + + + The index of the method in member list of the containing type, or if undefined. + + + + + The EnC generation the method was defined in (0 is the baseline build). + + + + + This class represents the PermissionSetAttribute specified in source which needs fixup during codegen. + + + PermissionSetAttribute needs fixup when it contains an assignment to the 'File' property as a single named attribute argument. + Fixup performed is ported from SecurityAttributes::FixUpPermissionSetAttribute at ndp\clr\src\vm\securityattributes.cpp. + It involves following steps: + 1) Verifying that the specified file name resolves to a valid path: This is done during binding. + 2) Reading the contents of the file into a byte array. + 3) Convert each byte in the file content into two bytes containing hexadecimal characters (see method ). + 4) Replacing the 'File = fileName' named argument with 'Hex = hexFileContent' argument, where hexFileContent is the converted output from step 3) above. + + + + + Zero or more positional arguments for the attribute constructor. + + + + + A reference to the constructor that will be used to instantiate this custom attribute during execution (if the attribute is inspected via Reflection). + + + + + Zero or more named arguments that specify values for fields and properties of the attribute. + + + + + The number of positional arguments. + + + + + The number of named arguments. + + + + + The type of the attribute. For example System.AttributeUsageAttribute. + + + + + Exception class to enable generating ERR_PermissionSetAttributeFileReadError while reading the file for PermissionSetAttribute fixup. + + + + + TypeDefinition that represents <PrivateImplementationDetails> class. + The main purpose of this class so far is to contain mapped fields and their types. + + + + + Simple struct type with explicit size and no members. + + + + + Definition of a simple field mapped to a metadata block + + + + + Just a default implementation of a type definition. + + + + + Represents a sequence point before translation by #line/ExternalSource directives. + + + + + Some features of the compiler (such as anonymous types, pay-as-you-go, NoPIA, ...) + rely on all referenced symbols to go through translate mechanism. Because by default + symbol translator does not translate some of indirectly referenced symbols, such as + type argument, we have to force translation here + + This class provides unified implementation for this functionality. + + + + + Scope of user-defined variable hoisted to state machine. + + + + + Maintains a list of sequence points in a space efficient way. Most of the time sequence points + occur in the same syntax tree, so optimize for that case. Store a sequence point as an offset, and + position in a syntax tree, then translate to CCI format only on demand. + + Use a ArrayBuilder{RawSequencePoint} to create. + + + + + Create a SequencePointList with the raw sequence points from an ArrayBuilder. + A linked list of instances for each syntax tree is created (almost always of length one). + + + + + Get all the sequence points, possibly mapping them using #line/ExternalSource directives, and mapping + file names to debug documents with the given mapping function. + + Function that maps file paths to CCI debug documents + where sequence points should be deposited + + + + Represents the combination of an IL offset and a source text span. + + + + + Handles storage of strings referenced via tokens in metadata. When items are stored + they are uniquely "associated" with fake token, which is basically a sequential number. + IL gen will use these fake tokens during codegen and later, when actual token values + are known the method bodies will be patched. + To support these two scenarios we need two maps - Item-->uint, and uint-->Item. (the second is really just a list). + + + + + Class for emitting the switch jump table for switch statements with integral governing type + + + + + Switch key for the jump table + + + + + Primitive type of the switch key + + + + + Fall through label for the jump table + + + + + Integral case labels sorted and indexed by their ConstantValue + + + + + Try to merge with the nextBucket. + If merge results in a better bucket than two original ones, merge and return true. + Else don't merge and return false. + + + + + Switch key for the jump table + + + + + Switch case labels + + + + + Fall through label for the jump table + + + + + Delegate to emit string compare call and conditional branch based on the compare result. + + Key to compare + Case constant to compare the key against + Target label to branch to if key = stringConstant + + + + Delegate to compute string hash code. + This piece is language-specific because VB treats "" and null as equal while C# does not. + + + + + Delegate to emit string compare call + + + + + Delegate to emit string hash + + + + + Local storing the key hash value, used for emitting hash table based string switch. + + + + + Dispenser of unique ordinals for synthesized variable names that have the same kind and syntax offset. + + + + + Handles storage of items referenced via tokens in metadata (strings or Symbols). + When items are stored they are uniquely "associated" with fake token, which is basically + a sequential number. + IL gen will use these fake tokens during codegen and later, when actual token values are known + the method bodies will be patched. + To support these two scenarios we need two maps - Item-->uint, and uint-->Item. (the second is really just a list). + + + + + + Returns an index of a slot that stores specified hoisted local variable in the previous generation. + + + + + Number of slots reserved for hoisted local variables. + + + Some of the slots might not be used anymore (a variable might have been deleted or its type changed). + Still, new hoisted variables are assigned slots starting with . + + + + + Returns true and an index of a slot that stores an awaiter of a specified type in the previous generation, if any. + + + + + Number of slots reserved for awaiters. + + + Some of the slots might not be used anymore (the type of an awaiter might have changed). + Still, new awaiters are assigned slots starting with . + + + + + The id of the method, or null if the method wasn't assigned one. + + + + + Finds a closure in the previous generation that corresponds to the specified syntax. + + + See LambdaFrame.AssertIsLambdaScopeSyntax for kinds of syntax nodes that represent closures. + + + + + Finds a lambda in the previous generation that corresponds to the specified syntax. + The is either a lambda syntax ( is false), + or lambda body syntax ( is true). + + + + + A local whose type is represented by a metadata signature instead of a type symbol. + + + Used when emitting a new version of a method during EnC for variables that are no longer used. + + + + + This temp is not interesting to the expression compiler. However, it + may be replaced by an interesting local in a later stage. + + + + + Id that associates an emitted user-defined or long-lived synthesized local variable + with a syntax node that defined it. If a syntax node defines multiple variables it + provides information necessary to identify which one of these variables is it. + + + + + We calculate a "syntax offset" for each user-defined and long-lived synthesized variable. + Every such variable symbol has to be associated with a syntax node (its declarator). + In usual cases this is the textual distance of the declarator from the start of the method body. + It gets a bit complicated when the containing method body is not contiguous (constructors). + If the variable is in the body of the constructor the definition of syntax offset is the same. + If the variable is defined in a constructor initializer or in a member initializer + (this is only possible when declaration expressions or closures in primary constructors are involved) + then the distance is a negative sum of the widths of all the initializers that succeed the declarator + of the variable in the emitted constructor body plus the relative offset of the declarator from + the start of the containing initializer. + + + + + If a single node is a declarator for multiple variables of the same synthesized kind (it can only happen for synthesized variables) + we calculate additional number "ordinal" for such variable. We assign the ordinals to the synthesized variables with the same kind + and syntax offset in the order as they appear in the lowered bound tree. It is important that a valid EnC edit can't change + the ordinal of a synthesized variable. If it could it would need to be assigned a different kind or associated with a different declarator node. + + + + + Stores the results of analyzer execution: + 1. Local and non-local diagnostics, per-analyzer. + 2. Analyzer execution times, if requested. + + + + + Analyzers corresponding to this analysis result. + + + + + Syntax diagnostics reported by the . + + + + + Semantic diagnostics reported by the . + + + + + Compilation diagnostics reported by the . + + + + + Analyzer telemetry info (register action counts and execution times). + + + + + Gets all the diagnostics reported by the given . + + + + + Gets all the diagnostics reported by all the . + + + + + Provides custom values associated with instances using the given computeValue delegate. + + + + + Provides values associated with instances using the given . + + Delegate to compute the value associated with a given instance. + Optional equality comparer to determine equivalent instances that have the same value. + If no comparer is provided, then is used by default. + + + + Provides custom values associated with instances using the given computeValue delegate. + + + + + Provides custom values associated with instances using the given . + + Delegate to compute the value associated with a given instance. + Optional equality comparer to determine equivalent instances that have the same value. + If no comparer is provided, then is used by default. + + + + Wrapper over the core which holds a strong reference to key-value pairs for the lifetime of a compilation that this provider is associated with. + This ensures that values are never re-computed for equivalent keys while analyzing each compilation, improving overall analyzer performance. + + + + + Driver to execute diagnostic analyzers for a given compilation. + It uses a of s to drive its analysis. + + + + + Cached semantic model for the compilation trees. + PERF: This cache enables us to re-use semantic model's bound node cache across analyzer execution and diagnostic queries. + + + + + GetSyntax() for the given SyntaxReference. + + + + + Topmost declaration node for analysis. + + + + + All member declarations within the declaration. + + + + + All descendant nodes for syntax node actions. + + + + + Flag indicating if this is a partial analysis. + + + + + Default analysis mode for generated code. + + + This mode should always guarantee that analyzer action callbacks are enabled for generated code, i.e. is set. + However, the default diagnostic reporting mode is liable to change in future. + + + + + Map from non-concurrent analyzers to the gate guarding callback into the analyzer. + + + + + Map from analyzers to their setting. + + + + + True if all analyzers need to analyze and report diagnostics in generated code - we can assume all code to be non-generated code. + + + + + True if no analyzer needs generated code analysis - we can skip all analysis on a generated code symbol/tree. + + + + + Lazily populated dictionary indicating whether a source file is a generated code file or not - we populate it lazily to avoid realizing all syntax trees in the compilation upfront. + + + + + Lazily populated dictionary from tree to declared symbols with GeneratedCodeAttribute. + + + + + Symbol for . + + + + + Driver task which initializes all analyzers. + This task is initialized and executed only once at start of analysis. + + + + + Flag to indicate if the was successfully started. + + + + + Primary driver task which processes all events, runs analyzer actions and signals completion of at the end. + + + + + Number of worker tasks processing compilation events and executing analyzer actions. + + + + + Events queue for analyzer execution. + + + + + that is fed the diagnostics as they are computed. + + + + + Create an analyzer driver. + + The set of analyzers to include in the analysis + AnalyzerManager to manage analyzers for analyzer host's lifetime. + Delegate to identify if the given trivia is a comment. + + + + Initializes the and related actions maps for the analyzer driver. + It kicks off the task for initialization. + Note: This method must be invoked exactly once on the driver. + + + + + Returns true if all analyzers need to analyze and report diagnostics in generated code - we can assume all code to be non-generated code. + + + + + Attaches a pre-populated event queue to the driver and processes all events in the queue. + + Compilation events to analyze. + Scope of analysis. + An optional object to track partial analysis state. + Cancellation token to abort analysis. + Driver must be initialized before invoking this method, i.e. method must have been invoked and must be non-null. + + + + Attaches event queue to the driver and start processing all events pertaining to the given analysis scope. + + Compilation events to analyze. + Scope of analysis. + Cancellation token to abort analysis. + Driver must be initialized before invoking this method, i.e. method must have been invoked and must be non-null. + + + + Create an and attach it to the given compilation. + + The compilation to which the new driver should be attached. + The set of analyzers to include in the analysis. + Options that are passed to analyzers. + AnalyzerManager to manage analyzers for the lifetime of analyzer host. + Delegate to add diagnostics generated for exceptions from third party analyzers. + Report additional information related to analyzers, such as analyzer execution time. + The new compilation with the analyzer driver attached. + A cancellation token that can be used to abort analysis. + A newly created analyzer driver + + Note that since a compilation is immutable, the act of creating a driver and attaching it produces + a new compilation. Any further actions on the compilation should use the new compilation. + + + + + Returns all diagnostics computed by the analyzers since the last time this was invoked. + If has been completed with all compilation events, then it waits for + task for the driver to finish processing all events and generate remaining analyzer diagnostics. + + + + + Return a task that completes when the driver is initialized. + + + + + Return a task that completes when the driver is done producing diagnostics. + + + + + Returns true if all the diagnostics that can be produced by this analyzer are suppressed through options. + + + + + this hold onto analyzer executor context which will be used later to put context information in analyzer exception if it occurs. + + + + + Contains information about the source of diagnostic suppression. + + + + + of the suppressed diagnostic. + + + + + If the diagnostic was suppressed by an attribute, then returns that attribute. + Otherwise, returns null. + + + + + Stores the results of analyzer execution: + 1. Local and non-local diagnostics, per-analyzer. + 2. Analyzer execution times, if requested. + + + + + Scope for analyzer execution. + This scope could either be the entire compilation for all analyzers (command line build) or + could be scoped to a specific tree/span and/or a subset of analyzers (CompilationWithAnalyzers). + + + + + Syntax trees on which we need to perform syntax analysis. + + + + + True if we need to categorize diagnostics into local and non-local diagnostics and track the analyzer reporting each diagnostic. + + + + + True if we need to perform only syntax analysis for a single tree. + + + + + True if we need to perform analysis for a single tree. + + + + + Stores the partial analysis state for analyzers executed on a specific compilation. + + + Stores the current partial analysis state for an analyzer. + + + + + Stores the partial analysis state for a specific event/symbol/tree for a specific analyzer. + + + + + Current state of analysis. + + + + + Set of completed actions. + + + + + Resets the from to . + This method must be invoked after successful analysis completion AND on analysis cancellation. + + + + + Per-analyzer analysis state map. + The integer value points to the index within the array. + + + + + Per-analyzer analysis state. + + + + + Compilation events corresponding to source tree, that are not completely processed for all analyzers. + Events are dropped as and when they are fully processed by all analyzers. + + + + + Compilation events corresponding to the compilation (compilation start and completed events), that are not completely processed for all analyzers. + + + + + Action counts per-analyzer. + + + + + Cached semantic model for the compilation trees. + PERF: This cache enables us to re-use semantic model's bound node cache across analyzer execution and diagnostic queries. + + + + + Invoke this method at completion of event processing for the given analysis scope. + It updates the analysis state of this event for each analyzer and if the event has been fully processed for all analyzers, then removes it from our event cache. + + + + + Gets pending events for given set of analyzers for the given syntax tree. + + + + + Gets pending events for given set of analyzers for the given syntax tree. + + + + + Gets all pending events for given set of analyzers. + + + Indicates if source events (symbol declared, compilation unit completed event) should be included. + Indicates if compilation wide events (compilation started and completed event) should be included. + + + + Returns true if we have any pending syntax analysis for given analysis scope. + + + + + Returns true if we have any pending symbol analysis for given analysis scope. + + + + + Attempts to start processing a compilation event for the given analyzer. + + + Returns false if the event has already been processed for the analyzer OR is currently being processed by another task. + If true, then it returns a non-null representing partial analysis state for the given event for the given analyzer. + + + + + Marks the given event as fully analyzed for the given analyzer. + + + + + Marks the given event as fully analyzed for the given analyzers. + + + + + Attempts to start processing a symbol for the given analyzer's symbol actions. + + + Returns false if the symbol has already been processed for the analyzer OR is currently being processed by another task. + If true, then it returns a non-null representing partial analysis state for the given symbol for the given analyzer. + + + + + Marks the given symbol as fully analyzed for the given analyzer. + + + + + Attempts to start processing a symbol declaration for the given analyzer's syntax node and code block actions. + + + Returns false if the declaration has already been processed for the analyzer OR is currently being processed by another task. + If true, then it returns a non-null representing partial analysis state for the given declaration for the given analyzer. + + + + + True if the given symbol declaration is fully analyzed. + + + + + Marks the given symbol declaration as fully analyzed for the given analyzer. + + + + + Marks the given symbol declaration as fully analyzed for the given analyzers. + + + + + Marks all the symbol declarations for the given symbol as fully analyzed for all the given analyzers. + + + + + Attempts to start processing a syntax tree for the given analyzer's syntax tree actions. + + + Returns false if the tree has already been processed for the analyzer OR is currently being processed by another task. + If true, then it returns a non-null representing partial syntax analysis state for the given tree for the given analyzer. + + + + + Marks the given tree as fully syntactically analyzed for the given analyzer. + + + + + Marks the given tree as fully syntactically analyzed for the given analyzers. + + + + + State kind of per-analyzer tracking an analyzer's partial analysis state. + An analysis state object can be in one of the following states: + 1. Completely unprocessed: + 2. Currently being processed: + 3. Partially processed by one or more older requests that was either completed or cancelled: + 4. Fully processed: . + + + + + Ready for processing. + Indicates it is either completely unprocessed or partially processed by one or more older requests that was either completed or cancelled. + + + + + Currently being processed. + + + + + Fully processed. + + + + + Stores the partial analysis state for a specific symbol declaration for a specific analyzer. + + + + + Partial analysis state for code block actions executed on the declaration. + + + + + Partial analysis state for operation block actions executed on the declaration. + + + + + Stores the partial analysis state for syntax node actions executed on the declaration. + + + + + Stores the partial analysis state for operation actions executed on the declaration. + + + + + Stores the partial analysis state for code block actions or operation block actions executed on the declaration. + + + + + Stores the partial analysis state for code block actions executed on the declaration. + + + + + Stores the partial analysis state for operation block actions executed on the declaration. + + + + + Contains telemetry info for a specific analyzer, such as count of registered actions, the total execution time, etc. + + + + + Count of registered compilation start actions. + + + + + Count of registered compilation end actions. + + + + + Count of registered compilation actions. + + + + + Count of registered syntax tree actions. + + + + + Count of registered semantic model actions. + + + + + Count of registered symbol actions. + + + + + Count of registered syntax node actions. + + + + + Count of registered code block start actions. + + + + + Count of registered code block end actions. + + + + + Count of registered code block actions. + + + + + Count of registered operation actions. + + + + + Count of registered operation block start actions. + + + + + Count of registered operation block end actions. + + + + + Count of registered operation block actions. + + + + + Total execution time. + + + + + Contains the counts of registered actions for an analyzer. + + + + + Count of registered compilation start actions. + + + + + Count of registered compilation end actions. + + + + + Count of registered compilation actions. + + + + + Count of registered syntax tree actions. + + + + + Count of registered semantic model actions. + + + + + Count of registered symbol actions. + + + + + Count of registered syntax node actions. + + + + + Count of code block start actions. + + + + + Count of code block end actions. + + + + + Count of code block actions. + + + + + Count of Operation actions. + + + + + Count of Operation block start actions. + + + + + Count of Operation block end actions. + + + + + Count of Operation block actions. + + + + + Returns true if there are any actions that need to run on executable code. + + + + + Contains the core execution logic for callbacks into analyzers. + + + + + Creates to execute analyzer actions with given arguments + + Compilation to be used in the analysis. + Analyzer options. + Optional delegate to add non-categorized analyzer diagnostics. + + Optional delegate which is invoked when an analyzer throws an exception. + Delegate can do custom tasks such as report the given analyzer exception diagnostic, report a non-fatal watson for the exception, etc. + + + Optional delegate which is invoked when an analyzer throws an exception as an exception filter. + Delegate can do custom tasks such as crash hosting process to create a dump. + + Delegate to determine if the given analyzer is compiler analyzer. + We need to special case the compiler analyzer at few places for performance reasons. + Analyzer manager to fetch supported diagnostics. + + Delegate to fetch the gate object to guard all callbacks into the analyzer. + It should return a unique gate object for the given analyzer instance for non-concurrent analyzers, and null otherwise. + All analyzer callbacks for non-concurrent analyzers will be guarded with a lock on the gate. + + Delegate to identify if analysis should be skipped on generated code. + Delegate to identify if diagnostic reported while analyzing generated code should be suppressed. + Flag indicating whether we need to log analyzer execution time. + Optional delegate to add categorized local analyzer diagnostics. + Optional delegate to add categorized non-local analyzer diagnostics. + Cancellation token. + + + + Creates to fetch . + + + Optional delegate which is invoked when an analyzer throws an exception. + Delegate can do custom tasks such as report the given analyzer exception diagnostic, report a non-fatal watson for the exception, etc. + + Analyzer manager to fetch supported diagnostics. + Flag indicating whether we need to log analyzer execution time. + Cancellation token. + + + + Executes the for the given analyzer. + + Analyzer to get session wide analyzer actions. + Session scope to store register session wide analyzer actions. + + Note that this API doesn't execute any registered by the Initialize invocation. + Use API + to get execute these actions to get the per-compilation analyzer actions. + + + + + Executes the compilation start actions. + + whose compilation start actions are to be executed. + Compilation scope to store the analyzer actions. + + + + Executes compilation actions or compilation end actions. + + Compilation actions to be executed. + Analyzer whose actions are to be executed. + Compilation event. + Scope for analyzer execution. + An optional object to track analysis state. + + + + Executes the symbol actions on the given symbol. + + Symbol actions to be executed. + Analyzer whose actions are to be executed. + Symbol event to be analyzed. + Delegate to get topmost declaration node for a symbol declaration reference. + Scope for analyzer execution. + An optional object to track analysis state. + Flag indicating if this is a generated code symbol. + + + + Executes the semantic model actions on the given semantic model. + + Semantic model actions to be executed. + Analyzer whose actions are to be executed. + Semantic model to analyze. + Compilation event for semantic model analysis. + Scope for analyzer execution. + An optional object to track analysis state. + Flag indicating if the syntax tree being analyzed is generated code. + + + + Executes the syntax tree actions on the given syntax tree. + + Syntax tree actions to be executed. + Analyzer whose actions are to be executed. + Syntax tree to analyze. + Scope for analyzer execution. + An optional object to track analysis state. + Flag indicating if the syntax tree being analyzed is generated code. + + + + Manages properties of analyzers (such as registered actions, supported diagnostics) for analyzer host's lifetime + and executes the callbacks into the analyzers. + + It ensures the following for the lifetime of analyzer host: + 1) is invoked only once per-analyzer. + 2) is invoked only once per-analyzer. + 3) registered during Initialize are invoked only once per-compilation per- + + + TODO: Consider moving and relevant APIs + out of the AnalyzerManager and into analyzer drivers. + + + + + Gets the default instance of the AnalyzerManager for the lifetime of the analyzer host process. + + + + + Cache descriptors for each diagnostic analyzer. We do this since is + a property rather than metadata. We expect it to be cheap and immutable, but we can't force them to be so, we cache them + and ask only once. + + + + + Get all the analyzer actions to execute for the given analyzer against a given compilation. + The returned actions include the actions registered during method as well as + the actions registered during for the given compilation. + + + + + Returns true if the given analyzer has enabled concurrent execution by invoking . + + + + + Returns for the given analyzer. + If an analyzer hasn't configured generated code analysis, returns . + + + + + Compute and exception handler for the given . + + + + + Return of given . + + + + + This method should be invoked when the analyzer host is disposing off the analyzers. + It unregisters the exception handler hooked up to the descriptors' LocalizableString fields and subsequently removes the cached descriptors for the analyzers. + + + + + Returns true if all the diagnostics that can be produced by this analyzer are suppressed through options. + + + + + The last event placed into a compilation's event queue. + + + + + Flush any cached data in this to minimize space usage (at the possible expense of time later). + The principal effect of this is to free cached information on events that have a . + + + + + The first event placed into a compilation's event queue. + + + + + Options to configure analyzer execution within . + + + + + Options passed to s. + + + + + An optional delegate to be invoked when an analyzer throws an exception. + + + + + An optional delegate to be invoked when an analyzer throws an exception as an exception filter. + + + + + Flag indicating whether analysis can be performed concurrently on multiple threads. + + + + + Flag indicating whether analyzer execution time should be logged. + + + + + Flag indicating whether analyzer diagnostics with should be reported. + + + + + Creates a new . + + Options that are passed to analyzers. + Action to invoke if an analyzer throws an exception. + Flag indicating whether analysis can be performed concurrently on multiple threads. + Flag indicating whether analyzer execution time should be logged. + + + + Creates a new . + + Options that are passed to analyzers. + Action to invoke if an analyzer throws an exception. + Flag indicating whether analysis can be performed concurrently on multiple threads. + Flag indicating whether analyzer execution time should be logged. + Flag indicating whether analyzer diagnostics with should be reported. + + + + Creates a new . + + Options that are passed to analyzers. + Action to invoke if an analyzer throws an exception. + Action to invoke if an analyzer throws an exception as an exception filter. + Flag indicating whether analysis can be performed concurrently on multiple threads. + Flag indicating whether analyzer execution time should be logged. + Flag indicating whether analyzer diagnostics with should be reported. + + + + Queue to store analyzer diagnostics on the . + + + + + Simple diagnostics queue: maintains all diagnostics reported by all analyzers in a single queue. + + + + + Categorized diagnostics queue: maintains separate set of simple diagnostic queues for local semantic, local syntax and non-local diagnostics for every analyzer. + + + + + Scope for setting up analyzers for an entire session, automatically associating actions with analyzers. + + + + + Scope for setting up analyzers for a compilation, automatically associating actions with analyzers. + + + + + Scope for setting up analyzers for a code block, automatically associating actions with analyzers. + + + + + Scope for setting up analyzers for an operation block, automatically associating actions with analyzers. + + + + + Scope for setting up analyzers for an entire session, capable of retrieving the actions. + + + + + Scope for setting up analyzers for a compilation, capable of retrieving the actions. + + + + + Scope for setting up analyzers for a code block, capable of retrieving the actions. + + + + + Actions registered by a particular analyzer. + + + + + Append analyzer actions from to actions from this instance. + + Analyzer actions to append. + + + + An event for each declaration in the program (namespace, type, method, field, parameter, etc). + Note that some symbols may have multiple declarations (namespaces, partial types) and may therefore + have multiple events. + + + + + Lockable object only instance is knowledgeable about. + + + + + Represents analyzers stored in an analyzer assembly file. + + + Analyzer are read from the file, owned by the reference, and doesn't change + since the reference is accessed until the reference object is garbage collected. + + If you need to manage the lifetime of the analyzer reference (and the file stream) explicitly use . + + + + + Creates an AnalyzerFileReference with the given and . + + Full path of the analyzer assembly. + Loader for obtaining the from the + + + + Adds the of of + for all languages defined in this assembly reference. + + + + + Adds the of defined in this assembly reference of given . + + + + + Opens the analyzer dll with the metadata reader and builds a map of language -> analyzer type names. + + The PE image format is invalid. + IO error reading the metadata. + + + + If a specific analyzer failed to load the namespace-qualified name of its type, null otherwise. + + + + + Error message. + + + + + Error code. + + + + + Exception that was thrown while loading the analyzer. May be null. + + + + + DiagnosticAnalyzer for compiler's syntax/semantic/compilation diagnostics. + + + + + Per-compilation DiagnosticAnalyzer for compiler's syntax/semantic/compilation diagnostics. + + + + + Driver to execute diagnostic analyzers for a given compilation. + It uses a of s to drive its analysis. + + + + + Create an analyzer driver. + + The set of analyzers to include in the analysis + A delegate that returns the language-specific kind for a given syntax node + AnalyzerManager to manage analyzers for the lifetime of analyzer host. + Delegate to identify if the given trivia is a comment. + + + + Represents an in-memory analyzer reference image. + + + + + Options passed to . + + + + + A set of additional non-code text files that can be used by analyzers. + + + + + Creates analyzer options to be passed to . + + A set of additional non-code text files that can be used by analyzers. + + + + Returns analyzer options with the given . + + + + + Represents an analyzer assembly reference that contains diagnostic analyzers. + + + Represents a logical location of the analyzer reference, not the content of the reference. + The content might change in time. A snapshot is taken when the compiler queries the reference for its analyzers. + + + + + Full path describing the location of the analyzer reference, or null if the reference has no location. + + + + + Path or name used in error messages to identity the reference. + + + Should not be null. + + + + + A unique identifier for this analyzer reference. + + + Should not be null. + Note that this and serve different purposes. An analyzer reference may not + have a path, but it always has an ID. Further, two analyzer references with different paths may + represent two copies of the same analyzer, in which case the IDs should also be the same. + + + + + Gets all the diagnostic analyzers defined in this assembly reference, irrespective of the language supported by the analyzer. + Use this method only if you need all the analyzers defined in the assembly, without a language context. + In most instances, either the analyzer reference is associated with a project or is being queried for analyzers in a particular language context. + If so, use method. + + + + + Gets all the diagnostic analyzers defined in this assembly reference for the given . + + Language name. + + + + Pool of s used for analyzer execution. + + + + + Contains the partial analysis state per-analyzer. It tracks: + 1. Global set of pending compilation events. This is used to populate the event queue for analyzer execution. + 2. Per-analyzer set of pending compilation events, symbols, declarations, etc. Each of these pending entities has a state object to track partial analysis. + + + + + Builder for storing current, possibly partial, analysis results: + 1. Diagnostics reported by analyzers. + 2. AnalyzerTelemetryInfo. + + + + + Set of exception diagnostics reported for exceptions thrown by the analyzers. + + + + + Lock to track the set of active tasks computing tree diagnostics and task computing compilation diagnostics. + + + + + Used to generate a unique token for each tree diagnostics request. + The token is used to determine the priority of each request. + Each new tree diagnostic request gets an incremented token value and has higher priority over other requests for the same tree. + Compilation diagnostics requests always have the lowest priority. + + + + + Map from active tasks computing tree diagnostics to their token number. + + + + + Pool of event queues to serve each diagnostics request. + + + + + Underlying with a non-null , used to drive analyzer execution. + + + + + Analyzers to execute on the compilation. + + + + + Options to configure analyzer execution. + + + + + An optional cancellation token which can be used to cancel analysis. + Note: This token is only used if the API invoked to get diagnostics doesn't provide a cancellation token. + + + + + Creates a new compilation by attaching diagnostic analyzers to an existing compilation. + + The original compilation. + The set of analyzers to include in future analyses. + Options that are passed to analyzers. + A cancellation token that can be used to abort analysis. + + + + Creates a new compilation by attaching diagnostic analyzers to an existing compilation. + + The original compilation. + The set of analyzers to include in future analyses. + Options to configure analyzer execution. + + + + Returns diagnostics produced by all . + + + + + Returns diagnostics produced by all . + + + + + Returns diagnostics produced by given . + + Analyzers whose diagnostics are required. All the given analyzers must be from the analyzers passed into the constructor of . + Cancellation token. + + + + Executes all and returns the corresponding with all diagnostics and telemetry info. + + + + + Executes the given and returns the corresponding with all diagnostics and telemetry info. + + Analyzers whose analysis results are required. All the given analyzers must be from the analyzers passed into the constructor of . + Cancellation token. + + + + Returns all diagnostics produced by compilation and by all . + + + + + Returns all diagnostics produced by compilation and by all . + + + + + Returns diagnostics produced by compilation actions of all . + + + + + Returns diagnostics produced by compilation actions of given . + + Analyzers whose diagnostics are required. All the given analyzers must be from the analyzers passed into the constructor of . + Cancellation token. + + + + Returns syntax diagnostics produced by all from analyzing the given . + Depending on analyzers' behavior, returned diagnostics can have locations outside the tree, + and some diagnostics that would be reported for the tree by an analysis of the complete compilation + can be absent. + + Syntax tree to analyze. + Cancellation token. + + + + Returns syntax diagnostics produced by given from analyzing the given . + Depending on analyzers' behavior, returned diagnostics can have locations outside the tree, + and some diagnostics that would be reported for the tree by an analysis of the complete compilation + can be absent. + + Syntax tree to analyze. + Analyzers whose diagnostics are required. All the given analyzers must be from the analyzers passed into the constructor of . + Cancellation token. + + + + Returns semantic diagnostics produced by all from analyzing the given , optionally scoped to a . + Depending on analyzers' behavior, returned diagnostics can have locations outside the tree, + and some diagnostics that would be reported for the tree by an analysis of the complete compilation + can be absent. + + Semantic model representing the syntax tree to analyze. + An optional span within the tree to scope analysis. + Cancellation token. + + + + Returns semantic diagnostics produced by all from analyzing the given , optionally scoped to a . + Depending on analyzers' behavior, returned diagnostics can have locations outside the tree, + and some diagnostics that would be reported for the tree by an analysis of the complete compilation + can be absent. + + Semantic model representing the syntax tree to analyze. + An optional span within the tree to scope analysis. + Analyzers whose diagnostics are required. All the given analyzers must be from the analyzers passed into the constructor of . + Cancellation token. + + + + Core method for executing analyzers. + + + + + Given a set of compiler or generated , returns the effective diagnostics after applying the below filters: + 1) specified for the given . + 2) specified for the given . + 3) Diagnostic suppression through applied . + 4) Pragma directives for the given . + + + + + Given a set of compiler or generated , returns the effective diagnostics after applying the below filters: + 1) specified for the given . + 2) specified for the given . + 3) Diagnostic suppression through applied . + 4) Pragma directives for the given . + + + + + Returns true if all the diagnostics that can be produced by this analyzer are suppressed through options. + Analyzer to be checked for suppression. + Compilation options. + + Optional delegate which is invoked when an analyzer throws an exception. + Delegate can do custom tasks such as report the given analyzer exception diagnostic, report a non-fatal watson for the exception, etc. + + + + + + This method should be invoked when the analyzer host is disposing off the given . + It clears the cached internal state (supported descriptors, registered actions, exception handlers, etc.) for analyzers. + + Analyzers whose state needs to be cleared. + + + + Gets telemetry info for the given analyzer, such as count of registered actions, the total execution time (if is true), etc. + + + + + Gets the count of registered actions for the analyzer. + + + + + Gets the execution time for the given analyzer. + + + + + Returns a new compilation with attached diagnostic analyzers. + + Compilation to which analyzers are to be added. + The set of analyzers to include in future analyses. + Options that are passed to analyzers. + A cancellation token that can be used to abort analysis. + + + + Returns a new compilation with attached diagnostic analyzers. + + Compilation to which analyzers are to be added. + The set of analyzers to include in future analyses. + Options to configure analyzer execution within . + + + + Represents an analyzer reference that can't be resolved. + + + For error reporting only, can't be used to reference an analyzer assembly. + + + + + Context for initializing an analyzer. + Analyzer initialization can use an to register actions to be executed at any of: + + + compilation start, + + + compilation end, + + + completion of parsing a code document, + + + completion of semantic analysis of a code document, + + + completion of semantic analysis of a symbol, + + + start of semantic analysis of a method body or an expression appearing outside a method body, + + + completion of semantic analysis of a method body or an expression appearing outside a method body, or + + + completion of semantic analysis of a syntax node. + + + + + + + Register an action to be executed at compilation start. + A compilation start action can register other actions and/or collect state information to be used in diagnostic analysis, + but cannot itself report any s. + + Action to be executed at compilation start. + + + + Register an action to be executed for a complete compilation. + A compilation action reports s about the . + + Action to be executed at compilation end. + + + + Register an action to be executed at completion of semantic analysis of a document, + which will operate on the of the document. A semantic model action + reports s about the model. + + Action to be executed for a document's . + + + + Register an action to be executed at completion of semantic analysis of an with an appropriate Kind. + A symbol action reports s about s. + + Action to be executed for an . + Action will be executed only if an 's Kind matches one of the values. + + + + Register an action to be executed at completion of semantic analysis of an with an appropriate Kind. + A symbol action reports s about s. + + Action to be executed for an . + Action will be executed only if an 's Kind matches one of the values. + + + + Register an action to be executed at the start of semantic analysis of a method body or an expression appearing outside a method body. + A code block start action can register other actions and/or collect state information to be used in diagnostic analysis, + but cannot itself report any s. + + Enum type giving the syntax node kinds of the source language for which the action applies. + Action to be executed at the start of semantic analysis of a code block. + + + + Register an action to be executed after semantic analysis of a method body or an expression appearing outside a method body. + A code block action reports s about code blocks. + + Action to be executed for a code block. + + + + Register an action to be executed at completion of parsing of a code document. + A syntax tree action reports s about the of a document. + + Action to be executed at completion of parsing of a document. + + + + Register an action to be executed at completion of semantic analysis of a with an appropriate Kind. + A syntax node action can report s about s, and can also collect + state information to be used by other syntax node actions or code block end actions. + + Enum type giving the syntax node kinds of the source language for which the action applies. + Action to be executed at completion of semantic analysis of a . + Action will be executed only if a 's Kind matches one of the syntax kind values. + + + + Register an action to be executed at completion of semantic analysis of a with an appropriate Kind. + A syntax node action can report s about s, and can also collect + state information to be used by other syntax node actions or code block end actions. + + Enum type giving the syntax node kinds of the source language for which the action applies. + Action to be executed at completion of semantic analysis of a . + Action will be executed only if a 's Kind matches one of the syntax kind values. + + + + Register an action to be executed at the start of semantic analysis of a method body or an expression appearing outside a method body. + An operation block start action can register other actions and/or collect state information to be used in diagnostic analysis, + but cannot itself report any s. + + Action to be executed at the start of semantic analysis of an operation block. + + + + Register an action to be executed after semantic analysis of a method body or an expression appearing outside a method body. + An operation block action reports s about operation blocks. + + Action to be executed for an operation block. + + + + Register an action to be executed at completion of semantic analysis of an with an appropriate Kind. + An operation action can report s about s, and can also collect + state information to be used by other operation actions or code block end actions. + + Action to be executed at completion of semantic analysis of an . + Action will be executed only if an 's Kind matches one of the operation kind values. + + + + Register an action to be executed at completion of semantic analysis of an with an appropriate Kind. + An operation action can report s about s, and can also collect + state information to be used by other operation actions or code block end actions. + + Action to be executed at completion of semantic analysis of an . + Action will be executed only if an 's Kind matches one of the operation kind values. + + + + Enable concurrent execution of analyzer actions registered by this analyzer. + An analyzer that registers for concurrent execution can have better performance than a non-concurrent analyzer. + However, such an analyzer must ensure that its actions can execute correctly in parallel. + + + Even when an analyzer registers for concurrent execution, certain related actions are *never* executed concurrently. + For example, end actions registered on any analysis unit (compilation, code block, operation block, etc.) are by definition semantically dependent on analysis from non-end actions registered on the same analysis unit. + Hence, end actions are never executed concurrently with non-end actions operating on the same analysis unit. + + + + + Configure analysis mode of generated code for this analyzer. + Non-configured analyzers will default to an appropriate default mode for generated code. + It is recommended for the analyzer to invoke this API with the required setting. + + + + + Attempts to compute or get the cached value provided by the given for the given . + Note that the pair {, } acts as the key. + Reusing the same instance across analyzer actions and/or analyzer instances can improve the overall analyzer performance by avoiding recomputation of the values. + + The type of the value associated with the key. + for which the value is queried. + Provider that computes the underlying value. + Value associated with the key. + Returns true on success, false otherwise. + + + + Flags to configure mode of generated code analysis. + + + + + Disable analyzer action callbacks and diagnostic reporting for generated code. + Analyzer driver will not make callbacks into the analyzer for entities (source files, symbols, etc.) that it classifies as generated code. + Additionally, any diagnostic reported by the analyzer with location in generated code will not be reported. + + + + + Enable analyzer action callbacks for generated code. + Analyzer driver will make callbacks into the analyzer for all entities (source files, symbols, etc.) in the compilation, including generated code. + + + + + Enable reporting diagnostics on generated code. + Analyzer driver will not suppress any analyzer diagnostic based on whether or not it's location is in generated code. + + + + + Context for a compilation start action. + A compilation start action can use a to register actions to be executed at any of: + + + compilation end, + + + completion of parsing a code document, + + + completion of semantic analysis of a code document, + + + completion of semantic analysis of a symbol, + + + start of semantic analysis of a method body or an expression appearing outside a method body, + + + completion of semantic analysis of a method body or an expression appearing outside a method body, or + + + completion of semantic analysis of a syntax node. + + + + + + + that is the subject of the analysis. + + + + + Options specified for the analysis. + + + + + Token to check for requested cancellation of the analysis. + + + + + Register an action to be executed at compilation end. + A compilation end action reports s about the . + + Action to be executed at compilation end. + + + + Register an action to be executed at completion of semantic analysis of a document, + which will operate on the of the document. A semantic model action + reports s about the model. + + Action to be executed for a document's . + + + + Register an action to be executed at completion of semantic analysis of an with an appropriate Kind. + A symbol action reports s about s. + + Action to be executed for an . + Action will be executed only if an 's Kind matches one of the values. + + + + Register an action to be executed at completion of semantic analysis of an with an appropriate Kind. + A symbol action reports s about s. + + Action to be executed for an . + Action will be executed only if an 's Kind matches one of the values. + + + + Register an action to be executed at the start of semantic analysis of a method body or an expression appearing outside a method body. + A code block start action can register other actions and/or collect state information to be used in diagnostic analysis, + but cannot itself report any s. + + Enum type giving the syntax node kinds of the source language for which the action applies. + Action to be executed at the start of semantic analysis of a code block. + + + + Register an action to be executed at the end of semantic analysis of a method body or an expression appearing outside a method body. + A code block action reports s about code blocks. + + Action to be executed for a code block. + + + + Register an action to be executed at the start of semantic analysis of a method body or an expression appearing outside a method body. + An operation block start action can register other actions and/or collect state information to be used in diagnostic analysis, + but cannot itself report any s. + + Action to be executed at the start of semantic analysis of an operation block. + + + + Register an action to be executed after semantic analysis of a method body or an expression appearing outside a method body. + An operation block action reports s about operation blocks. + + Action to be executed for an operation block. + + + + Register an action to be executed at completion of parsing of a code document. + A syntax tree action reports s about the of a document. + + Action to be executed at completion of parsing of a document. + + + + Register an action to be executed at completion of semantic analysis of a with an appropriate Kind. + A syntax node action can report s about s, and can also collect + state information to be used by other syntax node actions or code block end actions. + + Enum type giving the syntax node kinds of the source language for which the action applies. + Action to be executed at completion of semantic analysis of a . + Action will be executed only if a 's Kind matches one of the syntax kind values. + + + + Register an action to be executed at completion of semantic analysis of a with an appropriate Kind. + A syntax node action can report s about s, and can also collect + state information to be used by other syntax node actions or code block end actions. + + Enum type giving the syntax node kinds of the source language for which the action applies. + Action to be executed at completion of semantic analysis of a . + Action will be executed only if a 's Kind matches one of the syntax kind values. + + + + Register an action to be executed at completion of semantic analysis of an with an appropriate Kind. + An operation action can report s about s, and can also collect + state information to be used by other operation actions or code block end actions. + + Action to be executed at completion of semantic analysis of an . + Action will be executed only if an 's Kind matches one of the operation kind values. + + + + Register an action to be executed at completion of semantic analysis of an with an appropriate Kind. + An operation action can report s about s, and can also collect + state information to be used by other operation actions or code block end actions. + + Action to be executed at completion of semantic analysis of an . + Action will be executed only if an 's Kind matches one of the operation kind values. + + + + Attempts to compute or get the cached value provided by the given for the given . + Note that the pair {, } acts as the key. + Reusing the same instance across analyzer actions and/or analyzer instances can improve the overall analyzer performance by avoiding recomputation of the values. + + The type of the value associated with the key. + for which the value is queried. + Provider that computes the underlying value. + Value associated with the key. + Returns true on success, false otherwise. + + + + Attempts to compute or get the cached value provided by the given for the given . + Note that the pair {, } acts as the key. + Reusing the same instance across analyzer actions and/or analyzer instances can improve the overall analyzer performance by avoiding recomputation of the values. + + The type of the value associated with the key. + instance for which the value is queried. + Provider that computes the underlying value. + Value associated with the key. + Returns true on success, false otherwise. + + + + Context for a compilation action or compilation end action. + A compilation action or compilation end action can use a to report s about a . + + + + + that is the subject of the analysis. + + + + + Options specified for the analysis. + + + + + Token to check for requested cancellation of the analysis. + + + + + Report a about a . + + to be reported. + + + + Attempts to compute or get the cached value provided by the given for the given . + Note that the pair {, } acts as the key. + Reusing the same instance across analyzer actions and/or analyzer instances can improve the overall analyzer performance by avoiding recomputation of the values. + + The type of the value associated with the key. + for which the value is queried. + Provider that computes the underlying value. + Value associated with the key. + Returns true on success, false otherwise. + + + + Attempts to compute or get the cached value provided by the given for the given . + Note that the pair {, } acts as the key. + Reusing the same instance across analyzer actions and/or analyzer instances can improve the overall analyzer performance by avoiding recomputation of the values. + + The type of the value associated with the key. + for which the value is queried. + Provider that computes the underlying value. + Value associated with the key. + Returns true on success, false otherwise. + + + + Context for a semantic model action. + A semantic model action operates on the of a code document, and can use a to report s about the model. + + + + + that is the subject of the analysis. + + + + + Options specified for the analysis. + + + + + Token to check for requested cancellation of the analysis. + + + + + Report a about a . + + to be reported. + + + + Context for a symbol action. + A symbol action can use a to report s about an . + + + + + that is the subject of the analysis. + + + + + containing the . + + + + + Options specified for the analysis. + + + + + Token to check for requested cancellation of the analysis. + + + + + Report a about an . + + to be reported. + + + + Context for a code block start action. + A code block start action can use a to register actions to be executed + at any of: + + + completion of semantic analysis of a method body or an expression appearing outside a method body, or + + + completion of semantic analysis of a syntax node. + + + + + + + Method body or expression subject to analysis. + + + + + for which the code block provides a definition or value. + + + + + that can provide semantic information about the s in the code block. + + + + + Options specified for the analysis. + + + + + Token to check for requested cancellation of the analysis. + + + + + Register an action to be executed at the end of semantic analysis of a method body or an expression appearing outside a method body. + A code block end action reports s about code blocks. + + Action to be executed at the end of semantic analysis of a code block. + + + + Register an action to be executed at completion of semantic analysis of a with an appropriate Kind. + A syntax node action can report s about s, and can also collect + state information to be used by other syntax node actions or code block end actions. + + Action to be executed at completion of semantic analysis of a . + Action will be executed only if a 's Kind matches one of the syntax kind values. + + + + Register an action to be executed at completion of semantic analysis of a with an appropriate Kind. + A syntax node action can report s about s, and can also collect + state information to be used by other syntax node actions or code block end actions. + + Action to be executed at completion of semantic analysis of a . + Action will be executed only if a 's Kind matches one of the syntax kind values. + + + + Context for a code block action or code block end action. + A code block action or code block end action can use a to report s about a code block. + + + + + Code block that is the subject of the analysis. + + + + + for which the code block provides a definition or value. + + + + + that can provide semantic information about the s in the code block. + + + + + Options specified for the analysis. + + + + + Token to check for requested cancellation of the analysis. + + + + + Report a about a code block. + + to be reported. + + + + Context for an operation block start action. + An operation block start action can use an to register actions to be executed + at any of: + + + completion of semantic analysis of a method body or an expression appearing outside a method body, or + + + completion of semantic analysis of an operation. + + + + + + + Method body and/or expressions subject to analysis. + + + + + for which the code block provides a definition or value. + + + + + containing the operation block. + + + + + Options specified for the analysis. + + + + + Token to check for requested cancellation of the analysis. + + + + + Register an action to be executed at the end of semantic analysis of a method body or an expression appearing outside a method body. + A code block end action reports s about code blocks. + + Action to be executed at the end of semantic analysis of a code block. + + + + Register an action to be executed at completion of semantic analysis of an operation with an appropriate Kind. + An operation action can report s about s, and can also collect + state information to be used by other operation actions or operation block end actions. + + Action to be executed at completion of semantic analysis of an . + Action will be executed only if an 's Kind matches one of the operation kind values. + + + + Register an action to be executed at completion of semantic analysis of an with an appropriate Kind. + An operation action can report s about s, and can also collect + state information to be used by other operation actions or operation block end actions. + + Action to be executed at completion of semantic analysis of an . + Action will be executed only if an 's Kind matches one of the operation kind values. + + + + Context for an operation block action or operation block end action. + An operation block action or operation block end action can use an to report s about an operation block. + + + + + Code block that is the subject of the analysis. + + + + + for which the code block provides a definition or value. + + + + + containing the operation block. + + + + + Options specified for the analysis. + + + + + Token to check for requested cancellation of the analysis. + + + + + Report a about a code block. + + to be reported. + + + + Context for a syntax tree action. + A syntax tree action can use a to report s about a for a code document. + + + + + that is the subject of the analysis. + + + + + Options specified for the analysis. + + + + + Token to check for requested cancellation of the analysis. + + + + + Report a about a . + + to be reported. + + + + Context for a syntax node action. + A syntax node action can use a to report s for a . + + + + + that is the subject of the analysis. + + + + + for the declaration containing the syntax node. + + + + + that can provide semantic information about the . + + + + + containing the . + + + + + Options specified for the analysis. + + + + + Token to check for requested cancellation of the analysis. + + + + + Report a about a . + + to be reported. + + + + Context for an operation action. + An operation action can use an to report s for an . + + + + + that is the subject of the analysis. + + + + + for the declaration containing the operation. + + + + + containing the . + + + + + Options specified for the analysis. + + + + + Token to check for requested cancellation of the analysis. + + + + + Report a about a . + + to be reported. + + + + The base type for diagnostic analyzers. + + + + + Returns a set of descriptors for the diagnostics that this analyzer is capable of producing. + + + + + Called once at session start to register actions in the analysis context. + + + + + + A queue whose enqueue and dequeue operations can be performed in parallel. + + The type of values kept by the queue. + + + + The number of unconsumed elements in the queue. + + + + + Adds an element to the tail of the queue. This method will throw if the queue + is completed. + + The queue is already completed. + The value to add. + + + + Tries to add an element to the tail of the queue. This method will return false if the queue + is completed. + + The value to add. + + + + Attempts to dequeue an existing item and return whether or not it was available. + + + + + Gets a value indicating whether the queue has completed. + + + + + Signals that no further elements will be enqueued. All outstanding and future + Dequeue Task will be cancelled. + + The queue is already completed. + + + + Same operation as except it will not + throw if the queue is already completed. + + Whether or not the operation succeeded. + + + + Gets a task that transitions to a completed state when or + is called. This transition will not happen synchronously. + + This Task will not complete until it has completed all existing values returned + from . + + + + + Gets a task whose result is the element at the head of the queue. If the queue + is empty, the returned task waits for an element to be enqueued. If + is called before an element becomes available, the returned task is cancelled. + + + + + + Note: The early cancellation behavior is intentional. + + + + + Place this attribute onto a type to cause it to be considered a diagnostic analyzer. + + + + + The source languages to which this analyzer applies. See . + + + + + Attribute constructor used to specify automatic application of a diagnostic analyzer. + + One language to which the analyzer applies. + Additional languages to which the analyzer applies. See . + + + + Implements a map from an assembly identity to a value. The map allows to look up the value by an identity + that either exactly matches the original identity key, or corresponds to a key with the lowest version among identities + with higher version than the requested identity key. + + + + + Represents a visitor that visits only the single IOperation + passed into its Visit method. + + + + + Represents a visitor that visits only the single IOperation + passed into its Visit method with an additional argument of the type specified by the + parameter and produces a value of the type specified by + the parameter. + + + The type of the additional argument passed to this visitor's Visit method. + + + The type of the return value of this visitor's Visit method. + + + + + Represents a that descends an entire tree + visiting each IOperation and its child IOperation nodes in depth-first order. + + + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Arguments of the invocation, excluding the instance argument. Arguments are in parameter order, + and params/ParamArray arguments have been collected into arrays. Default values are supplied for + optional arguments missing in source. + + + + + Find the argument supplied for a given parameter of the target method. + + Parameter of the target method. + Argument corresponding to the parameter. + + + + Represents a C# or VB method invocation. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Method to be invoked. + + + + + 'This' or 'Me' instance to be supplied to the method, or null if the method is static. + + + + + True if the invocation uses a virtual mechanism, and false otherwise. + + + + + Arguments of the invocation, excluding the instance argument. Arguments are in the order specified in source, + and params/ParamArray arguments have been collected into arrays. Arguments are not present + unless supplied in source. + + + + + Represents an argument in a method invocation. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Kind of argument. + + + + + Parameter the argument matches. + + + + + Value supplied for the argument. + + + + + Conversion applied to the argument value passing it into the target method. Applicable only to VB Reference arguments. + + + + + Conversion applied to the argument value after the invocation. Applicable only to VB Reference arguments. + + + + + Kinds of arguments. + + + + + Argument is specified positionally and matches the parameter of the same ordinality. + + + + + Argument is specified by name and matches the parameter of the same name. + + + + + Argument becomes an element of an array that matches a trailing C# params or VB ParamArray parameter. + + + + + Argument was omitted in source but has a default value supplied automatically. + + + + + Represents a reference to an array element. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Array to be indexed. + + + + + Indices that specify an individual element. + + + + + Represents a reference through a pointer. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Pointer to be dereferenced. + + + + + Represents a reference to a declared local variable. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Referenced local variable. + + + + + Represents a reference to a parameter. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Referenced parameter. + + + + + Represents a reference to a local variable synthesized by language analysis. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Kind of the synthetic local. + + + + + Statement defining the lifetime of the synthetic local. + + + + + Kinds of synthetic local references. + + + + + Created to capture the step value of a VB for loop. + + + + + Created to capture the limit value of a VB for loop. + + + + + Represents a C# this or base expression, or a VB Me, MyClass, or MyBase expression. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + + Kind of instance reference. + + + + Indicates an implicit this or Me expression. + + + Indicates an explicit this or Me expression. + + + Indicates an explicit base or MyBase expression. + + + Indicates an explicit MyClass expression. + + + + Represents a reference to a member of a class, struct, or interface. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Instance of the type. Null if the reference is to a static/shared member. + + + + + Referenced member. + + + + + Represents a reference to a field. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Referenced field. + + + + + Represents a reference to a method other than as the target of an invocation. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Referenced method. + + + + + Indicates whether the reference uses virtual semantics. + + + + + Represents a reference to a property. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Referenced property. + + + + + Represents a reference to an indexed property. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Represents a reference to an event. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Referenced event. + + + + + Represents a binding of an event. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Event being bound. + + + + + Instance used to refer to the event being bound. + + + + + Handler supplied for the event. + + + + + True for adding a binding, false for removing one. + + + + + Represents an expression that includes a ? or ?. conditional access instance expression. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Expression to be evaluated if the conditional instance is non null. + + + + + Expresson that is conditionally accessed. + + + + + Represents the value of a conditionally-accessed expression within an expression containing a conditional access. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Represents a general placeholder when no more specific kind of placeholder is available. + A placeholder is an expression whose meaning is inferred from context. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Represents a unary, binary, relational, or conversion operation that can use an operator method. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + True if and only if the operation is performed by an operator method. + + + + + Operation method used by the operation, null if the operation does not use an operator method. + + + + + Represents an operation with one operand. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Kind of unary operation. + + + + + Single operand. + + + + + Kinds of unary operations. + + + + + Represents an operation with two operands that produces a result with the same type as at least one of the operands. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Kind of binary operation. + + + + + Left operand. + + + + + Right operand. + + + + + Kinds of binary operations. + + + + + Get unary operation kind independent of data type. + + + + + Get unary operation kind independent of data type. + + + + + Get unary operand kind. + + + + + Get unary operand kind. + + + + + Get binary operation kind independent of data type. + + + + + Get binary operation kind independent of data type. + + + + + Get binary operand kinds. + + + + + Get binary operand kinds. + + + + + Represents a conversion operation. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Value to be converted. + + + + + Kind of conversion. + + + + + True if and only if the conversion is indicated explicity by a cast operation in the source code. + + + + + Kinds of conversions. + + + + + Conversion is defined by the underlying type system and throws an exception if it fails. + + + + + Conversion is defined by the underlying type system and produces a null result if it fails. + + + + + Conversion has VB-specific semantics. + + + + + Conversion has C#-specific semantics. + + + + + Conversion is implemented by a conversion operator method. + + + + + Conversion is invalid. + + + + + Represents a C# ?: or VB If expression. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Condition to be tested. + + + + + Value evaluated if the Condition is true. + + + + + Value evaluated if the Condition is false. + + + + + Represents a null-coalescing expression. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Value to be unconditionally evaluated. + + + + + Value to be evaluated if Primary evaluates to null/Nothing. + + + + + Represents an expression that tests if a value is of a specific type. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Value to test. + + + + + Type for which to test. + + + + + Represents an expression operating on a type. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Type operand. + + + + + Represents a SizeOf expression. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Represents a TypeOf expression. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Represents a lambda expression. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Signature of the lambda. + + + + + Body of the lambda. + + + + + Represents a textual literal numeric, string, etc. expression. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Textual representation of the literal. + + + + + Represents an await expression. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Value to be awaited. + + + + + Represents an expression that creates a pointer value by taking the address of a reference. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Addressed reference. + + + + + Represents a new/New expression. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Constructor to be invoked on the created instance. + + + + + Explicitly-specified member initializers. + + + + + Represents an initializer for a field, property, or parameter. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Represents an initialization of a field. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Initialized fields. There can be multiple fields for Visual Basic fields declared with As New. + + + + + Represents an initialization of a property. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Set method used to initialize the property. + + + + + Represents an initialization of a parameter at the point of declaration. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Initialized parameter. + + + + + Represents the creation of an array instance. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Element type of the created array instance. + + + + + Sizes of the dimensions of the created array instance. + + + + + Values of elements of the created array instance. + + + + + Represents the initialization of an array instance. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Values to initialize array elements. + + + + + Represents an assignment expression. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Target of the assignment. + + + + + Value to be assigned to the target of the assignment. + + + + + Represents an assignment expression that includes a binary operation. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Kind of binary operation. + + + + + Represents an increment expression. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Kind of increment. + + + + + Represents a parenthesized expression. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Operand enclosed in parentheses. + + + + + Represents a late-bound reference to a member of a class or struct. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Instance used to bind the member reference. + + + + + Name of the member. + + + + + Represents an argument value that has been omitted in an invocation. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Represents a block scope. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Statements contained within the block. + + + + + Local declarations contained within the block. + + + + + Represents a local variable declaration statement. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Variables declared by the statement. + + + + + Represents a local variable declaration. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Variable declared by the declaration. + + + + + Initializer of the variable. + + + + + Represents a C# switch or VB Select Case statement. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Value to be switched upon. + + + + + Cases of the switch. + + + + + Represents a C# case or VB Case statement. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Clauses of the case. For C# there is one clause per case, but for VB there can be multiple. + + + + + Statements of the case. + + + + + Represents a clause of a C# case or a VB Case. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Kind of the clause. + + + + + Kinds of cases. + + + + + Indicates case x in C# or Case x in VB. + + + + + Indicates Case Is op x in VB. + + + + + Indicates Case x To Y in VB. + + + + + Indicates default in C# or Case Else in VB. + + + + + Represents case x in C# or Case x in VB. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Case value. + + + + + Relational operator used to compare the switch value with the case value. + + + + + Represents Case Is op x in VB. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Case value. + + + + + Relational operator used to compare the switch value with the case value. + + + + + Represents Case x To y in VB. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Minimum value of the case range. + + + + + Maximum value of the case range. + + + + + Represents an if statement in C# or an If statement in VB. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Condition of the if statement. For C# there is naturally one clause per if, but for VB If statements with multiple clauses are rewritten to have only one. + + + + + Statement executed if the condition is true. + + + + + Statement executed if the condition is false. + + + + + Represents a C# while, for, foreach, or do statement, or a VB While, For, For Each, or Do statement. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Kind of the loop. + + + + + Body of the loop. + + + + + Kinds of loops. + + + + + Indicates a C# while or do loop, or a VB While or Do loop. + + + + + Indicates a C# for loop or a VB For loop. + + + + + Indicates a C# foreach loop or a VB For Each loop. + + + + + Represents a C# while, for, or do statement, or a VB While, For, or Do statement. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Condition of the loop. + + + + + Represents a C# while or do statement, or a VB While or Do statement. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + True if the loop test executes at the top of the loop; false if the loop test executes at the bottom of the loop. + + + + + True if the loop is a while loop; false if the loop is an until loop. + + + + + Represents a C# for statement or a VB For statement. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Statements to execute before entry to the loop. For C# these come from the first clause of the for statement. For VB these initialize the index variable of the For statement. + + + + + Statements to execute at the bottom of the loop. For C# these come from the third clause of the for statement. For VB these increment the index variable of the For statement. + + + + + Declarations local to the loop. + + + + + Represents a C# foreach statement or a VB For Each staement. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Iteration variable of the loop. + + + + + Collection value over which the loop iterates. + + + + + Represents a C# or VB label statement. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Label that can be the target of branches. + + + + + Statement that has been labeled. + + + + + Represents a C# goto, break, or continue statement, or a VB GoTo, Exit ***, or Continue *** statement + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Label that is the target of the branch. + + + + + Kind of the branch. + + + + + Represents a C# throw or a VB Throw statement. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Value to be thrown. + + + + + Represents a C# return or a VB Return statement. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Value to be returned. + + + + + Represents a C# lock or a VB SyncLock statement. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Value to be locked. + + + + + Body of the lock, to be executed while holding the lock. + + + + + Represents a C# try or a VB Try statement. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Body of the try, over which the handlers are active. + + + + + Catch clauses of the try. + + + + + Finally handler of the try. + + + + + Represents a C# catch or VB Catch clause. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Body of the exception handler. + + + + + Type of exception to be handled. + + + + + Filter expression to be executed to determine whether to handle the exception. + + + + + Symbol for the local catch variable bound to the caught exception. + + + + + Represents a C# using or VB Using statement. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Body of the using, over which the resources of the using are maintained. + + + + + Declaration introduced by the using statement. Null if the using statement does not declare any variables. + + + + + Resource held by the using. Can be null if Declaration is not null. + + + + + Represents a C# fixed staement. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Variables to be fixed. + + + + + Body of the fixed, over which the variables are fixed. + + + + + Represents a C# or VB statement that consists solely of an expression. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Expression of the statement. + + + + + Represents a VB With statement. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Body of the with. + + + + + Value to whose members leading-dot-qualified references within the with body bind. + + + + + Reprsents an empty statement. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Represents a VB Stop statement. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Represents a VB End statemnt. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Represents a syntactically or semantically invalid C# or VB statement. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + A set of utilities for converting from a decimal floating-point literal string to its IEEE float + or double representation, which coniders all digits signficant and correctly rounds according to + the IEEE round-to-nearest-ties-to-even mode. This code does not support a leading sign character, + as that is not part of the C# or VB floating-point literal lexical syntax. + + If you change this code, please run the set of long-running random tests in the solution + RandomRealParserTests.sln. That solution is not included in Roslyn.sln as it is Windows-specific. + + + + + Try parsing a correctly-formatted double floating-point literal into the nearest representable double + using IEEE round-to-nearest-ties-to-even rounding mode. Behavior is not defined for inputs that are + not valid C# floating-point literals. + + The decimal floating-point constant's string + The nearest double value, if conversion succeeds + True if the input was converted; false if there was an overflow + + + + Try parsing a correctly-formatted float floating-point literal into the nearest representable float + using IEEE round-to-nearest-ties-to-even rounding mode. Behavior is not defined for inputs that are + not valid C# floating-point literals. + + The float floating-point constant's string + The nearest float value, if conversion succeeds + True if the input was converted; false if there was an overflow + + + + Properties of an IEEE floating-point representation. + + + + + Converts the floating point value 0.mantissa * 2^exponent into the + correct form for the FloatingPointType and stores the bits of the resulting value + into the result object. + The caller must ensure that the mantissa and exponent are correctly computed + such that either [1] the most significant bit of the mantissa is in the + correct position for the FloatingType, or [2] the exponent has been correctly + adjusted to account for the shift of the mantissa that will be required. + + This function correctly handles range errors and stores a zero or infinity in + the result object on underflow and overflow errors, respectively. This + function correctly forms denormal numbers when required. + + If the provided mantissa has more bits of precision than can be stored in the + result object, the mantissa is rounded to the available precision. Thus, if + possible, the caller should provide a mantissa with at least one more bit of + precision than is required, to ensure that the mantissa is correctly rounded. + (The caller should not round the mantissa before calling this function.) + + The bits of the mantissa + The exponent + Whether there are any nonzero bits past the supplied mantissa + Where the bits of the floating-point number are stored + A status indicating whether the conversion succeeded and why + + + + Properties of a C# float. + + + + + Properties of a C# double. + + + + + This type is used to hold a partially-parsed string representation of a + floating point number. The number is stored in the following form: +
+                0.Mantissa * 10^Exponent
+             
+ The Mantissa buffer stores the mantissa digits as characters in a string. + The MantissaCount gives the number of digits present in the Mantissa buffer. + There shall be neither leading nor trailing zero digits in the Mantissa. + Note that this represents only nonnegative floating-point literals; the + negative sign in C# and VB is actually a separate unary negation operator. +
+
+ + + Create a DecimalFloatingPointString from a string representing a floating-point literal. + + The text of the floating-point literal + + + + Convert a DecimalFloatingPointString to the bits of the given floating-point type. + + + + + This function is part of the fast track for integer floating point strings. + It takes an integer stored as an array of bytes (lsb first) and converts the value into its FloatingType + representation, storing the bits into "result". If the value is not + representable, +/-infinity is stored and overflow is reported (since this + function only deals with integers, underflow is impossible). + + the bits of the integer, least significant bits first + the number of bits of precision in integerValueAsBytes + whether there are nonzero digits after the decimal + the kind of real number to build + the result + An indicator of the kind of result + + + + Parse a sequence of digits into a BigInteger. + + The DecimalFloatingPointString containing the digits in its Mantissa + The index of the first digit to convert + The index just past the last digit to convert + The BigInteger result + + + + Return the number of significant bits set. + + + + + Return the number of significant bits set. + + + + + Return the number of significant bits set. + + + + + Return the number of significant bits set. + + + + + Computes value / 2^shift, then rounds the result according to the current + rounding mode. By the time we call this function, we will already have + discarded most digits. The caller must pass true for has_zero_tail if + all discarded bits were zeroes. + + The value to shift + The amount of shift + Whether there are any less significant nonzero bits in the value + + + + + Determines whether a mantissa should be rounded up in the + round-to-nearest-ties-to-even mode given [1] the value of the least + significant bit of the mantissa, [2] the value of the next bit after + the least significant bit (the "round" bit) and [3] whether any + trailing bits after the round bit are set. + + The mantissa is treated as an unsigned integer magnitude. + + For this function, "round up" is defined as "increase the magnitude" of the + mantissa. + + the least-significant bit of the representable value + the bit following the least-significant bit + true if there are any (less significant) bits set following roundBit + + + + + Multiply a BigInteger by the given power of two. + + The BigInteger to multiply by a power of two and replace with the product + The power of two to multiply it by + + + + Multiply a BigInteger by the given power of ten. + + The BigInteger to multiply by a power of ten and replace with the product + The power of ten to multiply it by + + + + Convert a float value to the bits of its representation + + + + + Convert the bits of its representation to a float + + + + + A union used to convert between a float and the bits of its representation + + + + + Adds aliases of a specified reference to the merged set of aliases. + Consider the following special cases: + + o {} + {} = {} + If neither reference has any aliases then the result has no aliases. + + o {A} + {} = {A, global} + {} + {A} = {A, global} + + If one and only one of the references has aliases we add the global alias since the + referenced declarations should now be accessible both via existing aliases + as well as unqualified. + + o {A, A} + {A, B, B} = {A, A, B, B} + We preserve dups in each alias array, but avoid making more dups when merging. + + + + + Try to retrieve the public key from a crypto blob. + + + Can be either a PUBLICKEYBLOB or PRIVATEKEYBLOB. The BLOB must /// be unencrypted. + + + + + Represents a source assembly symbol exposed by the compiler. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Interface implemented by any node that is the root 'CompilationUnit' of a . i.e. + any node returned by where + is true will implement this interface. + + This interface provides a common way to both easily find the root of a + given any , as well as a common way for handling the special + that is needed to store all final trivia in a + that is not owned by any other . + + + + + Represents the end of the source file. This may have + (whitespace, comments, directives) attached to it. + + + + + Represents structured trivia that contains skipped tokens. This is implemented by + and + . + + + + + Append chunk to writer (may reuse char array) + + + + + Encoding to use when there is no byte order mark (BOM) on the stream. This encoder may throw a + if the stream contains invalid UTF-8 bytes. + + + + + Encoding to use when UTF-8 fails. We try to find the following, in order, if available: + 1. The default ANSI codepage + 2. CodePage 1252. + 3. Latin1. + + + + + Initializes an instance of from the provided stream. This version differs + from in two ways: + 1. It attempts to minimize allocations by trying to read the stream into a byte array. + 2. If is null, it will first try UTF8 and, if that fails, it will + try CodePage 1252. If CodePage 1252 is not available on the system, then it will try Latin1. + + The stream containing encoded text. + + Specifies an encoding to be used if the actual encoding can't be determined from the stream content (the stream doesn't start with Byte Order Mark). + If not specified auto-detect heuristics are used to determine the encoding. If these heuristics fail the decoding is assumed to be Encoding.Default. + Note that if the stream starts with Byte Order Mark the value of is ignored. + + Hash algorithm used to calculate document checksum. + + The stream content can't be decoded using the specified , or + is null and the stream appears to be a binary file. + + An IO error occurred while reading from the stream. + + + + Try to create a from the given stream using the given encoding. + + The input stream containing the encoded text. The stream will not be closed. + The expected encoding of the stream. The actual encoding used may be different if byte order marks are detected. + The checksum algorithm to use. + Throw if binary (non-text) data is detected. + The decoded from the stream. + The decoder was unable to decode the stream with the given encoding. + + internal for unit testing + + + + + Some streams are easily represented as byte arrays. + + The stream + + The contents of as a byte array or null if the stream can't easily + be read into a byte array. + + + + + If the MemoryStream was created with publiclyVisible=true, then we can access its buffer + directly and save allocations in StreamReader. The input MemoryStream is not closed on exit. + + True if a byte array could be created. + + + + Read the contents of a FileStream into a byte array. + + The FileStream with encoded text. + A byte array filled with the contents of the file. + True if a byte array could be created. + + + + Computes line starts faster given already computed line starts from text before the change. + + + + + A composite of a sequence of s. + + + + + Validates the arguments passed to against the published contract. + + True if should bother to proceed with copying. + + + + Reduces the number of segments toward the target number of segments, + if the number of regments is deemed to be too large (beyond the maximum). + + + + + Determines the segment size to use for call to CombineSegments, that will result in the segment count + being reduced to less than or equal to the target segment count. + + + + + Determines the segment count that would result if the segments of size less than or equal to + the specified segment size were to be combined. + + + + + Combines contiguous segments with lengths that are each less than or equal to the specified segment size. + + + + + Compute total text length and total size of storage buffers held + + + + + Trim excessive inaccessible text. + + + + + A optimized for very large sources. The text is stored as + a list of chunks (char arrays). + + + + + internal for unit testing + + + + + Check for occurrence of two consecutive NUL (U+0000) characters. + This is unlikely to appear in genuine text, so it's a good heuristic + to detect binary files. + + + + + Called from to initialize the . Thereafter, + the collection is cached. + + A new representing the individual text lines. + + + + Immutable representation of a line number and position within a SourceText instance. + + + + + A that represents position 0 at line 0. + + + + + Initializes a new instance of a with the given line and character. + + + The line of the line position. The first line in a file is defined as line 0 (zero based line numbering). + + + The character position in the line. + + or is less than zero. + + + + The line number. The first line in a file is defined as line 0 (zero based line numbering). + + + + + The character position within the line. + + + + + Determines whether two are the same. + + + + + Determines whether two are different. + + + + + Determines whether two are the same. + + The object to compare. + + + + Determines whether two are the same. + + The object to compare. + + + + Provides a hash function for . + + + + + Provides a string representation for . + + 0,10 + + + + Immutable span represented by a pair of line number and index within the line. + + + + + Creates . + + Start position. + End position. + precedes . + + + + Gets the start position of the span. + + + + + Gets the end position of the span. + + + + + Provides a string representation for . + + (0,0)-(5,6) + + + + Specifies a hash algorithms used for hashing source files. + + + + + No algorithm specified. + + + + + Secure Hash Algorithm 1. + + + + + Secure Hash Algorithm 2 with a hash size of 256 bits. + + + + + An abstraction of source text. + + + + + Constructs a from text in a string. + + Text. + + Encoding of the file that the was read from or is going to be saved to. + null if the encoding is unspecified. + If the encoding is not specified the resulting isn't debuggable. + If an encoding-less is written to a file a shall be used as a default. + + + Hash algorithm to use to calculate checksum of the text that's saved to PDB. + + is null. + is not supported. + + + + Constructs a from stream content. + + Stream. The stream must be seekable. + + Data encoding to use if the stream doesn't start with Byte Order Mark specifying the encoding. + if not specified. + + + Hash algorithm to use to calculate checksum of the text that's saved to PDB. + + If the decoded text contains at least two consecutive NUL + characters, then an is thrown. + is null. + + doesn't support reading or seeking. + is not supported. + + If the given encoding is set to use a throwing decoder as a fallback + Two consecutive NUL characters were detected in the decoded text and was true. + An I/O error occurs. + Reads from the beginning of the stream. Leaves the stream open. + + + + Constructs a from a byte array. + + The encoded source buffer. + The number of bytes to read from the buffer. + + Data encoding to use if the encoded buffer doesn't start with Byte Order Mark. + if not specified. + + + Hash algorithm to use to calculate checksum of the text that's saved to PDB. + + If the decoded text contains at least two consecutive NUL + characters, then an is thrown. + The decoded text. + The is null. + The is negative or longer than the . + is not supported. + If the given encoding is set to use a throwing decoder as a fallback + Two consecutive NUL characters were detected in the decoded text and was true. + + + + Decode text from a stream. + + The stream containing encoded text. + The encoding to use if an encoding cannot be determined from the byte order mark. + The actual encoding used. + The decoded text. + If the given encoding is set to use a throwing decoder as a fallback + + + + Decode text from a byte array. + + The byte array containing encoded text. + The count of valid bytes in . + The encoding to use if an encoding cannot be determined from the byte order mark. + The actual encoding used. + The decoded text. + If the given encoding is set to use a throwing decoder as a fallback + + + + Check for occurrence of two consecutive NUL (U+0000) characters. + This is unlikely to appear in genuine text, so it's a good heuristic + to detect binary files. + + + internal for unit testing + + + + + Hash algorithm to use to calculate checksum of the text that's saved to PDB. + + + + + Encoding of the file that the text was read from or is going to be saved to. + null if the encoding is unspecified. + + + If the encoding is not specified the source isn't debuggable. + If an encoding-less is written to a file a shall be used as a default. + + + + + The length of the text in characters. + + + + + The size of the storage representation of the text (in characters). + This can differ from length when storage buffers are reused to represent fragments/subtext. + + + + + Returns a character at given position. + + The position to get the character from. + The character. + When position is negative or + greater than . + + + + Copy a range of characters from this SourceText to a destination array. + + + + + The container of this . + + + + + Gets a that contains the characters in the specified span of this text. + + + + + Returns a that has the contents of this text including and after the start position. + + + + + Write this to a text writer. + + + + + Write a span of text to a text writer. + + + + + Provides a string representation of the SourceText. + + + + + Gets a string containing the characters in specified span. + + When given span is outside of the text range. + + + + Constructs a new SourceText from this text with the specified changes. + + + + + Constructs a new SourceText from this text with the specified changes. + + + + + Returns a new SourceText with the specified span of characters replaced by the new text. + + + + + Returns a new SourceText with the specified range of characters replaced by the new text. + + + + + Gets the set of that describe how the text changed + between this text an older version. This may be multiple detailed changes + or a single change encompassing the entire text. + + + + + Gets the set of that describe how the text changed + between this text and an older version. This may be multiple detailed changes + or a single change encompassing the entire text. + + + + + The collection of individual text lines. + + + + + Called from to initialize the . Thereafter, + the collection is cached. + + A new representing the individual text lines. + + + + Compares the content with content of another . + + + + + Implements equality comparison of the content of two different instances of . + + + + + Detect an encoding by looking for byte order marks. + + A buffer containing the encoded text. + The length of valid data in the buffer. + The length of any detected byte order marks. + The detected encoding or null if no recognized byte order mark was present. + + + + An object that contains an instance of an SourceText and raises events when its current instance + changes. + + + + + The current text instance. + + + + + Raised when the current text instance changes. + + + + + A read-only, non-seekable over a . + + + + + Implementation of based on a input + + + + + Underlying string on which this SourceText instance is based + + + + + Underlying string which is the source of this SourceText instance + + + + + The length of the text represented by . + + + + + Returns a character at given position. + + The position to get the character from. + The character. + When position is negative or + greater than . + + + + Provides a string representation of the StringBuilderText located within given span. + + When given span is outside of the text range. + + + + Implementation of SourceText based on a input + + + + + Underlying string which is the source of this instance + + + + + The length of the text represented by . + + + + + Returns a character at given position. + + The position to get the character from. + The character. + When position is negative or + greater than . + + + + Provides a string representation of the StringText located within given span. + + When given span is outside of the text range. + + + + An that represents a subrange of another . + + + + + Describes a single change when a particular span is replaced with a new text. + + + + + The original span of the changed text. + + + + + The new text. + + + + + Initializes a new instance of + + The original span of the changed text. + The new text. + + + + Provides a string representation for . + + + + + Converts a to a . + + + + + + An empty set of changes. + + + + + Represents state for a TextChanged event. + + + + + Initializes an instance of . + + The text before the change. + The text after the change. + A non-empty set of ranges for the change. + + + + Initializes an instance of . + + The text before the change. + The text after the change. + A non-empty set of ranges for the change. + + + + Gets the text before the change. + + + + + Gets the text after the change. + + + + + Gets the set of ranges for the change. + + + + + Represents the change to a span of text. + + + + + The span of text before the edit which is being changed + + + + + Width of the span after the edit. A 0 here would represent a delete + + + + + Initializes a new instance of . + + + + + + + Compares current instance of to another. + + + + + Compares current instance of to another. + + + + + Provides hash code for current instance of . + + + + + + Determines if two instances of are same. + + + + + Determines if two instances of are different. + + + + + An empty set of changes. + + + + + Collapse a set of s into a single encompassing range. If + the set of ranges provided is empty, an empty range is returned. + + + + + Information about the character boundaries of a single line of text. + + + + + Creates a instance. + + The source text. + The span of the line. + An instance of . + The span does not represent a text line. + + + + Gets the source text. + + + + + Gets the zero-based line number. + + + + + Gets the start position of the line. + + + + + Gets the end position of the line not including the line break. + + + + + Gets the end position of the line including the line break. + + + + + Gets the line span not including the line break. + + + + + Gets the line span including the line break. + + + + + Abstract base class for collections. + + + + + The count of items in the collection + + + + + Gets the item at the specified index. + + + + + The index of the TextLine that encompasses the character position. + + + + + Gets a that encompasses the character position. + + + + + + + Gets a corresponding to a character position. + + + + + Convert a to a . + + + + + Convert a to a position. + + + + + Convert a to . + + + + + Immutable abstract representation of a span of text. For example, in an error diagnostic that reports a + location, it could come from a parsed string, text from a tool editor buffer, etc. + + + + + Creates a TextSpan instance beginning with the position Start and having the Length + specified with . + + + + + Start point of the span. + + + + + End of the span. + + + + + Length of the span. + + + + + Determines whether or not the span is empty. + + + + + Determines whether the position lies within the span. + + + The position to check. + + + true if the position is greater than or equal to Start and strictly less + than End, otherwise false. + + + + + Determines whether falls completely within this span. + + + The span to check. + + + true if the specified span falls completely within this span, otherwise false. + + + + + Determines whether overlaps this span. Two spans are considered to overlap + if they have positions in common and neither is empty. Empty spans do not overlap with any + other span. + + + The span to check. + + + true if the spans overlap, otherwise false. + + + + + Returns the overlap with the given span, or null if there is no overlap. + + + The span to check. + + + The overlap of the spans, or null if the overlap is empty. + + + + + Determines whether intersects this span. Two spans are considered to + intersect if they have positions in common or the end of one span + coincides with the start of the other span. + + + The span to check. + + + true if the spans intersect, otherwise false. + + + + + Determines whether intersects this span. + A position is considered to intersect if it is between the start and + end positions (inclusive) of this span. + + + The position to check. + + + true if the position intersects, otherwise false. + + + + + Returns the intersection with the given span, or null if there is no intersection. + + + The span to check. + + + The intersection of the spans, or null if the intersection is empty. + + + + + Creates a new from and positions as opposed to a position and length. + + The returned TextSpan contains the range with inclusive, + and exclusive. + + + + + Determines if two instances of are the same. + + + + + Determines if two instances of are different. + + + + + Determines if current instance of is equal to another. + + + + + Determines if current instance of is equal to another. + + + + + Produces a hash code for . + + + + + Provides a string representation for . + + + + + Compares current instance of with another. + + + + + Holder for common Text Utility functions and values + + + + + Return startLineBreak = index-1, lengthLineBreak = 2 if there is a \r\n at index-1 + Return startLineBreak = index, lengthLineBreak = 1 if there is a 1-char newline at index + Return startLineBreak = index+1, lengthLineBreak = 0 if there is no newline at index. + + + + + Determine if the character in question is any line break character + + + + + Defines a set of helper methods to classify Unicode characters. + + + + + Returns true if the Unicode character can be a part of an identifier. + + The Unicode character. + + + + Check that the name is a valid Unicode identifier. + + + + + Returns true if the Unicode character is a formatting character (Unicode class Cf). + + The Unicode character. + + + + Returns true if the Unicode character is a formatting character (Unicode class Cf). + + The Unicode character. + + + + A strongly-typed resource class, for looking up localized strings, etc. + + + + + Returns the cached ResourceManager instance used by this class. + + + + + Overrides the current thread's CurrentUICulture property for all + resource lookups using this strongly typed resource class. + + + + + Looks up a localized string similar to Absolute path expected.. + + + + + Looks up a localized string similar to Analyzer Driver Failure. + + + + + Looks up a localized string similar to Analyzer driver threw an exception of type '{0}' with message '{1}'.. + + + + + Looks up a localized string similar to Analyzer driver threw the following exception: + '{0}'.. + + + + + Looks up a localized string similar to Time (s). + + + + + Looks up a localized string similar to Analyzer. + + + + + Looks up a localized string similar to Total analyzer execution time: {0} seconds.. + + + + + Looks up a localized string similar to Argument cannot be empty.. + + + + + Looks up a localized string similar to Argument cannot have a null element.. + + + + + Looks up a localized string similar to Arrays with more than one dimension cannot be serialized.. + + + + + Looks up a localized string similar to assembly. + + + + + Looks up a localized string similar to Assembly file not found. + + + + + Looks up a localized string similar to Assembly must have at least one module.. + + + + + Looks up a localized string similar to Assembly signing not supported.. + + + + + Looks up a localized string similar to Can't alias a module.. + + + + + Looks up a localized string similar to Can't create a reference to a module.. + + + + + Looks up a localized string similar to Can't create a reference to a submission.. + + + + + Looks up a localized string similar to Can't embed interop types from module.. + + + + + Looks up a localized string similar to Can't create a module reference to an assembly.. + + + + + Looks up a localized string similar to Can't create a metadata reference to an assembly without location.. + + + + + Looks up a localized string similar to Can't create a metadata reference to a dynamic assembly.. + + + + + Looks up a localized string similar to The changes must be ordered and not overlapping.. + + + + + Looks up a localized string similar to class. + + + + + Looks up a localized string similar to Win32 resources, assumed to be in COFF object format, have one or more invalid relocation header values.. + + + + + Looks up a localized string similar to Win32 resources, assumed to be in COFF object format, have an invalid section size.. + + + + + Looks up a localized string similar to Win32 resources, assumed to be in COFF object format, have one or more invalid symbol values.. + + + + + Looks up a localized string similar to Win32 resources, assumed to be in COFF object format, are missing one or both of sections '.rsrc$01' and '.rsrc$02'. + + + + + Looks up a localized string similar to Compilation options must not have errors.. + + + + + Looks up a localized string similar to The compilation references multiple assemblies whose versions only differ in auto-generated build and/or revision numbers.. + + + + + Looks up a localized string similar to Analyzer Failure. + + + + + Looks up a localized string similar to Analyzer '{0}' threw an exception of type '{1}' with message '{2}'.. + + + + + Looks up a localized string similar to Analyzer '{0}' threw the following exception: + '{1}'.. + + + + + Looks up a localized string similar to constructor. + + + + + Looks up a localized string similar to delegate. + + + + + Looks up a localized string similar to A DiagnosticDescriptor must have an Id that is neither null nor an empty string nor a string that only contains white space.. + + + + + Looks up a localized string similar to Argument contains duplicate analyzer instances.. + + + + + Looks up a localized string similar to A key in the pathMap is empty.. + + + + + Looks up a localized string similar to Empty or invalid file name. + + + + + Looks up a localized string similar to Empty or invalid resource name. + + + + + Looks up a localized string similar to 'end' must not be less than 'start'. + + + + + Looks up a localized string similar to enum. + + + + + Looks up a localized string similar to event. + + + + + Looks up a localized string similar to Exception occurred with following context: + {0}. + + + + + Looks up a localized string similar to Expected non-empty public key. + + + + + Looks up a localized string similar to Could not locate the rule set file '{0}'.. + + + + + Looks up a localized string similar to field. + + + + + Looks up a localized string similar to File not found.. + + + + + Looks up a localized string similar to File size exceeds maximum allowed size of a valid metadata file.. + + + + + Looks up a localized string similar to {0}.GetMetadata() must return an instance of {1}.. + + + + + Looks up a localized string similar to Icon stream is not in the expected format.. + + + + + Looks up a localized string similar to Inconsistent language versions. + + + + + Looks up a localized string similar to <in-memory assembly>. + + + + + Looks up a localized string similar to <in-memory module>. + + + + + Looks up a localized string similar to interface. + + + + + Looks up a localized string similar to Invalid alias.. + + + + + Looks up a localized string similar to Invalid assembly name: '{0}'. + + + + + Looks up a localized string similar to Invalid characters in assembly culture name. + + + + + Looks up a localized string similar to Invalid characters in assembly name. + + + + + Looks up a localized string similar to Invalid compilation options -- submission can't be signed.. + + + + + Looks up a localized string similar to Invalid content type. + + + + + Looks up a localized string similar to Invalid culture name: '{0}'. + + + + + Looks up a localized string similar to Invalid data at offset {0}: {1}{2}*{3}{4}. + + + + + Looks up a localized string similar to Reported diagnostic has an ID '{0}', which is not a valid identifier.. + + + + + Looks up a localized string similar to Reported diagnostic '{0}' has a source location in file '{1}', which is not part of the compilation being analyzed.. + + + + + Looks up a localized string similar to Invalid hash.. + + + + + Looks up a localized string similar to Invalid module name specified in metadata module '{0}': '{1}'. + + + + + Looks up a localized string similar to Node to track is not a descendant of the root.. + + + + + Looks up a localized string similar to Invalid output kind for submission. DynamicallyLinkedLibrary expected.. + + + + + Looks up a localized string similar to Invalid public key.. + + + + + Looks up a localized string similar to Invalid public key token.. + + + + + Looks up a localized string similar to An error occurred while loading the included rule set file {0} - {1}. + + + + + Looks up a localized string similar to Invalid size of public key token.. + + + + + Looks up a localized string similar to Syntax tree doesn't belong to the underlying 'Compilation'.. + + + + + Looks up a localized string similar to Feature 'IOperation' is disabled.. + + + + + Looks up a localized string similar to Argument to '/keepalive' option is not a 32-bit integer.. + + + + + Looks up a localized string similar to Arguments to '/keepalive' option below -1 are invalid.. + + + + + Looks up a localized string similar to '/keepalive' option is only valid with '/shared' option.. + + + + + Looks up a localized string similar to A key in the pathMap ends with a path separator.. + + + + + Looks up a localized string similar to method. + + + + + Looks up a localized string similar to Roslyn compiler server reports different protocol version than build task.. + + + + + Looks up a localized string similar to Missing argument for '/keepalive' option.. + + + + + Looks up a localized string similar to The item specified is not the element of a list.. + + + + + Looks up a localized string similar to module. + + + + + Looks up a localized string similar to Module copy can't be used to create an assembly metadata.. + + + + + Looks up a localized string similar to NOTE: Elapsed time may be less than analyzer execution time because analyzers can run concurrently.. + + + + + Looks up a localized string similar to Name cannot be empty.. + + + + + Looks up a localized string similar to Name cannot start with whitespace.. + + + + + Looks up a localized string similar to Name contains invalid characters.. + + + + + Looks up a localized string similar to No analyzers found. + + + + + Looks up a localized string similar to Cannot deserialize type '{0}', no binder supplied.. + + + + + Looks up a localized string similar to A node or token is out of sequence.. + + + + + Looks up a localized string similar to Cannot deserialize type '{0}', it has no deserialization reader.. + + + + + Looks up a localized string similar to The type '{0}' cannot be written, it does not implement IObjectWritable. + + + + + Looks up a localized string similar to A value in the pathMap is null.. + + + + + Looks up a localized string similar to Output kind not supported.. + + + + + Looks up a localized string similar to parameter. + + + + + Looks up a localized string similar to Path returned by {0}.ResolveMetadataFile must be absolute: '{1}'. + + + + + Looks up a localized string similar to Path returned by {0}.ResolveStrongNameKeyFile must be absolute: '{1}'. + + + + + Looks up a localized string similar to PE image doesn't contain managed metadata.. + + + + + Looks up a localized string similar to PE image not available.. + + + + + Looks up a localized string similar to Previous submission has errors.. + + + + + Looks up a localized string similar to property, indexer. + + + + + Looks up a localized string similar to Reference resolver should return readable non-null stream.. + + + + + Looks up a localized string similar to Resource data provider should return non-null stream. + + + + + Looks up a localized string similar to Resource stream ended at {0} bytes, expected {1} bytes.. + + + + + Looks up a localized string similar to Resource stream provider should return non-null stream.. + + + + + Looks up a localized string similar to return. + + + + + Looks up a localized string similar to Return type can't be a value type, pointer, by-ref or open generic type. + + + + + Looks up a localized string similar to Return type can't be void, by-ref or open generic type. + + + + + Looks up a localized string similar to The attribute {0} has an invalid value of {1}.. + + + + + Looks up a localized string similar to The rule set file has duplicate rules for '{0}' with differing actions '{1}' and '{2}'.. + + + + + Looks up a localized string similar to The element {0} is missing an attribute named {1}.. + + + + + Looks up a localized string similar to Value for argument '/shared:' must not be empty. + + + + + Looks up a localized string similar to Size has to be positive.. + + + + + Looks up a localized string similar to The span does not include the end of a line.. + + + + + Looks up a localized string similar to The span does not include the start of a line.. + + + + + Looks up a localized string similar to 'start' must not be negative. + + + + + Looks up a localized string similar to Stream must support read and seek operations.. + + + + + Looks up a localized string similar to Stream must be writable.. + + + + + Looks up a localized string similar to struct. + + + + + Looks up a localized string similar to Windows PDB writer is not available -- could not find Microsoft.DiaSymReader.Native.{0}.dll. + + + + + Looks up a localized string similar to Windows PDB writer doesn't support deterministic compilation -- could not find Microsoft.DiaSymReader.Native.{0}.dll. + + + + + Looks up a localized string similar to type must be a subclass of SyntaxAnnotation.. + + + + + Looks up a localized string similar to Type must be same as host object type of previous submission.. + + + + + Looks up a localized string similar to type parameter. + + + + + Looks up a localized string similar to A node in the list is not of the expected type.. + + + + + Looks up a localized string similar to Unresolved: . + + + + + Looks up a localized string similar to Argument contains an analyzer instance that does not belong to the 'Analyzers' for this CompilationWithAnalyzers instance.. + + + + + Looks up a localized string similar to Reported diagnostic with ID '{0}' is not supported by the analyzer.. + + + + + Looks up a localized string similar to Unsupported hash algorithm.. + + + + + Looks up a localized string similar to Value too large to be represented as a 30 bit unsigned integer.. + + + + + Looks up a localized string similar to WindowsRuntime identity can't be retargetable. + + + + + Looks up a localized string similar to References to XML documents are not supported.. + + + + + Maps an array builder to immutable array. + + + + The array to map + The mapping delegate + If the items's length is 0, this will return an empty immutable array + + + + Maps an array builder to immutable array. + + + + + The sequence to map + The mapping delegate + The extra input used by mapping delegate + If the items's length is 0, this will return an empty immutable array. + + + + Create BitArray with at least the specified number of bits. + + + + + return a bit array with all bits set from index 0 through bitCount-1 + + + + + + + Make a copy of a bit array. + + + + + + Is the given bit array null? + + + + + Modify this bit vector by bitwise AND-ing each element with the other bit vector. + For the purposes of the intersection, any bits beyond the current length will be treated as zeroes. + Return true if any changes were made to the bits of this bit vector. + + + + + Modify this bit vector by '|'ing each element with the other bit vector. + + + + + + The CachingLookup class provides a convenient representation of an ILookup that is based + upon a potentially slow lookup, and caches lookup results so that subsequent lookups are + fast. Internally a ConcurrentDictionary is used to cache lookup results. The client provides + two delegates to perform lookups: One that maps a key to a IEnumerable of values, and one + that provides all keys. + + The client must provide an IEqualityComparer used for comparing keys. Failed lookups are + cached, but that has the disadvantage that every different failed lookup will consume a + small amount of extra memory. However, that memory can be reclaimed by forcing a full + population of the cache. + + Thread safe. + + + + + Create a CachingLookup. + + A function that takes a key, and returns an IEnumerable of values that + correspond to that key. If no values correspond, the function may either return null or an empty + IEnumerable. + A function that returns an IEnumerable of all keys that have associated values. + A IEqualityComparer used to compare keys. + + + + Does this key have one or more associated values? + + + + + Get the values associated with a key. + + Key to look up. + All values associated with key. Returns an empty IEnumerable if + no values are associated. Never returns null. + + + + Get the number of distinct keys. + Forces a full population of the cache. + + + + + Enumerate all the keys. + Forces a full population of the cache. + + + + + Add the values from all keys to a flat array. + Forces a full population of the cache. + + + + + + Create an instance of the concurrent dictionary. + + The concurrent dictionary + + + + Create a dictionary instance suitable for use as the fully populated map. + + A new, empty dictionary, suitable for use as the fully populated map. + + + + Use the underlying (possibly slow) functions to get the values associated with a key. + + + + + Add a new value with the given key to the given concurrent map. + + The concurrent map to augment. + The key of the new entry. + The added entry. If there was a race, and another thread beat this one, then this returns the previously added entry. + + + + Determines if the given map is fully populated. + + The map to test. + true if the map is fully populated. + + + + Create the fully populated map from an existing map and the key generator. + + The existing map which may be null or a ConcurrentDictionary. + + + + + Fully populate the underlying dictionary. Once this returns, the dictionary is guaranteed + to have every key in it. + + + + + A MultiDictionary that allows only adding, and preserves the order of values added to the + dictionary. Thread-safe for reading, but not for adding. + + + Always uses the default comparer. + + + + + Add a value to the dictionary. + + + + + Get all values associated with K, in the order they were added. + Returns empty read-only array if no values were present. + + + + + Get a collection of all the keys. + + + + + Each value is either a single V or an . + Never null. + + + + + The usage is: + var inst = PooledStringBuilder.GetInstance(); + var sb = inst.builder; + ... Do Stuff... + ... sb.ToString() ... + inst.Free(); + + + + + A set of ints that is small, thread-safe and lock free. + Several assumptions have been made that allow it to be small and fast: + 1. Deletes never happen. + 2. The size is small. In dogfooding experiments, 89% had 4 or fewer elements and + 98% had 8 or fewer elements. The largest size was 17. + 3. As a result of assumption 2, linear look-up is good enough. + 4. One value, in this case int.MinValue, is used as a sentinel and may never appear in the set. + + + + + Determine if the given integer appears in the set. + + The value to look up. + true if appears in the set. false otherwise. + + + + Insert the given value into the set. + + The value to insert + true if was added. false if it was already present. + + + + If the given slot is unoccupied, then try to replace it with a new value. + + The slot to examine. + The new value to insert if the slot is unoccupied. + An out param indicating whether the slot was successfully updated. + true if the value in the slot either now contains, or already contained . false otherwise. + + + + Extension methods associated with ConsList. + + + + + Returns the only element of specified sequence if it has exactly one, and default(TSource) otherwise. + Unlike doesn't throw if there is more than one element in the sequence. + + + + + A simple class to implement IGrouping. + + + + + A dictionary that maps strings to all known spellings of that string. Can be used to + efficiently store the set of known type names for a module for both VB and C# while also + answering questions like "do you have a type called Foo" in either a case sensitive or + insensitive manner. + + + + + The collection of extension methods for the type + + + + + Converts a sequence to an immutable array. + + Elemental type of the sequence. + The sequence to convert. + An immutable copy of the contents of the sequence. + If items is null (default) + If the sequence is null, this will throw + + + + Converts a sequence to an immutable array. + + Elemental type of the sequence. + The sequence to convert. + An immutable copy of the contents of the sequence. + If the sequence is null, this will return an empty array. + + + + Converts a sequence to an immutable array. + + Elemental type of the sequence. + The sequence to convert. + An immutable copy of the contents of the sequence. + If the sequence is null, this will return the default (null) array. + + + + Converts an array to an immutable array. The array must not be null. + + + The sequence to convert + + + + + Converts a array to an immutable array. + + + The sequence to convert + + If the sequence is null, this will return the default (null) array. + + + + Converts an array to an immutable array. + + + The sequence to convert + If the array is null, this will return an empty immutable array. + + + + Reads bytes from specified . + + The stream. + Read-only content of the stream. + + + + Maps an immutable array to another immutable array. + + + + The array to map + The mapping delegate + If the items's length is 0, this will return an empty immutable array + + + + Maps an immutable array to another immutable array. + + + + + The sequence to map + The mapping delegate + The extra input used by mapping delegate + If the items's length is 0, this will return an empty immutable array. + + + + Maps an immutable array to another immutable array. + + + + + The sequence to map + The mapping delegate + The extra input used by mapping delegate + If the items's length is 0, this will return an empty immutable array. + + + + Creates a new immutable array based on filtered elements by the predicate. The array must not be null. + + + The array to process + The delegate that defines the conditions of the element to search for. + + + + + Casts the immutable array of a Type to an immutable array of its base type. + + + + + Determines whether this instance and another immutable array are equal. + + + + + The comparer to determine if the two arrays are equal. + True if the two arrays are equal + + + + Returns an empty array if the input array is null (default) + + + + + Returns an array of distinct elements, preserving the order in the original array. + If the array has no duplicates, the original array is returned. The original array must not be null. + + + + + Describes a command line analyzer assembly specification. + + + + + Assembly file path. + + + + + Describes a command line metadata reference (assembly or netmodule) specification. + + + + + Metadata file path or an assembly display name. + + + + + Metadata reference properties. + + + + + Describes a source file specification stored on command line arguments. + + + + + Resolved absolute path of the source file (does not contain wildcards). + + + Although this path is absolute it may not be normalized. That is, it may contain ".." and "." in the middle. + + + + + True if the file should be treated as a script file. + + + + + The base class for representing command line arguments to a + . + + + + + Drop to an interactive loop. If a script is specified in executes the script first. + + + + + Directory used to resolve relative paths stored in the arguments. + + + Except for paths stored in , all + paths stored in the properties of this class are resolved and + absolute. This is the directory that relative paths specified on + command line were resolved against. + + + + + A list of pairs of paths. This stores the value of the command-line compiler + option /pathMap:X1=Y1;X2=Y2... which causes a prefix of X1 followed by a path + separator to be replaced by Y1 followed by a path separator, and so on for each following pair. + + + This option is used to help get build-to-build determinism even when the build + directory is different from one build to the next. The prefix matching is case sensitive. + + + + + Sequence of absolute paths used to search for references. + + + + + Sequence of absolute paths used to search for sources specified as #load directives. + + + + + Sequence of absolute paths used to search for key files. + + + + + If true, use UTF8 for output. + + + + + Compilation name or null if not specified. + + + + + Gets the emit options. + + + + + Name of the output file or null if not specified. + + + + + Path of the PDB file or null if same as output binary path with .pdb extension. + + + + + True to emit PDB file. + + + + + Absolute path of the output directory. + + + + + Absolute path of the documentation comment XML file or null if not specified. + + + + + Absolute path of the error log file or null if not specified. + + + + + An absolute path of the app.config file or null if not specified. + + + + + Errors while parsing the command line arguments. + + + + + References to metadata supplied on the command line. + Includes assemblies specified via /r and netmodules specified via /addmodule. + + + + + References to analyzers supplied on the command line. + + + + + A set of additional non-code text files that can be used by analyzers. + + + + + Report additional information related to analyzers, such as analyzer execution time. + + + + + If true, prepend the command line header logo during + . + + + + + If true, append the command line help during + + + + + + The path to a Win32 resource. + + + + + The path to a .ico icon file. + + + + + The path to a Win32 manifest file to embed + into the output portable executable (PE) file. + + + + + If true, do not embed any Win32 manifest, including + one specified by or any + default manifest. + + + + + Resources specified as arguments to the compilation. + + + + + Encoding to be used for source files or 'null' for autodetect/default. + + + + + Hash algorithm to use to calculate source file debug checksums. + + + + + Arguments following a script file or separator "--". Null if the command line parser is not interactive. + + + + + Source file paths. + + + Includes files specified directly on command line as well as files matching patterns specified + on command line using '*' and '?' wildcards or /recurse option. + + + + + Full path of a log of file paths accessed by the compiler, or null if file logging should be suppressed. + + + Two log files will be created: + One with path and extension ".read" logging the files read, + and second with path and extension ".write" logging the files written to during compilation. + + + + + If true, prints the full path of the file containing errors or + warnings in diagnostics. + + + + + Options to the . + + + + + + Options to the . + + + + + Specify the preferred output language name. + + + + + Resolves metadata references stored in using given file resolver and metadata provider. + + to use for assembly name and relative path resolution. + Yields resolved metadata references or . + is null. + + + + Resolves metadata references stored in using given file resolver and metadata provider. + If a non-null diagnostic bag is provided, it catches exceptions that may be generated while reading the metadata file and + reports appropriate diagnostics. + Otherwise, if is null, the exceptions are unhandled. + + + called by CommonCompiler with diagnostics and message provider + + + + + Resolves analyzer references stored in using given file resolver. + + Load an assembly from a file path + Yields resolved or . + + + + Enumerates files in the specified directory and subdirectories whose name matches the given pattern. + + Full path of the directory to enumerate. + File name pattern. May contain wildcards '*' (matches zero or more characters) and '?' (matches any character). + Specifies whether to search the specified only, or all its subdirectories as well. + Sequence of file paths. + + + + Parses a command line. + + A collection of strings representing the command line arguments. + The base directory used for qualifying file locations. + The directory to search for mscorlib, or null if not available. + A string representing additional reference paths. + a object representing the parsed command line. + + + + Trims all '.' and whitespace from the end of the path + + + + + Returns false if any of the client arguments are invalid and true otherwise. + + + The original args to the client. + + + The original args minus the client args, if no errors were encountered. + + + Only defined if no errors were encountered. + True if '/shared' was an argument, false otherwise. + + + Only defined if no errors were encountered. + The value to the '/keepalive' argument if one was specified, null otherwise. + + + Only defined if errors were encountered. + The error message for the encountered error. + + + Only specified if is true and the session key + was provided. Can be null + + + + + Parse a response file into a set of arguments. Errors opening the response file are output into "errors". + + + + + Take a string of lines from a response file, remove comments, + and split into a set of command line arguments. + + + + + Split a command line by the same rules as Main would get the commands except the original + state of backslashes and quotes are preserved. For example in normal Windows command line + parsing the following command lines would produce equivalent Main arguments: + + - /r:a,b + - /r:"a,b" + + This method will differ as the latter will have the quotes preserved. The only case where + quotes are removed is when the entire argument is surrounded by quotes without any inner + quotes. + + + Rules for command line parsing, according to MSDN: + + Arguments are delimited by white space, which is either a space or a tab. + + A string surrounded by double quotation marks ("string") is interpreted + as a single argument, regardless of white space contained within. + A quoted string can be embedded in an argument. + + A double quotation mark preceded by a backslash (\") is interpreted as a + literal double quotation mark character ("). + + Backslashes are interpreted literally, unless they immediately precede a + double quotation mark. + + If an even number of backslashes is followed by a double quotation mark, + one backslash is placed in the argv array for every pair of backslashes, + and the double quotation mark is interpreted as a string delimiter. + + If an odd number of backslashes is followed by a double quotation mark, + one backslash is placed in the argv array for every pair of backslashes, + and the double quotation mark is "escaped" by the remaining backslash, + causing a literal double quotation mark (") to be placed in argv. + + + + + Remove the extraneous quotes and slashes from the argument. This function is designed to have + compat behavior with the native compiler. + + + Mimics the function RemoveQuotes from the native C# compiler. The native VB equivalent of this + function is called RemoveQuotesAndSlashes. It has virtually the same behavior except for a few + quirks in error cases. + + + + + Mimic behavior of the native function by the same name. + + + + + Split a string, based on whether "splitHere" returned true on each character. + + + + + Split a string by a set of separators, taking quotes into account. + + + + + Tries to parse a UInt64 from string in either decimal, octal or hex format. + + The string value. + The result if parsing was successful. + true if parsing was successful, otherwise false. + + + + Tries to parse a UInt16 from string in either decimal, octal or hex format. + + The string value. + The result if parsing was successful. + true if parsing was successful, otherwise false. + + + + Base class for csc.exe, csi.exe, vbc.exe and vbi.exe implementations. + + + + + This implementation of will delay the creation + of the PE / PDB file until the compiler determines the compilation has succeeded. This prevents + the compiler from deleting output from the previous compilation when a new compilation + fails. + + + + + Resolves metadata references stored in command line arguments and reports errors for those that can't be resolved. + + + + + Reads content of a source file. + + Source file information. + Storage for diagnostics. + File content or null on failure. + + + + Reads content of a source file. + + Source file information. + Storage for diagnostics. + If given opens successfully, set to normalized absolute path of the file, null otherwise. + File content or null on failure. + + + + csc.exe and vbc.exe entry point. + + + + + Given a compilation and a destination directory, determine three names: + 1) The name with which the assembly should be output (default = null, which indicates that the compilation output name should be used). + 2) The path of the assembly/module file (default = destination directory + compilation output name). + 3) The path of the pdb file (default = assembly/module path with ".pdb" extension). + + + C# has a special implementation that implements idiosyncratic behavior of csc. + + + + + Test hook for intercepting File.Open. + + + + + When overridden by a derived class, this property can override the current thread's + CurrentUICulture property for diagnostic message resource lookups. + + + + + The string returned from this function represents the inputs to the compiler which impact determinism. It is + meant to be inline with the specification here: + + - https://github.com/dotnet/roslyn/blob/master/docs/compilers/Deterministic%20Inputs.md + + Issue #8193 tracks filling this out to the full specification. + + https://github.com/dotnet/roslyn/issues/8193 + + + + + Looks for metadata references among the assembly file references given to the compilation when constructed. + When scripts are included into a project we don't want #r's to reference other assemblies than those + specified explicitly in the project references. + + + + + Used for logging all compiler diagnostics into a given . + This logger is responsible for closing the given stream on . + It is incorrect to use the logger concurrently from multiple threads. + + The log format is SARIF (Static Analysis Results Interchange Format) + https://sarifweb.azurewebsites.net + https://github.com/sarif-standard/sarif-spec + + + + + Represents a distinct set of s and provides unique string keys + to distinguish them. + + The first added with a given + value is given that value as its unique key. Subsequent adds with the same ID will have .NNN + apppended to their with an auto-incremented numeric value. + + + + + The total number of descriptors in the set. + + + + + Adds a descriptor to the set if not already present. + + + The unique key assigned to the given descriptor. + + + + + Converts the set to a list of (key, descriptor) pairs sorted by key. + + + + + Compares descriptors by the values that we write to the log and nothing else. + + We cannot just use 's built-in implementation + of for two reasons: + + 1. is part of that built-in + equatability, but we do not write it out, and so descriptors differing only + by MessageFormat (common) would lead to duplicate rule metadata entries in + the log. + + 2. is *not* part of that built-in + equatability, but we do write them out, and so descriptors differening only + by CustomTags (rare) would cause only one set of tags to be reported in the + log. + + + + + Used for logging all the paths which are "touched" (used) in any way + in the process of compilation. + + + + + Adds a fully-qualified path to the Logger for a read file. + Semantics are undefined after a call to . + + + + + Adds a fully-qualified path to the Logger for a written file. + Semantics are undefined after a call to . + + + + + Adds a fully-qualified path to the Logger for a read and written + file. Semantics are undefined after a call to + . + + + + + Writes all of the paths the TouchedFileLogger to the given + TextWriter in upper case. After calling this method the + logger is in an undefined state. + + + + + Writes all of the paths the TouchedFileLogger to the given + TextWriter in upper case. After calling this method the + logger is in an undefined state. + + + + + The compilation object is an immutable representation of a single invocation of the + compiler. Although immutable, a compilation is also on-demand, and will realize and cache + data as necessary. A compilation can produce a new compilation from existing compilation + with the application of small deltas. In many cases, it is more efficient than creating a + new compilation from scratch, as the new compilation can reuse information from the old + compilation. + + + The compilation object is an immutable representation of a single invocation of the + compiler. Although immutable, a compilation is also on-demand, and will realize and cache + data as necessary. A compilation can produce a new compilation from existing compilation + with the application of small deltas. In many cases, it is more efficient than creating a + new compilation from scratch, as the new compilation can reuse information from the old + compilation. + + + + + Abstraction that allows the caller to delay the creation of the values + until they are actually needed. + + + + + Returns an existing open stream or null if no stream has been open. + + + + + This method will be called once during Emit at the time the Compilation needs + to create a stream for writing. It will not be called in the case of + user errors in code. Shall not be called when returns non-null. + + + + + Returns true if this is a case sensitive compilation, false otherwise. Case sensitivity + affects compilation features such as name lookup as well as choosing what names to emit + when there are multiple different choices (for example between a virtual method and an + override). + + + + + Used for test purposes only to emulate missing members. + + + + + Used for test purposes only to emulate missing members. + + + + + Gets the source language ("C#" or "Visual Basic"). + + + + + Checks options passed to submission compilation constructor. + Throws an exception if the options are not applicable to submissions. + + + + + Creates a new compilation equivalent to this one with different symbol instances. + + + + + Returns a new compilation with a given event queue. + + + + + Gets a new for the specified syntax tree. + + The specified syntax tree. + + True if the SemanticModel should ignore accessibility rules when answering semantic questions. + + + + + Returns a new INamedTypeSymbol representing an error type with the given name and arity + in the given optional container. + + + + + Simple assembly name, or null if not specified. + + + The name is used for determining internals-visible-to relationship with referenced assemblies. + + If the compilation represents an assembly the value of is its simple name. + + Unless specifies otherwise the module name + written to metadata is with an extension based upon . + + + + + Creates a compilation with the specified assembly name. + + The new assembly name. + A new compilation. + + + + Gets the options the compilation was created with. + + + + + Creates a new compilation with the specified compilation options. + + The new options. + A new compilation. + + + + True if the compilation represents an interactive submission. + + + + + Gets or allocates a runtime submission slot index for this compilation. + + Non-negative integer if this is a submission and it or a previous submission contains code, negative integer otherwise. + + + + The type object that represents the type of submission result the host requested. + + + + + The type of the globals object or null if not specified for this compilation. + + + + + Gets the syntax trees (parsed from source code) that this compilation was created with. + + + + + Creates a new compilation with additional syntax trees. + + The new syntax trees. + A new compilation. + + + + Creates a new compilation with additional syntax trees. + + The new syntax trees. + A new compilation. + + + + Creates a new compilation without the specified syntax trees. Preserves metadata info for use with trees + added later. + + The new syntax trees. + A new compilation. + + + + Creates a new compilation without the specified syntax trees. Preserves metadata info for use with trees + added later. + + The new syntax trees. + A new compilation. + + + + Creates a new compilation without any syntax trees. Preserves metadata info for use with + trees added later. + + + + + Creates a new compilation with an old syntax tree replaced with a new syntax tree. + Reuses metadata from old compilation object. + + The new tree. + The old tree. + A new compilation. + + + + Returns true if this compilation contains the specified tree. False otherwise. + + A syntax tree. + + + + The event queue that this compilation was created with. + + + + + Metadata references passed to the compilation constructor. + + + + + Unique metadata references specified via #r directive in the source code of this compilation. + + + + + All reference directives used in this compilation. + + + + + Maps values of #r references to resolved metadata references. + + + + + All metadata references -- references passed to the compilation + constructor as well as references specified via #r directives. + + + + + Creates a metadata reference for this compilation. + + + Optional aliases that can be used to refer to the compilation root namespace via extern alias directive. + + + Embed the COM types from the reference so that the compiled + application no longer requires a primary interop assembly (PIA). + + + + + Creates a new compilation with the specified references. + + + The new references. + + A new compilation. + + + + Creates a new compilation with the specified references. + + The new references. + A new compilation. + + + + Creates a new compilation with the specified references. + + + + + Creates a new compilation with additional metadata references. + + The new references. + A new compilation. + + + + Creates a new compilation with additional metadata references. + + The new references. + A new compilation. + + + + Creates a new compilation without the specified metadata references. + + The new references. + A new compilation. + + + + Creates a new compilation without the specified metadata references. + + The new references. + A new compilation. + + + + Creates a new compilation without any metadata references. + + + + + Creates a new compilation with an old metadata reference replaced with a new metadata + reference. + + The new reference. + The old reference. + A new compilation. + + + + Gets the or for a metadata reference used to create this + compilation. + + The target reference. + + Assembly or module symbol corresponding to the given reference or null if there is none. + + + + + Gets the that corresponds to the assembly symbol. + + The target symbol. + + + + Assembly identities of all assemblies directly referenced by this compilation. + + + Includes identities of references passed in the compilation constructor + as well as those specified via directives in source code. + + + + + The that represents the assembly being created. + + + + + Gets the for the module being created by compiling all of + the source code. + + + + + The root namespace that contains all namespaces and types defined in source code or in + referenced metadata, merged into a single namespace hierarchy. + + + + + Gets the corresponding compilation namespace for the specified module or assembly namespace. + + + + + Returns the Main method that will serves as the entry point of the assembly, if it is + executable (and not a script). + + + + + Get the symbol for the predefined type from the Cor Library referenced by this + compilation. + + + + + Returns true if the type is System.Type. + + + + + Returns true if the specified type is equal to or derives from System.Attribute well-known type. + + + + + The INamedTypeSymbol for the .NET System.Object type, which could have a TypeKind of + Error if there was no COR Library in this Compilation. + + + + + The TypeSymbol for the type 'dynamic' in this Compilation. + + + + + A symbol representing the implicit Script class. This is null if the class is not + defined in the compilation. + + + + + Returns a new ArrayTypeSymbol representing an array type tied to the base types of the + COR Library in this Compilation. + + + + + Returns a new PointerTypeSymbol representing a pointer type tied to a type in this + Compilation. + + + + + Gets the type within the compilation's assembly and all referenced assemblies (other than + those that can only be referenced via an extern alias) using its canonical CLR metadata name. + + Null if the type can't be found. + + Since VB does not have the concept of extern aliases, it considers all referenced assemblies. + + + + + Gets the diagnostics produced during the parsing stage. + + + + + Gets the diagnostics produced during symbol declaration. + + + + + Gets the diagnostics produced during the analysis of method bodies and field initializers. + + + + + Gets all the diagnostics for the compilation, including syntax, declaration, and + binding. Does not include any diagnostics that might be produced during emit, see + . + + + + Bag to which filtered diagnostics will be added. + Diagnostics to be filtered. + True if there were no errors or warnings-as-errors. + + + + Create a stream filled with default win32 resources. + + + + + Constructs the module serialization properties out of the compilation options of this compilation. + + + + + The value is not used by Windows loader, but the OS appcompat infrastructure uses it to identify apps. + It is useful for us to have a mechanism to identify the compiler that produced the binary. + This is the appropriate value to use for that. That is what it was invented for. + We don't want to have the high bit set for this in case some users perform a signed comparison to + determine if the value is less than some version. The C++ linker is at 0x0B. + We'll start our numbering at 0x30 for C#, 0x50 for VB. + + + + + Return true if the compilation contains any code or types. + + + + + Emit the IL for the compiled source code into the specified stream. + + Stream to which the compilation will be written. + Stream to which the compilation's debug info will be written. Null to forego PDB generation. + Stream to which the compilation's XML documentation will be written. Null to forego XML generation. + Stream from which the compilation's Win32 resources will be read (in RES format). + Null to indicate that there are none. The RES format begins with a null resource entry. + List of the compilation's managed resources. Null to indicate that there are none. + Emit options. + To cancel the emit process. + + + + Emit the IL for the compiled source code into the specified stream. + + Stream to which the compilation will be written. + Stream to which the compilation's debug info will be written. Null to forego PDB generation. + Stream to which the compilation's XML documentation will be written. Null to forego XML generation. + Stream from which the compilation's Win32 resources will be read (in RES format). + Null to indicate that there are none. The RES format begins with a null resource entry. + List of the compilation's managed resources. Null to indicate that there are none. + Emit options. + + Debug entry-point of the assembly. The method token is stored in the generated PDB stream. + + When a program launches with a debugger attached the debugger places the first breakpoint to the start of the debug entry-point method. + The CLR starts executing the static Main method of type. When the first breakpoint is hit + the debugger steps thru the code statement by statement until user code is reached, skipping methods marked by , + and taking other debugging attributes into consideration. + + By default both entry points in an executable program (, , ) + are the same method (Main). A non-executable program has no entry point. Runtimes that implement a custom loader may specify debug entry-point + to force the debugger to skip over complex custom loader logic executing at the beginning of the .exe and thus improve debugging experience. + + Unlike ordinary entry-point which is limited to a non-generic static method of specific signature, there are no restrictions on the + method other than having a method body (extern, interface, or abstract methods are not allowed). + + To cancel the emit process. + + + + This overload is only intended to be directly called by tests that want to pass . + The map is used for storing a list of methods and their associated IL. + + True if emit succeeded. + + + + Emit the differences between the compilation and the previous generation + for Edit and Continue. The differences are expressed as added and changed + symbols, and are emitted as metadata, IL, and PDB deltas. A representation + of the current compilation is returned as an EmitBaseline for use in a + subsequent Edit and Continue. + + + + + Emit the differences between the compilation and the previous generation + for Edit and Continue. The differences are expressed as added and changed + symbols, and are emitted as metadata, IL, and PDB deltas. A representation + of the current compilation is returned as an EmitBaseline for use in a + subsequent Edit and Continue. + + + + + This overload is only intended to be directly called by tests that want to pass . + The map is used for storing a list of methods and their associated IL. + + True if emit succeeded. + + + + The compiler needs to define an ordering among different partial class in different syntax trees + in some cases, because emit order for fields in structures, for example, is semantically important. + This function defines an ordering among syntax trees in this compilation. + + + + + Compare two source locations, using their containing trees, and then by Span.First within a tree. + Can be used to get a total ordering on declarations, for example. + + + + + Return the lexically first of two locations. + + + + + Return the lexically first of multiple locations. + + + + + Return true if there is a source declaration symbol name that meets given predicate. + + + + + Return source declaration symbols whose name meets given predicate. + + + + + The list of RetargetingAssemblySymbol objects created for this Compilation. + RetargetingAssemblySymbols are created when some other compilation references this one, + but the other references provided are incompatible with it. For example, compilation C1 + references v1 of Lib.dll and compilation C2 references C1 and v2 of Lib.dll. In this + case, in context of C2, all types from v1 of Lib.dll leaking through C1 (through method + signatures, etc.) must be retargeted to the types from v2 of Lib.dll. This is what + RetargetingAssemblySymbol is responsible for. In the example above, modules in C2 do not + reference C1.AssemblySymbol, but reference a special RetargetingAssemblySymbol created + for C1 by ReferenceManager. + + WeakReference is used to allow RetargetingAssemblySymbol to be collected when they become unused. + + Guarded by . + + + + + Adds given retargeting assembly for this compilation into the cache. + must be locked while calling this method. + + + + + Adds cached retargeting symbols into the given list. + must be locked while calling this method. + + + + + Indicate what kinds of declaration symbols will be included + + + + + None + + + + + include namespace symbols + + + + + include type symbols + + + + + include member symbols such as method, event, property, field + + + + + include type and member + + + + + include all namespace, type and member + + + + + Policy to be used when matching assembly reference to an assembly definition across platforms. + + + + + Converts to . + + Major, minor, build or revision number are less than 0 or greater than 0xFFFF. + + + Assembly portability policy, usually provided through an app.config file. + + + + Loads information from XML with app.config schema. + + The stream doesn't contain a well formed XML. + is null. + + Tries to find supportPortability elements in the given XML: + + + + + + + + + ]]> + + Keeps the stream open. + + + + + Returns true if the identity is a Framework 4.5 or lower assembly. + + + + + Provides strong name and signs source assemblies. + + + + + Creates an instance of . + + + An ordered set of fully qualified paths which are searched when locating a cryptographic key file. + + + + + Resolves assembly strong name key file path. + Internal for testing. + + Normalized key file path or null if not found. + + + + + + + + + + + + + + Handles loading analyzer assemblies and their dependencies. + + Before an analyzer assembly is loaded with , + its location and the location of all of its dependencies must first be specified + by calls to . + + + To the extent possible, implementations should remain consistent in the face + of exceptions and allow the caller to handle them. This allows the caller to + decide how to surface issues to the user and whether or not they are fatal. For + example, if asked to load an a non-existent or inaccessible file a command line + tool may wish to exit immediately, while an IDE may wish to keep going and give + the user a chance to correct the issue. + + + + + Given the full path to an assembly on disk, loads and returns the + corresponding object. + + + Multiple calls with the same path should return the same + instance. + + + + + Adds a file to consider when loading an analyzer or its dependencies. + + + + + A localizable resource string that may possibly be formatted differently depending on culture. + + + + + Creates a localizable resource string with no formatting arguments. + + nameof the resource that needs to be localized. + for the calling assembly. + Type handling assembly's resource management. Typically, this is the static class generated for the resources file from which resources are accessed. + + + + Creates a localizable resource string that may possibly be formatted differently depending on culture. + + nameof the resource that needs to be localized. + for the calling assembly. + Type handling assembly's resource management. Typically, this is the static class generated for the resources file from which resources are accessed. + Optional arguments for formatting the localizable resource string. + + + + A string that may possibly be formatted differently depending on culture. + NOTE: Types implementing must be serializable. + + + + + FixedLocalizableString representing an empty string. + + + + + Fired when an exception is raised by any of the public methods of . + If the exception handler itself throws an exception, that exception is ignored. + + + + + Formats the value of the current instance using the optionally specified format. + + + + + Formats the value of the current instance using the optionally specified format. + Provides the implementation of ToString. ToString will provide a default value + if this method throws an exception. + + + + + Provides the implementation of GetHashCode. GetHashCode will provide a default value + if this method throws an exception. + + + + + + Provides the implementation of Equals. Equals will provide a default value + if this method throws an exception. + + + + + + Represents compilation emit options. + + + + + True to emit an assembly excluding executable code such as method bodies. + + + + + Tolerate errors, producing a PE stream and a success result even in the presence of (some) errors. + + + + + Unless set (private) members that don't affect the language semantics of the resulting assembly will be excluded + when emitting with on. + + + Has no effect when is false. + + + + + Subsystem version + + + + + Specifies the size of sections in the output file. + + + Valid values are 0, 512, 1024, 2048, 4096 and 8192. + If the value is 0 the file alignment is determined based upon the value of . + + + + + True to enable high entropy virtual address space for the output binary. + + + + + Specifies the preferred base address at which to load the output DLL. + + + + + Debug information format. + + + + + Assembly name override - file name and extension. If not specified the compilation name is used. + + + By default the name of the output assembly is . Only in rare cases it is necessary + to override the name. + + CAUTION: If this is set to a (non-null) value other than the existing compilation output name, then internals-visible-to + and assembly references may not work as expected. In particular, things that were visible at bind time, based on the + name of the compilation, may not be visible at runtime and vice-versa. + + + + + The name of the PDB file to be embedded in the PE image, or null to use the default. + + + If not specified the file name of the source module with an extension changed to "pdb" is used. + + + + + Runtime metadata version. + + + + + Sets the byte alignment for portable executable file sections. + + Can be one of the following values: 0, 512, 1024, 2048, 4096, 8192 + + + + No change. + + + + + Node value was updated. + + + + + Node was inserted. + + + + + Node was deleted. + + + + + Debugging information associated with the specified method that is emitted by the compiler to support Edit and Continue. + + + + + Deserializes Edit and Continue method debug information from specified blobs. + + Local variable slot map. + Lambda and closure map. + Invalid data. + + + Invalid data. + + + + Merges synthesized members generated during lowering of the current compilation with aggregate synthesized members + from all previous source generations (gen >= 1). + + + Suppose {S -> {A, B, D}, T -> {E, F}} are all synthesized members in previous generations, + and {S' -> {A', B', C}, U -> {G, H}} members are generated in the current compilation. + + Where X matches X' via this matcher, i.e. X' is from the new compilation and + represents the same metadata entity as X in the previous compilation. + + Then the resulting collection shall have the following entries: + {S' -> {A', B', C, D}, U -> {G, H}, T -> {E, F}} + + + + + The result of the Compilation.Emit method. + + + + + True if the compilation successfully produced an executable. + If false then the diagnostics should include at least one error diagnostic + indicating the cause of the failure. + + + + + A list of all the diagnostics associated with compilations. This include parse errors, declaration errors, + compilation errors, and emitting errors. + + + + + Name of the anonymous type field. + + + + + True if the anonymous type field was marked as 'Key' in VB. + + + + + is case insensitive. + + + + + Return tokens for all modified debuggable methods. + + + + + Add an item from a previous generation + that has been updated in this generation. + + + + + Represents a module from a previous compilation. Used in Edit and Continue + to emit the differences in a subsequent compilation. + + + + + A map of the assembly identities of the baseline compilation to the identities of the original metadata AssemblyRefs. + Only includes identities that differ between these two. + + + + + Creates an from the metadata of the module before editing + and from a function that maps from a method to an array of local names. + + The metadata of the module before editing. + + A function that for a method handle returns Edit and Continue debug information emitted by the compiler into the PDB. + The function shall throw if the debug information can't be read for the specified method. + This exception is caught and converted to an emit diagnostic. Other exceptions are passed through. + + An for the module. + + Only the initial baseline is created using this method; subsequent baselines are created + automatically when emitting the differences in subsequent compilations. + + When an active method (one for which a frame is allocated on a stack) is updated the values of its local variables need to be preserved. + The mapping of local variable names to their slots in the frame is not included in the metadata and thus needs to be provided by + . + + The is only needed for the initial generation. The mapping for the subsequent generations + is carried over through . The compiler assigns slots to named local variables (including named temporary variables) + it the order in which they appear in the source code. This property allows the compiler to reconstruct the local variable mapping + for the initial generation. A subsequent generation may add a new variable in between two variables of the previous generation. + Since the slots of the previous generation variables need to be preserved the only option is to add these new variables to the end. + The slot ordering thus no longer matches the syntax ordering. It is therefore necessary to pass + to the next generation (rather than e.g. create new s from scratch based on metadata produced by subsequent compilations). + + + + + The original metadata of the module. + + + + + Metadata generation ordinal. Zero for + full metadata and non-zero for delta. + + + + + Unique Guid for this delta, or default(Guid) + if full metadata. + + + + + EnC metadata for methods added or updated since the initial generation, indexed by method row id. + + + + + Reads EnC debug information of a method from the initial baseline PDB. + The function shall throw if the debug information can't be read for the specified method. + This exception is caught and converted to an emit diagnostic. Other exceptions are passed through. + + + + + No change to symbol or members. + + + + + No change to symbol but may contain changed symbols. + + + + + Symbol updated. + + + + + Symbol added. + + + + + True if the symbol is a source symbol added during EnC session. + The symbol may be declared in any source compilation in the current solution. + + + + + Returns true if the symbol or some child symbol has changed and needs to be compiled. + + + + + Calculate the set of changes up to top-level types. The result + will be used as a filter when traversing the module. + + Note that these changes only include user-defined source symbols, not synthesized symbols since those will be + generated during lowering of the changed user-defined symbols. + + + + + Return the symbol that contains this symbol as far + as changes are concerned. For instance, an auto property + is considered the containing symbol for the backing + field and the accessor methods. By default, the containing + symbol is simply Symbol.ContainingSymbol. + + + + + Error type symbols should be replaced with an object of this class + in the translation layer for emit. + + + + + For the name we will use a word "Error" followed by a guid, generated on the spot. + + + + + A fake containing assembly for an ErrorType object. + + + + + For the name we will use a word "Error" followed by a guid, generated on the spot. + + + + + This is only used for testing. + + + + + This is only used for testing. + + + + + This is only used for testing. + + + + + Returns null if member doesn't belong to an embedded NoPia type. + + + + + Common base class for C# and VB PE module builder. + + + + + EnC generation. + + + + + Captures the set of synthesized definitions that should be added to a type + during emit process. + + + + + Returns null if there are no compiler generated types. + + + + + Returns null if there are no synthesized methods. + + + + + Returns null if there are no synthesized properties. + + + + + Returns null if there are no synthesized fields. + + + + + Builds symbol definition to location map used for emitting token -> location info + into PDB to be consumed by WinMdExp.exe tool (only applicable for /t:winmdobj) + + + + + Describes a symbol edit between two compilations. + For example, an addition of a method, an update of a method, removal of a type, etc. + + + + + The type of edit. + + + + + The symbol from the earlier compilation, + or null if the edit represents an addition. + + + + + The symbol from the later compilation, + or null if the edit represents a deletion. + + + + + A map from syntax node in the later compilation to syntax node in the previous compilation, + or null if is false and the map is not needed or + the source of the current method is the same as the source of the previous method. + + + The map does not need to map all syntax nodes in the active method, only those syntax nodes + that declare a local or generate a long lived local. + + + + + True if the edit is an update of the active method and local values + should be preserved; false otherwise. + + + + + Initializes an instance of . + + The type of edit. + + The symbol from the earlier compilation, or null if the edit represents an addition. + + + The symbol from the later compilation, or null if the edit represents a deletion. + + + A map from syntax node in the later compilation to syntax node in the previous compilation, + or null if is false and the map is not needed or + the source of the current method is the same as the source of the previous method. + + + True if the edit is an update of an active method and local values should be preserved; false otherwise. + + + or is null and the edit isn't an or , respectively. + + + is not a valid kind. + + + + + Emit the IL for the compilation into the specified stream. + + Compilation. + Path of the file to which the compilation will be written. + Path of the file to which the compilation's debug info will be written. + Also embedded in the output file. Null to forego PDB generation. + + Path of the file to which the compilation's XML documentation will be written. Null to forego XML generation. + Path of the file from which the compilation's Win32 resources will be read (in RES format). + Null to indicate that there are none. + List of the compilation's managed resources. Null to indicate that there are none. + To cancel the emit process. + Compilation or path is null. + Path is empty or invalid. + An error occurred while reading or writing a file. + + + + APIs for constructing documentation comment id's, and finding symbols that match ids. + + + + + Creates an id string used by external documentation comment files to identify declarations + of types, namespaces, methods, properties, etc. + + + + + Creates an id string used to reference type symbols (not strictly declarations, includes + arrays, pointers, type parameters, etc.) + + + + + Gets all declaration symbols that match the declaration id string + + + + + Try to get all the declaration symbols that match the declaration id string. + Returns true if at least one symbol matches. + + + + + Gets the first declaration symbol that matches the declaration id string, order undefined. + + + + + Gets the symbols that match the reference id string. + + + + + Try to get all symbols that match the reference id string. + Returns true if at least one symbol matches. + + + + + Gets the first symbol that matches the reference id string, order undefined. + + + + + Checks for the given ; if the is true, + immediately terminates the process without running any pending finally blocks or finalizers + and causes a crash dump to be collected (if the system is configured to do so). + Otherwise, the process continues normally. + + The conditional expression to evaluate. + An optional message to be recorded in the dump in case of failure. Can be null. + + + + Dictionary designed to hold small number of items. + Compared to the regular Dictionary, average overhead per-item is roughly the same, but + unlike regular dictionary, this one is based on an AVL tree and as such does not require + rehashing when items are added. + It does require rebalancing, but that is allocation-free. + + Major caveats: + 1) There is no Remove method. (can be added, but we do not seem to use Remove that much) + 2) foreach [keys|values|pairs] may allocate a small array. + 3) Performance is no longer O(1). At a certain count it becomes slower than regular Dictionary. + In comparison to regular Dictionary on my machine: + On trivial number of elements (5 or so) it is more than 2x faster. + The break even count is about 120 elements for read and 55 for write operations (with unknown initial size). + At UShort.MaxValue elements, this dictionary is 6x slower to read and 4x slower to write + + Generally, this dictionary is a win if number of elements is small, not known beforehand or both. + + If the size of the dictionary is known at creation and it is likely to contain more than 10 elements, + then regular Dictionary is a better choice. + + + + + Implements a readonly collection over a set of existing collections. This can be used to + prevent having to copy items from one collection over to another (thus bloating space). + + Note: this is a *collection*, not a *set*. There is no removal of duplicated elements. This + allows us to be able to efficiently do operations like CopyTo, Count, etc. in O(c) time + instead of O(n) (where 'c' is the number of collections and 'n' is the number of elements). + If you have a few collections with many elements in them, then this is an appropriate + collection for you. + + + + + Indicates the reasons why a candidate (or set of candidate) symbols were not considered + correct in SemanticInfo. Higher values take precedence over lower values, so if, for + example, there a symbol with a given name that was inaccessible, and other with the wrong + arity, only the inaccessible one would be reported in the SemanticInfo. + + + + + No CandidateSymbols. + + + + + Only a type or namespace was valid in the given location, but the candidate symbols was + of the wrong kind. + + + + + Only an event was valid in the given location, but the candidate symbols was + of the wrong kind. + + + + + The candidate symbol must be a WithEvents member, but it was not. + + + + + Only an attribute type was valid in the given location, but the candidate symbol was + of the wrong kind. + + + + + The candidate symbol takes a different number of type parameters that was required. + + + + + The candidate symbol existed, but was not allowed to be created in a new expression. + For example, interfaces, static classes, and unconstrained type parameters. + + + + + The candidate symbol existed, but was not allowed to be referenced. For example, the + "get_XXX" method used to implement a property named "XXX" may not be directly + referenced. Similarly, the type "System.Void" can not be directly referenced. + Also occurs if "this" is used in a context (static method or field initializer) + where "this" is not available. + + + + + The candidate symbol had an accessibility modifier (private, protected, ...) that made + it inaccessible. + + + + + The candidate symbol was in a place where a value was required, but was not a value + (e.g., was a type or namespace). + + + + + The candidate symbol was in a place where a variable (or sometimes, a property) was + required, but was not allowed there because it isn't a symbol that can be assigned to. + For example, the left hand side of an assignment, or a ref or out parameter. + + + + + The candidate symbol was used in a way that an invocable member (method, or variable of + delegate type) was required, but the candidate symbol was not invocable. + + + + + The candidate symbol must be an instance variable, but was used as static, or the + reverse. + + + + + Overload resolution did not choose a method. The candidate symbols are the methods there + were considered during overload resolution (which may or may not be applicable methods). + + + + + Method could not be selected statically. + The candidate symbols are the methods there were considered during overload resolution + (which may or may not be applicable methods). + + + + + Multiple ambiguous symbols were available with the same name. This can occur if "using" + statements bring multiple namespaces into scope, and the same type is available in + multiple. This can also occur if multiple properties of the same name are available in a + multiple interface inheritance situation. + + + + + CandidateSymbols are members of a group of results. This is used when there isn't a problem, + but there is more than one result, for example nameof(int.ToString). + + + + + Represents compilation options common to C# and VB. + + + + + The kind of assembly generated when emitted. + + + + + Name of the primary module, or null if a default name should be used. + + + The name usually (but not necessarily) includes an extension, e.g. "MyModule.dll". + + If is null the actual name written to metadata + is derived from the name of the compilation () + by appending a default extension for . + + + + + The full name of a global implicit class (script class). This class implicitly encapsulates top-level statements, + type declarations, and member declarations. Could be a namespace qualified name. + + + + + The full name of a type that declares static Main method. Must be a valid non-generic namespace-qualified name. + Null if any static Main method is a candidate for an entry point. + + + + + Specifies public key used to generate strong name for the compilation assembly, or empty if not specified. + + + If specified the values of and + must be null. If is true the assembly is marked as fully signed + but only signed with the public key (aka "OSS signing"). + + + + + The name of the file containing the public and private keys to use to generate strong name of the + compilation assembly and to sign it. + + + + To sign the output supply either one of or . + but not both. If both are specified is ignored. + + + If is also set, must be the absolute + path to key file. + + + + + + The CSP container containing the key with which to sign the output. + + + + To sign the output supply either one of or . + but not both. If both are specified is ignored. + + + This setting is obsolete and only supported on Microsoft Windows platform. + Use to generate assemblies with strong name and + a signing tool (Microsoft .NET Framework Strong Name Utility (sn.exe) or equivalent) to sign them. + + + + + + Mark the compilation assembly as delay-signed. + + + If true the resulting assembly is marked as delay signed. + + If false and , , or is specified + or attribute System.Reflection.AssemblyKeyFileAttribute or System.Reflection.AssemblyKeyNameAttribute is applied to the + compilation assembly in source the resulting assembly is signed accordingly to the specified values/attributes. + + If null the semantics is specified by the value of attribute System.Reflection.AssemblyDelaySignAttribute + applied to the compilation assembly in source. If the attribute is not present the value defaults to "false". + + + + + Mark the compilation assembly as fully signed, but only sign with the public key. + + + + If true, the assembly is marked as signed, but is only signed with the public key. + + + The key must be provided through either an absolute path in + or directly via . + + + + + + Whether bounds checking on integer arithmetic is enforced by default or not. + + + + + Specifies which version of the common language runtime (CLR) can run the assembly. + + + + + Specifies whether or not optimizations should be performed on the output IL. + This is independent of whether or not PDB information is generated. + + + + + Global warning report option + + + + + Global warning level (from 0 to 4). + + + + + Specifies whether building compilation may use multiple threads. + + + + + Specifies whether the compilation should be deterministic. + + + + + Used for time-based version generation when contains a wildcard. + If equal to default() the actual current local time will be used. + + + + + Emit extended custom debug information to the PDB file. + + + + + Emit mode that favors debuggability. + + + + + Import internal/private members from all references regardless of "internals-visible-to" relationship. + + + + + Apply additional disambiguation rules during resolution of referenced assemblies. + + + + + Modifies the incoming diagnostic, for example escalating its severity, or discarding it (returning null) based on the compilation options. + + + The modified diagnostic, or null + + + + Warning report option for each warning. + + + + + Whether diagnostics suppressed in source, i.e. is true, should be reported. + + + + + Resolves paths to metadata references specified in source via #r directives. + Null if the compilation can't contain references to metadata other than those explicitly passed to its factory (such as #r directives in sources). + + + + + Gets the resolver for resolving XML document references for the compilation. + Null if the compilation is not allowed to contain XML file references, such as XML doc comment include tags and permission sets stored in an XML file. + + + + + Gets the resolver for resolving source document references for the compilation. + Null if the compilation is not allowed to contain source file references, such as #line pragmas and #load directives. + + + + + Provides strong name and signature the source assembly. + Null if assembly signing is not supported. + + + + + Used to compare assembly identities. May implement unification and portability policies specific to the target platform. + if not specified. + + + + + A set of strings designating experimental compiler features that are to be enabled. + + + + + Creates a new options instance with the specified general diagnostic option. + + + + + Creates a new options instance with the specified diagnostic-specific options. + + + + + Creates a new options instance with the specified diagnostic-specific options. + + + + + Creates a new options instance with the specified suppressed diagnostics reporting option. + + + + + Creates a new options instance with the deterministic property set accordingly. + + + + + Creates a new options instance with the specified output kind. + + + + + Creates a new options instance with the specified platform. + + + + + Creates a new options instance with the specified public sign setting. + + + + + Creates a new options instance with optimizations enabled or disabled. + + + + + Performs validation of options compatibilities and generates diagnostics if needed + + + + + Errors collection related to an incompatible set of compilation options + + + + + Represents the possible compilation stages for which it is possible to get diagnostics + (errors). + + + + + Provides information about statements which transfer control in and out of a region. This + information is returned from a call to . + + + + + The set of statements inside the region what are the + destination of branches outside the region. + + + + + The set of statements inside a region that jump to locations outside + the region. + + + + + Indicates whether a region completes normally. Return true if and only if the end of the + last statement in a region is reachable or the region contains no statements. + + + + + The set of return statements found within a region. + + + + + Returns true iff analysis was successful. Analysis can fail if the region does not properly span a single expression, + a single statement, or a contiguous series of statements within the enclosing block. + + + + + Provides information about how data flows into and out of a region. This information is + returned from a call to + , or one of its language-specific overloads, + where you pass the first and last statements of the region as parameters. + "Inside" means those statements or ones between them. "Outside" are any other statements of the same method. + + + + + The set of local variables that are declared within a region. Note + that the region must be bounded by a method's body or a field's initializer, so + parameter symbols are never included in the result. + + + + + The set of local variables which are assigned a value outside a region + that may be used inside the region. + + + + + The set of local variables which are assigned a value inside a region + that may be used outside the region. + + + + + The set of local variables for which a value is always assigned inside + a region. + + + + + The set of local variables that are read inside a region. + + + + + The set of local variables that are written inside a region. + + + + + The set of the local variables that are read outside a region. + + + + + The set of local variables that are written outside a region. + + + + + The set of the local variables that have been referenced in anonymous + functions within a region and therefore must be moved to a field of a frame class. + + + + + The set of non-constant local variables and parameters that have had their + address (or the address of one of their fields) taken. + + + + + Returns true iff analysis was successful. Analysis can fail if the region does not + properly span a single expression, a single statement, or a contiguous series of + statements within the enclosing block. + + + + + Gets symbol information about a syntax node. + + + The syntax node to get semantic information for. + A cancellation token that can be used to cancel the + process of obtaining the semantic info. + + + + Binds the node in the context of the specified location and get semantic information + such as type, symbols and diagnostics. This method is used to get semantic information + about an expression that did not actually appear in the source code. + + + A character position used to identify a declaration scope and + accessibility. This character position must be within the FullSpan of the Root syntax + node in this SemanticModel. + + A syntax node that represents a parsed expression. This syntax + node need not and typically does not appear in the source code referred to SemanticModel + instance. + Indicates whether to binding the expression as a full expressions, + or as a type or namespace. If SpeculativeBindingOption.BindAsTypeOrNamespace is supplied, then + expression should derive from TypeSyntax. + The semantic information for the topmost node of the expression. + The passed in expression is interpreted as a stand-alone expression, as if it + appeared by itself somewhere within the scope that encloses "position". + + + + Gets type information about a syntax node. + + + The syntax node to get semantic information for. + A cancellation token that can be used to cancel the + process of obtaining the semantic info. + + + + If "nameSyntax" resolves to an alias name, return the IAliasSymbol corresponding + to A. Otherwise return null. + + + Name to get alias info for. + A cancellation token that can be used to cancel the + process of obtaining the alias information. + + + + Binds the name in the context of the specified location and sees if it resolves to an + alias name. If it does, return the AliasSymbol corresponding to it. Otherwise, return null. + + + A character position used to identify a declaration scope and + accessibility. This character position must be within the FullSpan of the Root syntax + node in this SemanticModel. + + A syntax node that represents a name. This syntax + node need not and typically does not appear in the source code referred to by the + SemanticModel instance. + Indicates whether to binding the name as a full expression, + or as a type or namespace. If SpeculativeBindingOption.BindAsTypeOrNamespace is supplied, then + expression should derive from TypeSyntax. + The passed in name is interpreted as a stand-alone name, as if it + appeared by itself somewhere within the scope that encloses "position". + + + + Binds the node in the context of the specified location and get semantic information + such as type, symbols and diagnostics. This method is used to get semantic information + about an expression that did not actually appear in the source code. + + + A character position used to identify a declaration scope and + accessibility. This character position must be within the FullSpan of the Root syntax + node in this SemanticModel. + + A syntax node that represents a parsed expression. This syntax + node need not and typically does not appear in the source code referred to SemanticModel + instance. + Indicates whether to binding the expression as a full expressions, + or as a type or namespace. If SpeculativeBindingOption.BindAsTypeOrNamespace is supplied, then + expression should derive from TypeSyntax. + The semantic information for the topmost node of the expression. + The passed in expression is interpreted as a stand-alone expression, as if it + appeared by itself somewhere within the scope that encloses "position". + + + + Gets the symbol associated with a declaration syntax node. + + + A syntax node that is a declaration. This can be any type + derived from MemberDeclarationSyntax, TypeDeclarationSyntax, EnumDeclarationSyntax, + NamespaceDeclarationSyntax, ParameterSyntax, TypeParameterSyntax, or the alias part of a + UsingDirectiveSyntax + The cancellation token. + The symbol declared by the node or null if the node is not a declaration. + + + + Gets a list of method or indexed property symbols for a syntax node. + + + The syntax node to get semantic information for. + The cancellation token. + + + + Analyze control-flow within a part of a method body. + + + + + Analyze control-flow within a part of a method body. + + + + + Analyze data-flow within a part of a method body. + + + + + Analyze data-flow within a part of a method body. + + + + + Root type for representing the abstract semantics of C# and VB statements and expressions. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Identifies the kind of the operation. + + + + + Indicates whether the operation is invalid, either semantically or syntactically. + + + + + Syntax that was analyzed to produce the operation. + + + + + Result type of the operation, or null if the operation does not produce a result. + + + + + If the operation is an expression that evaluates to a constant value, is true and is the value of the expression. Otherwise, is false. + + + + + All of the kinds of operations, including statements and expressions. + + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + Indicates an . + + + + Determines the level of optimization of the generated code. + + + + + Disables all optimizations and instruments the generated code to improve debugging experience. + + + The compiler prefers debuggability over performance. Do not use for code running in a production environment. + + JIT optimizations are disabled via assembly level attribute (). + Edit and Continue is enabled. + Slots for local variables are not reused, lifetime of local variables is extended to make the values available during debugging. + + + Corresponds to command line argument /optimize-. + + + + + + Enables all optimizations, debugging experience might be degraded. + + + The compiler prefers performance over debuggability. Use for code running in a production environment. + + JIT optimizations are enabled via assembly level attribute (). + Edit and Continue is disabled. + Sequence points may be optimized away. As a result it might not be possible to place or hit a breakpoint. + User-defined locals might be optimized away. They might not be available while debugging. + + + Corresponds to command line argument /optimize+. + + + + + + Represents parse options common to C# and VB. + + + + + Specifies whether to parse as regular code files, script files or interactive code. + + + + + Gets a value indicating whether the documentation comments are parsed. + + true if documentation comments are parsed, false otherwise. + + + + Creates a new options instance with the specified source code kind. + + + + + Creates a new options instance with the specified documentation mode. + + + + + Enable some experimental language features for testing. + + + + + Returns the experimental features. + + + + + Names of defined preprocessor symbols. + + + + + AnyCPU (default) compiles the assembly to run on any platform. + + + + + x86 compiles the assembly to be run by the 32-bit, x86-compatible common language runtime. + + + + + x64 compiles the assembly to be run by the 64-bit common language runtime on a computer that supports the AMD64 or EM64T instruction set. + + + + + Itanium compiles the assembly to be run by the 64-bit common language runtime on a computer with an Itanium processor. + + + + + Compiles your assembly to run on any platform. Your application runs in 32-bit mode on systems that support both 64-bit and 32-bit applications. + + + + + Compiles your assembly to run on a computer that has an Advanced RISC Machine (ARM) processor. + + + + + The symbol that was referred to by the identifier, if any. + + + + + Returns true if this preprocessing symbol is defined at the identifier position. + + + + + Allows asking semantic questions about a tree of syntax nodes in a Compilation. Typically, + an instance is obtained by a call to GetBinding on a Compilation or Compilation. + + + An instance of SemanticModel caches local symbols and semantic information. Thus, it + is much more efficient to use a single instance of SemanticModel when asking multiple + questions about a syntax tree, because information from the first question may be reused. + This also means that holding onto an instance of SemanticModel for a long time may keep a + significant amount of memory from being garbage collected. + + + When an answer is a named symbol that is reachable by traversing from the root of the symbol + table, (that is, from an AssemblySymbol of the Compilation), that symbol will be returned + (i.e. the returned value will be reference-equal to one reachable from the root of the + symbol table). Symbols representing entities without names (e.g. array-of-int) may or may + not exhibit reference equality. However, some named symbols (such as local variables) are + not reachable from the root. These symbols are visible as answers to semantic questions. + When the same SemanticModel object is used, the answers exhibit reference-equality. + + + + + + Gets the source language ("C#" or "Visual Basic"). + + + + + The compilation this model was obtained from. + + + + + The compilation this model was obtained from. + + + + + The syntax tree this model was obtained from. + + + + + The syntax tree this model was obtained from. + + + + + Gets the operation corresponding to the expression or statement syntax node. + + The expression or statement syntax node. + An optional cancellation token. + + + + + Returns true if this is a SemanticModel that ignores accessibility rules when answering semantic questions. + + + + + Gets symbol information about a syntax node. + + The syntax node to get semantic information for. + A cancellation token that can be used to cancel the + process of obtaining the semantic info. + + + + Gets symbol information about a syntax node. + + The syntax node to get semantic information for. + A cancellation token that can be used to cancel the + process of obtaining the semantic info. + + + + Binds the node in the context of the specified location and get semantic information + such as type, symbols and diagnostics. This method is used to get semantic information + about an expression that did not actually appear in the source code. + + A character position used to identify a declaration scope and + accessibility. This character position must be within the FullSpan of the Root syntax + node in this SemanticModel. + + A syntax node that represents a parsed expression. This syntax + node need not and typically does not appear in the source code referred to SemanticModel + instance. + Indicates whether to binding the expression as a full expressions, + or as a type or namespace. If SpeculativeBindingOption.BindAsTypeOrNamespace is supplied, then + expression should derive from TypeSyntax. + The semantic information for the topmost node of the expression. + The passed in expression is interpreted as a stand-alone expression, as if it + appeared by itself somewhere within the scope that encloses "position". + + + + Binds the node in the context of the specified location and get semantic information + such as type, symbols and diagnostics. This method is used to get semantic information + about an expression that did not actually appear in the source code. + + A character position used to identify a declaration scope and + accessibility. This character position must be within the FullSpan of the Root syntax + node in this SemanticModel. + + A syntax node that represents a parsed expression. This syntax + node need not and typically does not appear in the source code referred to SemanticModel + instance. + Indicates whether to binding the expression as a full expressions, + or as a type or namespace. If SpeculativeBindingOption.BindAsTypeOrNamespace is supplied, then + expression should derive from TypeSyntax. + The semantic information for the topmost node of the expression. + The passed in expression is interpreted as a stand-alone expression, as if it + appeared by itself somewhere within the scope that encloses "position". + + + + Binds the node in the context of the specified location and get semantic information + such as type, symbols and diagnostics. This method is used to get semantic information + about an expression that did not actually appear in the source code. + + A character position used to identify a declaration scope and + accessibility. This character position must be within the FullSpan of the Root syntax + node in this SemanticModel. + + A syntax node that represents a parsed expression. This syntax + node need not and typically does not appear in the source code referred to SemanticModel + instance. + Indicates whether to binding the expression as a full expressions, + or as a type or namespace. If SpeculativeBindingOption.BindAsTypeOrNamespace is supplied, then + expression should derive from TypeSyntax. + The semantic information for the topmost node of the expression. + The passed in expression is interpreted as a stand-alone expression, as if it + appeared by itself somewhere within the scope that encloses "position". + + + + Binds the node in the context of the specified location and get semantic information + such as type, symbols and diagnostics. This method is used to get semantic information + about an expression that did not actually appear in the source code. + + A character position used to identify a declaration scope and + accessibility. This character position must be within the FullSpan of the Root syntax + node in this SemanticModel. + + A syntax node that represents a parsed expression. This syntax + node need not and typically does not appear in the source code referred to SemanticModel + instance. + Indicates whether to binding the expression as a full expressions, + or as a type or namespace. If SpeculativeBindingOption.BindAsTypeOrNamespace is supplied, then + expression should derive from TypeSyntax. + The semantic information for the topmost node of the expression. + The passed in expression is interpreted as a stand-alone expression, as if it + appeared by itself somewhere within the scope that encloses "position". + + + + Gets type information about a syntax node. + + The syntax node to get semantic information for. + A cancellation token that can be used to cancel the + process of obtaining the semantic info. + + + + Gets type information about a syntax node. + + The syntax node to get semantic information for. + A cancellation token that can be used to cancel the + process of obtaining the semantic info. + + + + If "nameSyntax" resolves to an alias name, return the IAliasSymbol corresponding + to A. Otherwise return null. + + Name to get alias info for. + A cancellation token that can be used to cancel the + process of obtaining the alias information. + + + + If "nameSyntax" resolves to an alias name, return the IAliasSymbol corresponding + to A. Otherwise return null. + + Name to get alias info for. + A cancellation token that can be used to cancel the + process of obtaining the alias information. + + + + Returns true if this is a speculative semantic model created with any of the TryGetSpeculativeSemanticModel methods. + + + + + If this is a speculative semantic model, returns the original position at which the speculative model was created. + Otherwise, returns 0. + + + + + If this is a speculative semantic model, then returns its parent semantic model. + Otherwise, returns null. + + + + + If this is a speculative semantic model, then returns its parent semantic model. + Otherwise, returns null. + + + + + Binds the name in the context of the specified location and sees if it resolves to an + alias name. If it does, return the AliasSymbol corresponding to it. Otherwise, return null. + + A character position used to identify a declaration scope and + accessibility. This character position must be within the FullSpan of the Root syntax + node in this SemanticModel. + + A syntax node that represents a name. This syntax + node need not and typically does not appear in the source code referred to by the + SemanticModel instance. + Indicates whether to binding the name as a full expression, + or as a type or namespace. If SpeculativeBindingOption.BindAsTypeOrNamespace is supplied, then + expression should derive from TypeSyntax. + The passed in name is interpreted as a stand-alone name, as if it + appeared by itself somewhere within the scope that encloses "position". + + + + Binds the name in the context of the specified location and sees if it resolves to an + alias name. If it does, return the AliasSymbol corresponding to it. Otherwise, return null. + + A character position used to identify a declaration scope and + accessibility. This character position must be within the FullSpan of the Root syntax + node in this SemanticModel. + + A syntax node that represents a name. This syntax + node need not and typically does not appear in the source code referred to by the + SemanticModel instance. + Indicates whether to binding the name as a full expression, + or as a type or namespace. If SpeculativeBindingOption.BindAsTypeOrNamespace is supplied, then + expression should derive from TypeSyntax. + The passed in name is interpreted as a stand-alone name, as if it + appeared by itself somewhere within the scope that encloses "position". + + + + Get all of the syntax errors within the syntax tree associated with this + object. Does not get errors involving declarations or compiling method bodies or initializers. + + Optional span within the syntax tree for which to get diagnostics. + If no argument is specified, then diagnostics for the entire tree are returned. + A cancellation token that can be used to cancel the + process of obtaining the diagnostics. + + + + Get all of the declaration errors within the syntax tree associated with this + object. Does not get errors involving incorrect syntax, compiling method bodies or initializers. + + Optional span within the syntax tree for which to get diagnostics. + If no argument is specified, then diagnostics for the entire tree are returned. + A cancellation token that can be used to cancel the + process of obtaining the diagnostics. + The declaration errors for a syntax tree are cached. The first time this method + is called, all declarations are analyzed for diagnostics. Calling this a second time + will return the cached diagnostics. + + + + + Get all of the method body and initializer errors within the syntax tree associated with this + object. Does not get errors involving incorrect syntax or declarations. + + Optional span within the syntax tree for which to get diagnostics. + If no argument is specified, then diagnostics for the entire tree are returned. + A cancellation token that can be used to cancel the + process of obtaining the diagnostics. + The method body errors for a syntax tree are not cached. The first time this method + is called, all method bodies are analyzed for diagnostics. Calling this a second time + will repeat this work. + + + + + Get all the errors within the syntax tree associated with this object. Includes errors + involving compiling method bodies or initializers, in addition to the errors returned by + GetDeclarationDiagnostics. + + Optional span within the syntax tree for which to get diagnostics. + If no argument is specified, then diagnostics for the entire tree are returned. + A cancellation token that can be used to cancel the + process of obtaining the diagnostics. + + Because this method must semantically bind all method bodies and initializers to check + for diagnostics, it may take a significant amount of time. Unlike + GetDeclarationDiagnostics, diagnostics for method bodies and initializers are not + cached, any semantic information used to obtain the diagnostics is discarded. + + + + + Gets the symbol associated with a declaration syntax node. + + A syntax node that is a declaration. This can be any type + derived from MemberDeclarationSyntax, TypeDeclarationSyntax, EnumDeclarationSyntax, + NamespaceDeclarationSyntax, ParameterSyntax, TypeParameterSyntax, or the alias part of a + UsingDirectiveSyntax + The cancellation token. + The symbol declared by the node or null if the node is not a declaration. + + + + Gets the symbol associated with a declaration syntax node. + + A syntax node that is a declaration. This can be any type + derived from MemberDeclarationSyntax, TypeDeclarationSyntax, EnumDeclarationSyntax, + NamespaceDeclarationSyntax, ParameterSyntax, TypeParameterSyntax, or the alias part of a + UsingDirectiveSyntax + The cancellation token. + The symbol declared by the node or null if the node is not a declaration. + + + + Gets the symbol associated with a declaration syntax node. Unlike , + this method returns all symbols declared by a given declaration syntax node. Specifically, in the case of field declaration syntax nodes, + which can declare multiple symbols, this method returns all declared symbols. + + A syntax node that is a declaration. This can be any type + derived from MemberDeclarationSyntax, TypeDeclarationSyntax, EnumDeclarationSyntax, + NamespaceDeclarationSyntax, ParameterSyntax, TypeParameterSyntax, or the alias part of a + UsingDirectiveSyntax + The cancellation token. + The symbols declared by the node. + + + + Gets the symbol associated with a declaration syntax node. Unlike , + this method returns all symbols declared by a given declaration syntax node. Specifically, in the case of field declaration syntax nodes, + which can declare multiple symbols, this method returns all declared symbols. + + A syntax node that is a declaration. This can be any type + derived from MemberDeclarationSyntax, TypeDeclarationSyntax, EnumDeclarationSyntax, + NamespaceDeclarationSyntax, ParameterSyntax, TypeParameterSyntax, or the alias part of a + UsingDirectiveSyntax + The cancellation token. + The symbols declared by the node. + + + + Gets the available named symbols in the context of the specified location and optional container. Only + symbols that are accessible and visible from the given location are returned. + + The character position for determining the enclosing declaration scope and + accessibility. + The container to search for symbols within. If null then the enclosing declaration + scope around position is used. + The name of the symbol to find. If null is specified then symbols + with any names are returned. + Consider (reduced) extension methods. + A list of symbols that were found. If no symbols were found, an empty list is returned. + + The "position" is used to determine what variables are visible and accessible. Even if "container" is + specified, the "position" location is significant for determining which members of "containing" are + accessible. + + Labels are not considered (see ). + + Non-reduced extension methods are considered regardless of the value of . + + + + + Backing implementation of . + + + + + Gets the available base type members in the context of the specified location. Akin to + calling with the container set to the immediate base type of + the type in which occurs. However, the accessibility rules + are different: protected members of the base type will be visible. + + Consider the following example: + + public class Base + { + protected void M() { } + } + + public class Derived : Base + { + void Test(Base b) + { + b.M(); // Error - cannot access protected member. + base.M(); + } + } + + Protected members of an instance of another type are only accessible if the instance is known + to be "this" instance (as indicated by the "base" keyword). + + The character position for determining the enclosing declaration scope and + accessibility. + The name of the symbol to find. If null is specified then symbols + with any names are returned. + A list of symbols that were found. If no symbols were found, an empty list is returned. + + The "position" is used to determine what variables are visible and accessible. + + Non-reduced extension methods are considered, but reduced extension methods are not. + + + + + Backing implementation of . + + + + + Gets the available named static member symbols in the context of the specified location and optional container. + Only members that are accessible and visible from the given location are returned. + + Non-reduced extension methods are considered, since they are static methods. + + The character position for determining the enclosing declaration scope and + accessibility. + The container to search for symbols within. If null then the enclosing declaration + scope around position is used. + The name of the symbol to find. If null is specified then symbols + with any names are returned. + A list of symbols that were found. If no symbols were found, an empty list is returned. + + The "position" is used to determine what variables are visible and accessible. Even if "container" is + specified, the "position" location is significant for determining which members of "containing" are + accessible. + + Essentially the same as filtering instance members out of the results of an analogous call. + + + + + Backing implementation of . + + + + + Gets the available named namespace and type symbols in the context of the specified location and optional container. + Only members that are accessible and visible from the given location are returned. + + The character position for determining the enclosing declaration scope and + accessibility. + The container to search for symbols within. If null then the enclosing declaration + scope around position is used. + The name of the symbol to find. If null is specified then symbols + with any names are returned. + A list of symbols that were found. If no symbols were found, an empty list is returned. + + The "position" is used to determine what variables are visible and accessible. Even if "container" is + specified, the "position" location is significant for determining which members of "containing" are + accessible. + + Does not return INamespaceOrTypeSymbol, because there could be aliases. + + + + + Backing implementation of . + + + + + Gets the available named label symbols in the context of the specified location and optional container. + Only members that are accessible and visible from the given location are returned. + + The character position for determining the enclosing declaration scope and + accessibility. + The name of the symbol to find. If null is specified then symbols + with any names are returned. + A list of symbols that were found. If no symbols were found, an empty list is returned. + + The "position" is used to determine what variables are visible and accessible. Even if "container" is + specified, the "position" location is significant for determining which members of "containing" are + accessible. + + + + + Backing implementation of . + + + + + Analyze control-flow within a part of a method body. + + The first node to be included within the analysis. + The last node to be included within the analysis. + An object that can be used to obtain the result of the control flow analysis. + The span is not with a method + body. + + The first and last nodes must be fully inside the same method body. + + + + + Analyze control-flow within a part of a method body. + + The first node to be included within the analysis. + The last node to be included within the analysis. + An object that can be used to obtain the result of the control flow analysis. + The span is not with a method + body. + + The first and last nodes must be fully inside the same method body. + + + + + Analyze control-flow within a part of a method body. + + The statement to be analyzed. + An object that can be used to obtain the result of the control flow analysis. + The span is not with a method + body. + + The statement must be fully inside the same method body. + + + + + Analyze control-flow within a part of a method body. + + The statement to be analyzed. + An object that can be used to obtain the result of the control flow analysis. + The span is not with a method + body. + + The statement must be fully inside the same method body. + + + + + Analyze data-flow within a part of a method body. + + The first node to be included within the analysis. + The last node to be included within the analysis. + An object that can be used to obtain the result of the data flow analysis. + The span is not with a method + body. + + The first and last nodes must be fully inside the same method body. + + + + + Analyze data-flow within a part of a method body. + + The first node to be included within the analysis. + The last node to be included within the analysis. + An object that can be used to obtain the result of the data flow analysis. + The span is not with a method + body. + + The first and last nodes must be fully inside the same method body. + + + + + Analyze data-flow within a part of a method body. + + The statement or expression to be analyzed. + An object that can be used to obtain the result of the data flow analysis. + The statement or expression is not with a method + body or field or property initializer. + + The statement or expression must be fully inside a method body. + + + + + Analyze data-flow within a part of a method body. + + The statement or expression to be analyzed. + An object that can be used to obtain the result of the data flow analysis. + The statement or expression is not with a method + body or field or property initializer. + + The statement or expression must be fully inside a method body. + + + + + If the node provided has a constant value an Optional value will be returned with + HasValue set to true and with Value set to the constant. If the node does not have an + constant value, an Optional will be returned with HasValue set to false. + + + + + If the node provided has a constant value an Optional value will be returned with + HasValue set to true and with Value set to the constant. If the node does not have an + constant value, an Optional will be returned with HasValue set to false. + + + + + When getting information for a symbol that resolves to a method group or property group, + from which a method is then chosen; the chosen method or property is present in Symbol; + all methods in the group that was consulted are placed in this property. + + + + + When getting information for a symbol that resolves to a method group or property group, + from which a method is then chosen; the chosen method or property is present in Symbol; + all methods in the group that was consulted are placed in this property. + + + + + Given a position in the SyntaxTree for this SemanticModel returns the innermost Symbol + that the position is considered inside of. + + + + + Given a position in the SyntaxTree for this SemanticModel returns the innermost Symbol + that the position is considered inside of. + + + + + Determines if the symbol is accessible from the specified location. + + A character position used to identify a declaration scope and + accessibility. This character position must be within the FullSpan of the Root syntax + node in this SemanticModel. + + The symbol that we are checking to see if it accessible. + + True if "symbol is accessible, false otherwise. + + This method only checks accessibility from the point of view of the accessibility + modifiers on symbol and its containing types. Even if true is returned, the given symbol + may not be able to be referenced for other reasons, such as name hiding. + + + + + Determines if the symbol is accessible from the specified location. + + A character position used to identify a declaration scope and + accessibility. This character position must be within the FullSpan of the Root syntax + node in this SemanticModel. + + The symbol that we are checking to see if it accessible. + + True if "symbol is accessible, false otherwise. + + This method only checks accessibility from the point of view of the accessibility + modifiers on symbol and its containing types. Even if true is returned, the given symbol + may not be able to be referenced for other reasons, such as name hiding. + + + + + Field-like events can be used as fields in types that can access private + members of the declaring type of the event. + + + Always false for VB events. + + + + + Field-like events can be used as fields in types that can access private + members of the declaring type of the event. + + + Always false for VB events. + + + + + If is an identifier name syntax node, return the corresponding + to it. + + The nameSyntax node to get semantic information for. + + + + If is an identifier name syntax node, return the corresponding + to it. + + The nameSyntax node to get semantic information for. + + + + Gets the for all the declarations whose span overlaps with the given . + + Span to get declarations. + Flag indicating whether should be computed for the returned declaration infos. + If false, then is always null. + Builder to add declarations. + Cancellation token. + + + + Takes a node and returns a set of declarations that overlap the node's span. + + + + + Takes a Symbol and syntax for one of its declaring syntax reference and returns the topmost syntax node to be used by syntax analyzer. + + + + + Resolves references to source documents specified in the source. + + + + + Normalizes specified source path with respect to base file path. + + The source path to normalize. May be absolute or relative. + Path of the source file that contains the (may also be relative), or null if not available. + Normalized path, or null if can't be normalized. The resulting path doesn't need to exist. + + + + Resolves specified path with respect to base file path. + + The path to resolve. May be absolute or relative. + Path of the source file that contains the (may also be relative), or null if not available. + Normalized path, or null if the file can't be resolved. + + + + Opens a that allows reading the content of the specified file. + + Path returned by . + is null. + is not a valid absolute path. + Error reading file . See for details. + + + + Reads the contents of and returns a . + + Path returned by . + + + + Describes the kind of binding to be performed in one of the SemanticModel + speculative binding methods. + + + + + Binds the given expression using the normal expression binding rules + that would occur during normal binding of expressions. + + + + + Binds the given expression as a type or namespace only. If this option + is selected, then the given expression must derive from TypeSyntax. + + + + + Represents subsystem version, see /subsystemversion command line + option for details and valid values. + + The following table lists common subsystem versions of Windows. + + Windows version Subsystem version + - Windows 2000 5.00 + - Windows XP 5.01 + - Windows Vista 6.00 + - Windows 7 6.01 + - Windows 8 Release Preview 6.02 + + + + + Major subsystem version + + + + + Minor subsystem version + + + + + Subsystem version not specified + + + + + Subsystem version: Windows 2000 + + + + + Subsystem version: Windows XP + + + + + Subsystem version: Windows Vista + + + + + Subsystem version: Windows 7 + + + + + Subsystem version: Windows 8 + + + + + Try parse subsystem version in "x.y" format. Note, no spaces are allowed in string representation. + + String to parse + the value if successfully parsed or None otherwise + true if parsed successfully, false otherwise + + + + Create a new instance of subsystem version with specified major and minor values. + + major subsystem version + minor subsystem version + subsystem version with provided major and minor + + + + Subsystem version default for the specified output kind and platform combination + + Output kind + Platform + Subsystem version + + + + True if the subsystem version has a valid value + + + + + The symbol that was referred to by the syntax node, if any. Returns null if the given + expression did not bind successfully to a single symbol. If null is returned, it may + still be that case that we have one or more "best guesses" as to what symbol was + intended. These best guesses are available via the CandidateSymbols property. + + + + + If the expression did not successfully resolve to a symbol, but there were one or more + symbols that may have been considered but discarded, this property returns those + symbols. The reason that the symbols did not successfully resolve to a symbol are + available in the CandidateReason property. For example, if the symbol was inaccessible, + ambiguous, or used in the wrong context. + + + + + If the expression did not successfully resolve to a symbol, but there were one or more + symbols that may have been considered but discarded, this property describes why those + symbol or symbols were not considered suitable. + + + + + The type of the expression represented by the syntax node. For expressions that do not + have a type, null is returned. If the type could not be determined due to an error, then + an IErrorTypeSymbol is returned. + + + + + The type of the expression after it has undergone an implicit conversion. If the type + did not undergo an implicit conversion, returns the same as Type. + + + + + Resolves references to XML documents specified in source code. + + + + + Resolves specified XML reference with respect to base file path. + + The reference path to resolve. May be absolute or relative path. + Path of the source file that contains the (may also be relative), or null if not available. + Path to the XML artifact, or null if the file can't be resolved. + + + + Opens a that allows reading the content of the specified file. + + Path returned by . + is null. + is not a valid absolute path. + Error reading file . See for details. + + + + Parses .RES a file into its constituent resource elements. + Mostly translated from cvtres.cpp. + + + + + Assume that 3 WORDs preceded this string and that they began 32-bit aligned. + Given the string length compute the number of bytes that should be written to end + the buffer on a 32-bit boundary + + + + + + assuming the length of bytes submitted began on a 32-bit boundary, + round up this length as necessary so that it ends at a 32-bit boundary. + + + + + + + compute number of chars needed to end up on a 32-bit boundary assuming that three + WORDS preceded this string. + + + + + + + Represents a non source code file. + + + + + Path to the text. + + + + + Retrieves a with the contents of this file. + + + + + Abstracts the ability to classify and load messages for error codes. Allows the error + infrastructure to be reused between C# and VB. + + + + + Given an error code, get the severity (warning or error) of the code. + + + + + Load the message for the given error code. If the message contains + "fill-in" placeholders, those should be expressed in standard string.Format notation + and be in the string. + + + + + Get an optional localizable title for the given diagnostic code. + + + + + Get an optional localizable description for the given diagnostic code. + + + + + Get a localizable message format string for the given diagnostic code. + + + + + Get an optional help link for the given diagnostic code. + + + + + Get the diagnostic category for the given diagnostic code. + Default category is . + + + + + Get the text prefix (e.g., "CS" for C#) used on error messages. + + + + + Get the warning level for warnings (e.g., 1 through 4 for C#). VB does not have warning + levels and always uses 1. Errors should return 0. + + + + + Type that defines error codes. For testing purposes only. + + + + + Create a simple language specific diagnostic for given error code. + + + + + Create a simple language specific diagnostic for given error code. + + + + + Given a message identifier (e.g., CS0219), severity, warning as error and a culture, + get the entire prefix (e.g., "error CS0219: Warning as Error:" for C# or "error BC42024:" for VB) used on error messages. + + + + + Convert given symbol to string representation. + + + + + Given an error code (like 1234) return the identifier (CS1234 or BC1234). + + + + + Produces the filtering action for the diagnostic based on the options passed in. + + + A new with new effective severity based on the options or null if the + diagnostic has been suppressed. + + + + + Filter a based on the compilation options so that /nowarn and /warnaserror etc. take effect.options + + A with effective severity based on option or null if suppressed. + + + + Represents a diagnostic, such as a compiler error or a warning, along with the location where it occurred. + + + A diagnostic (such as a compiler error or a warning), along with the location where it occurred. + + + + + Highest valid warning level for non-error diagnostics. + + + + + Creates a instance. + + A describing the diagnostic + An optional primary location of the diagnostic. If null, will return . + Arguments to the message of the diagnostic + The instance. + + + + Creates a instance. + + A describing the diagnostic. + An optional primary location of the diagnostic. If null, will return . + + An optional set of name-value pairs by means of which the analyzer that creates the diagnostic + can convey more detailed information to the fixer. If null, will return + . + + Arguments to the message of the diagnostic. + The instance. + + + + Creates a instance. + + A describing the diagnostic. + An optional primary location of the diagnostic. If null, will return . + + An optional set of additional locations related to the diagnostic. + Typically, these are locations of other items referenced in the message. + If null, will return an empty list. + + Arguments to the message of the diagnostic. + The instance. + + + + Creates a instance. + + A describing the diagnostic. + An optional primary location of the diagnostic. If null, will return . + + An optional set of additional locations related to the diagnostic. + Typically, these are locations of other items referenced in the message. + If null, will return an empty list. + + + An optional set of name-value pairs by means of which the analyzer that creates the diagnostic + can convey more detailed information to the fixer. If null, will return + . + + Arguments to the message of the diagnostic. + The instance. + + + + Creates a instance which is localizable. + + An identifier for the diagnostic. For diagnostics generated by the compiler, this will be a numeric code with a prefix such as "CS1001". + The category of the diagnostic. For diagnostics generated by the compiler, the category will be "Compiler". + The diagnostic message text. + The diagnostic's effective severity. + The diagnostic's default severity. + True if the diagnostic is enabled by default + The warning level, between 1 and 4 if severity is ; otherwise 0. + An optional short localizable title describing the diagnostic. + An optional longer localizable description for the diagnostic. + An optional hyperlink that provides more detailed information regarding the diagnostic. + An optional primary location of the diagnostic. If null, will return . + + An optional set of additional locations related to the diagnostic. + Typically, these are locations of other items referenced in the message. + If null, will return an empty list. + + + An optional set of custom tags for the diagnostic. See for some well known tags. + If null, will return an empty list. + + + An optional set of name-value pairs by means of which the analyzer that creates the diagnostic + can convey more detailed information to the fixer. If null, will return + . + + The instance. + + + + Creates a instance which is localizable. + + An identifier for the diagnostic. For diagnostics generated by the compiler, this will be a numeric code with a prefix such as "CS1001". + The category of the diagnostic. For diagnostics generated by the compiler, the category will be "Compiler". + The diagnostic message text. + The diagnostic's effective severity. + The diagnostic's default severity. + True if the diagnostic is enabled by default + The warning level, between 1 and 4 if severity is ; otherwise 0. + Flag indicating whether the diagnostic is suppressed by a source suppression. + An optional short localizable title describing the diagnostic. + An optional longer localizable description for the diagnostic. + An optional hyperlink that provides more detailed information regarding the diagnostic. + An optional primary location of the diagnostic. If null, will return . + + An optional set of additional locations related to the diagnostic. + Typically, these are locations of other items referenced in the message. + If null, will return an empty list. + + + An optional set of custom tags for the diagnostic. See for some well known tags. + If null, will return an empty list. + + + An optional set of name-value pairs by means of which the analyzer that creates the diagnostic + can convey more detailed information to the fixer. If null, will return + . + + The instance. + + + + Gets the diagnostic descriptor, which provides a description about a . + + + + + Gets the diagnostic identifier. For diagnostics generated by the compiler, this will be a numeric code with a prefix such as "CS1001". + + + + + Gets the category of diagnostic. For diagnostics generated by the compiler, the category will be "Compiler". + + + + + Get the culture specific text of the message. + + + + + Gets the default of the diagnostic's . + + + To get the effective severity of the diagnostic, use . + + + + + Gets the effective of the diagnostic. + + + To get the default severity of diagnostic's , use . + To determine if this is a warning treated as an error, use . + + + + + Gets the warning level. This is 0 for diagnostics with severity , + otherwise an integer between 1 and 4. + + + + + Returns true if the diagnostic has a source suppression, i.e. an attribute or a pragma suppression. + + + + + Gets the for suppressed diagnostics, i.e. = true. + Otherwise, returns null. + + + + + Returns true if this diagnostic is enabled by default by the author of the diagnostic. + + + + + Returns true if this is a warning treated as an error; otherwise false. + + + True implies = + and = . + + + + + Gets the primary location of the diagnostic, or if no primary location. + + + + + Gets an array of additional locations related to the diagnostic. + Typically these are the locations of other items referenced in the message. + + + + + Gets custom tags for the diagnostic. + + + + + Gets property bag for the diagnostic. it will return if there is no entry. + This can be used to put diagnostic specific information you want to pass around. for example, to corresponding fixer. + + + + + Create a new instance of this diagnostic with the Location property changed. + + + + + Create a new instance of this diagnostic with the Severity property changed. + + + + + Create a new instance of this diagnostic with the suppression info changed. + + + + + Returns true if the diagnostic location (or any additional location) is within the given tree and intersects with the filterSpanWithinTree, if non-null. + + + + + Returns true if a diagnostic is not configurable, i.e. cannot be suppressed or filtered or have its severity changed. + For example, compiler errors are always non-configurable. + + + + + Indicates that the diagnostic is related to some unnecessary source code. + + + + + Indicates that the diagnostic is related to edit and continue. + + + + + Indicates that the diagnostic is related to build. + + + + + Indicates that the diagnostic is reported by the compiler. + + + + + Indicates that the diagnostic can be used for telemetry + + + + + Indicates that the diagnostic is not configurable, i.e. it cannot be suppressed or filtered or have its severity changed. + + + + + Indicates that the diagnostic is related to an exception thrown by a . + + + + + Represents a mutable bag of diagnostics. You can add diagnostics to the bag, + and also get all the diagnostics out of the bag (the bag implements + IEnumerable<Diagnostics>. Once added, diagnostics cannot be removed, and no ordering + is guaranteed. + + It is ok to Add diagnostics to the same bag concurrently on multiple threads. + It is NOT ok to Add concurrently with Clear or Free operations. + + The bag is optimized to be efficient when containing zero errors. + + + + Return true if the bag is completely empty - not even containing void diagnostics. + + + This exists for short-circuiting purposes. Use + to get a resolved Tuple(Of NamedTypeSymbol, ImmutableArray(Of Diagnostic)) (i.e. empty after eliminating void diagnostics). + + + + + Returns true if the bag has any diagnostics with Severity=Error. Does not consider warnings or informationals. + + + Resolves any lazy diagnostics in the bag. + + Generally, this should only be called by the creator (modulo pooling) of the bag (i.e. don't use bags to communicate - + if you need more info, pass more info). + + + + + Returns true if the bag has any non-lazy diagnostics with Severity=Error. + + + Does not resolve any lazy diagnostics in the bag. + + Generally, this should only be called by the creator (modulo pooling) of the bag (i.e. don't use bags to communicate - + if you need more info, pass more info). + + + + + Add a diagnostic to the bag. + + + + + Add multiple diagnostics to the bag. + + + + + Add multiple diagnostics to the bag. + + + + + Add another DiagnosticBag to the bag. + + + + + Add another DiagnosticBag to the bag and free the argument. + + + + + Seal the bag so no further errors can be added, while clearing it and returning the old set of errors. + Return the bag to the pool. + + + + + Generally, this should only be called by the creator (modulo pooling) of the bag (i.e. don't use bags to communicate - + if you need more info, pass more info). + + + + + Using an iterator to avoid copying the list. If perf is a problem, + create an explicit enumerator type. + + + + + Get the underlying concurrent storage, creating it on demand if needed. + NOTE: Concurrent Adding to the bag is supported, but concurrent Clearing is not. + If one thread adds to the bug while another clears it, the scenario is + broken and we cannot do anything about it here. + + + + NOTE: Concurrent Adding to the bag is supported, but concurrent Clearing is not. + If one thread adds to the bug while another clears it, the scenario is + broken and we cannot do anything about it here. + + + + Provides a description about a + + + + + An unique identifier for the diagnostic. + + + + + A short localizable title describing the diagnostic. + + + + + An optional longer localizable description for the diagnostic. + + + + + An optional hyperlink that provides more detailed information regarding the diagnostic. + + + + + A localizable format message string, which can be passed as the first argument to when creating the diagnostic message with this descriptor. + + + + + + The category of the diagnostic (like Design, Naming etc.) + + + + + The default severity of the diagnostic. + + + + + Returns true if the diagnostic is enabled by default. + + + + + Custom tags for the diagnostic. + + + + + Create a DiagnosticDescriptor, which provides description about a . + NOTE: For localizable , and/or , + use constructor overload . + + A unique identifier for the diagnostic. For example, code analysis diagnostic ID "CA1001". + A short title describing the diagnostic. For example, for CA1001: "Types that own disposable fields should be disposable". + A format message string, which can be passed as the first argument to when creating the diagnostic message with this descriptor. + For example, for CA1001: "Implement IDisposable on '{0}' because it creates members of the following IDisposable types: '{1}'." + The category of the diagnostic (like Design, Naming etc.). For example, for CA1001: "Microsoft.Design". + Default severity of the diagnostic. + True if the diagnostic is enabled by default. + An optional longer description of the diagnostic. + An optional hyperlink that provides a more detailed description regarding the diagnostic. + Optional custom tags for the diagnostic. See for some well known tags. + + + + Create a DiagnosticDescriptor, which provides description about a . + + A unique identifier for the diagnostic. For example, code analysis diagnostic ID "CA1001". + A short localizable title describing the diagnostic. For example, for CA1001: "Types that own disposable fields should be disposable". + A localizable format message string, which can be passed as the first argument to when creating the diagnostic message with this descriptor. + For example, for CA1001: "Implement IDisposable on '{0}' because it creates members of the following IDisposable types: '{1}'." + The category of the diagnostic (like Design, Naming etc.). For example, for CA1001: "Microsoft.Design". + Default severity of the diagnostic. + True if the diagnostic is enabled by default. + An optional longer localizable description of the diagnostic. + An optional hyperlink that provides a more detailed description regarding the diagnostic. + Optional custom tags for the diagnostic. See for some well known tags. + Example descriptor for rule CA1001: + internal static DiagnosticDescriptor Rule = new DiagnosticDescriptor(RuleId, + new LocalizableResourceString(nameof(FxCopRulesResources.TypesThatOwnDisposableFieldsShouldBeDisposable), FxCopRulesResources.ResourceManager, typeof(FxCopRulesResources)), + new LocalizableResourceString(nameof(FxCopRulesResources.TypeOwnsDisposableFieldButIsNotDisposable), FxCopRulesResources.ResourceManager, typeof(FxCopRulesResources)), + FxCopDiagnosticCategory.Design, + DiagnosticSeverity.Warning, + isEnabledByDefault: true, + helpLinkUri: "http://msdn.microsoft.com/library/ms182172.aspx", + customTags: DiagnosticCustomTags.Microsoft); + + + + + Gets the effective severity of diagnostics created based on this descriptor and the given . + + Compilation options + + + + Returns true if diagnostic descriptor is not configurable, i.e. cannot be suppressed or filtered or have its severity changed. + For example, compiler errors are always non-configurable. + + + + + Formats messages. + + + + + Formats the message using the optional . + + The diagnostic. + The formatter; or null to use the default formatter. + The formatted message. + + + + A DiagnosticInfo object has information about a diagnostic, but without any attached location information. + + + More specialized diagnostics with additional information (e.g., ambiguity errors) can derive from this class to + provide access to additional information about the error, such as what symbols were involved in the ambiguity. + + + + + The error code, as an integer. + + + + + Returns the effective severity of the diagnostic: whether this diagnostic is informational, warning, or error. + If IsWarningsAsError is true, then this returns , while returns . + + + + + Returns whether this diagnostic is informational, warning, or error by default, based on the error code. + To get diagnostic's effective severity, use . + + + + + Gets the warning level. This is 0 for diagnostics with severity , + otherwise an integer between 1 and 4. + + + + + Returns true if this is a warning treated as an error. + + + True implies = and + = . + + + + + Get the diagnostic category for the given diagnostic code. + Default category is . + + + + + If a derived class has additional information about other referenced symbols, it can + expose the locations of those symbols in a general way, so they can be reported along + with the error. + + + + + Get the message id (for example "CS1001") for the message. This includes both the error number + and a prefix identifying the source. + + + + + Get the text of the message in the given language. + + + + + For a DiagnosticInfo that is lazily evaluated, this method evaluates it + and returns a non-lazy DiagnosticInfo. + + + + + Describes how severe a diagnostic is. + + + + + Something that is an issue, as determined by some authority, + but is not surfaced through normal means. + There may be different mechanisms that act on these issues. + + + + + Information that does not indicate a problem (i.e. not prescriptive). + + + + + Something suspicious but allowed. + + + + + Something not allowed by the rules of the language or other authority. + + + + + Values for severity that are used internally by the compiler but are not exposed. + + + + + An unknown severity diagnostic is something whose severity has not yet been determined. + + + + + If an unknown diagnostic is resolved and found to be unnecessary then it is + treated as a "Void" diagnostic + + + + + Values for ErrorCode/ERRID that are used internally by the compiler but are not exposed. + + + + + The code has yet to be determined. + + + + + The code was lazily determined and does not need to be reported. + + + + + A diagnostic (such as a compiler error or a warning), along with the location where it occurred. + + + + + Get the information about the diagnostic: the code, severity, message, etc. + + + + + True if the DiagnosticInfo for this diagnostic requires (or required - this property + is immutable) resolution. + + + + + Represents a span of text in a source code file in terms of file name, line number, and offset within line. + However, the file is actually whatever was passed in when asked to parse; there may not really be a file. + + + + + Path, or null if the span represents an invalid value. + + + Path may be if not available. + + + + + True if the is a mapped path. + + + A mapped path is a path specified in source via #line (C#) or #ExternalSource (VB) directives. + + + + + Gets the of the start of the span. + + + + + + Gets the of the end of the span. + + + + + + Gets the span. + + + + + Initializes the instance. + + The file identifier - typically a relative or absolute path. + The start line position. + The end line position. + is null. + + + + Initializes the instance. + + The file identifier - typically a relative or absolute path. + The span. + is null. + + + + Returns true if the span represents a valid location. + + + + + Determines if two FileLinePositionSpan objects are equal. + + + The path is treated as an opaque string, i.e. a case-sensitive comparison is used. + + + + + Determines if two FileLinePositionSpan objects are equal. + + + + + Serves as a hash function for FileLinePositionSpan. + + The hash code. + + The path is treated as an opaque string, i.e. a case-sensitive hash is calculated. + + + + + Returns a that represents FileLinePositionSpan. + + The string representation of FileLinePositionSpan. + Path: (0,0)-(5,6) + + + + A program location in source code. + + + + + Indicates that the implementing type can be serialized via + for diagnostic message purposes. + + + Not appropriate on types that require localization, since localization should + happen after serialization. + + + + + A program location in source code. + + + + + Location kind (None/SourceFile/MetadataFile). + + + + + Returns true if the location represents a specific location in a source code file. + + + + + Returns true if the location is in metadata. + + + + + The syntax tree this location is located in or null if not in a syntax tree. + + + + + Returns the metadata module the location is associated with or null if the module is not available. + + + Might return null even if returns true. The module symbol might not be available anymore, + for example, if the location is serialized and deserialized. + + + + + The location within the syntax tree that this location is associated with. + + + If returns False this method returns an empty which starts at position 0. + + + + + Gets the location in terms of path, line and column. + + + that contains path, line and column information. + + Returns an invalid span (see ) if the information is not available. + + The values are not affected by line mapping directives (#line in C# or #ExternalSource in VB). + + + + + Gets the location in terms of path, line and column after applying source line mapping directives + (#line in C# or #ExternalSource in VB). + + + that contains file, line and column information, + or an invalid span (see ) if not available. + + + + + A location of kind LocationKind.None. + + + + + Creates an instance of a for a span in a . + + + + + Creates an instance of a for a span in a file. + + + + + Specifies the kind of location (source vs. metadata). + + + + + Unspecified location. + + + + + The location represents a position in a source file. + + + + + The location represents a metadata file. + + + + + The location represents a position in an XML file. + + + + + The location in some external file. + + + + + A program location in metadata. + + + + + A class that represents no location at all. Useful for errors in command line options, for example. + + + + + + Describes how to report a warning diagnostic. + + + + + Report a diagnostic by default. + + + + + Report a diagnostic as an error. + + + + + Report a diagnostic as a warning even though /warnaserror is specified. + + + + + Report a diagnostic as an info. + + + + + Report a diagnostic as hidden. + + + + + Suppress a diagnostic. + + + + + A program location in source code. + + + + + A program location in an XML file. + + + + + WARN: This is a test hook - do not take a dependency on this. + + + + + + + + + + A class used to provide XML documentation to the compiler for members from metadata. A + custom implementation of this class should be returned from a DocumentationResolver to provide XML + documentation comments from custom caches or locations. + + + + + Fetches a documentation comment for the given member ID. + + The documentation member ID of the item to fetch. + The preferred culture to receive a comment in. Null if + there is no preference. This is a preference only, and providers may choose to provide + results from another culture if the preferred culture was unavailable. + A cancellation token for the search. + A DocumentationComment. + + + + DocumentationProviders are compared when determining whether an AssemblySymbol can be reused. + Hence, if multiple instances can represent the same documentation, it is imperative that + Equals (and GetHashCode) be overridden to capture this fact. Otherwise, it is possible to end + up with multiple AssemblySymbols for the same assembly, which plays havoc with the type hierarchy. + + + + + DocumentationProviders are compared when determining whether an AssemblySymbol can be reused. + Hence, if multiple instances can represent the same documentation, it is imperative that + GetHashCode (and Equals) be overridden to capture this fact. Otherwise, it is possible to end + up with multiple AssemblySymbols for the same assembly, which plays havoc with the type hierarchy. + + + + + A trivial DocumentationProvider which never returns documentation. + + + + + Used by the DocumentationCommentCompiler(s) to check doc comments for XML parse errors. + As a performance optimization, this class tries to re-use the same underlying instance + when possible. + + + + + Current text to validate. + + + + + We use to validate XML doc comments. Unfortunately it cannot be reset and thus can't be pooled. + Each time we need to validate a fragment of XML we "append" it to the underlying text reader, implemented by this class, + and advance the reader. By the end of the fragment validation, we keep the reader open in a state + that is ready for the next fragment validation unless the fragment was invalid, in which case we need to create a new XmlReader. + That is why pretends that the stream has extra spaces + at the end. That should be sufficient for to not reach the end of this reader before the next + fragment is appended, unless the current fragment is malformed in one way or another. + + + + + Specifies the different documentation comment processing modes. + + + Order matters: least processing to most processing. + + + + + Treats documentation comments as regular comments. + + + + + Parses documentation comments as structured trivia, but do not report any diagnostics. + + + + + Parses documentation comments as structured trivia and report diagnostics. + + + + + Maps an async/iterator method to the synthesized state machine type that implements the method. + + + + + Generate a ConstantValue of the same integer type as the argument + and offset by the given non-negative amount. Return ConstantValue.Bad + if the generated constant would be outside the valid range of the type. + + + + + Set by the host to a fail fast trigger, + if the host desires to crash the process on a fatal exception. + + + + + Set by the host to a fail fast trigger, + if the host desires to NOT crash the process on a non fatal exception. + + + + + Use in an exception filter to report a fatal error. + Unless the exception is + it calls . The exception is passed through (the method returns false). + + False to avoid catching the exception. + + + + Use in an exception filter to report a non fatal error. + Unless the exception is + it calls . The exception isn't passed through (the method returns true). + + True to catch the exception. + + + + Use in an exception filter to report a fatal error. + Unless the exception is + it calls . The exception is passed through (the method returns false). + + False to avoid catching the exception. + + + + Use in an exception filter to report a fatal error. + Calls and passes the exception through (the method returns false). + + False to avoid catching the exception. + + + + Use in an exception filter to report a non fatal error. + Calls and doesn't pass the exception through (the method returns true). + + True to catch the exception. + + + + Cache with a fixed size that evicts the least recently used members. + Thread-safe. + + + + + Create cache from an array. The cache capacity will be the size + of the array. All elements of the array will be added to the + cache. If any duplicate keys are found in the array a + will be thrown. + + + + + For testing. Very expensive. + + + + + Expects non-empty cache. Does not lock. + + + + + Doesn't lock. + + + + + Doesn't lock. + + + + + Represents an optional bool as a single byte. + + + + + Structure that describes a member of a type. + + + + + Id/token of containing type, usually value from some enum. + For example from SpecialType enum. + I am not using SpecialType as the type for this field because + VB runtime types are not part of SpecialType. + + So, the implication is that any type ids we use outside of the SpecialType + (either for the VB runtime classes, or types like System.Task etc.) will need + to use IDs that are all mutually disjoint. + + + + + Signature of the field or method, similar to metadata signature, + but with the following exceptions: + 1) Truncated on the left, for methods starts at [ParamCount], for fields at [Type] + 2) Type tokens are not compressed + 3) BOOLEAN | CHAR | I1 | U1 | I2 | U2 | I4 | U4 | I8 | U8 | R4 | R8 | I | U | Void types are encoded by + using VALUETYPE+typeId notation. + 4) array bounds are not included. + 5) modifiers are not included. + 6) (CLASS | VALUETYPE) are omitted after GENERICINST + + + + + Helper class to match signatures in format of + MemberDescriptor.Signature to members. + + + + + Returns true if signature matches signature of the field. + Signature should be in format described in MemberDescriptor. + + + + + Returns true if signature matches signature of the property. + Signature should be in format described in MemberDescriptor. + + + + + Returns true if signature matches signature of the method. + Signature should be in format described in MemberDescriptor. + + + + + Does pretty much the same thing as MetadataDecoder.DecodeType only instead of + producing a type symbol it compares encoded type to the target. + + Signature should be in format described in MemberDescriptor. + + + + + Should return null in case of error. + + + + + Should return null in case of error. + + + + + Should only accept Pointer types. + Should return null in case of error. + + + + + Should return null in case of error. + + + + + Should only accept multi-dimensional arrays. + + + + + Should only accept multi-dimensional arrays. + Should return null in case of error. + + + + If the encoded type is invalid. + An exception from metadata reader. + + + If the encoded type is invalid. + An exception from metadata reader. + + + If the encoded type is invalid. + An exception from metadata reader. + + + An exception from metadata reader. + + + If the encoded type is invalid. + An exception from metadata reader. + + + If the encoded local variable type is invalid. + An exception from metadata reader. + + + If the encoded local variable type is invalid. + An exception from metadata reader. + + + + Used to decode signatures of local constants returned by SymReader. + + + + + Returns the local info for all locals indexed by slot. + + + + If the encoded parameter type is invalid. + + + An exception from metadata reader. + + + + Decodes attribute parameter type from method signature. + + If the encoded parameter type is invalid. + An exception from metadata reader. + + + + Decodes attribute argument type from attribute blob (called FieldOrPropType in the spec). + + If the encoded argument type is invalid. + An exception from metadata reader. + + + If the encoded attribute argument is invalid. + An exception from metadata reader. + + + If the encoded attribute argument is invalid. + An exception from metadata reader. + + + If the encoded attribute argument is invalid. + An exception from metadata reader. + + + If the given is invalid. + An exception from metadata reader. + + + If the encoded named argument is invalid. + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + + Find the methods that a given method explicitly overrides. + + + Methods may be on class or interfaces. + Containing classes/interfaces will be supertypes of the implementing type. + + TypeDef handle of the implementing type. + MethodDef handle of the implementing method. + The type symbol for the implementing type. + Array of implemented methods. + + + + Search for the corresponding to the given MethodDef token. Search amongst + the supertypes (classes and interfaces) of a designated type. + + + Generally, the type will be a type that explicitly implements an interface and the method will be the + implemented method (i.e. on the interface). + + TypeDef token of the type from which the search should begin. + MethodDef token of the target method. + Corresponding or null, if none is found. + + + + Enqueue the interfaces implemented and the type extended by a given TypeDef. + + Queue of TypeDefs to search. + Queue of TypeSymbols (representing typeRefs to search). + Handle of the TypeDef for which we want to enqueue supertypes. + An exception from metadata reader. + + + + Helper method for enqueuing a type token in the right queue. + Def -> typeDefsToSearch + Ref -> typeSymbolsToSearch + null -> neither + + + + + Enqueue the interfaces implemented and the type extended by a given TypeDef. + + Queue of TypeDefs to search. + Queue of TypeSymbols (representing typeRefs to search). + Symbol for which we want to enqueue supertypes. + + + + Enqueue the given type as either a def or a ref. + + Queue of TypeDefs to search. + Queue of TypeSymbols (representing typeRefs to search). + Symbol to enqueue. + + + + Search the members of a TypeSymbol to find the one that matches a given MethodDef token. + + Type to search for method. + MethodDef handle of the method to find. + The corresponding MethodSymbol or null. + + + + Search the members of a TypeSymbol to find the one that matches a given FieldDef token. + + Type to search for field. + FieldDef handle of the field to find. + The corresponding FieldSymbol or null. + + + + Given a MemberRef token for a method, we can find a corresponding MethodSymbol by + searching for the name and signature. + + A MemberRef token for a method. + Scope the search to supertypes of the implementing type. + True to only return method symbols, null if the token resolves to a field. + The corresponding MethodSymbol or null. + + + + Given a method symbol, return the MethodDef token, if it is defined in + this module, or a nil token, otherwise. + + The method symbol for which to return a MethodDef token. + A MethodDef token or nil. + + + + Returns a symbol that given token resolves to or null of the token represents an entity that isn't represented by a symbol, + such as vararg MemberRef. + + + + + Given a MemberRef token, return the TypeSymbol for its Class field. + + + + + Checks whether signatures match where the signatures are either from a property + and an accessor or two accessors. When comparing a property or getter to setter, the + setter signature must be the second argument and 'comparingToSetter' must be true. + + + Signature of the property containing the accessor, or the getter (type, then parameters). + + + Signature of the accessor when comparing property and accessor, + or the setter when comparing getter and setter (return type and then parameters). + + + True when comparing a property or getter to a setter, false otherwise. + + + True if differences in IsByRef for parameters should be treated as significant. + + + True if differences in return type (or value parameter for setter) should be treated as significant. + + True if the accessor signature is appropriate for the containing property. + + + + Check whether an event accessor has an appropriate signature. + + Type of the event containing the accessor. + Signature of the accessor (return type and then parameters). + True if the accessor signature is appropriate for the containing event. + + + + Decodes a serialized type name in its canonical form. The canonical name is its full type name, followed + optionally by the assembly where it is defined, its version, culture and public key token. If the assembly + name is omitted, the type name is in the current assembly otherwise it is in the referenced assembly. The + full type name is the fully qualified metadata type name. + + + + + Decodes a type name. A type name is a string which is terminated by the end of the string or one of the + delimiters '+', ',', '[', ']'. '+' separates nested classes. '[' and ']' + enclosed generic type arguments. ',' separates types. + + + + + Decodes a generic name. This is a type name followed optionally by a type parameter count + + + + + An ImmutableArray representing the single string "System" + + + + + Calculates information about types and namespaces immediately contained within a namespace. + + + Is current namespace a global namespace? + + + Length of the fully-qualified name of this namespace. + + + The sequence of groups of TypeDef row ids for types contained within the namespace, + recursively including those from nested namespaces. The row ids must be grouped by the + fully-qualified namespace name in case-sensitive manner. + Key of each IGrouping is a fully-qualified namespace name, which starts with the name of + this namespace. There could be multiple groups for each fully-qualified namespace name. + + The groups must be sorted by the keys in a manner consistent with comparer passed in as + nameComparer. Therefore, all types immediately contained within THIS namespace, if any, + must be in several IGrouping at the very beginning of the sequence. + + + Equality comparer to compare namespace names. + + + Output parameter, never null: + A sequence of groups of TypeDef row ids for types immediately contained within this namespace. + + + Output parameter, never null: + A sequence with information about namespaces immediately contained within this namespace. + For each pair: + Key - contains simple name of a child namespace. + Value – contains a sequence similar to the one passed to this function, but + calculated for the child namespace. + + + + + + Extract a simple name of a top level child namespace from potentially qualified namespace name. + + + Parent namespace name length plus the dot. + + + Fully qualified namespace name. + + + Simple name of a top level child namespace, the left-most name following parent namespace name + in the fully qualified name. + + + + + Determines whether given string can be used as a non-empty metadata identifier (a NUL-terminated UTF8 string). + + + + + True if the string doesn't contain incomplete surrogates. + + + + + Checks that the specified name is a valid metadata String and a file name. + The specification isn't entirely consistent and complete but it mentions: + + 22.19.2: "Name shall index a non-empty string in the String heap. It shall be in the format {filename}.{extension} (e.g., 'foo.dll', but not 'c:\utils\foo.dll')." + 22.30.2: "The format of Name is {file name}.{file extension} with no path or drive letter; on POSIX-compliant systems Name contains no colon, no forward-slash, no backslash." + As Microsoft specific constraint. + + A reasonable restriction seems to be a valid UTF8 non-empty string that doesn't contain '\0', '\', '/', ':' characters. + + + + + Determine if the given namespace and type names combine to produce the given fully qualified name. + + The namespace part of the split name. + The type name part of the split name. + The fully qualified name to compare with. + true if the combination of and equals the fully-qualified name given by + + + + Given an input string changes it to be acceptable as a part of a type name. + + + + + Specifies what symbols to import from metadata. + + + + + Only import public and protected symbols. + + + + + Import public, protected and internal symbols. + + + + + Import all symbols. + + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + + Helper structure to encapsulate/cache various information about metadata name of a type and + name resolution options. + Also, allows us to stop using strings in the APIs that accept only metadata names, + making usage of them less bug prone. + + + + + Full metadata name of a type, includes namespace name for top level types. + + + + + Namespace name for top level types. + + + + + Name of the type without namespace prefix, but possibly with generic arity mangling present. + + + + + Name of the type without namespace prefix and without generic arity mangling. + + + + + Arity of the type inferred based on the name mangling. It doesn't have to match the actual + arity of the type. + + + + + While resolving the name, consider only types with this arity. + (-1) means allow any arity. + If forcedArity >= 0 and useCLSCompliantNameArityEncoding, lookup may + fail because forcedArity doesn't match the one encoded in the name. + + + + + While resolving the name, consider only types following + CLS-compliant generic type names and arity encoding (ECMA-335, section 10.7.2). + I.e. arity is inferred from the name and matching type must have the same + emitted name and arity. + TODO: PERF: Encode this field elsewhere to save 4 bytes + + + + + Individual parts of qualified namespace name. + + + + + Full metadata name of a type, includes namespace name for top level types. + + + + + Namespace name for top level types, empty string for nested types. + + + + + Name of the type without namespace prefix, but possibly with generic arity mangling present. + + + + + Name of the type without namespace prefix and without generic arity mangling. + + + + + Arity of the type inferred based on the name mangling. It doesn't have to match the actual + arity of the type. + + + + + Does name include arity mangling suffix. + + + + + While resolving the name, consider only types following + CLS-compliant generic type names and arity encoding (ECMA-335, section 10.7.2). + I.e. arity is inferred from the name and matching type must have the same + emitted name and arity. + + + + + While resolving the name, consider only types with this arity. + (-1) means allow any arity. + If ForcedArity >= 0 and UseCLSCompliantNameArityEncoding, lookup may + fail because ForcedArity doesn't match the one encoded in the name. + + + + + Individual parts of qualified namespace name. + + + + + A digest of MetadataTypeName's fully qualified name which can be used as the key in a dictionary + + + + + Returns true if the nested type should be imported. + + + + + Returns true if the field should be imported. Visibility + and the value of are considered + + + + + Returns true if the flags represent a field that should be imported. + Visibility and the value of are considered + + + + + Returns true if the method should be imported. Returns false for private methods that are not + explicit interface implementations. For other methods, visibility and the value of + are considered. + + + + + Returns 0 if method name doesn't represent a v-table gap. + Otherwise, returns the gap size. + + + + + All assemblies this assembly references. + + + A concatenation of assemblies referenced by each module in the order they are listed in . + + + + + The number of assemblies referenced by each module in . + + + + + Assembly identity read from Assembly table, or null if the table is empty. + + + + + Using for atomicity. + + + + + We need to store reference to the assembly metadata to keep the metadata alive while + symbols have reference to PEAssembly. + + + + + + + + A set of helpers for extracting elements from metadata. + This type is not responsible for managing the underlying storage + backing the PE image. + + + + + We need to store reference to the module metadata to keep the metadata alive while + symbols have reference to PEModule. + + + + + Using as a type for atomicity. + + + + + If bitmap is not null, each bit indicates whether a TypeDef + with corresponding RowId has been checked if it is a NoPia + local type. If the bit is 1, local type will have an entry + in m_lazyTypeDefToTypeIdentifierMap. + + + + + For each TypeDef that has 1 in m_lazyNoPiaLocalTypeCheckBitMap, + this map stores corresponding TypeIdentifier AttributeInfo. + + + + + Target architecture of the machine. + + + + + Indicates that this PE file makes Win32 calls. See CorPEKind.pe32BitRequired for more information (http://msdn.microsoft.com/en-us/library/ms230275.aspx). + + + + An exception from metadata reader. + + + + Returns the names of linked managed modules. + + An exception from metadata reader. + + + + Returns names of referenced modules. + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + + The function groups types defined in the module by their fully-qualified namespace name. + The case-sensitivity of the grouping depends upon the provided StringComparer. + + The sequence is sorted by name by using provided comparer. Therefore, if there are multiple + groups for a namespace name (e.g. because they differ in case), the groups are going to be + adjacent to each other. + + Empty string is used as namespace name for types in the Global namespace. Therefore, all types + in the Global namespace, if any, should be in the first group (assuming a reasonable StringComparer). + + Comparer to sort the groups. + + + A sorted list of TypeDef row ids, grouped by fully-qualified namespace name. + An exception from metadata reader. + + + + Groups together the RowIds of types in a given namespaces. The types considered are + those defined in this module. + + An exception from metadata reader. + + + + Supplements the namespace-to-RowIDs map with the namespaces of forwarded types. + These types will not have associated row IDs (represented as null, for efficiency). + These namespaces are important because we want lookups of missing forwarded types + to succeed far enough that we can actually find the type forwarder and provide + information about the target assembly. + + For example, consider the following forwarded type: + + .class extern forwarder Namespace.Type {} + + If this type is referenced in source as "Namespace.Type", then dev10 reports + + error CS1070: The type name 'Namespace.Name' could not be found. This type has been + forwarded to assembly 'pe2, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'. + Consider adding a reference to that assembly. + + If we did not include "Namespace" as a child of the global namespace of this module + (the forwarding module), then Roslyn would report that the type "Namespace" was not + found and say nothing about "Name" (because of the diagnostic already attached to + the qualifier). + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + + Returns a collection of interfaces implemented by given type. + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + + Determine if custom attribute application is + NoPia TypeIdentifier. + + + An index of the target constructor signature in + signaturesOfTypeIdentifierAttribute array, -1 if + this is not NoPia TypeIdentifier. + + + + + Determines if a custom attribute matches a namespace and name. + + Handle of the custom attribute. + The custom attribute's namespace in metadata format (case sensitive) + The custom attribute's type name in metadata format (case sensitive) + Constructor of the custom attribute. + Should case be ignored for name comparison? + true if match is found + + + + Determines if a custom attribute matches a namespace and name. + + The metadata reader. + Handle of the custom attribute. + The custom attribute's namespace in metadata format (case sensitive) + The custom attribute's type name in metadata format (case sensitive) + Constructor of the custom attribute. + Should case be ignored for name comparison? + true if match is found + + + + Returns MetadataToken for assembly ref matching name + + The assembly name in metadata format (case sensitive) + Matching assembly ref token or nil (0) + + + + Returns MetadataToken for type ref matching resolution scope and name + + The resolution scope token + The namespace name in metadata format (case sensitive) + The type name in metadata format (case sensitive) + Matching type ref token or nil (0) + + + An exception from metadata reader. + + + + Determine if custom attribute matches the target attribute. + + + Handle of the custom attribute. + + The attribute to match. + + An index of the target constructor signature in + signatures array, -1 if + this is not the target attribute. + + + + + Determine if custom attribute matches the target attribute. + + + The metadata reader. + + + Handle of the custom attribute. + + The attribute to match. + + An index of the target constructor signature in + signatures array, -1 if + this is not the target attribute. + + + + + Given a token for a constructor, return the token for the constructor's type and the blob containing the + constructor's signature. + + True if the function successfully returns the type and signature. + + + + Given a token for a constructor, return the token for the constructor's type and the blob containing the + constructor's signature. + + True if the function successfully returns the type and signature. + + + + Given a token for a type, return the type's name and namespace. Only works for top level types. + namespaceHandle will be NamespaceDefinitionHandle for defs and StringHandle for refs. + + True if the function successfully returns the name and namespace. + + + + Given a token for a type, return the type's name and namespace. Only works for top level types. + namespaceHandle will be NamespaceDefinitionHandle for defs and StringHandle for refs. + + True if the function successfully returns the name and namespace. + + + + For testing purposes only!!! + + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + + Returns an array of tokens for type constraints. Null reference if none. + + + + An array of tokens for type constraints. Null reference if none. + + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + An exception from metadata reader. + + + + Returns true if method IL can be retrieved from the module. + + + + + Returns true if the full image of the module is available. + + + + Invalid metadata. + + + + Produce unbound generic type symbol if the type is a generic type. + + + + + Produce constructed type symbol. + + + + Symbol for generic type. + + + Generic type arguments, including those for containing types. + + + Flags for arguments. Each item indicates whether corresponding argument refers to NoPia local types. + + + + + Extracts information from TypeDef flags. + Returns 0 if the value is invalid. + + + + + Lookup a type defined in this module. + + + + + Lookup a type defined in referenced assembly. + + + + + Given the identity of an assembly referenced by this module, finds + the index of that assembly in the list of assemblies referenced by + the current module. + + + + + Represents an identity of an assembly as defined by CLI metadata specification. + + + May represent assembly definition or assembly reference identity. + + + Represents an identity of an assembly as defined by CLI metadata specification. + + + May represent assembly definition or assembly reference identity. + + + + + Constructs an from its constituent parts. + + The simple name of the assembly. + The version of the assembly. + + The name of the culture to associate with the assembly. + Specify null, , or "neutral" (any casing) to represent . + The name can be an arbitrary string that doesn't contain NUL character, the legality of the culture name is not validated. + + The public key or public key token of the assembly. + Indicates whether represents a public key. + Indicates whether the assembly is retargetable. + Specifies the binding model for how this object will be treated in comparisons. + If is null, empty or contains a NUL character. + If contains a NUL character. + is not a value of the enumeration. + contains values that are not greater than or equal to zero and less than or equal to ushort.MaxValue. + is true and is not set. + is false and + contains a value that is not the size of a public key token, 8 bytes. + + + + The simple name of the assembly. + + + + + The version of the assembly. + + + + + The culture name of the assembly, or empty if the culture is neutral. + + + + + The AssemblyNameFlags. + + + + + Specifies assembly binding model for the assembly definition or reference; + that is how assembly references are matched to assembly definitions. + + + + + True if the assembly identity includes full public key. + + + + + Full public key or empty. + + + + + Low 8 bytes of SHA1 hash of the public key, or empty. + + + + + True if the assembly identity has a strong name, ie. either a full public key or a token. + + + + + Gets the value which specifies if the assembly is retargetable. + + + + + Determines whether two instances are equal. + + The operand appearing on the left side of the operator. + The operand appearing on the right side of the operator. + + + + Determines whether two instances are not equal. + + The operand appearing on the left side of the operator. + The operand appearing on the right side of the operator. + + + + Determines whether the specified instance is equal to the current instance. + + The object to be compared with the current instance. + + + + Determines whether the specified instance is equal to the current instance. + + The object to be compared with the current instance. + + + + Returns the hash code for the current instance. + + + + + + Returns true (false) if specified assembly identities are (not) equal + regardless of unification, retargeting or other assembly binding policies. + Returns null if these policies must be consulted to determine name equivalence. + + + + + Retrieves assembly definition identity from given runtime assembly. + + The runtime assembly. + Assembly definition identity. + is null. + + + + Returns the display name of the assembly identity. + + True if the full public key should be included in the name. Otherwise public key token is used. + The display name. + + Characters ',', '=', '"', '\'', '\' occurring in the simple name are escaped by backslash in the display name. + Any character '\t' is replaced by two characters '\' and 't', + Any character '\n' is replaced by two characters '\' and 'n', + Any character '\r' is replaced by two characters '\' and 'r', + The assembly name in the display name is enclosed in double quotes if it starts or ends with + a whitespace character (' ', '\t', '\r', '\n'). + + + + + Returns the display name of the current instance. + + + + + Parses display name filling defaults for any basic properties that are missing. + + Display name. + A full assembly identity. + + Parts of the assembly identity that were specified in the display name, + or 0 if the parsing failed. + + True if display name parsed correctly. + + The simple name has to be non-empty. + A partially specified version might be missing build and/or revision number. The default value for these is 65535. + The default culture is neutral ( is . + If neither public key nor token is specified the identity is considered weak. + + is null. + + + + Compares assembly identities. + Derived types may implement platform specific unification and portability policies. + + + + + A set of possible outcomes of comparison. + + + + + Reference doesn't match definition. + + + + + Strongly named reference matches strongly named definition (strong identity is identity with public key or token), + Or weak reference matches weak definition. + + + + + Reference matches definition except for version (reference version is lower or higher than definition version). + + + + + Compares assembly reference name (possibly partial) with definition identity. + + Partial or full assembly display name. + Full assembly display name. + True if the reference name matches the definition identity. + + + + Compares assembly reference identity with definition identity. + + Reference assembly identity. + Full assembly display name. + True if the reference identity matches the definition identity. + + + + Compares reference assembly identity with definition identity and returns their relationship. + + Reference identity. + Definition identity. + + + + Represents an immutable snapshot of assembly CLI metadata. + + + + + Factory that provides the for additional modules (other than ) of the assembly. + Shall only throw or . + Null of all modules were specified at construction time. + + + + + Modules the was created with, in case they are eagerly allocated. + + + + + Cached assembly symbols. + + + Guarded by . + + + + + Creates a single-module assembly. + + + Manifest module image. + + is null. + + + + Creates a single-module assembly. + + + Manifest module image. + + is null. + The PE image format is invalid. + + + + Creates a single-module assembly. + + Manifest module PE image stream. + False to close the stream upon disposal of the metadata. + The PE image format is invalid. + + + + Creates a single-module assembly. + + Manifest module PE image stream. + False to close the stream upon disposal of the metadata. + The PE image format is invalid. + + + + Finds all modules of an assembly on a specified path and builds an instance of that represents them. + + The full path to the assembly on disk. + is null. + is invalid. + Error reading file . See for details. + Reading from a file path is not supported by the platform. + + + + Creates a single-module assembly. + + + Manifest module. + + This object disposes it when it is itself disposed. + + + + Creates a multi-module assembly. + + + Modules comprising the assembly. The first module is the manifest module of the assembly. + This object disposes the elements of it when it is itself . + is default value. + contains null elements. + is empty or contains a module that doesn't own its image (was created via ). + + + + Creates a multi-module assembly. + + + Modules comprising the assembly. The first module is the manifest module of the assembly. + This object disposes the elements of it when it is itself . + is default value. + contains null elements. + is empty or contains a module that doesn't own its image (was created via ). + + + + Creates a multi-module assembly. + + Modules comprising the assembly. The first module is the manifest module of the assembly. + This object disposes the elements of it when it is itself . + is default value. + contains null elements. + is empty or contains a module that doesn't own its image (was created via ). + + + + Creates a shallow copy of contained modules and wraps them into a new instance of . + + + The resulting copy shares the metadata images and metadata information read from them with the original. + It doesn't own the underlying metadata images and is not responsible for its disposal. + + This is used, for example, when a metadata cache needs to return the cached metadata to its users + while keeping the ownership of the cached metadata object. + + + + + Modules comprising this assembly. The first module is the manifest module. + + The PE image format is invalid. + IO error reading the metadata. See for details. + The object has been disposed. + + + The PE image format is invalid. + IO error while reading the metadata. See for details. + The object has been disposed. + + + The PE image format is invalid. + IO error while reading the metadata. See for details. + The object has been disposed. + + + + Disposes all modules contained in the assembly. + + + + + Checks if the first module has a single row in Assembly table and that all other modules have none. + + The PE image format is invalid. + IO error reading the metadata. See for details. + The object has been disposed. + + + + Returns the metadata kind. + + + + + Creates a reference to the assembly metadata. + + Provider of XML documentation comments for the metadata symbols contained in the module. + Aliases that can be used to refer to the assembly from source code (see "extern alias" directive in C#). + True to embed interop types from the referenced assembly to the referencing compilation. Must be false for a module. + Path describing the location of the metadata, or null if the metadata have no location. + Display string used in error messages to identity the reference. + A reference to the assembly metadata. + + + + Reference to another C# or VB compilation. + + + + + Returns an instance of the reference with specified aliases. + + The new aliases for the reference. + Alias is invalid for the metadata kind. + + + + Returns an instance of the reference with specified aliases. + + The new aliases for the reference. + Alias is invalid for the metadata kind. + + + + Returns an instance of the reference with specified interop types embedding. + + The new value for . + Interop types can't be embedded from modules. + + + + Returns an instance of the reference with specified properties, or this instance if properties haven't changed. + + The new properties for the reference. + Specified values not valid for this reference. + + + + An Id that can be used to identify a metadata instance. If two metadata instances + have the same id then they are guaranteed to have the same content. If two metadata + instances have different ids, then the contents may or may not be the same. As such, + the id is useful as a key in a cache when a client wants to share data for a metadata + reference as long as it has not changed. + + + + + Represents immutable assembly or module CLI metadata. + + + + + The id for this metadata instance. If two metadata instances have the same id, then + they have the same content. If they have different ids they may or may not have the + same content. + + + + + Retrieves the for this instance. + + + + + Releases any resources associated with this instance. + + + + + Creates a copy of this object. + + + + + The kind of metadata a PE file image contains. + + + + + The PE file is an assembly. + + + + + The PE file is a module. + + + + + Represents an in-memory Portable-Executable image. + + + + + Represents metadata image reference. + + + Represents a logical location of the image, not the content of the image. + The content might change in time. A snapshot is taken when the compiler queries the reference for its metadata. + + + + + Path or name used in error messages to identity the reference. + + + + + Returns true if this reference is an unresolved reference. + + + + + Returns an instance of the reference with specified aliases. + + The new aliases for the reference. + Alias is invalid for the metadata kind. + + + + Returns an instance of the reference with specified interop types embedding. + + The new value for . + Interop types can't be embedded from modules. + + + + Returns an instance of the reference with specified aliases. + + The new aliases for the reference. + Alias is invalid for the metadata kind. + + + + Returns an instance of the reference with specified properties, or this instance if properties haven't changed. + + The new properties for the reference. + Specified values not valid for this reference. + + + + Creates a reference to a single-module assembly or a standalone module stored in memory. + + Assembly image. + Reference properties (extern aliases, type embedding, ). + Provides XML documentation for symbol found in the reference. + Optional path that describes the location of the metadata. The file doesn't need to exist on disk. The path is opaque to the compiler. + + Performance considerations: + + It is recommended to use or + API when creating multiple references to the same metadata. + Reusing object to create multiple references allows for sharing data across these references. + + + The method pins in managed heap. The pinned memory is released + when the resulting reference becomes unreachable and GC collects it. To control the lifetime of the pinned memory + deterministically use + to create an metadata object and + to get a reference to it. + + + The method creates a reference to a single-module assembly. To create a reference to a multi-module assembly or a stand-alone module use + and . + + + is null. + + + + Creates a reference to a single-module assembly or a standalone module stored in memory. + + Assembly image. + Reference properties (extern aliases, type embedding, ). + Provides XML documentation for symbol found in the reference. + Optional path that describes the location of the metadata. The file doesn't need to exist on disk. The path is opaque to the compiler. + + Performance considerations: + + It is recommended to use or + API when creating multiple references to the same metadata. + Reusing object to create multiple references allows for sharing data across these references. + + + The method makes a copy of the data and pins it. To avoid making a copy use an overload that takes an . + The pinned memory is released when the resulting reference becomes unreachable and GC collects it. To control the lifetime of the pinned memory + deterministically use + to create an metadata object and + to get a reference to it. + to get a reference to it. + + + is null. + + + + Creates a reference to a single-module assembly or a stand-alone module from data in specified stream. + Reads the content of the stream into memory and closes the stream upon return. + + Assembly image. + Reference properties (extern aliases, type embedding, ). + Provides XML documentation for symbol found in the reference. + Optional path that describes the location of the metadata. The file doesn't need to exist on disk. The path is opaque to the compiler. + doesn't support read and seek operations. + is null. + An error occurred while reading the stream. + + Performance considerations: + + It is recommended to use or + API when creating multiple references to the same metadata. + Reusing object to create multiple references allows for sharing data across these references. + + + The method eagerly reads the entire content of into native heap. The native memory block is released + when the resulting reference becomes unreachable and GC collects it. To decrease memory footprint of the reference and/or manage + the lifetime deterministically use + to create an metadata object and + to get a reference to it. + to get a reference to it. + + + + + + Creates a reference to an assembly or standalone module stored in a file. + Reads the content of the file into memory. + + Path to the assembly file. + Reference properties (extern aliases, type embedding, ). + Provides XML documentation for symbol found in the reference. + is null. + is invalid. + An error occurred while reading the file. + + Performance considerations: + + It is recommended to use or + API when creating multiple references to the same file. + Reusing object allows for sharing data across these references. + + + The method eagerly reads the entire content of the file into native heap. The native memory block is released + when the resulting reference becomes unreachable and GC collects it. To decrease memory footprint of the reference and/or manage + the lifetime deterministically use + to create an metadata object and + + to get a reference to it. + + + + + + Creates a reference to a loaded assembly. + + Path to the module file. + is null. + is dynamic, doesn't have a location, or the platform doesn't support reading from the location. + + Performance considerations: + + It is recommended to use API when creating multiple references to the same assembly. + Reusing object allows for sharing data across these references. + + + + + + Creates a reference to a loaded assembly. + + Path to the module file. + Reference properties (extern aliases, type embedding). + Provides XML documentation for symbol found in the reference. + is null. + . is not . + is dynamic, doesn't have a location, or the platform doesn't support reading from the location. + + Performance considerations: + + It is recommended to use API when creating multiple references to the same assembly. + Reusing object allows for sharing data across these references. + + + + + + Information about a metadata reference. + + + + + Default properties for a module reference. + + + + + Default properties for an assembly reference. + + + + + Initializes reference properties. + + The image kind - assembly or module. + Assembly aliases. Can't be set for a module. + True to embed interop types from the referenced assembly to the referencing compilation. Must be false for a module. + + + + Returns with specified aliases. + + + is , as modules can't be aliased. + + + + + Returns with specified aliases. + + + is , as modules can't be aliased. + + + + + Returns with set to specified value. + + is , as interop types can't be embedded from modules. + + + + Returns with set to specified value. + + + + + The image kind (assembly or module) the reference refers to. + + + + + Alias that represents a global declaration space. + + + Namespaces in references whose contain are available in global declaration space. + + + + + Aliases for the metadata reference. Empty if the reference has no aliases. + + + In C# these aliases can be used in "extern alias" syntax to disambiguate type names. + + + + + True if interop types defined in the referenced metadata should be embedded into the compilation referencing the metadata. + + + + + True to apply recursively on the target assembly and on all its transitive dependencies. + False to apply only on the target assembly. + + + + + Resolves references to metadata specified in the source (#r directives). + + + + + True to instruct the compiler to invoke for each assembly reference that + doesn't match any of the assemblies explicitly referenced by the (via , or #r directives. + + + + + Resolves a missing assembly reference. + + The metadata definition (assembly or module) that declares assembly reference in its list of dependencies. + Identity of the assembly reference that couldn't be resolved against metadata references explicitly specified to in the compilation. + Resolved reference or null if the identity can't be resolved. + + + + Represents an immutable snapshot of module CLI metadata. + + This object may allocate significant resources or lock files depending upon how it is constructed. + + + + Create metadata module from a raw memory pointer to metadata directory of a PE image or .cormeta section of an object file. + Only manifest modules are currently supported. + + Pointer to the start of metadata block. + The size of the metadata block. + is null. + is not positive. + + + + Create metadata module from a raw memory pointer to a PE image or an object file. + + Pointer to the DOS header ("MZ") of a portable executable image. + The size of the image pointed to by . + is null. + is not positive. + + + + Create metadata module from a sequence of bytes. + + The portable executable image beginning with the DOS header ("MZ"). + is null. + + + + Create metadata module from a byte array. + + Portable executable image beginning with the DOS header ("MZ"). + is null. + + + + Create metadata module from a stream. + + Stream containing portable executable image. Position zero should contain the first byte of the DOS header ("MZ"). + + False to close the stream upon disposal of the metadata (the responsibility for disposal of the stream is transferred upon entry of the constructor + unless the arguments given are invalid). + + is null. + The stream doesn't support seek operations. + + + + Create metadata module from a stream. + + Stream containing portable executable image. Position zero should contain the first byte of the DOS header ("MZ"). + + Options specifying how sections of the PE image are read from the stream. + Unless is specified, the responsibility for disposal of the stream is transferred upon entry of the constructor + unless the arguments given are invalid. + + is null. + The stream doesn't support read and seek operations. + has an invalid value. + + or is specified and the PE headers of the image are invalid. + + + or is specified and an error occurs while reading the stream. + + + + + Creates metadata module from a file containing a portable executable image. + + File path. + + The file might remain mapped (and read-locked) until this object is disposed. + The memory map is only created for large files. Small files are read into memory. + + is null. + is invalid. + Error opening file . See for details. + File not found. + Reading from a file path is not supported by the platform. + + + + Creates a shallow copy of this object. + + + The resulting copy shares the metadata image and metadata information read from it with the original. + It doesn't own the underlying metadata image and is not responsible for its disposal. + + This is used, for example, when a metadata cache needs to return the cached metadata to its users + while keeping the ownership of the cached metadata object. + + + + + Frees memory and handles allocated for the module. + + + + + Name of the module. + + Invalid metadata. + Module has been disposed. + + + + Version of the module content. + + Invalid metadata. + Module has been disposed. + + + + Returns the for this instance. + + + + + Returns the file names of linked managed modules. + + When an invalid module name is encountered. + Module has been disposed. + + + + Returns the metadata reader. + + Module has been disposed. + When an invalid module name is encountered. + + + + Creates a reference to the module metadata. + + Provider of XML documentation comments for the metadata symbols contained in the module. + Path describing the location of the metadata, or null if the metadata have no location. + Display string used in error messages to identity the reference. + A reference to the module metadata. + + + + Reference to metadata stored in the standard ECMA-335 metadata format. + + + + + Display string used in error messages to identity the reference. + + + + + Path describing the location of the metadata, or null if the metadata have no location. + + + + + XML documentation comments provider for the reference. + + + + + Create documentation provider for the reference. + + + Called when the compiler needs to read the documentation for the reference. + This method can be called multiple times from different threads. The result of one of the calls + is cached on the reference object. + + + + + Returns an instance of the reference with specified aliases. + + The new aliases for the reference. + Alias is invalid for the metadata kind. + + + + Returns an instance of the reference with specified aliases. + + The new aliases for the reference. + Alias is invalid for the metadata kind. + + + + Returns an instance of the reference with specified interop types embedding. + + The new value for . + Interop types can't be embedded from modules. + + + + Returns an instance of the reference with specified properties, or this instance if properties haven't changed. + + The new properties for the reference. + Specified values not valid for this reference. + + + + Returns an instance of the reference with specified properties. + + The new properties for the reference. + Specified values not supported. + Only invoked if the properties changed. + + + + Get metadata representation for the PE file. + + If the PE image format is invalid. + The metadata image content can't be read. + The metadata image is stored in a file that can't be found. + + Called when the needs to read the reference metadata. + + The listed exceptions are caught and converted to compilation diagnostics. + Any other exception is considered an unexpected error in the implementation and is not caught. + + objects may cache information decoded from the PE image. + Reusing instances across metadata references will result in better performance. + + The calling doesn't take ownership of the objects returned by this method. + The implementation needs to retrieve the object from a provider that manages their lifetime (such as metadata cache). + The object is kept alive by the that called + and by all compilations created from it via calls to With- factory methods on , + other than overloads. A compilation created using + will call to again. + + + + + Returns a copy of the object this + contains. This copy does not need to be d. + + If the PE image format is invalid. + The metadata image content can't be read. + The metadata image is stored in a file that can't be found. + + + + Represents the value of #r reference along with its source location. + + + + + Represents a metadata reference that can't be or is not yet resolved. + + + For error reporting only, can't be used to reference a metadata file. + + + + + Initializes a new instance of the class. + + An ordered set of fully qualified + paths which are searched when resolving assembly names. + Directory used when resolving relative paths. + + + + Represents errors that occur while parsing RuleSet files. + + + + + Represents a set of rules as specified in a ruleset file. + + + + + The file path of the ruleset file. + + + + + The global option specified by the IncludeAll tag. + + + + + Individual rule ids and their associated actions. + + + + + List of rulesets included by this ruleset. + + + + + Create a RuleSet. + + + + + Create a RuleSet with a global effective action applied on it. + + + + + Get the effective ruleset after resolving all the included rulesets. + + + + + Get all the files involved in resolving this ruleset. + + + + + Returns true if the action1 is stricter than action2. + + + + + Load the ruleset from the specified file. This ruleset will contain + all the rules resolved from the includes specified in the ruleset file + as well. See also: . + + + A ruleset that contains resolved rules or null if there were errors. + + + + + Get the paths to all files contributing rules to the ruleset from the specified file. + See also: . + + + The full paths to included files, or an empty array if there were errors. + + + + + Parses the ruleset file at the given and returns the following diagnostic options from the parsed file: + 1) A map of from rule ID to option. + 2) A global option for all rules in the ruleset file. + + + + + Represents a Include tag in a RuleSet file. + + + + + The path of the included file. + + + + + The effective action to apply on this included ruleset. + + + + + Create a RuleSetInclude given the include path and the effective action. + + + + + Gets the RuleSet associated with this ruleset include + + The parent of this ruleset include + + + + Returns a full path to the include file. Relative paths are expanded relative to the current rule set file. + + The parent of this rule set include + + + + This type is responsible for parsing a ruleset xml file and producing a object. + + + + + Creates and loads the rule set from a file + + The file path to load the rule set + + + + Load the rule set from the XML node + + The rule set node from which to create a rule set object + The file path to the rule set file + A rule set object with data from the given XML node + + + + Load the rules from the XML node + + The rules node from which to loop through each child rule node + A list of rule objects with data from the given XML node + + + + Load the rule from the XML node + + The rule node from which to create a rule object + The analyzer this rule belongs to + The namespace this rule belongs to + A rule object with data from the given XML node + + + + Load the included rule set from the XML node + + The include node from which to create a RuleSetInclude object + A RuleSetInclude object with data from the given XML node + + + + Reads the action from the given node + + The node to read the action, it can be a rule node or an include node. + Whether or not the default value is allowed. + The rule action + + + + Load the IncludedAll from the XML node + + The IncludeAll node from which to create a IncludeAll object + A IncludeAll object with data from the given XML node + + + + Reads an attribute from a node and validates that it is not empty. + + The XML node that contains the attribute + The name of the attribute to read + The attribute value + + + + Gets the default settings to read the ruleset xml file. + + + + + Resolves references to source files specified in source code. + + + + + Determines if a flag is set on the enum. + + The value to check. + An enum field that specifies the flag. + Whether the is set on the . + + + + Specifies the options for how generics are displayed in the description of a symbol. + + + + + Format object using default options. + + + + + In C#, include the numeric code point before character literals. + + + + + Whether or not to include type suffix for applicable integral literals. + + + + + Whether or not to display integral literals in hexadecimal. + + + + + Whether or not to quote character and string literals. + + + + + In C#, replace non-printable (e.g. control) characters with dedicated (e.g. \t) or unicode (\u0001) escape sequences. + In Visual Basic, replace non-printable characters with calls to ChrW and vb* constants. + + + + + Represents a value type that can be assigned null. + + + + + + Initializes a new instance to the specified value. + + + + + + Gets a value indicating whether the current object has a value. + + + + + + Gets the value of the current object. + + + + + + Creates a new object initialized to a specified value. + + + + + + Specifies output assembly kinds generated by compiler. + + + + + An .exe with an entry point and a console. + + + + + An .exe with an entry point but no console. + + + + + A .dll file. + + + + + A .netmodule file. + + + + + A .winmdobj file. + + + + + An .exe that can run in an app container. + + + Equivalent to a WindowsApplication, but with an extra bit set in the Portable Executable file + so that the application can only be run in an app container. + Also known as a "Windows Store app". + + + + + The base class for language specific assembly managers. + + Language specific representation for a compilation + Language specific representation for an assembly symbol. + + + + Information about an assembly, used as an input for the Binder class. + + + + + Identity of the assembly. + + + + + Identity of assemblies referenced by this assembly. + References should always be returned in the same order. + + + + + The sequence of AssemblySymbols the Binder can choose from. + + + + + Check if provided AssemblySymbol is created for assembly described by this instance. + This method is expected to return true for every AssemblySymbol returned by + AvailableSymbols property. + + + The AssemblySymbol to check. + + Boolean. + + + + Resolve assembly references against assemblies described by provided AssemblyData objects. + In other words, match assembly identities returned by AssemblyReferences property against + assemblies described by provided AssemblyData objects. + + An array of AssemblyData objects to match against. + Used to compare assembly identities. + + For each assembly referenced by this assembly () + a description of how it binds to one of the input assemblies. + + + + + Get the source compilation backing this assembly, if one exists. + Returns null otherwise. + + + + + Result of binding an AssemblyRef to an AssemblyDef. + + + + + Failed binding. + + + + + Successful binding. + + + + + Returns true if the reference was matched with the identity of the assembly being built. + + + + + True if the definition index is available (reference was successfully matched with the definition). + + + + + 0 if the reference is equivalent to the definition. + -1 if version of the matched definition is lower than version of the reference, but the reference otherwise matches the definition. + +1 if version of the matched definition is higher than version of the reference, but the reference otherwise matches the definition. + + Undefined unless is true. + + + + + Index into assembly definition list. + Undefined unless is true. + + + + + Private helper class to capture information about AssemblySymbol instance we + should check for suitability. Used by the Bind method. + + + + + An index of the AssemblyData object in the input array. AssemblySymbol instance should + be checked for suitability against assembly described by that object, taking into account + assemblies described by other AssemblyData objects in the input array. + + + + + AssemblySymbol instance to check for suitability. + + + + + Convenience constructor to initialize fields of this structure. + + + + + Result of binding an input assembly and its references. + + + + + Suitable AssemblySymbol instance for the corresponding assembly, + null reference if none is available/found. + + + + + For each AssemblyRef of this AssemblyDef specifies which AssemblyDef matches the reference. + + + Result of resolving assembly references of the corresponding assembly + against provided set of assemblies. Essentially, this is an array returned by + AssemblyData.BindAssemblyReferences method. + + Each element describes the assembly the corresponding reference of the input assembly + is bound to. + + + + + For the given set of AssemblyData objects, do the following: + 1) Resolve references from each assembly against other assemblies in the set. + 2) Choose suitable AssemblySymbol instance for each AssemblyData object. + + The first element (index==0) of the assemblies array represents the assembly being built. + One can think about the rest of the items in assemblies array as assembly references given to the compiler to + build executable for the assembly being built. + + Compilation. + + An array of objects describing assemblies, for which this method should + resolve references and find suitable AssemblySymbols. The first slot contains the assembly being built. + + + An array of objects describing standalone modules referenced by the compilation. + + + An array of references passed to the compilation and resolved from #r directives. + May contain references that were skipped during resolution (they don't have a corresponding explicit assmebly). + + + Maps index to to an index of a resolved assembly or module in or modules. + + + Reference resolver used to look up missing assemblies. + + + Hide lower versions of dependencies that have multiple versions behind an alias. + + + Used to filter out assemblies that have the same strong or weak identity. + Maps simple name to a list of identities. The highest version of each name is the first. + + + Import options applied to implicitly resolved references. + + + Updated array with resolved implicitly referenced assemblies appended. + + + Implicitly resolved references. + + + Maps indices of implicitly resolved references to the corresponding indices of resolved assemblies in (explicit + implicit). + + + Any diagnostics reported while resolving missing assemblies. + + + True if the assembly being compiled is indirectly referenced through some of its own references. + + + The definition index of the COR library. + + + An array of structures describing the result. It has the same amount of items as + the input assemblies array, for each input AssemblyData object resides + at the same position. + + Each contains the following data: + + - Suitable AssemblySymbol instance for the corresponding assembly, + null reference if none is available/found. Always null for the first element, which corresponds to the assembly being built. + + - Result of resolving assembly references of the corresponding assembly + against provided set of assembly definitions. Essentially, this is an array returned by + method. + + + + + Determines if it is possible that gives internals + access to assembly . It does not make a conclusive + determination of visibility because the compilation's strong name key is not supplied. + + + + + Return AssemblySymbols referenced by the input AssemblySymbol. The AssemblySymbols must correspond + to the AssemblyNames returned by AssemblyData.AssemblyReferences property. If reference is not + resolved, null reference should be returned in the corresponding item. + + + The target AssemblySymbol instance. + + An array of AssemblySymbols referenced by the input AssemblySymbol. + Implementers may return cached array, Binder does not mutate it. + + + + + Return collection of assemblies involved in canonical type resolution of + NoPia local types defined within target assembly. In other words, all + references used by previous compilation referencing the target assembly. + + + + + Assembly is /l-ed by compilation that is using it as a reference. + + + + + Get Assembly used as COR library for the candidate. + + + + + Checks if the properties of are compatible with properties of . + Reports inconsistencies to the given diagnostic bag. + + True if the properties are compatible and hence merged, false if the duplicate reference should not merge it's properties with primary reference. + + + + Called to compare two weakly named identities with the same name. + + + + + Aliases that should be applied to the referenced assembly. + Empty array means {"global"} (all namespaces and types in the global namespace of the assembly are accessible without qualification). + Null if not applicable (the reference only has recursive aliases). + + + + + Aliases that should be applied recursively to all dependent assemblies. + Empty array means {"global"} (all namespaces and types in the global namespace of the assembly are accessible without qualification). + Null if not applicable (the reference only has simple aliases). + + + + + default() is considered skipped. + + + + + Index into an array of assemblies (not including the assembly being built) or an array of modules, depending on . + + + + + non-negative: Index into the array of all (explicitly and implicitly) referenced assemblies. + negative: ExplicitlyReferencedAssemblies.Count + RelativeAssemblyIndex is an index into the array of assemblies. + + + + + Resolves given metadata references to assemblies and modules. + + The compilation whose references are being resolved. + + Used to filter out assemblies that have the same strong or weak identity. + Maps simple name to a list of identities. The highest version of each name is the first. + + List where to store resolved references. References from #r directives will follow references passed to the compilation constructor. + Maps #r values to successfully resolved metadata references. Does not contain values that failed to resolve. + Unique metadata references resolved from #r directives. + List where to store information about resolved assemblies to. + List where to store information about resolved modules to. + Diagnostic bag where to report resolution errors. + + Maps index to to an index of a resolved assembly or module in or , respectively. + + + + + Creates or gets metadata for PE reference. + + + If any of the following exceptions: , , , + are thrown while reading the metadata file, the exception is caught and an appropriate diagnostic stored in . + + + + + Determines whether references are the same. Compilation references are the same if they refer to the same compilation. + Otherwise, references are represented by their object identities. + + + + + Merges aliases of the first observed reference () with aliases specified for an equivalent reference (). + Empty alias list is considered to be the same as a list containing "global", since in both cases C# allows unqualified access to the symbols. + + + + + Caller is responsible for freeing any allocated ArrayBuilders. + + + + + Caller is responsible for freeing any allocated ArrayBuilders. + + + + + Returns null if an assembly of an equivalent identity has not been added previously, otherwise returns the reference that added it. + Two identities are considered equivalent if + - both assembly names are strong (have keys) and are either equal or FX unified + - both assembly names are weak (no keys) and have the same simple name. + + + + + For each given directive return a bound PE reference, or null if the binding fails. + + + + + Used to match AssemblyRef with AssemblyDef. + + Array of definition identities to match against. + An index of the first definition to consider, preceding this index are ignored. + Reference identity to resolve. + Assembly identity comparer. + + Returns an index the reference is bound. + + + + + If the compilation being built represents an assembly its assembly name. + If the compilation being built represents a module, the name of the + containing assembly or + if not specified (/moduleassemblyname command line option). + + + + + Used to compares assembly identities. + May implement unification and portability policies specific to the target platform. + + + + + Metadata observed by the compiler. + May be shared across multiple Reference Managers. + Access only under lock(). + + + + + Once this is non-zero the state of the manager is fully initialized and immutable. + + + + + True if the compilation has a reference that refers back to the assembly being compiled. + + + If we have a circular reference the bound references can't be shared with other compilations. + + + + + A map from a metadata reference to an index to array. Do not access + directly, use property instead. + + + + + A map from a net-module metadata reference to the index of the corresponding module + symbol in the source assembly symbol for the current compilation. + + + Subtract one from the index (for the manifest module) to find the corresponding elements + of and . + + + + + Maps (containing syntax tree file name, reference string) of #r directive to a resolved metadata reference. + If multiple #r's in the same tree use the same value as a reference the resolved metadata reference is the same as well. + + + + + Array of unique bound #r references. + + + The references are in the order they appear in syntax trees. This order is currently preserved + as syntax trees are added or removed, but we might decide to share reference manager between compilations + with different order of #r's. It doesn't seem this would be an issue since all #r's within the compilation + have the same "priority" with respect to each other. + + + + + Diagnostics produced during reference resolution and binding. + + + When reporting diagnostics be sure not to include any information that can't be shared among + compilations that share the same reference manager (such as full identity of the compilation, + simple assembly name is ok). + + + + + COR library symbol, or null if the compilation itself is the COR library. + + + If the compilation being built is the COR library we don't want to store its source assembly symbol + here since we wouldn't be able to share the state among subsequent compilations that are derived from it + (each of them has its own source assembly symbol). + + + + + Standalone modules referenced by the compilation (doesn't include the manifest module of the compilation). + + + [i] corresponds to [i]. + + + + + References of standalone modules referenced by the compilation (doesn't include the manifest module of the compilation). + + + [i] corresponds to [i]. + + + + + Assemblies referenced directly by the source module of the compilation. + + + + + Assemblies referenced directly by the source module of the compilation. + + + Aliases [i] are of an assembly [i]. + + + + + Unified assemblies referenced directly by the source module of the compilation. + + + + + Call only while holding . + + + + + Call only while holding . + + + + + Global namespaces of assembly references that have been superseded by an assembly reference with a higher version are + hidden behind to avoid ambiguity when they are accessed from source. + All existing aliases of a superseded assembly are discarded. + + + + + Calculates map from the identities of specified symbols to the corresponding identities in the original EnC baseline metadata. + The map only includes an entry for identities that differ, i.e. for symbols representing assembly references of the current compilation that have different identities + than the corresponding identity in baseline metadata AssemblyRef table. The key comparer of the map ignores build and revision parts of the version number, + since these might change if the original version included wildcard. + + Assembly symbols for references of the current compilation. + Identities in the baseline. [i] corresponds to [i]. + + + + Gets the that corresponds to the assembly symbol. + + + + + Must be acquired whenever the following data are about to be modified: + - Compilation.lazyAssemblySymbol + - Compilation.referenceManager + - ReferenceManager state + - + - + + All the above data should be updated at once while holding this lock. + Once lazyAssemblySymbol is set the Compilation.referenceManager field and ReferenceManager + state should not change. + + + + + Enumerates all referenced assemblies. + + + + + Enumerates all referenced assemblies and their aliases. + + + + + A record of the assemblies referenced by a module (their identities, symbols, and unification). + + + + + Identities of referenced assemblies (those that are or will be emitted to metadata). + + + Names[i] is the identity of assembly Symbols[i]. + + + + + Assembly symbols that the identities are resolved against. + + + Names[i] is the identity of assembly Symbols[i]. + Unresolved references are represented as MissingAssemblySymbols. + + + + + A subset of that correspond to references with non-matching (unified) + version along with unification details. + + + + + Assembly symbol referenced by a AssemblyRef for which we couldn't find a matching + compilation reference but we found one that differs in version. + Created only for assemblies that require runtime binding redirection policy, + i.e. not for Framework assemblies. + + + + + Original reference that was unified to the identity of the . + + + + + Representation of a resource whose contents are to be embedded in the output assembly. + + + + + Creates a representation of a resource whose contents are to be embedded in the output assembly. + + Resource name. + The callers will dispose the result after use. + This allows the resources to be opened and read one at a time. + + True if the resource is public. + + Returns a stream of the data to embed. + + + + + Creates a representation of a resource whose file name will be recorded in the assembly. + + Resource name. + File name with an extension to be stored in metadata. + The callers will dispose the result after use. + This allows the resources to be opened and read one at a time. + + True if the resource is public. + + Function returning a stream of the resource content (used to calculate hash). + + + + + Specifies the C# or VB source code kind. + + + + + No scripting. Used for .cs/.vb file parsing. + + + + + Allows top-level statements, declarations, and optional trailing expression. + Used for parsing .csx/.vbx and interactive submissions. + + + + + The same as . + + + + + Specifies the Ids of special runtime types. + + + Only types explicitly mentioned in "Co-located core types" spec + (https://github.com/dotnet/roslyn/blob/master/docs/compilers/Co-located%20core%20types.md) + can be in this enum. + The following things should be in sync: + 1) SpecialType enum + 2) names in SpecialTypes.EmittedNames array. + + + + + Indicates a non-special type (default value). + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Indicates that the type is . + + + + + Count of special types. This is not a count of enum members. + + + + + Checks if a type is considered a "built-in integral" by CLR. + + + + + Checks if a type is a primitive of a fixed size. + + + + + These special types are structs that contain fields of the same type + (e.g. System.Int32 contains a field of type System.Int32). + + + + + Array of names for types from Cor Library. + The names should correspond to ids from TypeId enum so + that we could use ids to index into the array + + + + + + Gets the name of the special type as it would appear in metadata. + + + + + The strong name key associated with the identity of this assembly. + This contains the contents of the user-supplied key file exactly as extracted. + + + + + Determines source assembly identity. + + + + + A diagnostic created in the process of determining the key. + + + + + The CSP key container containing the public key used to produce the key, + or null if the key was retrieved from . + + + The original value as specified by or + . + + + + + Original key file path, or null if the key is provided by the . + + + The original value as specified by or + + + + + + True if the compilation can be signed using these keys. + + + + + True if a strong name can be created for the compilation using these keys. + + + + + Provides strong name and signs source assemblies. + + + + + Contains helper methods for switch statement label constants + + + + + Method used to compare ConstantValues for switch statement case labels + + + + A value that indicates the relative order of the objects being compared. The return value has these meanings: + Less than zero: first instance precedes second in the sort order. + Zero: first instance occurs in the same position in the sort order as second. + Greater than zero: first instance follows second in the sort order. + + + + + Append a default argument (i.e. the default argument of an optional parameter). + Assumed to be non-null. + + + + + Check if the given type is an enum with System.FlagsAttribute. + + + TODO: Can/should this be done using WellKnownAttributes? + + + + + This class associates a symbol with particular format for display. + It can be passed as an argument for an error message in place where symbol display should go, + which allows to defer building strings and doing many other things (like loading metadata) + associated with that until the error message is actually requested. + + + + + None + + + + + ".ctor" instead of "Foo" + + + + + "List`1" instead of "List<T>" ("List(of T)" in VB). Overrides GenericsOptions on + types. + + + + + Append "[Missing]" to missing Metadata types (for testing). + + + + + Include the Script type when qualifying type names. + + + + + Include custom modifiers (e.g. modopt([mscorlib]System.Runtime.CompilerServices.IsConst)) on + the member (return) type and parameters. + + + CONSIDER: custom modifiers are part of the public API, so we might want to move this to SymbolDisplayMemberOptions. + + + + + For a type written as "int[][,]" in C#, then + a) setting this option will produce "int[,][]", and + b) not setting this option will produce "int[][,]". + + + + + Specifies how to display delegates (just the name or the name with the signature). + + + + + Shows only the name of the delegate (e.g. "SomeDelegate"). + + + + + Shows the name and the parameters of the delegate (e.g. "SomeDelegate(int x)"). + + + The format of the parameters will be determined by the other flags passed. + + + + + Shows the name and the signature of the delegate (e.g. "void SomeDelegate(int x)"). + + + The format of the signature will be determined by the other flags passed. + + + + + Specifies how to display extension methods. + + + + + Displays the extension method based on its . + + + + + Displays the extension method in the form of an instance method. + For example, IEnumerable<TSource>.ElementAt<TSource>(int index). + + + + + Displays the extension method as a static method. + For example, Enumerable.ElementAt<TSource>(this IEnumerable<TSource> source, int index). + + + + + Exposes extension methods for displaying symbol descriptions. + + + + + Converts an immutable array of s to a string. + + The array of parts. + The concatenation of the parts into a single string. + + + + Determines if a flag is set on the enum. + + The value to check. + An enum field that specifies the flag. + Whether the is set on the . + + + + Determines if a flag is set on the enum. + + The value to check. + An enum field that specifies the flag. + Whether the is set on the . + + + + Determines if a flag is set on the enum. + + The value to check. + An enum field that specifies the flag. + Whether the is set on the . + + + + Determines if a flag is set on the enum. + + The value to check. + An enum field that specifies the flag. + Whether the is set on the . + + + + Determines if a flag is set on the enum. + + The value to check. + An enum field that specifies the flag. + Whether the is set on the . + + + + Determines if a flag is set on the enum. + + The value to check. + An enum field that specifies the flag. + Whether the is set on the . + + + + Determines if a flag is set on the enum. + + The value to check. + An enum field that specifies the flag. + Whether the is set on the . + + + + Describes the formatting rules that should be used when displaying symbols. + + + + + Formats a symbol description as in a C# compiler error message. + + + + + Formats a symbol description as in a C# compiler short error message. + + + + + Formats a symbol description as in a Visual Basic compiler error message. + + + + + Formats a symbol description as in a Visual Basic compiler short error message. + + + + + Formats the names of all types and namespaces in a fully qualified style (including the global alias). + + + + + Formats a symbol description in a form that suits . + + + + + A verbose format for displaying symbols (useful for testing). + + + + + this.QualifiedNameOnly = containingSymbol.QualifiedNameOnly + "." + this.Name + + + + + this.QualifiedNameArity = containingSymbol.QualifiedNameArity + "." + this.Name + "`" + this.Arity + + + + + A succinct format for displaying symbols. + + + + + The format used for displaying symbols when visualizing IL. + + + + + Used to normalize explicit interface implementation member names. + Only expected to be applied to interface types (and their type arguments). + + + + + Determines how the global namespace is displayed. + + + + + Determines how types are qualified (e.g. Nested vs Containing.Nested vs Namespace.Containing.Nested). + + + + + Determines how generics (on types and methods) should be described (i.e. the level of detail). + + + + + Determines how fields, properties, events, and methods are displayed. + + + + + Determines how parameters (of methods, properties/indexers, and delegates) are displayed. + + + + + Determines how delegates are displayed (e.g. name vs full signature). + + + + + Determines how extension methods are displayed. + + + + + Determines how properties are displayed. + For example, "Prop" vs "Prop { get; set; }" in C# or "Prop" vs. "ReadOnly Prop" in Visual Basic. + + + + + Determines how local variables are displayed. + + + + + Determines which kind keywords should be included when displaying symbols. + + + + + Determines other characteristics of how symbols are displayed. + + + + + Flags that can only be set within the compiler. + + + + + Constructs a new instance of accepting a variety of optional parameters. + + + The settings that determine how the global namespace is displayed. + + + The settings that determine how types are qualified (e.g. Nested vs Containing.Nested vs Namespace.Containing.Nested). + + + The settings that determine how generics (on types and methods) should be described (i.e. the level of detail). + + + The settings that determine how fields, properties, events, and methods are displayed. + + + The settings that determine how delegates are displayed (e.g. name vs full signature). + + + The settings that determine how extension methods are displayed. + + + The settings that determine how parameters (of methods, properties/indexers, and delegates) are displayed. + + + The settings that determine how properties are displayed. + For example, "Prop" vs "Prop { get; set; }" in C# or "Prop" vs. "ReadOnly Prop" in Visual Basic. + + + The settings that determine how local variables are displayed. + + + The settings that determine which kind keywords should be included when displaying symbols. + + + The settings that determine other characteristics of how symbols are displayed. + + + + + This version also accepts . + + + + + Creates a copy of the SymbolDisplayFormat but with replaced set of . + + + An object representing how miscellaneous symbols will be formatted. + + A duplicate of the SymbolDisplayFormat, with a replaced set of . + + + + Creates a copy of the SymbolDisplayFormat but with an additional set of . + + + An object specifying additional parameters for how miscellaneous symbols will be formatted. + + A duplicate of the SymbolDisplayFormat, with an additional set of . + + + + Creates a copy of the SymbolDisplayFormat but with replaced set of . + + + An object specifying how generic symbols will be formatted. + + A duplicate of the SymbolDisplayFormat, with a replaced set of . + + + + Creates a copy of the SymbolDisplayFormat but with an additional set of . + + + An object specifying additional parameters for how generic symbols will be formatted. + + A duplicate of the SymbolDisplayFormat, with an additional set of . + + + + Creates a copy of the SymbolDisplayFormat but with replaced set of . + + + An object specifying how members will be formatted. + + A duplicate of the SymbolDisplayFormat, with a replaced set of . + + + + Creates a copy of the SymbolDisplayFormat but with an additional set of . + + + An object specifying additional parameters for how members will be formatted. + + + A duplicate of the SymbolDisplayFormat, with an additional set of . + + + + + Creates a copy of the SymbolDisplayFormat but with a set of stripped away from the original object. + + + An object specifying which parameters should not be applied to how members will be formatted. + + + A duplicate of the SymbolDisplayFormat, with a set of stripped away from the original object. + + + + + Creates a copy of the SymbolDisplayFormat but with replaced set of . + + + An object specifying parameters with which symbols belonging to kind keywords should be formatted. + + + A duplicate of the SymbolDisplayFormat, with a replaced set of . + + + + + Creates a copy of the SymbolDisplayFormat but with an additional set of . + + + An object specifying additional parameters with which symbols belonging to kind keywords should be formatted. + + + A duplicate of the SymbolDisplayFormat, with an additional set of . + + + + + Creates a copy of the SymbolDisplayFormat but with a set of stripped away from the original object. + + + The settings that determine other characteristics of how symbols are displayed. + + + A duplicate of the SymbolDisplayFormat, with a set of stripped away from the original object. + + + + + Creates a copy of the SymbolDisplayFormat but with replaced set of . + + + An object specifying how parameters should be formatted. + + A duplicate of the SymbolDisplayFormat, with a replaced set of . + + + + Creates a copy of the SymbolDisplayFormat but with an additional set of . + + + An object specifying additional parameters on how parameters should be formatted. + + + A duplicate of the SymbolDisplayFormat, with an additional set of . + + + + + Creates a copy of the SymbolDisplayFormat but with a set of stripped away from the original object. + + + An object specifying parameters that should not be applied when formatting parameters. + + + A duplicate of the SymbolDisplayFormat, with a set of stripped away from the original object. + + + + + Creates a copy of the SymbolDisplayFormat but with replaced . + + + An object specifying parameters on how namespace symbols should be formatted. + + A duplicate of the SymbolDisplayFormat, with a replaced set of . + + + + Creates a copy of the SymbolDisplayFormat but with replaced set of . + + + An object specifying parameters on how symbols belonging to locals should be formatted. + + A duplicate of the SymbolDisplayFormat, with a replaced set of . + + + + Creates a copy of the SymbolDisplayFormat but with an additional set of . + + + An object specifying additional parameters on how symbols belonging to locals should be formatted. + + + A duplicate of the SymbolDisplayFormat, with an additional set of . + + + + + Specifies the options for how generics are displayed in the description of a symbol. + + + + + Omits the type parameter list entirely. + + + + + Includes the type parameters. + For example, "Foo<T>" in C# or "Foo(Of T)" in Visual Basic. + + + + + Includes type parameters and constraints. + For example, "where T : new()" in C# or "Of T as New" in Visual Basic. + + + + + Includes in or out keywords before variant type parameters. + For example, "Foo<out T>" in C# or (Foo Of Out T" in Visual Basic. + + + + + Specifies the options for how to display the global namespace in the description of a symbol. + + + Any of these styles may be overridden by . + + + + + Omits the global namespace, unconditionally. + + + + + Omits the global namespace if it is being displayed as a containing symbol (i.e. not on its own). + + + + + Include the global namespace, unconditionally. + + + + + Specifies which kind keywords should be included when displaying symbols. + + + + + Omits all kind keywords. + + + + + Includes the namespace keyword before namespaces. + For example, "namespace System", rather than "System". + + + + + Includes the type keyword before types. + For example, "class C" in C# or "Structure S" in Visual Basic. + + + + + Include the member keyword before members (if one exists). + For example, "event D E" in C# or "Function MyFun()" in Visual Basic. + + + + + Specifies the options for how locals are displayed in the description of a symbol. + + + + + Shows only the name of the local. + For example, "x". + + + + + Shows the type of the local in addition to its name. + For example, "int x" in C# or "x As Integer" in Visual Basic. + + + + + Shows the constant value of the local, if there is one, in addition to its name. + For example "x = 1". + + + + + Specifies the options for how members are displayed in the description of a symbol. + + + + + Includes only the name of the member. + + + + + Includes the (return) type of the method/field/property/event. + + + + + Includes the modifiers of the member. + For example, "static readonly" in C# or "Shared ReadOnly" in Visual Basic. + + + Accessibility modifiers are controlled separately by . + + + + + Includes the accessibility modifiers of the member. + For example, "public" in C# or "Public" in Visual Basic. + + + + + Includes the name of corresponding interface on members that explicitly implement + interface members. + For example, "IFoo.Bar { get; }". + + + This option has no effect in Visual Basic. + + + + + Includes the parameters of methods and properties/indexers. + + + See for finer-grained settings. + + + + + Includes the name of the type containing the member. + + + The format of the containing type is determined by . + + + + + Includes the value of the member if is a constant. + + + + + Specifies miscellaneous options about the format of symbol descriptions. + + + + + Specifies that no miscellaneous options should be applied. + + + + + Uses keywords for predefined types. + For example, "int" instead of "System.Int32" in C# + or "Integer" instead of "System.Integer" in Visual Basic. + + + + + Escapes identifiers that are also keywords. + For example, "@true" instead of "true" in C# or + "[True]" instead of "True" in Visual Basic. + + + + + Displays asterisks between commas in multi-dimensional arrays. + For example, "int[][*,*]" instead of "int[][,]" in C# or + "Integer()(*,*)" instead of "Integer()(*,*) in Visual Basic. + + + + + Displays "?" for erroneous types that lack names (perhaps due to faulty metadata). + + + + + Displays attributes names without the "Attribute" suffix, if possible. + + + Has no effect outside and only applies + if the context location is one where an attribute ca be referenced without the suffix. + + + + + Displays as a normal generic type, rather than with + the special question mark syntax. + + + + + Specifies how parameters are displayed in the description of a (member, property/indexer, or delegate) symbol. + + + + + Omits parameters from symbol descriptions. + + + If this option is combined with , then only + the parentheses will be shown (e.g. M()). + + + + + Includes the this keyword before the first parameter of an extension method in C#. + + + This option has no effect in Visual Basic. + + + + + Includes the params, ref, out, ByRef, ByVal keywords before parameters. + + + + + Includes parameter types in symbol descriptions. + + + + + Includes parameter names in symbol descriptions. + + + + + Includes parameter default values in symbol descriptions. + + Ignored if is not set. + + + + Includes square brackets around optional parameters. + + + + + A single element of a symbol description. For example, a keyword, a punctuation character or + a class name. + + + + + + + + Gets the kind of this display part. + + + + + Gets the symbol associated with this display part, if there is one. + For example, the associated with a class name. + + + + + + Construct a non-formattable (i.e. with a fixed string value). + + The kind of the display part. + An optional associated symbol. + The fixed string value of the part. + + + + Returns the string value of this symbol display part. + + + + + Specifies the kinds of a piece of classified text (SymbolDisplayPart). + + + + The name of an alias. + + + The name of an assembly. + + + The name of a class. + + + The name of a delegate. + + + The name of an enum. + + + The name of an error type. + + + + The name of an event. + + + The name of a field. + + + The name of an interface. + + + A language keyword. + + + The name of a label. + + + A line-break (i.e. whitespace). + + + A numeric literal. + Typically for the default values of parameters and the constant values of fields. + + + A string literal. + Typically for the default values of parameters and the constant values of fields. + + + The name of a local. + + + The name of a method. + + + The name of a module. + + + The name of a namespace. + + + The symbol of an operator (e.g. "+"). + + + The name of a parameter. + + + The name of a property. + + + A punctuation character (e.g. "(", ".", ",") other than an . + + + A single space character. + + + The name of a struct (structure in Visual Basic). + + + A keyword-like part for anonymous types (not actually a keyword). + + + An unclassified part. + Never returned - only set in user-constructed parts. + + + The name of a type parameter. + + + The name of a query range variable.. + + + + Specifies the options for how properties are displayed in symbol descriptions. + + + + + Shows only the names of properties. + + + + + + Indicates whether the property is readable and/or writable. + In C#, this is accomplished by including accessors. + In Visual Basic, this is accomplished by including the ReadOnly or WriteOnly + keyword, as appropriate. + + + + + Specifies how much qualification is used in symbol descriptions. + + + + + Shows only the name of the symbol. + + + + + Shows the name of the symbol and the names of all containing types. + + + + + Shows the name of the symbol the names of all containing types and namespaces. + + + + + Enumeration for common accessibility combinations. + + + + + No accessibility specified. + + + + + We should not see new anonymous types from source after we finished emit phase. + If this field is true, the collection is sealed; in DEBUG it also is used to check the assertion. + + + + + Collection of anonymous type templates is sealed + + + + + True if the method is a source method implemented as an iterator. + + + + + Default attribute usage for attribute types: + (a) Valid targets: AttributeTargets.All + (b) AllowMultiple: false + (c) Inherited: true + + + + + Information decoded from well-known custom attributes applied on an assembly. + + + + + Raw assembly version as specified in the AssemblyVersionAttribute, or Nothing if none specified. + If the string passed to AssemblyVersionAttribute contains * the version build and/or revision numbers are set to . + + + + + Returns data decoded from security attributes or null if there are no security attributes. + + + + + The attribute class. + + + + + The constructor on the attribute class. + + + + + Constructor arguments on the attribute. + + + + + Named (property value) arguments on the attribute. + + + + + Attribute is conditionally omitted if it is a source attribute and both the following are true: + (a) It has at least one applied conditional attribute AND + (b) None of conditional symbols are true at the attribute source location. + + + + + Checks if an applied attribute with the given attributeType matches the namespace name and type name of the given early attribute's description + and the attribute description has a signature with parameter count equal to the given attributeArgCount. + NOTE: We don't allow early decoded attributes to have optional parameters. + + + + + Returns the value of a constructor argument as type . + Throws if no constructor argument exists or the argument cannot be converted to the type. + + + + + Returns named attribute argument with the given as type . + If there is more than one named argument with this name, it returns the last one. + If no named argument is found then the is returned. + + The metadata property or field name. This name is case sensitive (both VB and C#). + SpecialType of the named argument. + Default value for the named argument. + + For user defined attributes VB allows duplicate named arguments and uses the last value. + Dev11 reports an error for pseudo-custom attributes when emitting metadata. We don't. + + + + + Decode the arguments to ObsoleteAttribute. ObsoleteAttribute can have 0,1 or 2 arguments. + + + + + Decode the arguments to DeprecatedAttribute. DeprecatedAttribute can have 3 or 4 arguments. + + + + + Used to determine if two instances are identical, + i.e. they have the same attribute type, attribute constructor and have identical arguments. + + + + + Information decoded from early well-known custom attributes applied on an event. + + + + + Information decoded from well-known custom attributes applied on an event. + + + + + Information decoded from early well-known custom attributes applied on a field. + + + + + Information decoded from well-known custom attributes applied on a field. + + + + + Returns marshalling data or null of MarshalAs attribute isn't applied on the field. + + + + + Information decoded from early well-known custom attributes applied on a method. + + + + + Information decoded from well-known custom attributes applied on a method. + + + + + Returns data decoded from security attributes or null if there are no security attributes. + + + + + Information decoded from well-known custom attributes applied on a module. + + + + + Information decoded from early well-known custom attributes applied on a parameter. + + + + + Information decoded from well-known custom attributes applied on a parameter. + + + + + Returns marshalling data or null of MarshalAs attribute isn't applied on the parameter. + + + + + Information decoded from early well-known custom attributes applied on a property. + + + + + Information decoded from well-known custom attributes applied on a property. + + + + + Information decoded from well-known custom attributes applied on a method return value. + + + + + Returns marshalling data or null of MarshalAs attribute isn't applied on the return value. + + + + + Information decoded from early well-known custom attributes applied on a type. + + + + + Information decoded from well-known custom attributes applied on a type. + + + + + Returns data decoded from security attributes or null if there are no security attributes. + + + + + Represents a bag of custom attributes and the associated decoded well-known attribute data. + + + + + Instance representing sealed custom attribute bag with no attributes. + + + + + Returns a non-sealed custom attribute bag with null initialized , null initialized and uninitialized . + + + + + Sets the early decoded well-known attribute data on the bag in a thread safe manner. + Stored early decoded data is immutable and cannot be updated further. + + Returns true if early decoded data were stored into the bag on this thread. + + + + Sets the decoded well-known attribute data (except the early data) on the bag in a thread safe manner. + Stored decoded data is immutable and cannot be updated further. + + Returns true if decoded data were stored into the bag on this thread. + + + + Sets the bound attributes on the bag in a thread safe manner. + If store succeeds, it seals the bag and makes the bag immutable. + + Returns true if bound attributes were stored into the bag on this thread. + + + + Gets the stored bound attributes in the bag. + + This property can only be accessed on a sealed bag. + + + + Gets the decoded well-known attribute data (except the early data) in the bag. + + This property can only be accessed on the bag after has been invoked. + + + + Gets the early decoded well-known attribute data in the bag. + + This property can only be accessed on the bag after has been invoked. + + + + Return whether early decoded attribute data has been computed and stored on the bag and it is safe to access from this bag. + Return value of true doesn't guarantee that bound attributes or remaining decoded attribute data has also been initialized. + + + + + Return whether all decoded attribute data has been computed and stored on the bag and it is safe to access from this bag. + Return value of true doesn't guarantee that bound attributes have also been initialized. + + + + + Enum representing the current state of attribute binding/decoding for a corresponding CustomAttributeBag. + + + + + Bag has been created, but no decoded data or attributes have been stored. + CustomAttributeBag is in this state during early decoding phase. + + + + + Early decoded attribute data has been computed and stored on the bag, but bound attributes or remaining decoded attribute data is not stored. + Only can be accessed from this bag. + + + + + All decoded attribute data has been computed and stored on the bag, but bound attributes are not yet stored. + Both and can be accessed from this bag. + + + + + Bound attributes have been computed and stored on this bag. + + + + + CustomAttributeBag is completely initialized and immutable. + + + + + Contains common arguments to Symbol.DecodeWellKnownAttribute method in both the language compilers. + + + + + Object to store the decoded data from bound well-known attributes. + Created lazily only when some decoded data needs to be stored, null otherwise. + + + + + Gets or creates the decoded data object. + + + This method must be called only when some decoded data will be stored into it subsequently. + + + + + Returns true if some decoded data has been stored into . + + + + + Gets the stored decoded data. + + + Assumes is true. + + + + + Syntax of the attribute to decode. Might be null when the attribute information is not coming + from syntax. For example, an assembly attribute propagated from added module to the resulting assembly. + + + + + Bound attribute to decode. + + + + + The index of the attribute in the list of attributes to decode. + + + + + Total count of attributes to decode. + + + + + Diagnostic bag. + + + + + Specific part of the symbol to which the attributes apply, or AttributeLocation.None if the attributes apply to the symbol itself. + Used e.g. for return type attributes of a method symbol. + + + + + Contains common arguments to Symbol.EarlyDecodeWellKnownAttribute method in both the language compilers. + + + + + Object to store the decoded data from early bound well-known attributes. + Created lazily only when some decoded data needs to be stored, null otherwise. + + + + + Gets or creates the decoded data object. + + + This method must be called only when some decoded data will be stored into it subsequently. + + + + + Returns true if some decoded data has been stored into . + + + + + Gets the stored decoded data. + + + Assumes is true. + + + + + Binder to bind early well-known attributes. + + + + + Bound type of the attribute to decode. + + + + + Syntax of the attribute to decode. + + + + + Specific part of the symbol to which the attributes apply, or AttributeLocation.None if the attributes apply to the symbol itself. + Used e.g. for return type attributes of a method symbol. + + + + + Base class for storing information decoded from early well-known custom attributes. + + + CONSIDER: Should we remove this class and let the sub-classes derived from WellKnownAttributeData? + + + + + Information decoded from . + + + + + Returns an instance of with all types replaced by types returned by specified translator. + Returns this instance if it doesn't hold on any types. + + + + + Information decoded from . + + + + + True if an error should be thrown for the . Default is false in which case + a warning is thrown. + + + + + The message that will be shown when an error/warning is created for . + + + + + Information decoded from security attributes, i.e. attributes derived from well-known SecurityAttribute, applied on a method/type/assembly. + + + + + Used for retrieving applied source security attributes, i.e. attributes derived from well-known SecurityAttribute. + + + + + Base class for storing information decoded from well-known custom attributes. + + + + + Used to distinguish cases when attribute is applied with null value and when attribute is not applied. + For some well-known attributes, the latter case will return string stored in + field. + + + + + If true, a language may use the modified storage location without + being aware of the meaning of the modification, modopt vs. modreq. + + + + + A type used as a tag that indicates which type of modification applies. + + + + + Represents a using alias (Imports alias in Visual Basic). + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Gets the for the + namespace or type referenced by the alias. + + + + + Represents an array. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Gets the number of dimensions of this array. A regular single-dimensional array + has rank 1, a two-dimensional array has rank 2, etc. + + + + + Gets the type of the elements stored in the array. + + + + + Custom modifiers associated with the array type, or an empty array if there are none. + + + + + Represents a .NET assembly, consisting of one or more modules. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + True if the assembly contains interactive code. + + + + + Gets the name of this assembly. + + + + + Gets the merged root namespace that contains all namespaces and types defined in the modules + of this assembly. If there is just one module in this assembly, this property just returns the + GlobalNamespace of that module. + + + + + Gets the modules in this assembly. (There must be at least one.) The first one is the main module + that holds the assembly manifest. + + + + + Gets the set of type identifiers from this assembly. + + + + + Gets the set of namespace names from this assembly. + + + + + Gets a value indicating whether this assembly gives + access to internal symbols + + + + Lookup a type within the assembly using the canonical CLR metadata name of the type. + + Type name. + Symbol for the type or null if type cannot be found or is ambiguous. + + + + Determines if the assembly might contain extension methods. + If false, the assembly does not contain extension methods. + + + + + Returns the type symbol for a forwarded type based its canonical CLR metadata name. + The name should refer to a non-nested type. If type with this name is not forwarded, + null is returned. + + + + + If this symbol represents a metadata assembly returns the underlying . + + Otherwise, this returns null. + + + + + Represents the 'dynamic' type in C#. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + An IErrorTypeSymbol is used when the compiler cannot determine a symbol object to return because + of an error. For example, if a field is declared "Foo x;", and the type "Foo" cannot be + found, an IErrorTypeSymbol is returned when asking the field "x" what it's type is. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + When constructing this type, there may have been symbols that seemed to + be what the user intended, but were unsuitable. For example, a type might have been + inaccessible, or ambiguous. This property returns the possible symbols that the user + might have intended. It will return no symbols if no possible symbols were found. + See the CandidateReason property to understand why the symbols were unsuitable. + + + This only applies if this INamedTypeSymbol has TypeKind TypeKind.Error. + If not, an empty ImmutableArray is returned. + + + + + If CandidateSymbols returns one or more symbols, returns the reason that those + symbols were not chosen. Otherwise, returns None. + + + + + Represents an event. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + The type of the event. + + + + + Returns true if the event is a WinRT type event. + + + + + The 'add' accessor of the event. Null only in error scenarios. + + + + + The 'remove' accessor of the event. Null only in error scenarios. + + + + + The 'raise' accessor of the event. Null if there is no raise method. + + + + + The original definition of the event. If the event is constructed from another + symbol by type substitution, OriginalDefinition gets the original symbol, as it was + defined in source or metadata. + + + + + Returns the overridden event, or null. + + + + + Returns interface properties explicitly implemented by this event. + + + Properties imported from metadata can explicitly implement more than one event. + + + + + Represents a field in a class, struct or enum. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + If this field serves as a backing variable for an automatically generated + property or a field-like event, returns that + property/event. Otherwise returns null. + Note, the set of possible associated symbols might be expanded in the future to + reflect changes in the languages. + + + + + Returns true if this field was declared as "const" (i.e. is a constant declaration). + Also returns true for an enum member. + + + + + Returns true if this field was declared as "readonly". + + + + + Returns true if this field was declared as "volatile". + + + + + Gets the type of this field. + + + + + Returns false if the field wasn't declared as "const", or constant value was omitted or erroneous. + True otherwise. + + + + + Gets the constant value of this field + + + + + Returns custom modifiers associated with the field, or an empty array if there are none. + + + + + Get the original definition of this symbol. If this symbol is derived from another + symbol by (say) type substitution, this gets the original symbol, as it was defined in + source or metadata. + + + + + Represents a label in method body + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Gets the immediately containing of this . + + + + + Represents a local variable in method body. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Gets the type of this local variable. + + + + + Returns true if this local variable was declared as "const" (i.e. is a constant declaration). + Also returns true for an enum member. + + + + + Returns false if the local variable wasn't declared as "const", or constant value was omitted or erroneous. + True otherwise. + + + + + Gets the constant value of this local variable. + + + + + Represents a method or method-like symbol (including constructor, + destructor, operator, or property/event accessor). + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Gets what kind of method this is. There are several different kinds of things in the + C# language that are represented as methods. This property allow distinguishing those things + without having to decode the name of the method. + + + + + Returns the arity of this method, or the number of type parameters it takes. + A non-generic method has zero arity. + + + + + Returns whether this method is generic; i.e., does it have any type parameters? + + + + + Returns true if this method is an extension method. + + + + + Returns true if this method is an async method + + + + + Returns whether this method is using CLI VARARG calling convention. This is used for + C-style variable argument lists. This is used extremely rarely in C# code and is + represented using the undocumented "__arglist" keyword. + + Note that methods with "params" on the last parameter are indicated with the "IsParams" + property on ParameterSymbol, and are not represented with this property. + + + + + Returns whether this built-in operator checks for integer overflow. + + + + + Returns true if this method hides base methods by name. This cannot be specified directly + in the C# language, but can be true for methods defined in other languages imported from + metadata. The equivalent of the "hidebyname" flag in metadata. + + + + + Returns true if this method has no return type; i.e., returns "void". + + + + + Gets the return type of the method. + + + + + Returns the type arguments that have been substituted for the type parameters. + If nothing has been substituted for a given type parameter, + then the type parameter itself is consider the type argument. + + + + + Get the type parameters on this method. If the method has not generic, + returns an empty list. + + + + + Gets the parameters of this method. If this method has no parameters, returns + an empty list. + + + + + Returns the method symbol that this method was constructed from. The resulting + method symbol + has the same containing type (if any), but has type arguments that are the same + as the type parameters (although its containing type might not). + + + + + Get the original definition of this symbol. If this symbol is derived from another + symbol by (say) type substitution, this gets the original symbol, as it was defined in + source or metadata. + + + + + If this method overrides another method (because it both had the override modifier + and there correctly was a method to override), returns the overridden method. + + + + + If this method can be applied to an object, returns the type of object it is applied to. + + + + + If this method is a reduced extension method, returns the definition of extension + method from which this was reduced. Otherwise, returns null. + + + + + If this method is a reduced extension method, returns a type inferred during reduction process for the type parameter. + + Type parameter of the corresponding method. + Inferred type or Nothing if nothing was inferred. + If this is not a reduced extension method. + If is null. + If doesn't belong to the corresponding method. + + + + If this is an extension method that can be applied to a receiver of the given type, + returns a reduced extension method symbol thus formed. Otherwise, returns null. + + + + + Returns interface methods explicitly implemented by this method. + + + Methods imported from metadata can explicitly implement more than one method, + that is why return type is ImmutableArray. + + + + + Returns the list of custom modifiers, if any, associated with the returned value. + + + + + Returns the list of custom attributes, if any, associated with the returned value. + + + + + Returns a symbol (e.g. property, event, etc.) associated with the method. + + + If this method has of or , + returns the property that this method is the getter or setter for. + If this method has of or , + returns the event that this method is the adder or remover for. + Note, the set of possible associated symbols might be expanded in the future to + reflect changes in the languages. + + + + + Returns a constructed method given its type arguments. + + The immediate type arguments to be replaced for type + parameters in the method. + + + + If this is a partial method implementation part, returns the corresponding + definition part. Otherwise null. + + + + + If this is a partial method declaration without a body, and the method is + implemented with a body, returns that implementing definition. Otherwise + null. + + + + + Platform invoke information, or null if the method isn't a P/Invoke. + + + + + If this method is a Lambda method (MethodKind = MethodKind.LambdaMethod) and + there is an anonymous delegate associated with it, returns this delegate. + + Returns null if the symbol is not a lambda or if it does not have an + anonymous delegate associated with it. + + + + + Represents a module within an assembly. Every assembly contains one or more modules. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Returns a NamespaceSymbol representing the global (root) namespace, with + module extent, that can be used to browse all of the symbols defined in this module. + + + + + Given a namespace symbol, returns the corresponding module specific namespace symbol + + + + + Returns an array of assembly identities for assemblies referenced by this module. + Items at the same position from ReferencedAssemblies and from ReferencedAssemblySymbols + correspond to each other. + + + + + Returns an array of AssemblySymbol objects corresponding to assemblies referenced + by this module. Items at the same position from ReferencedAssemblies and + from ReferencedAssemblySymbols correspond to each other. + + + + + If this symbol represents a metadata module returns the underlying . + + Otherwise, this returns null. + + + + + Represents a type other than an array, a pointer, a type parameter. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Returns the arity of this type, or the number of type parameters it takes. + A non-generic type has zero arity. + + + + + True if this type or some containing type has type parameters. + + + + + True if this is a reference to an unbound generic type. A generic type is + considered unbound if all of the type argument lists in its fully qualified + name are empty. Note that the type arguments of an unbound generic type will be + returned as error types because they do not really have type arguments. An unbound + generic type yields null for its BaseType and an empty result for its Interfaces. + + + + + Returns true if the type is a Script class. + It might be an interactive submission class or a Script class in a csx file. + + + + + Returns true if the type is the implicit class that holds onto invalid global members (like methods or + statements in a non script file). + + + + + Returns collection of names of members declared within this type. + + + + + Returns the type parameters that this type has. If this is a non-generic type, + returns an empty ImmutableArray. + + + + + Returns the type arguments that have been substituted for the type parameters. + If nothing has been substituted for a give type parameters, + then the type parameter itself is consider the type argument. + + + + + Get the original definition of this type symbol. If this symbol is derived from another + symbol by (say) type substitution, this gets the original symbol, as it was defined in + source or metadata. + + + + + For delegate types, gets the delegate's invoke method. Returns null on + all other kinds of types. Note that it is possible to have an ill-formed + delegate type imported from metadata which does not have an Invoke method. + Such a type will be classified as a delegate but its DelegateInvokeMethod + would be null. + + + + + For enum types, gets the underlying type. Returns null on all other + kinds of types. + + + + + Returns the type symbol that this type was constructed from. This type symbol + has the same containing type (if any), but has type arguments that are the same + as the type parameters (although its containing type might not). + + + + + Returns a constructed type given its type arguments. + + The immediate type arguments to be replaced for type + parameters in the type. + + + + Returns an unbound generic type of this named type. + + + + + Get the instance constructors for this type. + + + + + Get the static constructors for this type. + + + + + Get the both instance and static constructors for this type. + + + + + For implicitly declared delegate types returns the EventSymbol that caused this + delegate type to be generated. + For all other types returns null. + Note, the set of possible associated symbols might be expanded in the future to + reflect changes in the languages. + + + + + Determines if the symbol might contain extension methods. + If false, the symbol does not contain extension methods. + + + + + Represents either a namespace or a type. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Get all the members of this symbol. + + An ImmutableArray containing all the members of this symbol. If this symbol has no members, + returns an empty ImmutableArray. Never returns Null. + + + + Get all the members of this symbol that have a particular name. + + An ImmutableArray containing all the members of this symbol with the given name. If there are + no members with this name, returns an empty ImmutableArray. Never returns Null. + + + + Get all the members of this symbol that are types. + + An ImmutableArray containing all the types that are members of this symbol. If this symbol has no type members, + returns an empty ImmutableArray. Never returns null. + + + + Get all the members of this symbol that are types that have a particular name, of any arity. + + An ImmutableArray containing all the types that are members of this symbol with the given name. + If this symbol has no type members with this name, + returns an empty ImmutableArray. Never returns null. + + + + Get all the members of this symbol that are types that have a particular name and arity + + An ImmutableArray containing all the types that are members of this symbol with the given name and arity. + If this symbol has no type members with this name and arity, + returns an empty ImmutableArray. Never returns null. + + + + Returns true if this symbol is a namespace. If it is not a namespace, it must be a type. + + + + + Returns true if this symbols is a type. If it is not a type, it must be a namespace. + + + + + Represents a namespace. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Get all the members of this symbol. + + + + + Get all the members of this symbol that have a particular name. + + + + + Get all the members of this symbol that are namespaces. + + + + + Returns whether this namespace is the unnamed, global namespace that is + at the root of all namespaces. + + + + + The kind of namespace: Module, Assembly or Compilation. + Module namespaces contain only members from the containing module that share the same namespace name. + Assembly namespaces contain members for all modules in the containing assembly that share the same namespace name. + Compilation namespaces contain all members, from source or referenced metadata (assemblies and modules) that share the same namespace name. + + + + + The containing compilation for compilation namespaces. + + + + + If a namespace is an assembly or compilation namespace, it may be composed of multiple + namespaces that are merged together. If so, ConstituentNamespaces returns + all the namespaces that were merged. If this namespace was not merged, returns + an array containing only this namespace. + + + + + Represents a parameter of a method or property. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Whether the parameter passed by value or by reference. + + + + + Returns true if the parameter was declared as a parameter array. + + + + + Returns true if the parameter is optional. + + + + + Returns true if the parameter is the hidden 'this' ('Me' in Visual Basic) parameter. + + + + + Gets the type of the parameter. + + + + + Custom modifiers associated with the parameter, or an empty array if there are none. + + + + + Gets the ordinal position of the parameter. The first parameter has ordinal zero. + The 'this' parameter ('Me' in Visual Basic) has ordinal -1. + + + + + Returns true if the parameter specifies a default value to be passed + when no value is provided as an argument to a call. The default value + can be obtained with the DefaultValue property. + + + + + Returns the default value of the parameter. + + + Returns null if the parameter type is a struct and the default value of the parameter + is the default value of the struct type. + + The parameter has no default value. + + + + Get the original definition of this symbol. If this symbol is derived from another + symbol by (say) type substitution, this gets the original symbol, as it was defined in + source or metadata. + + + + + Represents a pointer type such as "int *". Pointer types + are used only in unsafe code. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Gets the type of the storage location that an instance of the pointer type points to. + + + + + Custom modifiers associated with the pointer type, or an empty array if there are none. + + + Some managed languages may represent special information about the pointer type + as a custom modifier on either the pointer type or the element type, or + both. + + + + + Represents a preprocessing conditional compilation symbol. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Represents a property or indexer. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Returns whether the property is really an indexer. + + + + + True if this is a read-only property; that is, a property with no set accessor. + + + + + True if this is a write-only property; that is, a property with no get accessor. + + + + + Returns true if this property is an auto-created WithEvents property that takes place of + a field member when the field is marked as WithEvents. + + + + + The type of the property. + + + + + The parameters of this property. If this property has no parameters, returns + an empty list. Parameters are only present on indexers, or on some properties + imported from a COM interface. + + + + + The 'get' accessor of the property, or null if the property is write-only. + + + + + The 'set' accessor of the property, or null if the property is read-only. + + + + + The original definition of the property. If the property is constructed from another + symbol by type substitution, OriginalDefinition gets the original symbol, as it was + defined in source or metadata. + + + + + Returns the overridden property, or null. + + + + + Returns interface properties explicitly implemented by this property. + + + Properties imported from metadata can explicitly implement more than one property. + + + + + The list of custom modifiers, if any, associated with the type of the property. + + + + + Represents a range variable in a query expression. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Represents a symbol (namespace, class, method, parameter, etc.) + exposed by the compiler. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + Gets the indicating what kind of symbol it is. + + + + + Gets the source language ("C#" or "Visual Basic"). + + + + + Gets the symbol name. Returns the empty string if unnamed. + + + + + Gets the name of a symbol as it appears in metadata. Most of the time, this + is the same as the Name property, with the following exceptions: + 1) The metadata name of generic types includes the "`1", "`2" etc. suffix that + indicates the number of type parameters (it does not include, however, names of + containing types or namespaces). + 2) The metadata name of explicit interface names have spaces removed, compared to + the name property. + 3) The length of names is limited to not exceed metadata restrictions. + + + + + Gets the for the immediately containing symbol. + + + + + Gets the for the containing assembly. Returns null if the + symbol is shared across multiple assemblies. + + + + + Gets the for the containing module. Returns null if the + symbol is shared across multiple modules. + + + + + Gets the for the containing type. Returns null if the + symbol is not contained within a type. + + + + + Gets the for the nearest enclosing namespace. Returns null if the + symbol isn't contained in a namespace. + + + + + Gets a value indicating whether the symbol is the original definition. Returns false + if the symbol is derived from another symbol, by type substitution for instance. + + + + + Gets a value indicating whether the symbol is static. + + + + + Gets a value indicating whether the symbol is virtual. + + + + + Gets a value indicating whether the symbol is an override of a base class symbol. + + + + + Gets a value indicating whether the symbol is abstract. + + + + + Gets a value indicating whether the symbol is sealed. + + + + + Gets a value indicating whether the symbol is defined externally. + + + + + Returns true if this symbol was automatically created by the compiler, and does not have + an explicit corresponding source code declaration. + + + This is intended for symbols that are ordinary symbols in the language sense, and may be + used by code, but that are simply declared implicitly rather than with explicit language + syntax. + + Examples include (this list is not exhaustive): + the default constructor for a class or struct that is created if one is not provided, + the BeginInvoke/Invoke/EndInvoke methods for a delegate, + the generated backing field for an auto property or a field-like event, + the "this" parameter for non-static methods, + the "value" parameter for a property setter, + the parameters on indexer accessor methods (not on the indexer itself), + methods in anonymous types + + + + + Returns true if this symbol can be referenced by its name in code. + + + + + Gets the locations where the symbol was originally defined, either in source or + metadata. Some symbols (for example, partial classes) may be defined in more than one + location. + + + + + Get the syntax node(s) where this symbol was declared in source. Some symbols (for example, + partial classes) may be defined in more than one location. This property should return + one or more syntax nodes only if the symbol was declared in source code and also was + not implicitly declared (see the IsImplicitlyDeclared property). + + Note that for namespace symbol, the declaring syntax might be declaring a nested namespace. + For example, the declaring syntax node for N1 in "namespace N1.N2 {...}" is the entire + NamespaceDeclarationSyntax for N1.N2. For the global namespace, the declaring syntax will + be the CompilationUnitSyntax. + + + The syntax node(s) that declared the symbol. If the symbol was declared in metadata + or was implicitly declared, returns an empty read-only array. + + + + + Gets the attributes for the symbol. Returns an empty + if there are no attributes. + + + + + Gets a indicating the declared accessibility for the symbol. + Returns NotApplicable if no accessibility is declared. + + + + + Gets the for the original definition of the symbol. + If this symbol is derived from another symbol, by type substitution for instance, + this gets the original symbol, as it was defined in source or metadata. + + + + + Returns the Documentation Comment ID for the symbol, or null if the symbol doesn't + support documentation comments. + + + + + Gets the XML (as text) for the comment associated with the symbol. + + Preferred culture or null for the default. + Optionally, expand <include> elements. No impact on non-source documentation comments. + Token allowing cancellation of request. + The XML that would be written to the documentation file for the symbol. + + + + Converts the symbol to a string representation. + + Format or null for the default. + A formatted string representation of the symbol. + + + + Convert a symbol to an array of string parts, each of which has a kind. Useful for + colorizing the display string. + + Formatting rules - null implies + SymbolDisplayFormat.ErrorMessageFormat. + A read-only array of string parts. + + + + Convert a symbol to a string that can be displayed to the user. May be tailored to a + specific location in the source code. + + Binding information (for determining names appropriate to + the context). + A position in the source code (context). + Formatting rules - null implies + SymbolDisplayFormat.MinimallyQualifiedFormat. + A formatted string that can be displayed to the user. + + + + Convert a symbol to an array of string parts, each of which has a kind. May be tailored + to a specific location in the source code. Useful for colorizing the display string. + + Binding information (for determining names appropriate to + the context). + A position in the source code (context). + Formatting rules - null implies + SymbolDisplayFormat.MinimallyQualifiedFormat. + A read-only array of string parts. + + + + Indicates that this symbol uses metadata that cannot be supported by the language. + + Examples include: + - Pointer types in VB + - ByRef return type + - Required custom modifiers + + This is distinguished from, for example, references to metadata symbols defined in assemblies that weren't referenced. + Symbols where this returns true can never be used successfully, and thus should never appear in any IDE feature. + + This is set for metadata symbols, as follows: + Type - if a type is unsupported (e.g., a pointer type, etc.) + Method - parameter or return type is unsupported + Field - type is unsupported + Event - type is unsupported + Property - type is unsupported + Parameter - type is unsupported + + + + + Returns the constructed form of the ReducedFrom property, + including the type arguments that were either inferred during reduction or supplied at the call site. + + + + + Synthesized symbol that implements a method body feature (iterator, async, lambda, etc.) + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + The symbol whose body lowering produced this synthesized symbol, + or null if the symbol is synthesized based on declaration. + + + + + True if this symbol body needs to be updated when the body is updated. + False if is null. + + + + + Represents a type parameter in a generic type or generic method. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + The ordinal position of the type parameter in the parameter list which declares + it. The first type parameter has ordinal zero. + + + + + The variance annotation, if any, of the type parameter declaration. Type parameters may be + declared as covariant (out), contravariant (in), or neither. + + + + + The type parameter kind of this type parameter. + + + + + The method that declares the type parameter, or null. + + + + + The type that declares the type parameter, or null. + + + + + True if the reference type constraint (class) was specified for the type parameter. + + + + + True if the value type constraint (struct)was specified for the type parameter. + + + + + True if the parameterless constructor constraint (new()) was specified for the type parameter. + + + + + The types that were directly specified as constraints on the type parameter. + + + + + Get the original definition of this type symbol. If this symbol is derived from another + symbol by (say) type substitution, this gets the original symbol, as it was defined in + source or metadata. + + + + + If this is a type parameter of a reduced extension method, gets the type parameter definition that + this type parameter was reduced from. Otherwise, returns Nothing. + + + + + Represents a type. + + + This interface is reserved for implementation by its associated APIs. We reserve the right to + change it in the future. + + + + + An enumerated value that identifies whether this type is an array, pointer, enum, and so on. + + + + + The declared base type of this type, or null. The object type, interface types, + and pointer types do not have a base type. The base type of a type parameter + is its effective base class. + + + + + Gets the set of interfaces that this type directly implements. This set does not include + interfaces that are base interfaces of directly implemented interfaces. This does + include the interfaces declared as constraints on type parameters. + + + + + The list of all interfaces of which this type is a declared subtype, excluding this type + itself. This includes all declared base interfaces, all declared base interfaces of base + types, and all declared base interfaces of those results (recursively). This also is the effective + interface set of a type parameter. Each result + appears exactly once in the list. This list is topologically sorted by the inheritance + relationship: if interface type A extends interface type B, then A precedes B in the + list. This is not quite the same as "all interfaces of which this type is a proper + subtype" because it does not take into account variance: AllInterfaces for + ]]> will not include ]]>; + + + + + True if this type is known to be a reference type. It is never the case that + and both return true. However, for an unconstrained type + parameter, and will both return false. + + + + + True if this type is known to be a value type. It is never the case that + and both return true. However, for an unconstrained type + parameter, and will both return false. + + + + + Is this a symbol for an anonymous type (including anonymous VB delegate). + + + + + The original definition of this symbol. If this symbol is constructed from another + symbol by type substitution then gets the original symbol as it was defined in + source or metadata. + + + + + An enumerated value that identifies certain 'special' types such as . + Returns if the type is not special. + + + + + Returns the corresponding symbol in this type or a base type that implements + interfaceMember (either implicitly or explicitly), or null if no such symbol exists + (which might be either because this type doesn't implement the container of + interfaceMember, or this type doesn't supply a member that successfully implements + interfaceMember). + + + Must be a non-null interface property, method, or event. + + + + + A class that provides constants for common language names. + + + + + The common name used for the C# language. + + + + + The common name used for the Visual Basic language. + + + + + Enumeration for possible kinds of method symbols. + + + + + An anonymous method or lambda expression + + + + + Method is a constructor. + + + + + Method is a conversion. + + + + + Method is a delegate invoke. + + + + + Method is a destructor. + + + + + Method is an event add. + + + + + Method is an event raise. + + + + + Method is an event remove. + + + + + Method is an explicit interface implementation. + + + + + Method is an operator. + + + + + Method is an ordinary method. + + + + + Method is a property get. + + + + + Method is a property set. + + + + + An extension method with the "this" parameter removed. + + + + + Method is a static constructor. + + + + + A built-in operator. + + + + + Declare Sub or Function. + + + + + Describes the kind of the namespace extent. + + + + + Information that describes how a method from the underlying Platform is to be invoked. + + + + + Module name. Null if value specified in the attribute is not valid. + + + + + Name of the native entry point or null if not specified (the effective name is the same as the name of the target method). + + + + + Controls whether the field causes the common language runtime + to search an unmanaged DLL for entry-point names other than the one specified. + + + + + Indicates how to marshal string parameters and controls name mangling. + + + + + Indicates whether the callee calls the SetLastError Win32 API function before returning from the attributed method. + + + + + Indicates the calling convention of an entry point. + + + + + Enables or disables best-fit mapping behavior when converting Unicode characters to ANSI characters. + Null if not specified (the setting for the containing type or assembly should be used, ). + + + + + Enables or disables the throwing of an exception on an unmappable Unicode character that is converted to an ANSI "?" character. + Null if not specified. + + + + + Denotes the kind of reference parameter. + + + + + Indicates a "value" parameter. + + + + + Indicates a "ref" parameter. + + + + + Indicates an "out" parameter. + + + + + Specifies the possible kinds of symbols. + + + + + Symbol is an alias. + + + + + Symbol is an array type. + + + + + Symbol is an assembly. + + + + + Symbol is a dynamic type. + + + + + Symbol that represents an error + + + + + Symbol is an Event. + + + + + Symbol is a field. + + + + + Symbol is a label. + + + + + Symbol is a local. + + + + + Symbol is a method. + + + + + Symbol is a netmodule. + + + + + Symbol is a named type (e.g. class). + + + + + Symbol is a namespace. + + + + + Symbol is a parameter. + + + + + Symbol is a pointer type. + + + + + Symbol is a property. + + + + + Symbol is a range variable of a query expression. + + + + + Symbol is a type parameter. + + + + + Symbol is a preprocessing/conditional compilation constant. + + + + + Kind of a synthesized local variable. + + + Synthesized local variables are either + 1) Short-lived (temporary) + The lifespan of an temporary variable shall not cross a statement boundary (a PDB sequence point). + These variables are not tracked by EnC and don't have names. + + 2) Long-lived + All variables whose lifespan might cross a statement boundary (include a PDB sequence point) + must be named in a build configuration that supports EnC. Some of them might need to be named in release, to support EE. + The kind of such local must be encoded in the name, so that we can retrieve it from debug metadata during EnC. + + The integer value of the kind must match corresponding Dev11/12 TEMP_KIND enum values for + compatibility with assemblies generated by the native compiler. + + Long-lived local variables must be assigned slots in source order. + + + + + Temp variable created by the optimizer. + + + + + Temp variable created during lowering. + + + + + Temp variable created by the emitter. + + + + + The variable is not synthesized (C#, VB). + + + + + Local variable that stores value of an expression consumed by a subsequent conditional branch instruction that might jump across PDB sequence points. + The value needs to be preserved when remapping the IL offset from old method body to new method body during EnC. + A hidden sequence point also needs to be inserted at the offset where this variable is loaded to be consumed by the branch instruction. + (VB, C#). + + + + + Boolean passed to Monitor.Enter (C#, VB). + + + + + Variable holding on the object being locked while the execution is within the block of the lock statement (C#) or SyncLock statement (VB). + + + + + Local variable that stores the resources to be disposed at the end of using statement (C#, VB). + + + + + Local variable that stores the enumerator instance (C#, VB). + + + + + Local variable that stores the array instance (C#, VB?). + + + + + Local variables that store upper bound of multi-dimensional array, for each dimension (C#, VB?). + + + + + Local variables that store the current index, for each dimension (C#, VB?). + + + + + Local variable that holds a pinned handle of a string passed to a fixed statement (C#). + + + + + Local variable that holds the object passed to With statement (VB). + + + + + Local variable used to store the value of Select Case during the execution of Case statements. + + + + + Local variable that stores the return value of an async method. + + + + + VB: Stores the return value of a function that is not accessible from user code (e.g. operator, lambda, async, iterator). + C#: Stores the return value of a method/lambda with a block body, so that we can put a sequence point on the closing brace of the body. + + + + + Very special corner case involving filters, await and lambdas. + + + + + Local variable that stores the current state of the state machine while MoveNext method is executing. + Used to avoid race conditions due to multiple reads from the lifted state. + + + + + Local that stores an expression value which needs to be spilled. + This local should either be hoisted or its lifespan ends before + the end of the containing await expression. + + + + + Local variable that holds on the display class instance. + + + + + Local variable used to cache a delegate that is used in inner block (possibly a loop), + and can be reused for all iterations of the loop. + + + + + Local variable that stores the result of an await expression (the awaiter object). + The variable is assigned the result of a call to await-expression.GetAwaiter() and subsequently used + to check whether the task completed. Eventually the value is stored in an awaiter field. + + The value assigned to the variable needs to be preserved when remapping the IL offset from old method body + to new method body during EnC. If the awaiter expression is contained in an active statement and the + containing MoveNext method changes the debugger finds the next sequence point that follows the await expression + and transfers the execution to the new method version. This sequence point is placed by the compiler at + the immediately after the stloc instruction that stores the awaiter object to this variable. + The subsequent ldloc then restores it in the new method version. + + (VB, C#). + + + + + All values have to be less than or equal to + () + + + + + An awaiter in async method. + Never actually created as a local variable, immediately lifted to a state machine field. + Not serialized to . + + + + + The receiver of a delegate relaxation stub. + Created as a local variable but always lifted to a relaxation display class field. + We never emit debug info for hoisted relaxation variable. + TODO: Avoid using lambdas and display classes for implementation of relaxation stubs and remove this kind. + + + + + Represents a constant value used as an argument to a custom attribute. + + + + + The kind of the constant. + + + + + Returns the of the constant, + or null if the type can't be determined (error). + + + + + True if the constant represents a null reference. + + + + + The value for a non-array constant. + + + + + The value for an array. + + + + + TypedConstant isn't computing its own kind from the type symbol because it doesn't + have a way to recognize the well-known type System.Type. + + + + + Represents the kind of a TypedConstant. + + + + + Represents a simple value or a read-only array of . + + + + + True if the constant represents a null literal. + + + + + Enumeration for possible kinds of type symbols. + + + + + Type's kind is undefined. + + + + + Type is an array type. + + + + + Type is a class. + + + + + Type is a delegate. + + + + + Type is dynamic. + + + + + Type is an enumeration. + + + + + Type is an error type. + + + + + Type is an interface. + + + + + Type is a module. + + + + + Type is a pointer. + + + + + Type is a C# struct or VB Structure + + + + + Type is a C# struct or VB Structure + + + + + Type is a type parameter. + + + + + Type is an interactive submission. + + + + + Type layout information. + + + + + Layout kind (Layout flags in metadata). + + + + + Field alignment (PackingSize field in metadata). + + + + + Size of the type. + + + + + Represents the different kinds of type parameters. + + + + + Type parameter of a named type. For example: T in ]]>. + + + + + Type parameter of a method. For example: T in ()]]>. + + + + + Type parameter in a cref attribute in XML documentation comments. For example: T in ]]>. + + + + + An enumeration declaring the kinds of variance supported for generic type parameters. + + + + + Invariant. + + + + + Covariant (out). + + + + + Contravariant (in). + + + + + Specifies the member names known to the compiler (such as .ctor or op_Explicit). + + + + + Name of the enum backing field. + + + + + The name assigned to an instance constructor. + + + + + The name assigned to the static constructor. + + + + + The symbol name assigned to all indexers, other than explicit interface implementations. + + + Will not correspond to the name that appears in metadata. + + + + + The name assigned to the destructor. + + + + + The name assigned to the delegate Invoke method. + + + + + The name assigned to the delegate BeginInvoke method. + + + + + The name assigned to the delegate EndInvoke method. + + + + + The name of an entry point method. + + + + + The default fully qualified name of a Script class. + + + + + The name assigned to Object.ToString method. + + + + + The name assigned to Object.Equals method. + + + + + The name assigned to Object.GetHashCode method. + + + + + The name assigned to an implicit (widening) conversion. + + + + + The name assigned to an explicit (narrowing) conversion. + + + + + The name assigned to the Addition operator. + + + + + The name assigned to the BitwiseAnd operator. + + + + + The name assigned to the BitwiseOr operator. + + + + + The name assigned to the Decrement operator. + + + + + The name assigned to the Division operator. + + + + + The name assigned to the Equality operator. + + + + + The name assigned to the ExclusiveOr operator. + + + + + The name assigned to the False operator. + + + + + The name assigned to the GreaterThan operator. + + + + + The name assigned to the GreaterThanOrEqual operator. + + + + + The name assigned to the Increment operator. + + + + + The name assigned to the Inequality operator. + + + + + The name assigned to the LeftShift operator. + + + + + The name assigned to the UnsignedLeftShift operator. + + + + + The name assigned to the LessThan operator. + + + + + The name assigned to the LessThanOrEqual operator. + + + + + The name assigned to the LogicalNot operator. + + + + + The name assigned to the LogicalOr operator. + + + + + The name assigned to the LogicalAnd operator. + + + + + The name assigned to the Modulus operator. + + + + + The name assigned to the Multiply operator. + + + + + The name assigned to the OnesComplement operator. + + + + + The name assigned to the RightShift operator. + + + + + The name assigned to the UnsignedRightShift operator. + + + + + The name assigned to the Subtraction operator. + + + + + The name assigned to the True operator. + + + + + The name assigned to the UnaryNegation operator. + + + + + The name assigned to the UnaryPlus operator. + + + + + The name assigned to the Concatenate operator. + + + + + The name assigned to the Exponent operator. + + + + + The name assigned to the IntegerDivision operator. + + + + + The name assigned to the Like operator. + + + + + The required name for the GetEnumerator method used in a ForEach statement. + + + + + The required name for the MoveNext method used in a ForEach statement. + + + + + The required name for the Current property used in a ForEach statement. + + + + + The required name for the property used in + a ForEach statement when the collection is a nullable struct. + + + + + The name for the Add method to be invoked for each element in a collection initializer expression + (see C# Specification, §7.6.10.3 Collection initializers). + + + + + The required name for the GetAwaiter method used to obtain an awaiter for a task + (see C# Specification, §7.7.7.1 Awaitable expressions). + + + + + The required name for the IsCompleted property used to determine if a task is already complete + (see C# Specification, §7.7.7.1 Awaitable expressions). + + + + + The required name for the GetResult method used to obtain the outcome of a task once it is complete + (see C# Specification, §7.7.7.1 Awaitable expressions). + + + + + The name of the method used to register a resumption delegate + (see C# Specification, §7.7.7.1 Awaitable expressions). + + + + + List of entries sorted in source order, each of which captures a + position in the supplied syntax tree and the set of diagnostics (warnings) + whose reporting should either be suppressed or enabled at this position. + + + + + Returns list of entries sorted in source order, each of which captures a + position in the supplied syntax tree and the set of diagnostics (warnings) + whose reporting should either be suppressed or enabled at this position. + + + + + Returns the reporting state for the supplied diagnostic id at the supplied position + in the associated syntax tree. + + + + + Gets the entry with the largest position less than or equal to supplied position. + + + + + Struct that represents an entry in the warning state map. Sorts by position in the associated syntax tree. + + + + + This is a SyntaxReference implementation that lazily translates the result (SyntaxNode) of the + original syntax reference to another one. + + + + + Creates a new node identical to this node with the specified annotations attached. + + Original node. + Annotations to be added to the new node. + + + + Creates a new node identical to this node with the specified annotations attached. + + Original node. + Annotations to be added to the new node. + + + + Creates a new node identical to this node with the specified annotations removed. + + Original node. + Annotations to be removed from the new node. + + + + Creates a new node identical to this node with the specified annotations removed. + + Original node. + Annotations to be removed from the new node. + + + + Creates a new node identical to this node with the annotations of the specified kind removed. + + Original node. + The kind of annotation to remove. + + + + Gets the number of children contained in the . + + + + Gets the child at the specified index. + The zero-based index of the child to get. + + is less than 0.-or- is equal to or greater than . + + + + internal indexer that does not verify index. + Used when caller has already ensured that index is within bounds. + + + + + Locate the node or token that is a child of the given and contains the given position. + + The to search. + The position. + The node or token that spans the given position. + + Assumes that is within the span of . + + + + + internal indexer that does not verify index. + Used when caller has already ensured that index is within bounds. + + + + + Returns the first child in the list. + + The first child in the list. + The list is empty. + + + + Returns the last child in the list. + + The last child in the list. + The list is empty. + + + + Returns a list which contains all children of in reversed order. + + which contains all children of in reversed order + + + Returns an enumerator that iterates through the . + A for the . + + + Determines whether the specified object is equal to the current instance. + true if the specified object is a structure and is equal to the current instance; otherwise, false. + The object to be compared with the current instance. + + + Determines whether the specified structure is equal to the current instance. + true if the specified structure is equal to the current instance; otherwise, false. + The structure to be compared with the current instance. + + + Returns the hash code for the current instance. + A 32-bit signed integer hash code. + + + Indicates whether two structures are equal. + true if is equal to ; otherwise, false. + The structure on the left side of the equality operator. + The structure on the right side of the equality operator. + + + Indicates whether two structures are unequal. + true if is equal to ; otherwise, false. + The structure on the left side of the inequality operator. + The structure on the right side of the inequality operator. + + + Enumerates the elements of a . + + + Advances the enumerator to the next element of the . + true if the enumerator was successfully advanced to the next element; false if the enumerator has passed the end of the collection. + + + Gets the element at the current position of the enumerator. + The element in the at the current position of the enumerator. + + + Sets the enumerator to its initial position, which is before the first element in the collection. + + + + Gets the element in the collection at the current position of the enumerator. + + + The element in the collection at the current position of the enumerator. + + + + + Gets the element in the collection at the current position of the enumerator. + + + The element in the collection at the current position of the enumerator. + + + + + Advances the enumerator to the next element of the collection. + + + true if the enumerator was successfully advanced to the next element; false if the enumerator has passed the end of the collection. + + + + + Sets the enumerator to its initial position, which is before the first element in the collection. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Gets the element in the collection at the current position of the enumerator. + + + The element in the collection at the current position of the enumerator. + + + + + Gets the element in the collection at the current position of the enumerator. + + + The element in the collection at the current position of the enumerator. + + + + + Advances the enumerator to the next element of the collection. + + + true if the enumerator was successfully advanced to the next element; false if the enumerator has passed the end of the collection. + + The collection was modified after the enumerator was created. + + + + Sets the enumerator to its initial position, which is before the first element in the collection. + + The collection was modified after the enumerator was created. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Find the slot that contains the given offset. + + The target offset. Must be between 0 and . + The slot index of the slot containing the given offset. + + The base implementation is a linear search. This should be overridden + if a derived class can implement it more efficiently. + + + + + Represents the root node of a structured trivia tree (for example, a preprocessor directive + or a documentation comment). From this root node you can traverse back up to the containing + trivia in the outer tree that contains it. + + + + + Returns the parent trivia syntax for this structured trivia syntax. + + The parent trivia syntax for this structured trivia syntax. + + + + The LineDirectiveMap is created to enable translating positions, using the #line directives + in a file. The basic implementation creates an ordered array of line mapping entries, one + for each #line directive in the file (plus one at the beginning). If the file has no + directives, then the array has just one element in it. To map line numbers, a binary search + of the mapping entries is done and nearest line mapping is applied. + + + + + Determines whether the position is considered to be hidden from the debugger or not. + + + + + Combines TranslateSpan and IsHiddenPosition to not search the entries twice when emitting sequence points + + + + + Are there any hidden regions in the map? + + True if there's at least one hidden region in the map. + + + + Enum that describes the state related to the #line or #externalsource directives at a position in source. + + + + + Used in VB when the position is not hidden, but it's not known yet that there is a (nonempty) #ExternalSource + following. + + + + + Used in C# for spans outside of #line directives + + + + + Used in C# for spans inside of "#line linenumber" directive + + + + + Used in VB for spans inside of a "#ExternalSource" directive that followed an unknown span + + + + + Used in VB for spans inside of a "#ExternalSource" directive that followed a hidden span + + + + + Used in C# and VB for spans that are inside of #line hidden (C#) or outside of #ExternalSource (VB) + directives + + + + + The state of the visibility of a line. + + + + + The line is located before any #line directive and there is at least one #line directive present in this syntax tree. + This enum value is used for C# only to enable the consumer to define how to interpret the lines before the first + line directive. + + + + + The line is following a #line hidden directive. + + + + + The line is following a #line default directive or a #line directive with at least a line number. + If there is no line directive at all, Visible is returned for all lines. + + + + + Gets the separator at the given index in this list. + + The index. + + + + + Returns the sequence of just the separator tokens. + + + + + The absolute span of the list elements in characters, including the leading and trailing trivia of the first and last elements. + + + + + The absolute span of the list elements in characters, not including the leading and trailing trivia of the first and last elements. + + + + + Returns the string representation of the nodes in this list including separators but not including + the first node's leading trivia and the last node or token's trailing trivia. + + + The string representation of the nodes in this list including separators but not including + the first node's leading trivia and the last node or token's trailing trivia. + + + + + Returns the full string representation of the nodes in this list including separators, + the first node's leading trivia, and the last node or token's trailing trivia. + + + The full string representation of the nodes in this list including separators including separators, + the first node's leading trivia, and the last node or token's trailing trivia. + + + + + Creates a new list with the specified node added to the end. + + The node to add. + + + + Creates a new list with the specified nodes added to the end. + + The nodes to add. + + + + Creates a new list with the specified node inserted at the index. + + The index to insert at. + The node to insert. + + + + Creates a new list with the specified nodes inserted at the index. + + The index to insert at. + The nodes to insert. + + + + Creates a new list with the element at the specified index removed. + + The index of the element to remove. + + + + Creates a new list with specified element removed. + + The element to remove. + + + + Creates a new list with the specified element replaced by the new node. + + The element to replace. + The new node. + + + + Creates a new list with the specified element replaced by the new nodes. + + The element to replace. + The new nodes. + + + + Creates a new list with the specified separator token replaced with the new separator. + + The separator token to be replaced. + The new separator token. + + + + A SyntaxAnnotation is used to annotate syntax elements with additional information. + + Since syntax elements are immutable, annotating them requires creating new instances of them + with the annotations attached. + + + + + A predefined syntax annotation that indicates whether the syntax element has elastic trivia. + + + + + A list of . + + + + + The number of nodes in the list. + + + + + Gets the node at the specified index. + + The zero-based index of the node to get or set. + The node at the specified index. + + + + The absolute span of the list elements in characters, including the leading and trailing trivia of the first and last elements. + + + + + The absolute span of the list elements in characters, not including the leading and trailing trivia of the first and last elements. + + + + + Returns the string representation of the nodes in this list, not including + the first node's leading trivia and the last node's trailing trivia. + + + The string representation of the nodes in this list, not including + the first node's leading trivia and the last node's trailing trivia. + + + + + Returns the full string representation of the nodes in this list including + the first node's leading trivia and the last node's trailing trivia. + + + The full string representation of the nodes in this list including + the first node's leading trivia and the last node's trailing trivia. + + + + + Creates a new list with the specified node added at the end. + + The node to add. + + + + Creates a new list with the specified nodes added at the end. + + The nodes to add. + + + + Creates a new list with the specified node inserted at the index. + + The index to insert at. + The node to insert. + + + + Creates a new list with the specified nodes inserted at the index. + + The index to insert at. + The nodes to insert. + + + + Creates a new list with the element at specified index removed. + + The index of the element to remove. + + + + Creates a new list with the element removed. + + The element to remove. + + + + Creates a new list with the specified element replaced with the new node. + + The element to replace. + The new node. + + + + Creates a new list with the specified element replaced with new nodes. + + The element to replace. + The new nodes. + + + + The first node in the list. + + + + + The first node in the list or default if the list is empty. + + + + + The last node in the list. + + + + + The last node in the list or default if the list is empty. + + + + + True if the list has at least one node. + + + + + Get's the enumerator for this list. + + + + + The index of the node in this list, or -1 if the node is not in the list. + + + + + Represents a non-terminal node in the syntax tree. This is the language agnostic equivalent of and . + + + + + Used by structured trivia which has "parent == null", and therefore must know its + SyntaxTree explicitly when created. + + + + + An integer representing the language specific kind of this node. + + + + + The language name that this node is syntax of. + + + + + Returns SyntaxTree that owns the node or null if node does not belong to a + SyntaxTree + + + + + The absolute span of this node in characters, including its leading and trailing trivia. + + + + + The absolute span of this node in characters, not including its leading and trailing trivia. + + + + + Same as accessing on . + + + Slight performance improvement. + + + + + The width of the node in characters, not including leading and trailing trivia. + + + The Width property returns the same value as Span.Length, but is somewhat more efficient. + + + + + The complete width of the node in characters, including leading and trailing trivia. + + The FullWidth property returns the same value as FullSpan.Length, but is + somewhat more efficient. + + + + This works the same as GetRed, but intended to be used in lists + The only difference is that the public parent of the node is not the list, + but the list's parent. (element's grand parent). + + + + + special cased helper for 2 and 3 children lists where child #1 may map to a token + + + + + Returns the string representation of this node, not including its leading and trailing trivia. + + The string representation of this node, not including its leading and trailing trivia. + The length of the returned string is always the same as Span.Length + + + + Returns full string representation of this node including its leading and trailing trivia. + + The full string representation of this node including its leading and trailing trivia. + The length of the returned string is always the same as FullSpan.Length + + + + Writes the full text of this node to the specified . + + + + + Gets the full text of this node as an new instance. + + + Encoding of the file that the text was read from or is going to be saved to. + null if the encoding is unspecified. + If the encoding is not specified the isn't debuggable. + If an encoding-less is written to a file a shall be used as a default. + + + Hash algorithm to use to calculate checksum of the text that's saved to PDB. + + is not supported. + + + + Determine whether this node is structurally equivalent to another. + + + + + Determines whether the node represents a language construct that was actually parsed + from the source code. Missing nodes are generated by the parser in error scenarios to + represent constructs that should have been present in the source code in order to + compile successfully but were actually missing. + + + + + Determines whether this node is a descendant of a structured trivia. + + + + + Determines whether this node represents a structured trivia. + + + + + Determines whether a descendant trivia of this node is structured. + + + + + Determines whether this node has any descendant skipped text. + + + + + Determines whether this node has any descendant preprocessor directives. + + + + + Determines whether this node or any of its descendant nodes, tokens or trivia have any diagnostics on them. + + + + + Determines if the specified node is a descendant of this node. + + + + + Determines whether this node has any leading trivia. + + + + + Determines whether this node has any trailing trivia. + + + + + Gets a node at given node index without forcing its creation. + If node was not created it would return null. + + + + + This function calculates the offset of a child at given position. It is very common that + some children to the left of the given index already know their positions so we first + check if that is the case. In a worst case the cost is O(n), but it is not generally an + issue because number of children in regular nodes is fixed and small. In a case where + the number of children could be large (lists) this function is overridden with more + efficient implementations. + + + + + Gets a list of all the diagnostics in the sub tree that has this node as its root. + This method does not filter diagnostics based on #pragmas and compiler options + like nowarn, warnaserror etc. + + + + + Gets a for this syntax node. CommonSyntaxReferences can be used to + regain access to a syntax node without keeping the entire tree and source text in + memory. + + + + + When invoked on a node that represents an anonymous function or a query clause [1] + with a of another anonymous function or a query clause of the same kind [2], + returns the body of the [1] that positionally corresponds to the specified . + + E.g. join clause declares left expression and right expression -- each of these expressions is a lambda body. + JoinClause1.GetCorrespondingLambdaBody(JoinClause2.RightExpression) returns JoinClause1.RightExpression. + + + + + The node that contains this node in its collection. + + + + + The list of child nodes and tokens of this node, where each element is a SyntaxNodeOrToken instance. + + + + + Gets node at given node index. + This WILL force node creation if node has not yet been created. + + + + + Gets a list of the child nodes in prefix document order. + + + + + Gets a list of ancestor nodes + + + + + Gets a list of ancestor nodes (including this node) + + + + + Gets the first node of type TNode that matches the predicate. + + + + + Gets a list of descendant nodes in prefix document order. + + An optional function that determines if the search descends into the argument node's children. + Determines if nodes that are part of structured trivia are included in the list. + + + + Gets a list of descendant nodes in prefix document order. + + The span the node's full span must intersect. + An optional function that determines if the search descends into the argument node's children. + Determines if nodes that are part of structured trivia are included in the list. + + + + Gets a list of descendant nodes (including this node) in prefix document order. + + An optional function that determines if the search descends into the argument node's children. + Determines if nodes that are part of structured trivia are included in the list. + + + + Gets a list of descendant nodes (including this node) in prefix document order. + + The span the node's full span must intersect. + An optional function that determines if the search descends into the argument node's children. + Determines if nodes that are part of structured trivia are included in the list. + + + + Gets a list of descendant nodes and tokens in prefix document order. + + An optional function that determines if the search descends into the argument node's children. + Determines if nodes that are part of structured trivia are included in the list. + + + + Gets a list of the descendant nodes and tokens in prefix document order. + + The span the node's full span must intersect. + An optional function that determines if the search descends into the argument node's children. + Determines if nodes that are part of structured trivia are included in the list. + + + + Gets a list of descendant nodes and tokens (including this node) in prefix document order. + + An optional function that determines if the search descends into the argument node's children. + Determines if nodes that are part of structured trivia are included in the list. + + + + Gets a list of the descendant nodes and tokens (including this node) in prefix document order. + + The span the node's full span must intersect. + An optional function that determines if the search descends into the argument node's children. + Determines if nodes that are part of structured trivia are included in the list. + + + + Finds the node with the smallest that contains . + is used to determine the behavior in case of a tie (i.e. a node having the same span as its parent). + If is true, then it returns lowest descending node encompassing the given . + Otherwise, it returns the outermost node encompassing the given . + + + TODO: This should probably be reimplemented with + + This exception is thrown if doesn't contain the given span. + + + + Finds a descendant token of this node whose span includes the supplied position. + + The character position of the token relative to the beginning of the file. + + True to return tokens that are part of trivia. If false finds the token whose full span (including trivia) + includes the position. + + + + + Gets the first token of the tree rooted by this node. Skips zero-width tokens. + + The first token or default(SyntaxToken) if it doesn't exist. + + + + Gets the last token of the tree rooted by this node. Skips zero-width tokens. + + The last token or default(SyntaxToken) if it doesn't exist. + + + + Gets a list of the direct child tokens of this node. + + + + + Gets a list of all the tokens in the span of this node. + + + + + Gets a list of all the tokens in the full span of this node. + + + + + The list of trivia that appears before this node in the source code and are attached to a token that is a + descendant of this node. + + + + + The list of trivia that appears after this node in the source code and are attached to a token that is a + descendant of this node. + + + + + Finds a descendant trivia of this node whose span includes the supplied position. + + The character position of the trivia relative to the beginning of the file. + + True to return tokens that are part of trivia. If false finds the token whose full span (including trivia) + includes the position. + + + + + Finds a descendant trivia of this node at the specified position, where the position is + within the span of the node. + + The character position of the trivia relative to the beginning of + the file. + Specifies a function that determines per trivia node, whether to + descend into structured trivia of that node. + + + + + Get a list of all the trivia associated with the descendant nodes and tokens. + + + + + Get a list of all the trivia associated with the descendant nodes and tokens. + + + + + Determines whether this node or any sub node, token or trivia has annotations. + + + + + Determines whether this node has any annotations with the specific annotation kind. + + + + + Determines whether this node has any annotations with any of the specific annotation kinds. + + + + + Determines whether this node has the specific annotation. + + + + + Gets all the annotations with the specified annotation kind. + + + + + Gets all the annotations with the specified annotation kinds. + + + + + Gets all nodes and tokens with an annotation of the specified annotation kind. + + + + + Gets all nodes and tokens with an annotation of the specified annotation kinds. + + + + + Gets all nodes and tokens with the specified annotation. + + + + + Gets all nodes with the specified annotation. + + + + + Gets all nodes with the specified annotation kind. + + + + + + + Gets all tokens with the specified annotation. + + + + + Gets all tokens with the specified annotation kind. + + + + + Gets all trivia with an annotation of the specified annotation kind. + + + + + Gets all trivia with an annotation of the specified annotation kinds. + + + + + Gets all trivia with the specified annotation. + + + + + Copies all SyntaxAnnotations, if any, from this SyntaxNode instance and attaches them to a new instance based on . + + + + If no annotations are copied, just returns . + + + It can also be used manually to preserve annotations in a more complex tree + modification, even if the type of a node changes. + + + + + + Determines if two nodes are the same, disregarding trivia differences. + + The node to compare against. + If true then the nodes are equivalent if the contained nodes and + tokens declaring metadata visible symbolic information are equivalent, ignoring any + differences of nodes inside method bodies or initializer expressions, otherwise all + nodes and tokens must be equivalent. + + + + + Determine if this node is structurally equivalent to another. + + + + + Returns SyntaxTree that owns the node or null if node does not belong to a + SyntaxTree + + + + + Finds a descendant token of this node whose span includes the supplied position. + + The character position of the token relative to the beginning of the file. + + True to return tokens that are part of trivia. + If false finds the token whose full span (including trivia) includes the position. + + + + + Finds a descendant token of this node whose span includes the supplied position. + + The character position of the token relative to the beginning of the file. + + Applied on every structured trivia. Return false if the tokens included in the trivia should be skipped. + Pass null to skip all structured trivia. + + + + + Finds a descendant trivia of this node whose span includes the supplied position. + + The character position of the trivia relative to the beginning of the file. + Whether to search inside structured trivia. + + + + Creates a new tree of nodes with the specified nodes, tokens or trivia replaced. + + + + + Creates a new tree of nodes with the specified node removed. + + + + + Determines if two nodes are the same, disregarding trivia differences. + + The node to compare against. + If true then the nodes are equivalent if the contained nodes and + tokens declaring metadata visible symbolic information are equivalent, ignoring any + differences of nodes inside method bodies or initializer expressions, otherwise all + nodes and tokens must be equivalent. + + + + + Creates a new tree of nodes with the specified nodes, tokens and trivia replaced. + + The type of the root node. + The root node of the tree of nodes. + The nodes to be replaced. + A function that computes a replacement node for the + argument nodes. The first argument is the original node. The second argument is the same + node potentially rewritten with replaced descendants. + The tokens to be replaced. + A function that computes a replacement token for + the argument tokens. The first argument is the original token. The second argument is + the same token potentially rewritten with replaced trivia. + The trivia to be replaced. + A function that computes replacement trivia for + the specified arguments. The first argument is the original trivia. The second argument is + the same trivia with potentially rewritten sub structure. + + + + Creates a new tree of nodes with the specified old node replaced with a new node. + + The type of the root node. + The type of the nodes being replaced. + The root node of the tree of nodes. + The nodes to be replaced; descendants of the root node. + A function that computes a replacement node for the + argument nodes. The first argument is the original node. The second argument is the same + node potentially rewritten with replaced descendants. + + + + Creates a new tree of nodes with the specified old node replaced with a new node. + + The type of the root node. + The root node of the tree of nodes. + The node to be replaced; a descendant of the root node. + The new node to use in the new tree in place of the old node. + + + + Creates a new tree of nodes with specified old node replaced with a new nodes. + + The type of the root node. + The root of the tree of nodes. + The node to be replaced; a descendant of the root node and an element of a list member. + A sequence of nodes to use in the tree in place of the old node. + + + + Creates a new tree of nodes with new nodes inserted before the specified node. + + The type of the root node. + The root of the tree of nodes. + The node to insert before; a descendant of the root node an element of a list member. + A sequence of nodes to insert into the tree immediately before the specified node. + + + + Creates a new tree of nodes with new nodes inserted after the specified node. + + The type of the root node. + The root of the tree of nodes. + The node to insert after; a descendant of the root node an element of a list member. + A sequence of nodes to insert into the tree immediately after the specified node. + + + + Creates a new tree of nodes with the specified old token replaced with new tokens. + + The type of the root node. + The root of the tree of nodes. + The token to be replaced; a descendant of the root node and an element of a list member. + A sequence of tokens to use in the tree in place of the specified token. + + + + Creates a new tree of nodes with new tokens inserted before the specified token. + + The type of the root node. + The root of the tree of nodes. + The token to insert before; a descendant of the root node and an element of a list member. + A sequence of tokens to insert into the tree immediately before the specified token. + + + + Creates a new tree of nodes with new tokens inserted after the specified token. + + The type of the root node. + The root of the tree of nodes. + The token to insert after; a descendant of the root node and an element of a list member. + A sequence of tokens to insert into the tree immediately after the specified token. + + + + Creates a new tree of nodes with the specified old trivia replaced with new trivia. + + The type of the root node. + The root of the tree of nodes. + The trivia to be replaced; a descendant of the root node. + A sequence of trivia to use in the tree in place of the specified trivia. + + + + Creates a new tree of nodes with new trivia inserted before the specified trivia. + + The type of the root node. + The root of the tree of nodes. + The trivia to insert before; a descendant of the root node. + A sequence of trivia to insert into the tree immediately before the specified trivia. + + + + Creates a new tree of nodes with new trivia inserted after the specified trivia. + + The type of the root node. + The root of the tree of nodes. + The trivia to insert after; a descendant of the root node. + A sequence of trivia to insert into the tree immediately after the specified trivia. + + + + Creates a new tree of nodes with the specified old node replaced with a new node. + + The type of the root node. + The root node of the tree of nodes. + The token to be replaced; descendants of the root node. + A function that computes a replacement token for + the argument tokens. The first argument is the original token. The second argument is + the same token potentially rewritten with replaced trivia. + + + + Creates a new tree of nodes with the specified old token replaced with a new token. + + The type of the root node. + The root node of the tree of nodes. + The token to be replaced. + The new token to use in the new tree in place of the old + token. + + + + Creates a new tree of nodes with the specified trivia replaced with new trivia. + + The type of the root node. + The root node of the tree of nodes. + The trivia to be replaced; descendants of the root node. + A function that computes replacement trivia for + the specified arguments. The first argument is the original trivia. The second argument is + the same trivia with potentially rewritten sub structure. + + + + Creates a new tree of nodes with the specified trivia replaced with new trivia. + + The type of the root node. + The root node of the tree of nodes. + The trivia to be replaced. + The new trivia to use in the new tree in place of the old trivia. + + + + Creates a new tree of nodes with the specified node removed. + + The type of the root node. + The root node from which to remove a descendant node from. + The node to remove. + Options that determine how the node's trivia is treated. + + + + Creates a new tree of nodes with the specified nodes removed. + + The type of the root node. + The root node from which to remove a descendant node from. + The nodes to remove. + Options that determine how the nodes' trivia is treated. + + + + Creates a new syntax node with all whitespace and end of line trivia replaced with + regularly formatted trivia. + + The type of the node. + The node to format. + A sequence of whitespace characters that defines a single level of indentation. + If true the replaced trivia is elastic trivia. + + + + Creates a new syntax node with all whitespace and end of line trivia replaced with + regularly formatted trivia. + + The type of the node. + The node to format. + An optional sequence of whitespace characters that defines a single level of indentation. + An optional sequence of whitespace characters used for end of line. + If true the replaced trivia is elastic trivia. + + + + Creates a new node from this node with both the leading and trailing trivia of the specified node. + + + + + Creates a new node from this node without leading or trailing trivia. + + + + + Creates a new node from this node with the leading trivia replaced. + + + + + Creates a new node from this node with the leading trivia replaced. + + + + + Creates a new node from this node with the leading trivia removed. + + + + + Creates a new node from this node with the leading trivia replaced. + + + + + Creates a new node from this node with the trailing trivia replaced. + + + + + Creates a new node from this node with the trailing trivia replaced. + + + + + Creates a new node from this node with the trailing trivia removed. + + + + + Creates a new node from this node with the trailing trivia replaced. + + + + + Creates a new tree of nodes with the specified nodes being tracked. + + Use GetCurrentNode on the subtree resulting from this operation, or any transformation of it, + to get the current node corresponding to the original tracked node. + + The root of the subtree containing the nodes to be tracked. + One or more nodes that are descendants of the root node. + + + + Creates a new tree of nodes with the specified nodes being tracked. + + Use GetCurrentNode on the subtree resulting from this operation, or any transformation of it, + to get the current node corresponding to the original tracked node. + + The root of the subtree containing the nodes to be tracked. + One or more nodes that are descendants of the root node. + + + + Gets the nodes within the subtree corresponding to the original tracked node. + Use TrackNodes to start tracking nodes. + + The root of the subtree containing the current node corresponding to the original tracked node. + The node instance originally tracked. + + + + Gets the node within the subtree corresponding to the original tracked node. + Use TrackNodes to start tracking nodes. + + The root of the subtree containing the current node corresponding to the original tracked node. + The node instance originally tracked. + + + + Gets the nodes within the subtree corresponding to the original tracked nodes. + Use TrackNodes to start tracking nodes. + + The root of the subtree containing the current nodes corresponding to the original tracked nodes. + One or more node instances originally tracked. + + + + A wrapper for either a syntax node () or a syntax token (). + + + Note that we do not store the token directly, we just store enough information to reconstruct it. + This allows us to reuse nodeOrToken as a token's parent. + + + + + An integer representing the language specific kind of the underlying node or token. + + + + + The language name that this node or token is syntax of. + + + + + Determines whether the underlying node or token represents a language construct that was actually parsed + from source code. Missing nodes and tokens are typically generated by the parser in error scenarios to + represent constructs that should have been present in the source code for the source code to compile + successfully but were actually missing. + + + + + The node that contains the underlying node or token in its Children collection. + + + + + Determines whether this is wrapping a token. + + + + + Determines whether this is wrapping a node. + + + + + Returns the underlying token if this is wrapping a + token. + + + The underlying token if this is wrapping a token. + + + + + Returns the underlying node if this is wrapping a + node. + + + The underlying node if this is wrapping a node. + + + + + The list of child nodes and tokens of the underlying node or token. + + + + + The absolute span of the underlying node or token in characters, not including its leading and trailing + trivia. + + + + + Same as accessing on . + + + Slight performance improvement. + + + + + The absolute span of the underlying node or token in characters, including its leading and trailing trivia. + + + + + Returns the string representation of this node or token, not including its leading and trailing + trivia. + + + The string representation of this node or token, not including its leading and trailing trivia. + + The length of the returned string is always the same as Span.Length + + + + Returns the full string representation of this node or token including its leading and trailing trivia. + + The full string representation of this node or token including its leading and trailing + trivia. + The length of the returned string is always the same as FullSpan.Length + + + + Writes the full text of this node or token to the specified TextWriter. + + + + + Determines whether the underlying node or token has any leading trivia. + + + + + The list of trivia that appear before the underlying node or token in the source code and are attached to a + token that is a descendant of the underlying node or token. + + + + + Determines whether the underlying node or token has any trailing trivia. + + + + + The list of trivia that appear after the underlying node or token in the source code and are attached to a + token that is a descendant of the underlying node or token. + + + + + Determines whether the underlying node or token or any of its descendant nodes, tokens or trivia have any + diagnostics on them. + + + + + Gets a list of all the diagnostics in either the sub tree that has this node as its root or + associated with this token and its related trivia. + This method does not filter diagnostics based on #pragmas and compiler options + like nowarn, warnaserror etc. + + + + + Determines whether the underlying node or token has any descendant preprocessor directives. + + + + + Determines whether this node or token (or any sub node, token or trivia) as annotations. + + + + + Determines whether this node or token has annotations of the specified kind. + + + + + Determines whether this node or token has annotations of the specified kind. + + + + + Determines if this node or token has the specific annotation. + + + + + Gets all annotations of the specified annotation kind. + + + + + Gets all annotations of the specified annotation kind. + + + + + Creates a new node or token identical to this one with the specified annotations. + + + + + Creates a new node or token identical to this one with the specified annotations. + + + + + Creates a new node or token identical to this one without the specified annotations. + + + + + Creates a new node or token identical to this one without the specified annotations. + + + + + Creates a new node or token identical to this one without annotations of the specified kind. + + + + + Determines whether the supplied is equal to this + . + + + + + Determines whether two s are equal. + + + + + Determines whether two s are unequal. + + + + + Determines whether the supplied is equal to this + . + + + + + Serves as hash function for . + + + + + Determines if the two nodes or tokens are equivalent. + + + + + Returns a new that wraps the supplied token. + + The input token. + + A that wraps the supplied token. + + + + + Returns the underlying token wrapped by the supplied . + + + The input . + + + The underlying token wrapped by the supplied . + + + + + Returns a new that wraps the supplied node. + + The input node. + + A that wraps the supplied node. + + + + + Returns the underlying node wrapped by the supplied . + + + The input . + + + The underlying node wrapped by the supplied . + + + + + SyntaxTree which contains current SyntaxNodeOrToken. + + + + + Get the location of this node or token. + + + + + A list of structures. + + + + + The underlying field + + + + + The index from the parent's children list of this node. + + + + + Initializes a new instance of the structure. + + The underlying syntax node. + The index. + + + + Gets the underlying syntax node. + + + + + Gets the count of nodes in this list + + + + + Gets the at the specified index. + + is out of range. + + + + The absolute span of the list elements in characters, including the leading and trailing trivia of the first and last elements. + + + + + The absolute span of the list elements in characters, not including the leading and trailing trivia of the first and last elements. + + + + + Returns the string representation of the nodes and tokens in this list, not including the first node or token's leading trivia + and the last node or token's trailing trivia. + + + The string representation of the nodes and tokens in this list, not including the first node or token's leading trivia + and the last node or token's trailing trivia. + + + + + Returns the full string representation of the nodes and tokens in this list including the first node or token's leading trivia + and the last node or token's trailing trivia. + + + The full string representation of the nodes and tokens in this list including the first node or token's leading trivia + and the last node or token's trailing trivia. + + + + + Gets the first SyntaxNodeOrToken structure from this list. + + + + + Gets the first SyntaxNodeOrToken structure from this list if present, else default(SyntaxNodeOrToken). + + + + + Gets the last SyntaxNodeOrToken structure from this list. + + + + + Gets the last SyntaxNodeOrToken structure from this list if present, else default(SyntaxNodeOrToken). + + + + + Returns the index from the list for the given . + + The node or token to search for in the list. + The index of the found nodeOrToken, or -1 if it wasn't found + + + + Indicates whether there is any element in the list. + + true if there are any elements in the list, else false. + + + + Copies a given count of elements into the given array at specified offsets. + + The offset to start copying from. + The array to copy the elements into. + The array offset to start writing to. + The count of elements to copy. + + + + Creates a new with the specified node or token added to the end. + + The node or token to add. + + + + Creates a new with the specified nodes or tokens added to the end. + + The nodes or tokens to add. + + + + Creates a new with the specified node or token inserted at the index. + + The index to insert at. + The node or token to insert. + + + + Creates a new with the specified nodes or tokens inserted at the index. + + The index to insert at. + The nodes or tokens to insert. + + + + Creates a new with the element at the specified index removed. + + The index of the element to remove. + + + + Creates a new with the specified element removed. + + The element to remove. + + + + Creates a new with the specified element replaced with a new node or token. + + The element to replace. + The new node or token. + + + + Creates a new with the specified element replaced with a new nodes and tokens. + + The element to replace. + The new nodes and tokens. + + + + Gets the enumerator. + + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + + + + Implements the operator ==. + + The left SyntaxNodeOrTokenList + The right SyntaxNodeOrTokenList + + true if both lists equal, else false. + + + + + Implements the operator !=. + + The left SyntaxNodeOrTokenList + The right SyntaxNodeOrTokenList + + true if both lists not equal, else false. + + + + + Indicates whether the current object is equal to another object of the same type. + + An object to compare with this object. + + true if the current object is equal to the parameter; otherwise, + false. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Enumerator for lists of SyntaxNodeOrToken structs. + + + + + Advances the enumerator to the next element of the collection. + + + true if the enumerator was successfully advanced to the next element; false if the enumerator has passed the end of the collection. + + The collection was modified after the enumerator was created. + + + + Gets the struct that this enumerator instance is currently pointing to. + + + + + Gets the struct that this enumerator instance is currently pointing to. + + + + + Sets the enumerator to its initial position, which is before the first element in the collection. + + The collection was modified after the enumerator was created. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + A reference to a syntax node. + + + + + The syntax tree that this references a node within. + + + + + The span of the node referenced. + + + + + Retrieves the original referenced syntax node. + This action may cause a parse to happen to recover the syntax node. + + The original referenced syntax node. + + + + Retrieves the original referenced syntax node. + This action may cause a parse to happen to recover the syntax node. + + The original referenced syntax node. + + + + The location of this syntax reference. + + The location of this syntax reference. + + More performant than GetSyntax().GetLocation(). + + + + + None of the trivia associated with the node or token is kept. + + + + + The leading trivia associated with the node or token is kept. + + + + + The trailing trivia associated with the node or token is kept. + + + + + The leading and trailing trivia associated with the node or token is kept. + + + + + Any directives that would become unbalanced are kept. + + + + + All directives are kept + + + + + Ensure that at least one EndOfLine trivia is kept if one was present + + + + + Adds elastic marker trivia + + + + + Represents a token in the syntax tree. This is the language agnostic equivalent of and . + + + + + An integer representing the language specific kind of this token. + + + + + The language name that this token is syntax of. + + + + + The kind of token, given its position in the syntax. This differs from when a contextual keyword is used in a place in the syntax that gives it + its keyword meaning. + + + The ContextualKind is relevant only on contextual keyword tokens. ContextualKind differs + from Kind when a token is used in context where the token should be interpreted as a + keyword. + + + + + The node that contains this token in its Children collection. + + + + + The width of the token in characters, not including its leading and trailing trivia. + + + + + The complete width of the token in characters including its leading and trailing trivia. + + + + + The absolute span of this token in characters, not including its leading and trailing trivia. + + + + + Same as accessing on . + + + Slight performance improvement. + + + + + The absolute span of this token in characters, including its leading and trailing trivia. + + + + + Determines whether this token represents a language construct that was actually parsed from source code. + Missing tokens are typically generated by the parser in error scenarios to represent constructs that should + have been present in the source code for the source code to compile successfully but were actually missing. + + + + + Returns the value of the token. For example, if the token represents an integer literal, then this property + would return the actual integer. + + + + + Returns the text representation of the value of the token. For example, if the token represents an integer + literal, then this property would return a string representing the integer. + + + + + Returns the string representation of this token, not including its leading and trailing trivia. + + The string representation of this token, not including its leading and trailing trivia. + The length of the returned string is always the same as Span.Length + + + + Returns the full string representation of this token including its leading and trailing trivia. + + The full string representation of this token including its leading and trailing trivia. + The length of the returned string is always the same as FullSpan.Length + + + + Writes the full text of this token to the specified . + + + + + Writes the text of this token to the specified TextWriter, optionally including trivia. + + + + + Determines whether this token has any leading trivia. + + + + + Determines whether this token has any trailing trivia. + + + + + Full width of the leading trivia of this token. + + + + + Full width of the trailing trivia of this token. + + + + + Determines whether this token or any of its descendant trivia have any diagnostics on them. + + + + + Determines whether this token has any descendant preprocessor directives. + + + + + Determines whether this token is a descendant of a structured trivia. + + + + + Determines whether any of this token's trivia is structured. + + + + + True if this token or its trivia has any annotations. + + + + + True if this token has annotations of the specified annotation kind. + + + + + True if this token has annotations of the specified annotation kinds. + + + + + True if this token has the specified annotation. + + + + + Gets all the annotations of the specified annotation kind. + + + + + Gets all the annotations of the specified annotation kind. + + + + + Gets all the annotations of the specified annotation kind. + + + + + Adds this annotation to a given syntax token, creating a new syntax token of the same type with the + annotation on it. + + + + + Adds this annotation to a given syntax token, creating a new syntax token of the same type with the + annotation on it. + + + + + Creates a new syntax token identical to this one without the specified annotations. + + + + + Creates a new syntax token identical to this one without the specified annotations. + + + + + Creates a new syntax token identical to this one without annotations of the specified kind. + + + + + Copies all SyntaxAnnotations, if any, from this SyntaxToken instance and attaches them to a new instance based on . + + + If no annotations are copied, just returns . + + + + + The list of trivia that appear before this token in the source code. + + + + + The list of trivia that appear after this token in the source code and are attached to this token or any of + its descendants. + + + + + Creates a new token from this token with the leading and trailing trivia from the specified token. + + + + + Creates a new token from this token with the leading trivia specified. + + + + + Creates a new token from this token with the leading trivia specified.. + + + + + Creates a new token from this token with the leading trivia specified.. + + + + + Creates a new token from this token with the trailing trivia specified. + + + + + Creates a new token from this token with the trailing trivia specified. + + + + + Creates a new token from this token with the trailing trivia specified. + + + + + Gets a list of all the trivia (both leading and trailing) for this token. + + + + + Determines whether two s are equal. + + + + + Determines whether two s are unequal. + + + + + Determines whether the supplied is equal to this + . + + + + + Determines whether the supplied is equal to this + . + + + + + Serves as hash function for . + + + + + Gets the token that follows this token in the syntax tree. + + The token that follows this token in the syntax tree. + + + + Returns the token after this token in the syntax tree. + + Delegate applied to each token. The token is returned if the predicate returns + true. + Delegate applied to trivia. If this delegate is present then trailing trivia is + included in the search. + + + + Gets the token that precedes this token in the syntax tree. + + The next token that follows this token in the syntax tree. + + + + Returns the token before this token in the syntax tree. + + Delegate applied to each token. The token is returned if the predicate returns + true. + Delegate applied to trivia. If this delegate is present then trailing trivia is + included in the search. + + + + The SyntaxTree that contains this token. + + + + + Gets the location for this token. + + + + + Gets a list of all the diagnostics associated with this token and any related trivia. + This method does not filter diagnostics based on #pragmas and compiler options + like nowarn, warnaserror etc. + + + + + Determines if this token is equivalent to the specified token. + + + + + Represents a read-only list of . + + + Represents a read-only list of s. + + + + + Returns the number of tokens in the list. + + + + + Gets the token at the specified index. + + The zero-based index of the token to get. + The token at the specified index. + + is less than 0.-or- is equal to or greater than . + + + + The absolute span of the list elements in characters, including the leading and trailing trivia of the first and last elements. + + + + + The absolute span of the list elements in characters, not including the leading and trailing trivia of the first and last elements. + + + + + Returns the string representation of the tokens in this list, not including + the first token's leading trivia and the last token's trailing trivia. + + + The string representation of the tokens in this list, not including + the first token's leading trivia and the last token's trailing trivia. + + + + + Returns the full string representation of the tokens in this list including + the first token's leading trivia and the last token's trailing trivia. + + + The full string representation of the tokens in this list including + the first token's leading trivia and the last token's trailing trivia. + + + + + Returns the first token in the list. + + The first token in the list. + The list is empty. + + + + Returns the last token in the list. + + The last token in the list. + The list is empty. + + + + Tests whether the list is non-empty. + + True if the list contains any tokens. + + + + Returns a list which contains all elements of in reversed order. + + which contains all elements of in reversed order + + + + get the green node at the given slot + + + + + get the green node at the given slot + + + + + Creates a new with the specified token added to the end. + + The token to add. + + + + Creates a new with the specified tokens added to the end. + + The tokens to add. + + + + Creates a new with the specified token insert at the index. + + The index to insert the new token. + The token to insert. + + + + Creates a new with the specified tokens insert at the index. + + The index to insert the new tokens. + The tokens to insert. + + + + Creates a new with the token at the specified index removed. + + The index of the token to remove. + + + + Creates a new with the specified token removed. + + The token to remove. + + + + Creates a new with the specified token replaced with a new token. + + The token to replace. + The new token. + + + + Creates a new with the specified token replaced with new tokens. + + The token to replace. + The new tokens. + + + + Returns an enumerator for the tokens in the + + + + + Compares and for equality. + + + + True if the two s are equal. + + + + Compares and for inequality. + + + + True if the two s are not equal. + + + + Compares this with the for equality. + + True if the two objects are equal. + + + + Serves as a hash function for the + + + + + Create a new Token List + + Element of the return Token List + + + + A structure for enumerating a + + + + + Advances the enumerator to the next token in the collection. + + true if the enumerator was successfully advanced to the next element; false if the enumerator + has passed the end of the collection. + + + + Gets the current element in the collection. + + + + + Reversed enumerable. + + + + + The parsed representation of a source document. + + + + + The path of the source document file. + + + If this syntax tree is not associated with a file, this value can be empty. + The path shall not be null. + + The file doesn't need to exist on disk. The path is opaque to the compiler. + The only requirement on the path format is that the implementations of + , and + passed to the compilation that contains the tree understand it. + + Clients must also not assume that the values of this property are unique + within a Compilation. + + The path is used as follows: + - When debug information is emitted, this path is embedded in the debug information. + - When resolving and normalizing relative paths in #r, #load, #line/#ExternalSource, + #pragma checksum, #ExternalChecksum directives, XML doc comment include elements, etc. + + + + + Returns true if this syntax tree has a root with SyntaxKind "CompilationUnit". + + + + + The options used by the parser to produce the syntax tree. + + + + + The options used by the parser to produce the syntax tree. + + + + + The length of the text of the syntax tree. + + + + + Gets the syntax tree's text if it is available. + + + + + Gets the text of the source document. + + + + + The text encoding of the source document. + + + + + Gets the text of the source document asynchronously. + + + By default, the work associated with this method will be executed immediately on the current thread. + Implementations that wish to schedule this work differently should override . + + + + + Gets the root of the syntax tree if it is available. + + + + + Gets the root of the syntax tree if it is available. + + + + + Gets the root node of the syntax tree, causing computation if necessary. + + + + + Gets the root node of the syntax tree, causing computation if necessary. + + + + + Gets the root node of the syntax tree asynchronously. + + + + + Gets the root node of the syntax tree asynchronously. + + + + + Create a new syntax tree based off this tree using a new source text. + + If the new source text is a minor change from the current source text an incremental + parse will occur reusing most of the current syntax tree internal data. Otherwise, a + full parse will occur using the new source text. + + + + + Gets a list of all the diagnostics in the syntax tree. + This method does not filter diagnostics based on #pragmas and compiler options + like nowarn, warnaserror etc. + + + + + Gets a list of all the diagnostics in the sub tree that has the specified node as its root. + This method does not filter diagnostics based on #pragmas and compiler options + like nowarn, warnaserror etc. + + + + + Gets a list of all the diagnostics associated with the token and any related trivia. + This method does not filter diagnostics based on #pragmas and compiler options + like nowarn, warnaserror etc. + + + + + Gets a list of all the diagnostics associated with the trivia. + This method does not filter diagnostics based on #pragmas and compiler options + like nowarn, warnaserror etc. + + + + + Gets a list of all the diagnostics in either the sub tree that has the specified node as its root or + associated with the token and its related trivia. + This method does not filter diagnostics based on #pragmas and compiler options + like nowarn, warnaserror etc. + + + + + Gets the location in terms of path, line and column for a given span. + + Span within the tree. + Cancellation token. + + A valid that contains path, line and column information. + The values are not affected by line mapping directives (#line). + + + + + Gets the location in terms of path, line and column after applying source line mapping directives + (#line in C# or #ExternalSource in VB). + + Span within the tree. + Cancellation token. + + A valid that contains path, line and column information. + + If the location path is mapped the resulting path is the path specified in the corresponding #line, + otherwise it's . + + A location path is considered mapped if the first #line directive that precedes it and that + either specifies an explicit file path or is #line default exists and specifies an explicit path. + + + + + Returns the visibility for the line at the given position. + + The position to check. + The cancellation token. + + + + Gets a FileLinePositionSpan for a TextSpan and the information whether this span is considered to be hidden or not. + FileLinePositionSpans are used primarily for diagnostics and source locations. + This method combines a call to GetLineSpan and IsHiddenPosition. + + + Returns a boolean indicating whether this span is considered hidden or not. + This function is being called only in the context of sequence point creation and therefore interprets the + LineVisibility accordingly (BeforeFirstRemappingDirective -> Visible). + + + + Returns a path for particular location in source that is presented to the user. + + + Used for implementation of + or for embedding source paths in error messages. + + Unlike Dev12 we do account for #line and #ExternalSource directives when determining value for + . + + + + + Returns a line number for particular location in source that is presented to the user. + + + Used for implementation of + or for embedding source line numbers in error messages. + + Unlike Dev12 we do account for #line and #ExternalSource directives when determining value for + . + + + + + Are there any hidden regions in the tree? + + True if there is at least one hidden region. + + + + Returns a list of the changed regions between this tree and the specified tree. The list is conservative for + performance reasons. It may return larger regions than what has actually changed. + + + + + Gets a location for the specified text span. + + + + + Determines if two trees are the same, disregarding trivia differences. + + The tree to compare against. + If true then the trees are equivalent if the contained nodes and tokens declaring + metadata visible symbolic information are equivalent, ignoring any differences of nodes inside method bodies + or initializer expressions, otherwise all nodes and tokens must be equivalent. + + + + + Gets a SyntaxReference for a specified syntax node. SyntaxReferences can be used to + regain access to a syntax node without keeping the entire tree and source text in + memory. + + + + + Gets a list of text changes that when applied to the old tree produce this tree. + + The old tree. + The list of changes may be different than the original changes that produced + this tree. + + + + Returns a new tree whose root and options are as specified and other properties are copied from the current tree. + + + + + Returns a new tree whose is the specified node and other properties are copied from the current tree. + + + + + Returns a that represents the entire source text of this . + + + + + Verify nodes match source. + + + + + Return the index of the first difference between + the two strings, or -1 if the strings are the same. + + + + + Represents a trivia in the syntax tree. This is the language agnostic equivalent of and . + + + + + An integer representing the language specific kind of this trivia. + + + + + The language name that this trivia is syntax of. + + + + + The parent token that contains this token in its LeadingTrivia or TrailingTrivia collection. + + + + + The width of this trivia in characters. If this trivia is a structured trivia then the returned width will + not include the widths of any leading or trailing trivia present on the child non-terminal node of this + trivia. + + + + + The width of this trivia in characters. If this trivia is a structured trivia then the returned width will + include the widths of any leading or trailing trivia present on the child non-terminal node of this trivia. + + + + + The absolute span of this trivia in characters. If this trivia is a structured trivia then the returned span + will not include spans of any leading or trailing trivia present on the child non-terminal node of this + trivia. + + + + + Same as accessing on . + + + Slight performance improvement. + + + + + The absolute span of this trivia in characters. If this trivia is a structured trivia then the returned span + will include spans of any leading or trailing trivia present on the child non-terminal node of this trivia. + + + + + Determines whether this trivia has any diagnostics on it. If this trivia is a structured trivia then the + returned value will indicate whether this trivia or any of its descendant nodes, tokens or trivia have any + diagnostics on them. + > + + + + Determines whether this trivia is a structured trivia. + + + + + Determines whether this trivia is a descendant of a structured trivia. + + + + + Determines whether this trivia or any of its structure has annotations. + + + + + Determines where this trivia has annotations of the specified annotation kind. + + + + + Determines where this trivia has any annotations of the specified annotation kinds. + + + + + Determines whether this trivia has the specific annotation. + + + + + Get all the annotations of the specified annotation kind. + + + + + Get all the annotations of the specified annotation kinds. + + + + + Determines whether this trivia represents a preprocessor directive. + + + + + Returns the child non-terminal node representing the syntax tree structure under this structured trivia. + + The child non-terminal node representing the syntax tree structure under this structured + trivia. + + + + Returns the string representation of this trivia. If this trivia is structured trivia then the returned string + will not include any leading or trailing trivia present on the StructuredTriviaSyntax node of this trivia. + + The string representation of this trivia. + The length of the returned string is always the same as Span.Length + + + + Returns the full string representation of this trivia. If this trivia is structured trivia then the returned string will + include any leading or trailing trivia present on the StructuredTriviaSyntax node of this trivia. + + The full string representation of this trivia. + The length of the returned string is always the same as FullSpan.Length + + + + Writes the full text of this trivia to the specified TextWriter. + + + + + Determines whether two s are equal. + + + + + Determines whether two s are unequal. + + + + + Determines whether the supplied is equal to this + . + + + + + Determines whether the supplied is equal to this + . + + + + + Serves as hash function for . + + + + + Creates a new SyntaxTrivia with the specified annotations. + + + + + Creates a new SyntaxTrivia with the specified annotations. + + + + + Creates a new SyntaxTrivia without the specified annotations. + + + + + Creates a new SyntaxTrivia without the specified annotations. + + + + + Creates a new SyntaxTrivia without annotations of the specified kind. + + + + + Copies all SyntaxAnnotations, if any, from this SyntaxTrivia instance and attaches them to a new instance based on . + + + + + SyntaxTree which contains current SyntaxTrivia. + + + + + Get the location of this trivia. + + + + + Gets a list of all the diagnostics associated with this trivia. + This method does not filter diagnostics based on #pragmas and compiler options + like nowarn, warnaserror etc. + + + + + Determines if this trivia is equivalent to the specified trivia. + + + + + Represents a read-only list of . + + + + + Gets the trivia at the specified index. + + The zero-based index of the trivia to get. + The token at the specified index. + + is less than 0.-or- is equal to or greater than . + + + + The absolute span of the list elements in characters, including the leading and trailing trivia of the first and last elements. + + + + + The absolute span of the list elements in characters, not including the leading and trailing trivia of the first and last elements. + + + + + Returns the first trivia in the list. + + The first trivia in the list. + The list is empty. + + + + Returns the last trivia in the list. + + The last trivia in the list. + The list is empty. + + + + Does this list have any items. + + + + + Returns a list which contains all elements of in reversed order. + + which contains all elements of in reversed order + + + + Creates a new with the specified trivia added to the end. + + The trivia to add. + + + + Creates a new with the specified trivia added to the end. + + The trivia to add. + + + + Creates a new with the specified trivia inserted at the index. + + The index in the list to insert the trivia at. + The trivia to insert. + + + + Creates a new with the specified trivia inserted at the index. + + The index in the list to insert the trivia at. + The trivia to insert. + + + + Creates a new with the element at the specified index removed. + + The index identifying the element to remove. + + + + Creates a new with the specified element removed. + + The trivia element to remove. + + + + Creates a new with the specified element replaced with new trivia. + + The trivia element to replace. + The trivia to replace the element with. + + + + Creates a new with the specified element replaced with new trivia. + + The trivia element to replace. + The trivia to replace the element with. + + + + get the green node at the specific slot + + + + + Copy number of items starting at from this list into starting at . + + + + + Reversed enumerable. + + + + + Walks the syntax tree, allowing subclasses to operate on all nodes, token and trivia. The + walker will perform a depth first walk of the tree. + + + + + Syntax the should descent into. + + + + + Creates a new walker instance. + + Syntax the should descent into. + + + + Called when the walker visits a node. This method may be overridden if subclasses want + to handle the node. Overrides should call back into this base method if they want the + children of this node to be visited. + + The current node that the walker is visiting. + + + + Called when the walker visits a token. This method may be overridden if subclasses want + to handle the token. Overrides should call back into this base method if they want the + trivia of this token to be visited. + + The current token that the walker is visiting. + + + + Called when the walker visits a trivia syntax. This method may be overridden if + subclasses want to handle the token. Overrides should call back into this base method if + they want the children of this trivia syntax to be visited. + + The current trivia syntax that the walker is visiting. + + + + Syntax the should descent into. + + + + + descend into only nodes + + + + + descend into nodes and tokens + + + + + descend into nodes, tokens and trivia + + + + + descend into everything + + + + + This is ONLY used id BoundNode.cs Debug method - Dump() + + + + + This is ONLY used for debugging purpose + + + + + Parses a version string of the form "major [ '.' minor [ '.' build [ '.' revision ] ] ]". + + The version string to parse. + If parsing succeeds, the parsed version. Otherwise a version that represents as much of the input as could be parsed successfully. + True when parsing succeeds completely (i.e. every character in the string was consumed), false otherwise. + + + + Parses a version string of the form "major [ '.' minor [ '.' ( '*' | ( build [ '.' ( '*' | revision ) ] ) ) ] ]" + as accepted by System.Reflection.AssemblyVersionAttribute. + + The version string to parse. + Indicates whether or not a wildcard is accepted as the terminal component. + + If parsing succeeded, the parsed version. Otherwise a version instance with all parts set to zero. + If contains * the version build and/or revision numbers are set to . + + True when parsing succeeds completely (i.e. every character in the string was consumed), false otherwise. + + + + Parses a version string of the form "major [ '.' minor [ '.' ( '*' | ( build [ '.' ( '*' | revision ) ] ) ) ] ]" + as accepted by System.Reflection.AssemblyVersionAttribute. + + The version string to parse. + Indicates whether or not we're parsing an assembly version string. If so, wildcards are accepted and each component must be less than 65535. + The maximum value that a version component may have. + Allow the parsing of version elements where invalid characters exist. e.g. 1.2.2a.1 + + If parsing succeeded, the parsed version. When is true a version with values up to the first invalid character set. Otherwise a version with all parts set to zero. + If contains * and wildcard is allowed the version build and/or revision numbers are set to . + + True when parsing succeeds completely (i.e. every character in the string was consumed), false otherwise. + + + + If build and/or revision numbers are 65535 they are replaced with time-based values. + + + + + This function defines whether an attribute is optional or not. + + The attribute member. + + + + Ids of well known runtime types. + Values should not intersect with SpecialType enum! + + + + + + Number of well known types in WellKnownType enum + + + + + Array of names for types. + The names should correspond to ids from WellKnownType enum so + that we could use ids to index into the array + + + + + + Resolves references to XML files specified in the source. + + + + + Resolves XML document file path. + + + Value of the "file" attribute of an <include> documentation comment element. + + + Path of the source file () or XML document that contains the . + If not null used as a base path of , if is relative. + If is relative is used as the base path of . + + Normalized XML document file path or null if not found. + + + + The XmlCharType class is used for quick character type recognition + which is optimized for the first 127 ascii characters. + + + + + start >= value <= end + + + + + Struct containing information about a source declaration. + + + + + Topmost syntax node for this declaration. + + + + + Syntax nodes for executable code blocks (method body, initializers, etc.) associated with this declaration. + + + + + Symbol declared by this declaration. + + + + + Realizes the array. + + + + + Write to slot . + Fills in unallocated slots preceding the , if any. + + + + + Realizes the array. + + + + + Realizes the array, downcasting each element to a derived type. + + + + + Realizes the array and disposes the builder in one operation. + + + + + struct enumerator used in foreach. + + + + + This class is used to store the module serialization properties for a compilation. + + + + + The alignment factor (in bytes) that is used to align the raw data of sections in the image file. + The value should be a power of 2 between 512 and 64K, inclusive. The default is 512. + + + + + The alignment (in bytes) of sections when they are loaded into memory. + It must be greater than or equal to . + The default is the page size for the architecture. + + + + + Identifies the version of the CLR that is required to load this module or assembly. + + + + + Specifies the target CPU. means AnyCPU. + + + + + True if the module contains only IL and is processor independent. Should there be a choice between launching as a 64-bit or 32-bit + process, this setting will cause the host to launch it as a 32-bit process. + + + + + The first part of a two part version number indicating the version of the format used to persist this module. For example, the 1 in 1.0. + + + + + The second part of a two part version number indicating the version of the format used to persist this module. For example, the 0 in 1.0. + + + + + A globally unique persistent identifier for this module. + + + + + True if the module contains only IL and is processor independent. + + + + + True if the instructions in this module must be compiled in such a way that the debugging experience is not compromised. + To set the value of this property, add an instance of System.Diagnostics.DebuggableAttribute to the MetadataAttributes list. + + + + + The preferred memory address at which the module is to be loaded at runtime. + + + + + The size of the virtual memory to reserve for the initial process heap. + Must fit into 32 bits if the target platform is 32 bit. + + + + + The size of the virtual memory initially committed for the initial process heap. + Must fit into 32 bits if the target platform is 32 bit. + + + + + The size of the virtual memory to reserve for the initial thread's stack. + Must fit into 32 bits if the target platform is 32 bit. + + + + + The first part of a two part version number indicating the version of the linker that produced this module. For example, the 8 in 8.0. + + + + + The first part of a two part version number indicating the version of the linker that produced this module. For example, the 0 in 8.0. + + + + + Flags that control the behavior of the target operating system. CLI implementations are supposed to ignore this, but some operating system pay attention. + + + + + If set, the module must include a machine code stub that transfers control to the virtual execution system. + + + + + If set, the module contains instructions or assumptions that are specific to the AMD 64 bit instruction set. + + + + + If set, the module contains instructions that assume a 32 bit instruction set. For example it may depend on an address being 32 bits. + This may be true even if the module contains only IL instructions because of PlatformInvoke and COM interop. + + + + + If set, the module contains instructions that assume a 64 bit instruction set. For example it may depend on an address being 64 bits. + This may be true even if the module contains only IL instructions because of PlatformInvoke and COM interop. + + + + + Compares the current content of this writer with another one. + + + + Range specified by and falls outside of the bounds of the buffer content. + + + Range specified by and falls outside of the bounds of the buffer content. + + + is negative. + + + is null. + is negative. + + + is null. + + + is null. + is negative. + + + is null. + + + is null. + Range specified by and falls outside of the bounds of the . + + + is null. + + + is null. + Range specified by and falls outside of the bounds of the . + + + + Writes a reference to a heap (heap index) or a table (row id). + + + References may be small (2B) or large (4B). + + + + + Writes UTF16 (little-endian) encoded string at the current position. + + is null. + + + + Writes UTF16 (little-endian) encoded string at the current position. + + is null. + + + + Writes string in SerString format (see ECMA-335-II 23.3 Custom attributes): + The string is UTF8 encoded and prefixed by the its size in bytes. + Null string is represented as a single byte 0xFF. + + + + + Writes UTF8 encoded string at the current position. + + is null. + + + + Implements compressed signed integer encoding as defined by ECMA-335-II chapter 23.2: Blobs and signatures. + + + If the value lies between -64 (0xFFFFFFC0) and 63 (0x3F), inclusive, encode as a one-byte integer: + bit 7 clear, value bits 5 through 0 held in bits 6 through 1, sign bit (value bit 31) in bit 0. + + If the value lies between -8192 (0xFFFFE000) and 8191 (0x1FFF), inclusive, encode as a two-byte integer: + 15 set, bit 14 clear, value bits 12 through 0 held in bits 13 through 1, sign bit(value bit 31) in bit 0. + + If the value lies between -268435456 (0xF000000) and 268435455 (0x0FFFFFFF), inclusive, encode as a four-byte integer: + 31 set, 30 set, bit 29 clear, value bits 27 through 0 held in bits 28 through 1, sign bit(value bit 31) in bit 0. + + can't be represented as a compressed signed integer. + + + + Implements compressed unsigned integer encoding as defined by ECMA-335-II chapter 23.2: Blobs and signatures. + + + If the value lies between 0 (0x00) and 127 (0x7F), inclusive, + encode as a one-byte integer (bit 7 is clear, value held in bits 6 through 0). + + If the value lies between 28 (0x80) and 214 – 1 (0x3FFF), inclusive, + encode as a 2-byte integer with bit 15 set, bit 14 clear(value held in bits 13 through 0). + + Otherwise, encode as a 4-byte integer, with bit 31 set, bit 30 set, bit 29 clear (value held in bits 28 through 0). + + can't be represented as a compressed signed integer. + + + + Writes a constant value (see ECMA-335 Partition II section 22.9) at the current position. + + is not of a constant type. + + + + The type of target machine. + + + + + The number of sections. This indicates the size of the section table, which immediately follows the headers. + + + + + The low 32 bits of the number of seconds since 00:00 January 1, 1970, that indicates when the file was created. + + + + + The file pointer to the COFF symbol table, or zero if no COFF symbol table is present. + This value should be zero for a PE image. + + + + + The number of entries in the symbol table. This data can be used to locate the string table, + which immediately follows the symbol table. This value should be zero for a PE image. + + + + + The size of the optional header, which is required for executable files but not for object files. + This value should be zero for an object file. + + + + + The flags that indicate the attributes of the file. + + + + + Represents a value on #String heap that has not been serialized yet. + + + + + Represents a value on #Blob heap that has not been serialized yet. + + + + + Fills in stringIndexMap with data from stringIndex and write to stringWriter. + Releases stringIndex as the stringTable is sealed after this point. + + + + + Sorts strings such that a string is followed immediately by all strings + that are a suffix of it. + + + + + Import scopes are associated with binders (in C#) and thus multiple instances might be created for a single set of imports. + We consider scopes with the same parent and the same imports the same. + Internal for testing. + + + + + This is the maximum length of a type or member name in metadata, assuming + the name is in UTF-8 format and not (yet) null-terminated. + + + Source names may have to be shorter still to accommodate mangling. + Used for event names, field names, property names, field names, method def names, + member ref names, type def (full) names, type ref (full) names, exported type + (full) names, parameter names, manifest resource names, and unmanaged method names + (ImplMap table). + + See CLI Part II, section 22. + + + + + This is the maximum length of a path in metadata, assuming the path is in UTF-8 + format and not (yet) null-terminated. + + + Used for file names, module names, and module ref names. + + See CLI Part II, section 22. + + + + + This is the maximum length of a string in the PDB, assuming it is in UTF-8 format + and not (yet) null-terminated. + + + Used for import strings, locals, and local constants. + + + + + Returns true if writing full metadata, false if writing delta. + + + + + True if writing delta metadata in a minimal format. + + + + + NetModules and EnC deltas don't have AssemblyDef record. + We don't emit it for EnC deltas since assembly identity has to be preserved across generations (CLR/debugger get confused otherwise). + + + + + Returns metadata generation ordinal. Zero for + full metadata and non-zero for delta. + + + + + Returns unique Guid for this delta, or default(Guid) + if full metadata. + + + + + Returns Guid of previous delta, or default(Guid) + if full metadata or generation 1 delta. + + + + + Returns true and the 1-based index of the type definition + if the type definition is recognized. Otherwise returns false. + The index is into the full metadata. + + + + + The 1-based index of the type definition. + The index is into the full metadata. + + + + + The type definition at the 0-based index into the full set. Deltas + are only required to support indexing into current generation. + + + + + The type definitions to be emitted, in row order. These + are just the type definitions from the current generation. + + + + + The 1-based index of the event definition. + The index is into the full metadata. + + + + + The event definitions to be emitted, in row order. These + are just the event definitions from the current generation. + + + + + The 1-based index of the field definition. + The index is into the full metadata. + + + + + The field definitions to be emitted, in row order. These + are just the field definitions from the current generation. + + + + + Returns true and the 1-based index of the method definition + if the method definition is recognized. Otherwise returns false. + The index is into the full metadata. + + + + + The 1-based index of the method definition. + The index is into the full metadata. + + + + + The method definition at the 0-based index into the full set. Deltas + are only required to support indexing into current generation. + + + + + The method definitions to be emitted, in row order. These + are just the method definitions from the current generation. + + + + + The 1-based index of the property definition. + The index is into the full metadata. + + + + + The property definitions to be emitted, in row order. These + are just the property definitions from the current generation. + + + + + The 1-based index of the parameter definition. + The index is into the full metadata. + + + + + The parameter definitions to be emitted, in row order. These + are just the parameter definitions from the current generation. + + + + + The generic parameter definitions to be emitted, in row order. These + are just the generic parameter definitions from the current generation. + + + + + The 1-based index of the first field of the type. + + + + + The 1-based index of the first method of the type. + + + + + The 1-based index of the first parameter of the method. + + + + + Return the 1-based index of the assembly reference, adding + the reference to the index for this generation if missing. + The index is into the full metadata. However, deltas + are not required to return rows from previous generations. + + + + + The assembly references to be emitted, in row order. These + are just the assembly references from the current generation. + + + + + Return the 1-based index of the module reference, adding + the reference to the index for this generation if missing. + The index is into the full metadata. However, deltas + are not required to return rows from previous generations. + + + + + The module references to be emitted, in row order. These + are just the module references from the current generation. + + + + + Return the 1-based index of the member reference, adding + the reference to the index for this generation if missing. + The index is into the full metadata. However, deltas + are not required to return rows from previous generations. + + + + + The member references to be emitted, in row order. These + are just the member references from the current generation. + + + + + Return the 1-based index of the method spec, adding + the spec to the index for this generation if missing. + The index is into the full metadata. However, deltas + are not required to return rows from previous generations. + + + + + The method specs to be emitted, in row order. These + are just the method specs from the current generation. + + + + + Return true and the 1-based index of the type reference + if the reference is available in the current generation. + The index is into the full metadata. However, deltas + are not required to return rows from previous generations. + + + + + Return the 1-based index of the type reference, adding + the reference to the index for this generation if missing. + The index is into the full metadata. However, deltas + are not required to return rows from previous generations. + + + + + The type references to be emitted, in row order. These + are just the type references from the current generation. + + + + + Return the 1-based index of the type spec, adding + the spec to the index for this generation if missing. + The index is into the full metadata. However, deltas + are not required to return rows from previous generations. + + + + + The type specs to be emitted, in row order. These + are just the type specs from the current generation. + + + + + Return the 1-based index of the signature index, adding + the signature to the index for this generation if missing. + The index is into the full metadata. However, deltas + are not required to return rows from previous generations. + + + + + The signature indices to be emitted, in row order. These + are just the signature indices from the current generation. + + + + + Return a visitor for traversing all references to be emitted. + + + + + Populate EventMap table. + + + + + Populate PropertyMap table. + + + + + Populate EncLog table. + + + + + Populate EncMap table. + + + + + Returns a reference to the unit that defines the given referenced type. If the referenced type is a structural type, such as a pointer or a generic type instance, + then the result is null. + + + + + The Microsoft CLR requires that {namespace} + "." + {name} fit in MAX_CLASS_NAME + (even though the name and namespace are stored separately in the Microsoft + implementation). Note that the namespace name of a nested type is always blank + (since comes from the container). + + We're trying to add the containing namespace of this type to the string heap. + Namespace names are never used on their own - this is the type that is adding the namespace name. + Used only for length checking. + + + + Test the given name to see if it fits in metadata. + + String to test (non-null). + Max length for name. (Expected to be at least 5.) + True if the name is too long. + Internal for test purposes. + + + + Serialize the method local signature to the blob. + + Standalone signature token + + + + Computes the string representing the strong name of the given assembly reference. + + + + + Visitor to force translation of all symbols that will be referred to + in metadata. Allows us to build the set of types that must be embedded + as local types. + + + + + Strip off *, &, and []. + + + + + Qualified name of namespace. + e.g. "A.B.C" + + + + + The offset of the first operation in the scope. + + + + + The offset of the first operation outside of the scope, or the method body length. + + + + + An object corresponding to a metadata entity such as a type or a field. + + + + + An object corresponding to reference to a metadata entity such as a type or a field. + + + + + A collection of metadata custom attributes that are associated with this definition. + + + + + Calls the visitor.Visit(T) method where T is the most derived object model node interface type implemented by the concrete type + of the object implementing IDefinition. The dispatch method does not invoke Dispatch on any child objects. If child traversal + is desired, the implementations of the Visit methods should do the subsequent dispatching. + + + + + Gets the definition object corresponding to this reference within the given context, + or null if the referenced entity isn't defined in the context. + + + + + Constants for producing and consuming streams of binary custom debug info. + + + + + Returns true if the namespace scope for this method should be forwarded to another method. + Returns non-null if the forwarding should be done directly via UsingNamespace, + null if the forwarding is done via custom debug info. + + + + + Use to create a document when checksum is computed based on actual source stream. + + + + + Use to create a document when checksum is suggested via external checksum pragma/directive + + + + + returns true when checksum was computed base on an actual source stream + as opposed to be suggested via a checksum directive/pragma + + + + + A region representing an exception handler clause. The region exposes the type (catch or + finally) and the bounds of the try block and catch or finally block as needed by + + + + + Handler kind for this SEH info + + + + + If HandlerKind == HandlerKind.Catch, this is the type of exception to catch. If HandlerKind == HandlerKind.Filter, this is System.Object. + Otherwise this is a Dummy.TypeReference. + + + + + Label instruction corresponding to the start of filter decision block + + + + + Label instruction corresponding to the start of try block + + + + + Label instruction corresponding to the end of try block + + + + + Label instruction corresponding to the start of handler block + + + + + Label instruction corresponding to the end of handler block + + + + + An expression that does not change its value at runtime and can be evaluated at compile time. + + + + + The compile time value of the expression. Null to represent a null object reference or a null array. + + + + + An expression that creates an array instance in metadata. Only for use in custom attributes. + + + + + The element type of the array. + + + + + The values of the array elements. May be empty to represent an empty array. + + + + + The number of elements in the array. + + + + + An expression that can be represented directly in metadata. + + + + + Calls the visitor.Visit(T) method where T is the most derived object model node interface type implemented by the concrete type + of the object implementing IStatement. The dispatch method does not invoke Dispatch on any child objects. If child traversal + is desired, the implementations of the Visit methods should do the subsequent dispatching. + + + + + The type of value the expression represents. + + + + + An expression that represents a (name, value) pair and that is typically used in method calls, custom attributes and object initializers. + + + + + The name of the parameter or property or field that corresponds to the argument. + + + + + The value of the argument. + + + + + True if the named argument provides the value of a field. + + + + + An expression that results in a System.Type instance. + + + + + The type that will be represented by the System.Type instance. + + + + + Represents an assembly reference with an alias (C# only, /r:Name=Reference on command line). + + + + + An alias for the global namespace of the assembly. + + + + + The assembly reference. + + + + + A metadata custom attribute. + + + + + Zero or more positional arguments for the attribute constructor. + + + + + A reference to the constructor that will be used to instantiate this custom attribute during execution (if the attribute is inspected via Reflection). + + + + + Zero or more named arguments that specify values for fields and properties of the attribute. + + + + + The number of positional arguments. + + + + + The number of named arguments. + + + + + The type of the attribute. For example System.AttributeUsageAttribute. + + + + + Whether attribute allows multiple. + + + + + Represents a file referenced by an assembly. + + + + + True if the file has metadata. + + + + + File name with extension. + + + + + A hash of the file contents. + + + + + The highest version of the interface available on Desktop FX 4.0+. + + + + + has type , rather than , + so that we can do custom marshalling of . Unfortunately, .NET marshals + s as the number of days since 1899/12/30, whereas the native VB compiler + marshalled them as the number of ticks since the Unix epoch (i.e. a much, much larger number). + + + + + Open a special custom data section to emit token to source span mapping information into. + Opening this section while a method is already open or vice versa is an error. + + + + + Close the special custom data section for token to source span mapping + information. Once it is closed no more mapping information can be added. + + + + + Maps the given metadata token to the given source line span in the specified source file. + Must be called between calls to and . + + + + + The highest version of the interface available in Microsoft.DiaSymReader.Native. + + + + + A struct with the same size and layout as the native VARIANT type: + 2 bytes for a discriminator (i.e. which type of variant it is). + 6 bytes of padding + 8 or 16 bytes of data + + + + + This field determines the size of the struct + (16 bytes on 32-bit platforms, 24 bytes on 64-bit platforms). + + + + + This type is 8 bytes on a 32-bit platforms and 16 bytes on 64-bit platforms. + + + + + A range of CLR IL operations that comprise a lexical scope. + + + + + The offset of the first operation in the scope. + + + + + The offset of the first operation outside of the scope, or the method body length. + + + + + Returns zero or more local constant definitions that are local to the given scope. + + + + + Returns zero or more local variable definitions that are local to the given scope. + + + + + streamProvider callers will dispose result after use. + and are mutually exclusive. + + + + + Specifies how the caller passes parameters to the callee and who cleans up the stack. + + + + + C/C++ style calling convention for unmanaged methods. The call stack is cleaned up by the caller, + which makes this convention suitable for calling methods that accept extra arguments. + + + + + The convention for calling managed methods with a fixed number of arguments. + + + + + The convention for calling managed methods that accept extra arguments. + + + + + Arguments are passed in registers when possible. This calling convention is not yet supported. + + + + + Win32 API calling convention for calling unmanaged methods via PlatformInvoke. The call stack is cleaned up by the callee. + + + + + C++ member unmanaged method (non-vararg) calling convention. The callee cleans the stack and the this pointer is pushed on the stack last. + + + + + The convention for calling a generic method. + + + + + The convention for calling an instance method with an implicit this parameter (the method does not have an explicit parameter definition for this). + + + + + The convention for calling an instance method that explicitly declares its first parameter to correspond to the this instance. + + + + + An event is a member that enables an object or class to provide notifications. Clients can attach executable code for events by supplying event handlers. + This interface models the metadata representation of an event. + + + + + A list of methods that are associated with the event. + + + + + The method used to add a handler to the event. + + + + + The method used to call the event handlers when the event occurs. May be null. + + + + + True if the event gets special treatment from the runtime. + + + + + This event is special in some way, as specified by the name. + + + + + The method used to add a handler to the event. + + + + + The (delegate) type of the handlers that will handle the event. + + + + + A field is a member that represents a variable associated with an object or class. + This interface models the metadata representation of a field. + + + + + The compile time value of the field. This value should be used directly in IL, rather than a reference to the field. + If the field does not have a valid compile time value, Dummy.Constant is returned. + + + + + Mapped field data, or null if the field is not mapped. + + + + + This field is a compile-time constant. The field has no runtime location and cannot be directly addressed from IL. + + + + + This field has associated field marshalling information. + + + + + The field does not have to be serialized when its containing instance is serialized. + + + + + This field can only be read. Initialization takes place in a constructor. + + + + + True if the field gets special treatment from the runtime. + + + + + This field is special in some way, as specified by the name. + + + + + This field is static (shared by all instances of its declaring type). + + + + + Specifies how this field is marshalled when it is accessed from unmanaged code. + + + + + Checked if IsMarshalledExplicitly == true and MarshallingInformation is null + + + + + Offset of the field. + + + + + A reference to a field. + + + + + The type of value that is stored in this field. + + + + + The Field being referred to. + + + + + True, if field is an IContextualNamedEntity, even if field reference implements the interface, + doesn't mean it is contextual. + + + + + An object that represents a local variable or constant. + + + + + The compile time value of the definition, if it is a local constant. + + + + + Custom modifiers associated with local variable definition. + + + + + TODO: use instead. + True if the value referenced by the local must not be moved by the actions of the garbage collector. + + + + + TODO: use instead. + True if the local contains a managed pointer (for example a reference to a local variable or a reference to a field of an object). + + + + + True if the local variable is of type Dynamic. + + + + + Each local has an attributes field in the PDB. To match the native compiler, + we emit "1" for locals that should definitely not bind in the debugger and "0" + for all other locals. + + + A value of "1" is a sufficient, but not a necessary, condition for hiding the + local in the debugger. Locals with value "0" may also be hidden. + + Hidden locals must still be emitted because they participate in evaluation. + + + + + Should return the synthesized dynamic attributes of the local definition if any. Else null. + + + + + The type of the local. + + + + + Location for reporting diagnostics about the local. + + + Use rather than null. + + + + + Slot index or -1 if not applicable. + + + + + Optional serialized local signature. + + + + + Local id, or if this is a local constant, short-lived temp variable, + or we are not emitting local variable ids (release builds). + + + + + Represents additional info needed by async method implementation methods + (MoveNext() methods) to properly emit necessary PDB data for async debugging. + + + + + Original async method transformed into MoveNext() + + + + + IL offset of catch handler or -1 + + + + + Set of IL offsets where await operators yield control + + + + + Set of IL offsets where await operators are to be resumed + + + + + A metadata (IL) level representation of the body of a method or of a property/event accessor. + + + + + Calls the visitor.Visit(T) method where T is the most derived object model node interface type implemented by the concrete type + of the object implementing IDoubleDispatcher. The dispatch method does not invoke Dispatch on any child objects. If child traversal + is desired, the implementations of the Visit methods should do the subsequent dispatching. + + + + + A list exception data within the method body IL. + + + + + True if the locals are initialized by zeroing the stack upon method entry. + + + + + The local variables of the method. + + + + + The definition of the method whose body this is. + If this is the body of an event or property accessor, this will hold the corresponding adder/remover/setter or getter method. + + + + + Debugging information associated with an async method to support EE. + + + + + The maximum number of elements on the evaluation stack during the execution of the method. + + + + + Returns true if there is at least one dynamic local within the MethodBody + + + + + Returns zero or more local (block) scopes into which the CLR IL operations in the given method body is organized. + + + + + Returns an import scope the method is declared within, or null if there is none + (e.g. the method doesn't contain user code). + + + The chain is a spine of a tree in a forest of import scopes. A tree of import scopes is created by the language for each source file + based on namespace declarations. In VB each tree is trivial single-node tree that declares the imports of a file. + In C# the tree copies the nesting of namespace declarations in the file. There is a separate scope for each dotted component in + the namespace type name. For instance namespace type x.y.z will have two namespace scopes, the first is for the x and the second + is for the y. + + + + + Returns debug information for local variables hoisted to state machine fields, + or null if this method isn't MoveNext method of a state machine. + + + Returns zero or more local (block) scopes, each defining an IL range in which an iterator local is defined. + The scopes are returned for the MoveNext method of the object returned by the iterator method. + The index of the scope corresponds to the index of the local. Specifically local scope i corresponds + to the local stored in a field named <localName>5__i of the class used to store the local values in + between calls to MoveNext, where localName is the original name of the local variable. For example, if + the first local to be moved into the class is named "xyzzy", it will be stored in a field named + "<xyzzy>5__1", and the ILocalScope returned from this method at index 1 (i.e. the second one) will + have the scope information for where that variable is in scope. + + + + + The name of the state machine generated for the method, + or null if the method isn't the kickoff method of a state machine. + + + + + Returns information relevant to EnC on slots of local variables hoisted to state machine fields, + or null if the method isn't the kickoff method of a state machine. + + + + + Returns types of awaiter slots allocated on the state machine, + or null if the method isn't the kickoff method of a state machine. + + + + + This interface models the metadata representation of a method. + + + + + A container for a list of IL instructions providing the implementation (if any) of this method. + + + When emitting metadata-only assemblies this returns null even if returns true. + + + + + If the method is generic then this list contains the type parameters. + + + + + Returns true if this symbol was automatically created by the compiler, and does not have + an explicit corresponding source code declaration. + + + + + True if this method has a non empty collection of SecurityAttributes or the System.Security.SuppressUnmanagedCodeSecurityAttribute. + + + + + True if the method does not provide an implementation. + + + + + True if the method can only be overridden when it is also accessible. + + + + + True if the method is a constructor. + + + + + True if the method has an external implementation (i.e. not supplied by this definition). + + + If the method is not external and not abstract it has to provide an IL body. + + + + + True if this method is hidden if a derived type declares a method with the same name and signature. + If false, any method with the same name hides this method. This flag is ignored by the runtime and is only used by compilers. + + + + + The method always gets a new slot in the virtual method table. + This means the method will hide (not override) a base type method with the same name and signature. + + + + + True if the method is implemented via the invocation of an underlying platform method. + + + + + True if the method gets special treatment from the runtime. For example, it might be a constructor. + + + + + True if the method may not be overridden. + + + + + True if the method is special in some way for tools. For example, it might be a property getter or setter. + + + + + True if the method does not require an instance of its declaring type as its first argument. + + + + + True if the method may be overridden (or if it is an override). + + + + + Implementation flags. + + + + + The parameters forming part of this signature. + + + + + Detailed information about the PInvoke stub. Identifies which method to call, which module has the method and the calling convention among other things. + + + + + True if the method calls another method containing security code. If this flag is set, the method + should have System.Security.DynamicSecurityMethodAttribute present in its list of custom attributes. + + + + + Custom attributes associated with the method's return value. + + + + + The return value has associated marshalling information. + + + + + Specifies how the return value is marshalled when the method is called from unmanaged code. + + + + + Checked if ReturnValueIsMarshalledExplicitly == true and ReturnValueMarshallingInformation is null + + + + + Declarative security actions for this method. + + + + + Namespace containing this method. + TODO: Ideally we would expose INamespace on INamespaceTypeDefinition. Right now we can only get the qualified namespace name. + + + + + This interface models the metadata representation of a method or property parameter. + + + + + A compile time constant value that should be supplied as the corresponding argument value by callers that do not explicitly specify an argument value for this parameter. + Null if the parameter doesn't have default value. + + + + + True if the parameter has a default value that should be supplied as the argument value by a caller for which the argument value has not been explicitly specified. + + + + + True if the argument value must be included in the marshalled arguments passed to a remote callee. + + + + + This parameter has associated marshalling information. + + + + + True if the argument value must be included in the marshalled arguments passed to a remote callee only if it is different from the default value (if there is one). + + + + + True if the final value assigned to the parameter will be marshalled with the return values passed back from a remote callee. + + + + + Specifies how this parameter is marshalled when it is accessed from unmanaged code. + + + + + Checked if IsMarshalledExplicitly == true and MarshallingInformation is null + + + + + A property is a member that provides access to an attribute of an object or a class. + This interface models the metadata representation of a property. + + + + + A list of methods that are associated with the property. + + + + + A compile time constant value that provides the default value for the property. (Who uses this and why?) + + + + + The method used to get the value of this property. May be absent (null). + + + + + True if this property has a compile time constant associated with that serves as a default value for the property. (Who uses this and why?) + + + + + True if this property gets special treatment from the runtime. + + + + + True if this property is special in some way, as specified by the name. + + + + + The parameters forming part of this signature. + + + + + The method used to set the value of this property. May be absent (null). + + + + + The parameters and return type that makes up a method or property signature. + This interface models the metadata representation of a signature. + + + + + Calling convention of the signature. + + + + + The number of required parameters of the signature. + + + + + The parameters forming part of this signature. + + + + + Returns the list of custom modifiers, if any, associated with the returned value. Evaluate this property only if ReturnValueIsModified is true. + + + + + True if the return value is passed by reference (using a managed pointer). + + + + + The return type of the method or type of the property. + + + + + A member of a type definition, such as a field or a method. + This interface models the metadata representation of a type member. + + + + + The type definition that contains this member. + + + + + Indicates if the member is public or confined to its containing type, derived types and/or declaring assembly. + + + + + A reference to a member of a type, such as a field or a method. + This interface models the metadata representation of a type member reference. + + + + + A reference to the containing type of the referenced type member. + + + + + Represents the specialized event definition. + + + + + The event that has been specialized to obtain this event. When the containing type is an instance of type which is itself a specialized member (i.e. it is a nested + type of a generic type instance), then the unspecialized member refers to a member from the unspecialized containing type. (I.e. the unspecialized member always + corresponds to a definition that is not obtained via specialization.) + + + + + Represents reference specialized field. + + + + + A reference to the field definition that has been specialized to obtain the field definition referred to by this field reference. + When the containing type of the referenced specialized field definition is itself a specialized nested type of a generic type instance, + then the unspecialized field reference refers to the corresponding field definition from the unspecialized containing type definition. + (I.e. the unspecialized field reference always refers to a field definition that is not obtained via specialization.) + + + + + Represents reference specialized method. + + + + + A reference to the method definition that has been specialized to obtain the method definition referred to by this method reference. + When the containing type of the referenced specialized method definition is itself a specialized nested type of a generic type instance, + then the unspecialized method reference refers to the corresponding method definition from the unspecialized containing type definition. + (I.e. the unspecialized method reference always refers to a method definition that is not obtained via specialization.) + + + + + Represents the specialized property definition. + + + + + The property that has been specialized to obtain this property. When the containing type is an instance of type which is itself a specialized member (i.e. it is a nested + type of a generic type instance), then the unspecialized member refers to a member from the unspecialized containing type. (I.e. the unspecialized member always + corresponds to a definition that is not obtained via specialization.) + + + + + A reference to a method. + + + + + True if the call sites that references the method with this object supply extra arguments. + + + + + The number of generic parameters of the method. Zero if the referenced method is not generic. + + + + + True if the method has generic parameters; + + + + + The method being referred to. + + + + + Information about this types of the extra arguments supplied at the call sites that references the method with this object. + + + + + A reference to generic method instantiated with a list of type arguments. + + + + + The type arguments that were used to instantiate this.GenericMethod in order to create this method. + + + + + Returns the generic method of which this method is an instance. + + + + + Represents a global field in symbol table. + + + + + Represents a global method in symbol table. + + + + + The name of the method. + + + + + Returns a sequence of all blobs that represent the content of the builder. + + Content is not available, the builder has been linked with another one. + + + + Compares the current content of this writer with another one. + + Content is not available, the builder has been linked with another one. + + + Content is not available, the builder has been linked with another one. + + + Range specified by and falls outside of the bounds of the buffer content. + Content is not available, the builder has been linked with another one. + + + Content is not available, the builder has been linked with another one. + + + Range specified by and falls outside of the bounds of the buffer content. + Content is not available, the builder has been linked with another one. + + + is null. + Content is not available, the builder has been linked with another one. + + + is default(). + Content is not available, the builder has been linked with another one. + + + is null. + Content is not available, the builder has been linked with another one. + + + is null. + Builder is not writable, it has been linked with another one. + + + is null. + Builder is not writable, it has been linked with another one. + + + + Reserves a contiguous block of bytes. + + is negative. + Builder is not writable, it has been linked with another one. + + + is negative. + Builder is not writable, it has been linked with another one. + + + is null. + is negative. + Builder is not writable, it has been linked with another one. + + + is null. + is negative. + Builder is not writable, it has been linked with another one. + Bytes successfully written from the . + + + is null. + Builder is not writable, it has been linked with another one. + + + is null. + Range specified by and falls outside of the bounds of the . + Builder is not writable, it has been linked with another one. + + + is null. + Builder is not writable, it has been linked with another one. + + + is null. + Range specified by and falls outside of the bounds of the . + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + + Writes a reference to a heap (heap index) or a table (row id). + + + References may be small (2B) or large (4B). + + Builder is not writable, it has been linked with another one. + + + + Writes UTF16 (little-endian) encoded string at the current position. + + is null. + Builder is not writable, it has been linked with another one. + + + + Writes UTF16 (little-endian) encoded string at the current position. + + is null. + Builder is not writable, it has been linked with another one. + + + + Writes string in SerString format (see ECMA-335-II 23.3 Custom attributes): + The string is UTF8 encoded and prefixed by the its size in bytes. + Null string is represented as a single byte 0xFF. + + Builder is not writable, it has been linked with another one. + + + + Writes UTF8 encoded string at the current position. + + is null. + Builder is not writable, it has been linked with another one. + + + + Implements compressed signed integer encoding as defined by ECMA-335-II chapter 23.2: Blobs and signatures. + + + If the value lies between -64 (0xFFFFFFC0) and 63 (0x3F), inclusive, encode as a one-byte integer: + bit 7 clear, value bits 5 through 0 held in bits 6 through 1, sign bit (value bit 31) in bit 0. + + If the value lies between -8192 (0xFFFFE000) and 8191 (0x1FFF), inclusive, encode as a two-byte integer: + 15 set, bit 14 clear, value bits 12 through 0 held in bits 13 through 1, sign bit(value bit 31) in bit 0. + + If the value lies between -268435456 (0xF000000) and 268435455 (0x0FFFFFFF), inclusive, encode as a four-byte integer: + 31 set, 30 set, bit 29 clear, value bits 27 through 0 held in bits 28 through 1, sign bit(value bit 31) in bit 0. + + can't be represented as a compressed signed integer. + Builder is not writable, it has been linked with another one. + + + + Implements compressed unsigned integer encoding as defined by ECMA-335-II chapter 23.2: Blobs and signatures. + + + If the value lies between 0 (0x00) and 127 (0x7F), inclusive, + encode as a one-byte integer (bit 7 is clear, value held in bits 6 through 0). + + If the value lies between 28 (0x80) and 214 – 1 (0x3FFF), inclusive, + encode as a 2-byte integer with bit 15 set, bit 14 clear(value held in bits 13 through 0). + + Otherwise, encode as a 4-byte integer, with bit 31 set, bit 30 set, bit 29 clear (value held in bits 28 through 0). + + can't be represented as a compressed integer. + Builder is not writable, it has been linked with another one. + + + + Writes a constant value (see ECMA-335 Partition II section 22.9) at the current position. + + is not of a constant type. + Builder is not writable, it has been linked with another one. + + + + Table row counts. + + + + + Non-empty tables that are emitted into the metadata table stream. + + + + + Non-empty tables stored in an external metadata table stream that might be referenced from the metadata table stream being emitted. + + + + + Exact (unaligned) heap sizes. + + + + + Overall size of metadata stream storage (stream headers, table stream, heaps, additional streams). + Aligned to . + + + + + The size of metadata stream (#- or #~). Aligned. + Aligned to . + + + + + The size of #Pdb stream. Aligned. + + + + + The size of IL stream. + + + + + The size of mapped field data stream. + Aligned to . + + + + + The size of managed resource data stream. + Aligned to . + + + + + Size of strong name hash. + + + + + Metadata header size. + Includes: + - metadata storage signature + - storage header + - stream headers + + + + + Total size of metadata (header and all streams). + + + + + A visitor base class that traverses the object model in depth first, left to right order. + + + + + Use this routine, rather than ITypeReference.Dispatch, to call the appropriate derived overload of an ITypeReference. + The former routine will call Visit(INamespaceTypeDefinition) rather than Visit(INamespaceTypeReference), etc., + in the case where a definition is used as a reference to itself. + + A reference to a type definition. Note that a type definition can serve as a reference to itself. + + + + Use this routine, rather than IUnitReference.Dispatch, to call the appropriate derived overload of an IUnitReference. + The former routine will call Visit(IAssembly) rather than Visit(IAssemblyReference), etc. + in the case where a definition is used as the reference to itself. + + A reference to a unit. Note that a unit can serve as a reference to itself. + + + + A container for static helper methods that are used for manipulating and computing iterators. + + + + + True if the given enumerable is not null and contains at least one element. + + + + + True if the given enumerable is null or contains no elements + + + + + Returns the number of elements in the given enumerable. A null enumerable is allowed and results in 0. + + + + + A declarative specification of a security action applied to a set of permissions. Used by the CLR loader to enforce security restrictions. + Each security attribute represents a serialized permission or permission set for a specified security action. + The union of the security attributes with identical security action, define the permission set to which the security action applies. + + + + + Information about how values of managed types should be marshalled to and from unmanaged types. + + + + + or a string (usually a fully-qualified type name of a type implementing the custom marshaller, but Dev11 allows any string). + + + + + An argument string (cookie) passed to the custom marshaller at run time. + + + + + The unmanaged element type of the unmanaged array. + -1 if it should be omitted from the marshal blob. + + + + + Specifies the index of the parameter that contains the value of the Interface Identifier (IID) of the marshalled object. + -1 if it should be omitted from the marshal blob. + + + + + The unmanaged type to which the managed type will be marshalled. This can be UnmanagedType.CustomMarshaler, in which case the unmanaged type + is decided at runtime. + + + + + The number of elements in the fixed size portion of the unmanaged array. + -1 if it should be omitted from the marshal blob. + + + + + The zero based index of the parameter in the unmanaged method that contains the number of elements in the variable portion of unmanaged array. + If -1, the variable portion is of size zero, or the caller conveys the size of the variable portion of the array to the unmanaged method in some other way. + + + + + The type to which the variant values of all elements of the safe array must belong. See also SafeArrayElementUserDefinedSubtype. + (The element type of a safe array is VARIANT. The "sub type" specifies the value of all of the tag fields (vt) of the element values. ) + -1 if it should be omitted from the marshal blob. + + + + + A reference to the user defined type to which the variant values of all elements of the safe array must belong. + (The element type of a safe array is VARIANT. The tag fields will all be either VT_DISPATCH or VT_UNKNOWN or VT_RECORD. + The "user defined sub type" specifies the type of value the ppdispVal/ppunkVal/pvRecord fields of the element values may point to.) + + + + + Implemented by any entity that has a name. + + + + + The name of the entity. + + + + + The name of the entity depends on other metadata (tokens, signatures) originated from + PeWriter. + + + + + Method must be called before calling INamedEntity.Name. + + + + + Implemented by an entity that is always a member of a particular parameter list, such as an IParameterDefinition. + Provides a way to determine the position where the entity appears in the parameter list. + + + + + The position in the parameter list where this instance can be found. + + + + + This enum is used internally by BCL. It includes flags that are not in the metadata spec. + + + + + Information that describes how a method from the underlying Platform is to be invoked. + + + + + Module providing the method/field. + + + + + Name of the method providing the implementation. + + + + + Flags that determine marshalling behavior. + + + + + A resource file formatted according to Win32 API conventions and typically obtained from a Portable Executable (PE) file. + See the Win32 UpdateResource method for more details. + + + + + A string that identifies what type of resource this is. Only valid if this.TypeId < 0. + + + + + An integer tag that identifies what type of resource this is. If the value is less than 0, this.TypeName should be used instead. + + + + + The name of the resource. Only valid if this.Id < 0. + + + + + An integer tag that identifies this resource. If the value is less than 0, this.Name should be used instead. + + + + + The language for which this resource is appropriate. + + + + + The code page for which this resource is appropriate. + + + + + The data of the resource. + + + + + Represents a lexical scope that declares imports. + + + + + Zero or more used namespaces. These correspond to using directives in C# or Imports syntax in VB. + Multiple invocations return the same array instance. + + + + + Parent import scope, or null. + + + + + Exception to enable callers to catch all of the exceptions originating + from writing PDBs. We resurface such exceptions as this type, to eventually + be reported as PDB-writing failure diagnostics to the user. + Unfortunately, an exception originating in a user-implemented + Stream derivation will come out of the symbol writer as a COMException + missing all of the original exception info. + + + + + A utility to log all operations and arguments to the native PDB writing + library, so that we can hash that log to generate a deterministic GUID and + timestamp. + + + + + Minimal size of PDB path in Debug Directory. We pad the path to this minimal size to + allow some tools to patch the path without the need to rewrite the entire image. + This is a workaround put in place until these tools are retired. + + + + + True if we should attempt to generate a deterministic output (no timestamps or random data). + + + + + Compute a deterministic Guid and timestamp based on the contents of the stream, and replace + the 16 zero bytes at the given position and one or two 4-byte values with that computed Guid and timestamp. + + PE stream. + Position in the stream of 16 zero bytes to be replaced by a Guid + Position in the stream of four zero bytes to be replaced by a timestamp + + + + The size of a single entry in the "Debug Directory (Image Only)" + + + + + The size of our debug directory: one entry for debug information, and an optional second one indicating + that the timestamp is deterministic (i.e. not really a timestamp) + + + + + Write one entry in the "Debug Directory (Image Only)" + See https://msdn.microsoft.com/en-us/windows/hardware/gg463119.aspx + section 5.1.1 (pages 71-72). + + + + + Write the entire "Debug Directory (Image Only)" along with data that it points to. + + + + + Special type <Module> + + + + + This interface models the metadata representation of an array type reference. + + + + + The type of the elements of this array. + + + + + This type of array is a single dimensional array with zero lower bound for index values. + + + + + A possibly empty list of lower bounds for dimension indices. When not explicitly specified, a lower bound defaults to zero. + The first lower bound in the list corresponds to the first dimension. Dimensions cannot be skipped. + + + + + The number of array dimensions. + + + + + A possible empty list of upper bounds for dimension indices. + The first upper bound in the list corresponds to the first dimension. Dimensions cannot be skipped. + An unspecified upper bound means that instances of this type can have an arbitrary upper bound for that dimension. + + + + + Modifies the set of allowed values for a type, or the semantics of operations allowed on those values. + Custom modifiers are not associated directly with types, but rather with typed storage locations for values. + + + + + If true, a language may use the modified storage location without being aware of the meaning of the modification. + + + + + A type used as a tag that indicates which type of modification applies to the storage location. + + + + + Information that describes a method or property parameter, but does not include all the information in a IParameterDefinition. + + + + + The list of custom modifiers, if any, associated with the parameter. Evaluate this property only if IsModified is true. + + + + + True if the parameter is passed by reference (using a managed pointer). + + + + + The CLI spec says that custom modifiers must precede the ByRef type code in the encoding of a parameter. + Unfortunately, the managed C++ compiler emits them in the reverse order. In order to avoid breaking + interop scenarios, we need to support such signatures. + + + + + The type of argument value that corresponds to this parameter. + + + + + The definition of a type parameter of a generic type or method. + + + + + A list of classes or interfaces. All type arguments matching this parameter must be derived from all of the classes and implement all of the interfaces. + + + + + True if all type arguments matching this parameter are constrained to be reference types. + + + + + True if all type arguments matching this parameter are constrained to be value types. + + + + + True if all type arguments matching this parameter are constrained to be value types or concrete classes with visible default constructors. + + + + + Indicates if the generic type or method with this type parameter is co-, contra-, or non variant with respect to this type parameter. + + + + + A reference to the definition of a type parameter of a generic type or method. + + + + + The definition of a type parameter of a generic method. + + + + + The generic method that defines this type parameter. + + + + + A reference to a type parameter of a generic method. + + + + + A reference to the generic method that defines the referenced type parameter. + + + + + A generic type instantiated with a list of type arguments + + + + + The type arguments that were used to instantiate this.GenericType in order to create this type. + + + + + Returns the generic type of which this type is an instance. + Equivalent to Symbol.OriginalDefinition + + + + + The definition of a type parameter of a generic type. + + + + + The generic type that defines this type parameter. + + + + + A reference to a type parameter of a generic type. + + + + + A reference to the generic type that defines the referenced type parameter. + + + + + A reference to a named type, such as an INamespaceTypeReference or an INestedTypeReference. + + + + + The number of generic parameters. Zero if the type is not generic. + + + + + If true, the persisted type name is mangled by appending "`n" where n is the number of type parameters, if the number of type parameters is greater than 0. + + + + + A named type definition, such as an INamespaceTypeDefinition or an INestedTypeDefinition. + + + + + A type definition that is a member of a namespace definition. + + + + + True if the type can be accessed from other assemblies. + + + + + Represents a namespace. + + + + + Containing namespace or null if this namespace is global. + + + + + A reference to a type definition that is a member of a namespace definition. + + + + + A reference to the unit that defines the referenced type. + + + + + Fully qualified name of the containing namespace. + + + + + A type definition that is a member of another type definition. + + + + + A type definition that is a member of another type definition. + + + + + A reference to a type definition that is a specialized nested type. + + + + + A reference to the nested type that has been specialized to obtain this nested type reference. When the containing type is an instance of type which is itself a specialized member (i.e. it is a nested + type of a generic type instance), then the unspecialized member refers to a member from the unspecialized containing type. (I.e. the unspecialized member always + corresponds to a definition that is not obtained via specialization.) + + + + + Models an explicit implementation or override of a base class virtual method or an explicit implementation of an interface method. + + + + + The type that is explicitly implementing or overriding the base class virtual method or explicitly implementing an interface method. + + + + + A reference to the method that provides the implementation. + + + + + The type that is explicitly implementing or overriding the base class virtual method or explicitly implementing an interface method. + + + + + A type reference that has custom modifiers associated with it. For example a reference to the target type of a managed pointer to a constant. + + + + + Returns the list of custom modifiers associated with the type reference. Evaluate this property only if IsModified is true. + + + + + An unmodified type reference. + + + + + This interface models the metadata representation of a pointer to a location in unmanaged memory. + + + + + The type of value stored at the target memory location. + + + + + This interface models the metadata representation of a managed pointer. + Remark: This should be only used in attributes. For other objects like Local variables etc + there is explicit IsReference field that should be used. + + + + + The type of value stored at the target memory location. + + + + + This interface models the metadata representation of a type. + + + + + The byte alignment that values of the given type ought to have. Must be a power of 2. If zero, the alignment is decided at runtime. + + + + + Returns null for interfaces and System.Object. + + + + + Zero or more events defined by this type. + + + + + Zero or more implementation overrides provided by the class. + + + + + Zero or more fields defined by this type. + + + + + Zero or more parameters that can be used as type annotations. + + + + + The number of generic parameters. Zero if the type is not generic. + + + + + True if this type has a non empty collection of SecurityAttributes or the System.Security.SuppressUnmanagedCodeSecurityAttribute. + + + + + Zero or more interfaces implemented by this type. + + + + + True if the type may not be instantiated. + + + + + Is type initialized anytime before first access to static field + + + + + Is this imported from COM type library + + + + + True if this type is parameterized (this.GenericParameters is a non empty collection). + + + + + True if the type is an interface. + + + + + True if this type gets special treatment from the runtime. + + + + + True if this type is serializable. + + + + + True if the type has special name. + + + + + True if the type is a Windows runtime type. + + + A type can me marked as a Windows runtime type in source by applying the WindowsRuntimeImportAttribute. + WindowsRuntimeImportAttribute is a pseudo custom attribute defined as an internal class in System.Runtime.InteropServices.WindowsRuntime namespace. + This is needed to mark Windows runtime types which are redefined in mscorlib.dll and System.Runtime.WindowsRuntime.dll. + These two assemblies are special as they implement the CLR's support for WinRT. + + + + + True if the type may not be subtyped. + + + + + Layout of the type. + + + + + Zero or more methods defined by this type. + + + + + Zero or more nested types defined by this type. + + + + + Zero or more properties defined by this type. + + + + + Declarative security actions for this type. Will be empty if this.HasSecurity is false. + + + + + Size of an object of this type. In bytes. If zero, the size is unspecified and will be determined at runtime. + + + + + Default marshalling of the Strings in this class. + + + + + A reference to a type. + + + + + True if the type is an enumeration (it extends System.Enum and is sealed). Corresponds to C# enum. + + + + + True if the type is a value type. + Value types are sealed and extend System.ValueType or System.Enum. + A type parameter for which MustBeValueType (the struct constraint in C#) is true also returns true for this property. + + + + + The type definition being referred to. + + + + + Unless the value of TypeCode is PrimitiveTypeCode.NotPrimitive, the type corresponds to a "primitive" CLR type (such as System.Int32) and + the type code identifies which of the primitive types it corresponds to. + + + + + TypeDefs defined in modules linked to the assembly being emitted are listed in the ExportedTypes table. + + + + + A enumeration of all of the value types that are built into the Runtime (and thus have specialized IL instructions that manipulate them). + + + + + A single bit. + + + + + An unsigned 16 bit integer representing a Unicode UTF16 code point. + + + + + A signed 8 bit integer. + + + + + A 32 bit IEEE floating point number. + + + + + A 64 bit IEEE floating point number. + + + + + A signed 16 bit integer. + + + + + A signed 32 bit integer. + + + + + A signed 64 bit integer. + + + + + A signed 32 bit integer or 64 bit integer, depending on the native word size of the underlying processor. + + + + + A pointer to fixed or unmanaged memory. + + + + + A reference to managed memory. + + + + + A string. + + + + + An unsigned 8 bit integer. + + + + + An unsigned 16 bit integer. + + + + + An unsigned 32 bit integer. + + + + + An unsigned 64 bit integer. + + + + + An unsigned 32 bit integer or 64 bit integer, depending on the native word size of the underlying processor. + + + + + A type that denotes the absence of a value. + + + + + Not a primitive type. + + + + + Type is a dummy type. + + + + + Enumerates the different kinds of levels of visibility a type member can have. + + + + + The visibility has not been specified. Use the applicable default. + + + + + The member is visible only within its own assembly. + + + + + The member is visible only within its own type and any subtypes. + + + + + The member is visible only within the intersection of its family (its own type and any subtypes) and assembly. + + + + + The member is visible only within the union of its family and assembly. + + + + + The member is visible only to the compiler producing its assembly. + + + + + The member is visible only within its own type. + + + + + The member is visible everywhere its declaring type is visible. + + + + + A mask that can be used to mask out flag bits when the latter are stored in the same memory word as this enumeration. + + + + + Enumerates the different kinds of variance a generic method or generic type parameter may have. + + + + + Two type or method instances are compatible only if they have exactly the same type argument for this parameter. + + + + + A type or method instance will match another instance if it has a type for this parameter that is the same or a subtype of the type the + other instance has for this parameter. + + + + + A type or method instance will match another instance if it has a type for this parameter that is the same or a supertype of the type the + other instance has for this parameter. + + + + + A mask that can be used to mask out flag bits when the latter are stored in the same memory word as the enumeration. + + + + + Represents a .NET assembly. + + + + + A list of the files that constitute the assembly. These are not the source language files that may have been + used to compile the assembly, but the files that contain constituent modules of a multi-module assembly as well + as any external resources. It corresponds to the File table of the .NET assembly file format. + + + + + A set of bits and bit ranges representing properties of the assembly. The value of can be set + from source code via the AssemblyFlags assembly custom attribute. The interpretation of the property depends on the target platform. + + + + + The public part of the key used to encrypt the SHA1 hash over the persisted form of this assembly. Empty or null if not specified. + This value is used by the loader to decrypt an encrypted hash value stored in the assembly, which it then compares with a freshly computed hash value + in order to verify the integrity of the assembly. + + + + + The contents of the AssemblySignatureKeyAttribute + + + + + A reference to a .NET assembly. + + + + + An object that represents a .NET module. + + + + + Used to distinguish which style to pick while writing native PDB information. + + + The PDB content for custom debug information is different between Visual Basic and CSharp. + E.g. C# always includes a CustomMetadata Header (MD2) that contains the namespace scope counts, where + as VB only outputs namespace imports into the namespace scopes. + C# defines forwards in that header, VB includes them into the scopes list. + + Currently the compiler doesn't allow mixing C# and VB method bodies. Thus this flag can be per module. + It is possible to move this flag to per-method basis but native PDB CDI forwarding would need to be adjusted accordingly. + + + + + Public types defined in other modules making up this assembly and to which other assemblies may refer to via this assembly. + + + + + A list of objects representing persisted instances of types that extend System.Attribute. Provides an extensible way to associate metadata + with this assembly. + + + + + A list of objects representing persisted instances of pairs of security actions and sets of security permissions. + These apply by default to every method reachable from the module. + + + + + A list of the assemblies that are referenced by this module. + + + + + A list of named byte sequences persisted with the assembly and used during execution, typically via .NET Framework helper classes. + + + + + CorLibrary assembly referenced by this module. + + + + + The Assembly that contains this module. If this module is main module then this returns this. + + + + + The method that will be called to start execution of this executable module. + + + + + Returns zero or more strings used in the module. If the module is produced by reading in a CLR PE file, then this will be the contents + of the user string heap. If the module is produced some other way, the method may return an empty enumeration or an enumeration that is a + subset of the strings actually used in the module. The main purpose of this method is to provide a way to control the order of strings in a + prefix of the user string heap when writing out a module as a PE file. + + + + + Returns all top-level (not nested) types defined in the current module. + + + + + The kind of metadata stored in this module. For example whether this module is an executable or a manifest resource file. + + + + + A list of objects representing persisted instances of types that extend System.Attribute. Provides an extensible way to associate metadata + with this module. + + + + + The name of the module. + + + + + A list of the modules that are referenced by this module. + + + + + A list of named byte sequences persisted with the module and used during execution, typically via the Win32 API. + A module will define Win32 resources rather than "managed" resources mainly to present metadata to legacy tools + and not typically use the data in its own code. + + + + + An alternate form the Win32 resources may take. These represent the rsrc$01 and rsrc$02 section data and relocs + from a COFF object file. + + + + + Builds symbol definition to location map used for emitting token -> location info + into PDB to be consumed by WinMdExp.exe tool (only applicable for /t:winmdobj) + + + + + Assembly reference aliases (C# only). + + + + + Linked assembly names to be stored to native PDB (VB only). + + + + + Project level imports (VB only, TODO: C# scripts). + + + + + Default namespace (VB only). + + + + + A reference to a .NET module. + + + + + The Assembly that contains this module. May be null if the module is not part of an assembly. + + + + + A unit of metadata stored as a single artifact and potentially produced and revised independently from other units. + Examples of units include .NET assemblies and modules, as well C++ object files and compiled headers. + + + + + A reference to a instance of . + + + + + Represents a single using directive (Imports clause). + + + + + This is a marker attribute that can be put on an interface to denote that only internal implementations + of that interface should exist. + + +
+
diff --git a/packages/System.Reflection.Metadata.1.1.0/System.Reflection.Metadata.1.1.0.nupkg b/packages/System.Reflection.Metadata.1.1.0/System.Reflection.Metadata.1.1.0.nupkg deleted file mode 100644 index af596a0..0000000 Binary files a/packages/System.Reflection.Metadata.1.1.0/System.Reflection.Metadata.1.1.0.nupkg and /dev/null differ diff --git a/packages/System.Reflection.Metadata.1.1.0/lib/dotnet5.2/System.Reflection.Metadata.dll b/packages/System.Reflection.Metadata.1.1.0/lib/dotnet5.2/System.Reflection.Metadata.dll deleted file mode 100644 index 07ef285..0000000 Binary files a/packages/System.Reflection.Metadata.1.1.0/lib/dotnet5.2/System.Reflection.Metadata.dll and /dev/null differ diff --git a/packages/System.Reflection.Metadata.1.1.0/lib/portable-net45+win8/System.Reflection.Metadata.dll b/packages/System.Reflection.Metadata.1.1.0/lib/portable-net45+win8/System.Reflection.Metadata.dll deleted file mode 100644 index 07ef285..0000000 Binary files a/packages/System.Reflection.Metadata.1.1.0/lib/portable-net45+win8/System.Reflection.Metadata.dll and /dev/null differ diff --git a/packages/System.Reflection.Metadata.1.2.0/System.Reflection.Metadata.1.2.0.nupkg b/packages/System.Reflection.Metadata.1.2.0/System.Reflection.Metadata.1.2.0.nupkg new file mode 100644 index 0000000..9fb1701 Binary files /dev/null and b/packages/System.Reflection.Metadata.1.2.0/System.Reflection.Metadata.1.2.0.nupkg differ diff --git a/packages/System.Reflection.Metadata.1.2.0/ThirdPartyNotices.txt b/packages/System.Reflection.Metadata.1.2.0/ThirdPartyNotices.txt new file mode 100644 index 0000000..55cfb20 --- /dev/null +++ b/packages/System.Reflection.Metadata.1.2.0/ThirdPartyNotices.txt @@ -0,0 +1,31 @@ +This Microsoft .NET Library may incorporate components from the projects listed +below. Microsoft licenses these components under the Microsoft .NET Library +software license terms. The original copyright notices and the licenses under +which Microsoft received such components are set forth below for informational +purposes only. Microsoft reserves all rights not expressly granted herein, +whether by implication, estoppel or otherwise. + +1. .NET Core (https://github.com/dotnet/core/) + +.NET Core +Copyright (c) .NET Foundation and Contributors + +The MIT License (MIT) + +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. \ No newline at end of file diff --git a/packages/System.Reflection.Metadata.1.2.0/dotnet_library_license.txt b/packages/System.Reflection.Metadata.1.2.0/dotnet_library_license.txt new file mode 100644 index 0000000..92b6c44 --- /dev/null +++ b/packages/System.Reflection.Metadata.1.2.0/dotnet_library_license.txt @@ -0,0 +1,128 @@ + +MICROSOFT SOFTWARE LICENSE TERMS + + +MICROSOFT .NET LIBRARY + +These license terms are an agreement between Microsoft Corporation (or based on where you live, one of its affiliates) and you. Please read them. They apply to the software named above, which includes the media on which you received it, if any. The terms also apply to any Microsoft + +· updates, + +· supplements, + +· Internet-based services, and + +· support services + +for this software, unless other terms accompany those items. If so, those terms apply. + +BY USING THE SOFTWARE, YOU ACCEPT THESE TERMS. IF YOU DO NOT ACCEPT THEM, DO NOT USE THE SOFTWARE. + + +IF YOU COMPLY WITH THESE LICENSE TERMS, YOU HAVE THE PERPETUAL RIGHTS BELOW. + +1. INSTALLATION AND USE RIGHTS. + +a. Installation and Use. You may install and use any number of copies of the software to design, develop and test your programs. + +b. Third Party Programs. The software may include third party programs that Microsoft, not the third party, licenses to you under this agreement. Notices, if any, for the third party program are included for your information only. + +2. ADDITIONAL LICENSING REQUIREMENTS AND/OR USE RIGHTS. + +a. DISTRIBUTABLE CODE. The software is comprised of Distributable Code. “Distributable Code” is code that you are permitted to distribute in programs you develop if you comply with the terms below. + +i. Right to Use and Distribute. + +· You may copy and distribute the object code form of the software. + +· Third Party Distribution. You may permit distributors of your programs to copy and distribute the Distributable Code as part of those programs. + +ii. Distribution Requirements. For any Distributable Code you distribute, you must + +· add significant primary functionality to it in your programs; + +· require distributors and external end users to agree to terms that protect it at least as much as this agreement; + +· display your valid copyright notice on your programs; and + +· indemnify, defend, and hold harmless Microsoft from any claims, including attorneys’ fees, related to the distribution or use of your programs. + +iii. Distribution Restrictions. You may not + +· alter any copyright, trademark or patent notice in the Distributable Code; + +· use Microsoft’s trademarks in your programs’ names or in a way that suggests your programs come from or are endorsed by Microsoft; + +· include Distributable Code in malicious, deceptive or unlawful programs; or + +· modify or distribute the source code of any Distributable Code so that any part of it becomes subject to an Excluded License. An Excluded License is one that requires, as a condition of use, modification or distribution, that + +· the code be disclosed or distributed in source code form; or + +· others have the right to modify it. + +3. SCOPE OF LICENSE. The software is licensed, not sold. This agreement only gives you some rights to use the software. Microsoft reserves all other rights. Unless applicable law gives you more rights despite this limitation, you may use the software only as expressly permitted in this agreement. In doing so, you must comply with any technical limitations in the software that only allow you to use it in certain ways. You may not + +· work around any technical limitations in the software; + +· reverse engineer, decompile or disassemble the software, except and only to the extent that applicable law expressly permits, despite this limitation; + +· publish the software for others to copy; + +· rent, lease or lend the software; + +· transfer the software or this agreement to any third party; or + +· use the software for commercial software hosting services. + +4. BACKUP COPY. You may make one backup copy of the software. You may use it only to reinstall the software. + +5. DOCUMENTATION. Any person that has valid access to your computer or internal network may copy and use the documentation for your internal, reference purposes. + +6. EXPORT RESTRICTIONS. The software is subject to United States export laws and regulations. You must comply with all domestic and international export laws and regulations that apply to the software. These laws include restrictions on destinations, end users and end use. For additional information, see www.microsoft.com/exporting. + +7. SUPPORT SERVICES. Because this software is “as is,” we may not provide support services for it. + +8. ENTIRE AGREEMENT. This agreement, and the terms for supplements, updates, Internet-based services and support services that you use, are the entire agreement for the software and support services. + +9. APPLICABLE LAW. + +a. United States. If you acquired the software in the United States, Washington state law governs the interpretation of this agreement and applies to claims for breach of it, regardless of conflict of laws principles. The laws of the state where you live govern all other claims, including claims under state consumer protection laws, unfair competition laws, and in tort. + +b. Outside the United States. If you acquired the software in any other country, the laws of that country apply. + +10. LEGAL EFFECT. This agreement describes certain legal rights. You may have other rights under the laws of your country. You may also have rights with respect to the party from whom you acquired the software. This agreement does not change your rights under the laws of your country if the laws of your country do not permit it to do so. + +11. DISCLAIMER OF WARRANTY. THE SOFTWARE IS LICENSED “AS-IS.” YOU BEAR THE RISK OF USING IT. MICROSOFT GIVES NO EXPRESS WARRANTIES, GUARANTEES OR CONDITIONS. YOU MAY HAVE ADDITIONAL CONSUMER RIGHTS OR STATUTORY GUARANTEES UNDER YOUR LOCAL LAWS WHICH THIS AGREEMENT CANNOT CHANGE. TO THE EXTENT PERMITTED UNDER YOUR LOCAL LAWS, MICROSOFT EXCLUDES THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. + +FOR AUSTRALIA – YOU HAVE STATUTORY GUARANTEES UNDER THE AUSTRALIAN CONSUMER LAW AND NOTHING IN THESE TERMS IS INTENDED TO AFFECT THOSE RIGHTS. + +12. LIMITATION ON AND EXCLUSION OF REMEDIES AND DAMAGES. YOU CAN RECOVER FROM MICROSOFT AND ITS SUPPLIERS ONLY DIRECT DAMAGES UP TO U.S. $5.00. YOU CANNOT RECOVER ANY OTHER DAMAGES, INCLUDING CONSEQUENTIAL, LOST PROFITS, SPECIAL, INDIRECT OR INCIDENTAL DAMAGES. + +This limitation applies to + +· anything related to the software, services, content (including code) on third party Internet sites, or third party programs; and + +· claims for breach of contract, breach of warranty, guarantee or condition, strict liability, negligence, or other tort to the extent permitted by applicable law. + +It also applies even if Microsoft knew or should have known about the possibility of the damages. The above limitation or exclusion may not apply to you because your country may not allow the exclusion or limitation of incidental, consequential or other damages. + +Please note: As this software is distributed in Quebec, Canada, some of the clauses in this agreement are provided below in French. + +Remarque : Ce logiciel étant distribué au Québec, Canada, certaines des clauses dans ce contrat sont fournies ci-dessous en français. + +EXONÉRATION DE GARANTIE. Le logiciel visé par une licence est offert « tel quel ». Toute utilisation de ce logiciel est à votre seule risque et péril. Microsoft n’accorde aucune autre garantie expresse. Vous pouvez bénéficier de droits additionnels en vertu du droit local sur la protection des consommateurs, que ce contrat ne peut modifier. La ou elles sont permises par le droit locale, les garanties implicites de qualité marchande, d’adéquation à un usage particulier et d’absence de contrefaçon sont exclues. + +LIMITATION DES DOMMAGES-INTÉRÊTS ET EXCLUSION DE RESPONSABILITÉ POUR LES DOMMAGES. Vous pouvez obtenir de Microsoft et de ses fournisseurs une indemnisation en cas de dommages directs uniquement à hauteur de 5,00 $ US. Vous ne pouvez prétendre à aucune indemnisation pour les autres dommages, y compris les dommages spéciaux, indirects ou accessoires et pertes de bénéfices. + +Cette limitation concerne : + +· tout ce qui est relié au logiciel, aux services ou au contenu (y compris le code) figurant sur des sites Internet tiers ou dans des programmes tiers ; et + +· les réclamations au titre de violation de contrat ou de garantie, ou au titre de responsabilité stricte, de négligence ou d’une autre faute dans la limite autorisée par la loi en vigueur. + +Elle s’applique également, même si Microsoft connaissait ou devrait connaître l’éventualité d’un tel dommage. Si votre pays n’autorise pas l’exclusion ou la limitation de responsabilité pour les dommages indirects, accessoires ou de quelque nature que ce soit, il se peut que la limitation ou l’exclusion ci-dessus ne s’appliquera pas à votre égard. + +EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous pourriez avoir d’autres droits prévus par les lois de votre pays. Le présent contrat ne modifie pas les droits que vous confèrent les lois de votre pays si celles-ci ne le permettent pas. + + diff --git a/packages/System.Reflection.Metadata.1.2.0/lib/netstandard1.1/System.Reflection.Metadata.dll b/packages/System.Reflection.Metadata.1.2.0/lib/netstandard1.1/System.Reflection.Metadata.dll new file mode 100644 index 0000000..1c97714 Binary files /dev/null and b/packages/System.Reflection.Metadata.1.2.0/lib/netstandard1.1/System.Reflection.Metadata.dll differ diff --git a/packages/System.Reflection.Metadata.1.1.0/lib/portable-net45+win8/System.Reflection.Metadata.xml b/packages/System.Reflection.Metadata.1.2.0/lib/netstandard1.1/System.Reflection.Metadata.xml similarity index 70% rename from packages/System.Reflection.Metadata.1.1.0/lib/portable-net45+win8/System.Reflection.Metadata.xml rename to packages/System.Reflection.Metadata.1.2.0/lib/netstandard1.1/System.Reflection.Metadata.xml index c1bcbbc..4da3096 100644 --- a/packages/System.Reflection.Metadata.1.1.0/lib/portable-net45+win8/System.Reflection.Metadata.xml +++ b/packages/System.Reflection.Metadata.1.2.0/lib/netstandard1.1/System.Reflection.Metadata.xml @@ -1,2862 +1,3936 @@ - - - - System.Reflection.Metadata - - - - - Represents a disposable blob of memory accessed via unsafe pointer. - - - - - Pointer to the underlying data (not valid after disposal). - - - - - Returns the content of the memory block. - - - Only creates a copy of the data if they are not represented by a managed byte array, or the offset is non-zero. - - - - - Disposes the block. - - - The operation is idempotent, but must not be called concurrently with any other operations on the block - or with another call to Dispose. - - Using the block after dispose is an error in our code and therefore no effort is made to throw a tidy - ObjectDisposedException and null ref or AV is possible. - - - - - Represents a memory block backed by an array of bytes. - - - - - Class representing raw memory but not owning the memory. - - - - - Represents raw memory owned by an external object. - - - - - Creates and hydrates a memory block representing all data. - - Error while reading from the memory source. - - - - Creates and hydrates a memory block representing data in the specified range. - - Starting offset relative to the beginning of the data represented by this provider. - Size of the resulting block. - Error while reading from the memory source. - - - - Gets a seekable and readable that can be used to read all data. - The operations on the stream has to be done under a lock of if non-null. - The image starts at and has size . - It is the caller's responsibility not to read outside those bounds. - - - - - The size of the data. - - - - - Represents memory block allocated on native heap. - - - Owns the native memory resource. - - - - - Represents data read from a stream. - - - Uses memory map to load data from streams backed by files that are bigger than . - - - - Error while reading from the stream. - - - - Provides helpers to decode strings from unmanaged memory to System.String while avoiding - intermediate allocation. - - This has three components: - - (1) Light-up Encoding.GetString(byte*, int) via reflection and resurface it as extension - method. - - This is a new API that will provide API convergence across all platforms for - this scenario. It is already on .NET 4.6+ and ASP.NET vNext, but not yet available - on every platform we support. See below for how we fall back. - - (2) Deal with WinRT prefixes. - - When reading managed winmds with projections enabled, the metadata reader needs to prepend - a WinRT prefix in some case . Doing this without allocation poses a problem - as we don't have the prefix and input in contiguous data that we can pass to the - Encoding.GetString. We handle this case using pooled managed scratch buffers where we copy - the prefix and input and decode using Encoding.GetString(byte[], int, int). - - (3) Deal with platforms that don't yet have Encoding.GetString(byte*, int). - - If we're running on a full framework earlier than 4.6, we will bind to the internal - String.CreateStringFromEncoding which is equivalent and Encoding.GetString is just a trivial - wrapper around it in .NET 4.6. This means that we always have the fast path on every - full framework version we support. - - If we can't bind to it via reflection, then we emulate it using what is effectively (2) and - with an empty prefix. - - For both (2) and (3), the pooled buffers have a fixed size deemed large enough for the - vast majority of metadata strings. In the rare worst case (byteCount > threshold and - (lightUpAttemptFailed || prefix != null), we give up and allocate a temporary array, - copy to it, decode, and throw it away. - - - - - Provides tools for using in interop scenarios. - - - *** WARNING *** - - If you decide to copy this code elsewhere, please retain the documentation here - and the Dangerous prefixes in the API names. This will help track down and audit - other places where this technique (with dangerous consequences when misused) may - be applied. - - A generic version of this API was once public in a pre-release of immutable - collections, but it was deemed to be too subject to abuse when available publicly. - - This implementation is scoped to byte arrays as that is all that the metadata reader needs. - - Also, since we don't have access to immutable collection internals, we use a trick involving - overlapping a with a refer. While - unverifiable, it is valid. See Ecma 335, section II.10.7 Controlling instance layout: - - "It is possible to overlap fields in this way, though offsets occupied by an object reference - shall not overlap with offsets occupied by a built-in value type or a part of - another object reference. While one object reference can completely overlap another, this is - unverifiable." - - Furthermore, the fact that backed by a single - field is something inherent to the design of ImmutableArray in order to get its performance - characteristics and therefore something we (Microsoft) are comfortable defining as a contract that - can be depended upon as below. - - - - - Creates a new instance of using a given mutable array as the backing - field, without creating a defensive copy. It is the responsibility of the caller to ensure no other mutable - references exist to the array. Do not mutate the array after calling this method. - - The mutable array to use as the backing field. The incoming reference is set to null - since it should not be retained by the caller. - - Users of this method should take extra care to ensure that the mutable array given as a parameter - is never modified. The returned will use the given array as its backing - field without creating a defensive copy, so changes made to the given mutable array will be observable - on the returned . Instance and static methods of - and may malfunction if they operate on an instance - whose underlying backing field is modified. - - An immutable array. - - - - Access the backing mutable array instance for the given , without - creating a defensive copy. It is the responsibility of the caller to ensure the array is not modified - through the returned mutable reference. Do not mutate the returned array. - - The from which to retrieve the backing field. - - Users of this method should take extra care to ensure that the returned mutable array is never modified. - The returned mutable array continues to be used as the backing field of the given - without creating a defensive copy, so changes made to the returned mutable array will be observable - on the given . Instance and static methods of - and may malfunction if they operate on an instance - whose underlying backing field is modified. - - The underlying array, or null if is true. - - - - Decodes a compressed integer value starting at offset. - See Metadata Specification section II.23.2: Blobs and signatures. - - Offset to the start of the compressed data. - Bytes actually read. - - Value between 0 and 0x1fffffff, or if the value encoding is invalid. - - - - - Read UTF8 at the given offset up to the given terminator, null terminator, or end-of-block. - - Offset in to the block where the UTF8 bytes start. - UTF8 encoded prefix to prepend to the bytes at the offset before decoding. - The UTF8 decoder to use that allows user to adjust fallback and/or reuse existing strings without allocating a new one. - The number of bytes read, which includes the terminator if we did not hit the end of the block. - A character in the ASCII range that marks the end of the string. - If a value other than '\0' is passed we still stop at the null terminator if encountered first. - The decoded string. - - - - Get number of bytes from offset to given terminator, null terminator, or end-of-block (whichever comes first). - Returned length does not include the terminator, but numberOfBytesRead out parameter does. - - Offset in to the block where the UTF8 bytes start. - A character in the ASCII range that marks the end of the string. - If a value other than '\0' is passed we still stop at the null terminator if encountered first. - The number of bytes read, which includes the terminator if we did not hit the end of the block. - Length (byte count) not including terminator. - - - - In a table that specifies children via a list field (e.g. TypeDef.FieldList, TypeDef.MethodList), - seaches for the parent given a reference to a child. - - Returns row number [0..RowCount). - - - - In a table ordered by a column containing entity references seaches for a row with the specified reference. - - Returns row number [0..RowCount) or -1 if not found. - - - - Calculates a range of rows that have specified value in the specified column in a table that is sorted by that column. - - - - - Calculates a range of rows that have specified value in the specified column in a table that is sorted by that column. - - - - - The usage is: - var inst = PooledStringBuilder.GetInstance(); - var sb = inst.builder; - ... Do Stuff... - ... sb.ToString() ... - inst.Free(); - - - - - Generic implementation of object pooling pattern with predefined pool size limit. The main - purpose is that limited number of frequently used objects can be kept in the pool for - further recycling. - - Notes: - 1) it is not the goal to keep all returned objects. Pool is not meant for storage. If there - is no space in the pool, extra returned objects will be dropped. - - 2) it is implied that if object was obtained from a pool, the caller will return it back in - a relatively short time. Keeping checked out objects for long durations is ok, but - reduces usefulness of pooling. Just new up your own. - - Not returning objects to the pool in not detrimental to the pool's work, but is a bad practice. - Rationale: - If there is no intent for reusing the object, do not use pool - just use "new". - - - - - Produces an instance. - - - Search strategy is a simple linear probing which is chosen for it cache-friendliness. - Note that Free will try to store recycled objects close to the start thus statistically - reducing how far we will typically search. - - - - - Returns objects to the pool. - - - Search strategy is a simple linear probing which is chosen for it cache-friendliness. - Note that Free will try to store recycled objects close to the start thus statistically - reducing how far we will typically search in Allocate. - - - - - Copies specified amount of data from given stream to a target memory pointer. - - unexpected stream end. - - - - True if the file contains metadata. - - - Corresponds to Flags field of File table in ECMA-335 Standard. - - - - - File name with extension. - - - Corresponds to Name field of File table in ECMA-335 Standard. - - - - - Hash value of the file content calculated using . - - - Corresponds to HashValue field of File table in ECMA-335 Standard. - - - - An array containing the '\0' character. - - - - Reads number. - - - Decimal number is encoded in 13 bytes as follows: - - byte 0: highest bit indicates sign (1 for negative, 0 for non-negative); the remaining 7 bits encode scale - - bytes 1..12: 96-bit unsigned integer in little endian encoding. - - The data at the current position was not a valid number. - - - - Reads UTF8 encoded string starting at the current position. - - The number of bytes to read. - The string. - bytes not available. - - - - Reads UTF16 (little-endian) encoded string starting at the current position. - - The number of bytes to read. - The string. - bytes not available. - - - - Reads bytes starting at the current position. - - The number of bytes to read. - The byte array. - bytes not available. - - - - Reads an unsigned compressed integer value. - See Metadata Specification section II.23.2: Blobs and signatures. - - The value of the compressed integer that was read. - true if the value was read successfully. false if the data at the current position was not a valid compressed integer. - - - - Reads an unsigned compressed integer value. - See Metadata Specification section II.23.2: Blobs and signatures. - - The value of the compressed integer that was read. - The data at the current position was not a valid compressed integer. - - - - Reads a signed compressed integer value. - See Metadata Specification section II.23.2: Blobs and signatures. - - The value of the compressed integer that was read. - true if the value was read successfully. false if the data at the current position was not a valid compressed integer. - - - - Reads a signed compressed integer value. - See Metadata Specification section II.23.2: Blobs and signatures. - - The value of the compressed integer that was read. - The data at the current position was not a valid compressed integer. - - - - Reads type code encoded in a serialized custom attribute value. - - if the encoding is invalid. - - - - Reads type code encoded in a signature. - - if the encoding is invalid. - - - - Reads a string encoded as a compressed integer containing its length followed by - its contents in UTF8. Null strings are encoded as a single 0xFF byte. - - Defined as a 'SerString' in the Ecma CLI specification. - String value or null. - If the encoding is invalid. - - - - Reads a type handle encoded in a signature as TypeDefOrRefOrSpecEncoded (see ECMA-335 II.23.2.8). - - The handle or nil if the encoding is invalid. - - - - Reads a #Blob heap handle encoded as a compressed integer. - - - Blobs that contain references to other blobs are used in Portable PDB format, for example . - - - - - Reads a constant value (see ECMA-335 Partition II section 22.9) from the current position. - - Error while reading from the blob. - is not a valid . - - Boxed constant value. To avoid allocating the object use Read* methods directly. - Constants of type are encoded as UTF16 strings, use to read them. - - - - - The type of the constant value. - - - Corresponds to Type field of Constant table in ECMA-335 Standard. - - - - - The constant value. - - - Corresponds to Value field of Constant table in ECMA-335 Standard. - - - - - The parent handle (, , or ). - - - Corresponds to Parent field of Constant table in ECMA-335 Standard. - - - - - The constructor ( or ) of the custom attribute type. - - - Corresponds to Type field of CustomAttribute table in ECMA-335 Standard. - - - - - The handle of the metadata entity the attribute is applied to. - - - Corresponds to Parent field of CustomAttribute table in ECMA-335 Standard. - - - - - The value of the attribute. - - - Corresponds to Value field of CustomAttribute table in ECMA-335 Standard. - - - - - Provides an extension method to access the TypeDefinitionId column of the ExportedType table. - - - - - Gets a hint at the likely row number of the target type in the TypeDef table of its module. - If the namespaces and names do not match, resolution falls back to a full search of the - target TypeDef table. Ignored and should be zero if is - true. - - - - - Provides extension methods for working with certain raw elements of the Ecma 335 metadata tables and heaps. - - - - - Returns the number of rows in the specified table. - - is null. - is not a valid table index. - - - - Returns the size of a row in the specified table. - - is null. - is not a valid table index. - - - - Returns the offset from the start of metadata to the specified table. - - is null. - is not a valid table index. - - - - Returns the size of the specified heap. - - is null. - is not a valid heap index. - - - - Returns the offset from the start of metadata to the specified heap. - - is null. - is not a valid heap index. - - - - Returns the size of the specified heap. - - is null. - is not a valid heap index. - - - - Returns the a handle to the UserString that follows the given one in the UserString heap or a nil handle if it is the last one. - - is null. - - - - Returns the a handle to the Blob that follows the given one in the Blob heap or a nil handle if it is the last one. - - is null. - - - - Returns the a handle to the String that follows the given one in the String heap or a nil handle if it is the last one. - - is null. - - - - Enumerates entries of EnC log. - - is null. - - - - Enumerates entries of EnC map. - - is null. - - - - Enumerate types that define one or more properties. - - - The resulting sequence corresponds exactly to entries in PropertyMap table, - i.e. n-th returned is stored in n-th row of PropertyMap. - - - - - Enumerate types that define one or more events. - - - The resulting sequence corresponds exactly to entries in EventMap table, - i.e. n-th returned is stored in n-th row of EventMap. - - - - - Maximum number of tables that can be present in Ecma335 metadata. - - - - - Maximum number of tables that can be present in Ecma335 metadata. - - - - - Returns the row number of a metadata table entry that corresponds - to the specified in the context of . - - One based row number. - The is not a valid metadata table handle. - - - - Returns the offset of metadata heap data that corresponds - to the specified in the context of . - - Zero based offset, or -1 if isn't a metadata heap handle. - The operation is not supported for the specified . - The is invalid. - - - - Returns the metadata token of the specified in the context of . - - Metadata token. - - Handle represents a metadata entity that doesn't have a token. - A token can only be retrieved for a metadata table handle or a heap handle of type . - - The operation is not supported for the specified . - - - - Returns the row number of a metadata table entry that corresponds - to the specified . - - - One based row number, or -1 if can only be interpreted in a context of a specific . - See . - - - - - Returns the offset of metadata heap data that corresponds - to the specified . - - - Zero based offset, or -1 if can only be interpreted in a context of a specific . - See . - - - - - Returns the metadata token of the specified . - - - Metadata token, or 0 if can only be interpreted in a context of a specific . - See . - - - Handle represents a metadata entity that doesn't have a token. - A token can only be retrieved for a metadata table handle or a heap handle of type . - - - - - Gets the of the table corresponding to the specified . - - Handle type. - Table index. - True if the handle type corresponds to an Ecma335 table, false otherwise. - - - - Gets the of the heap corresponding to the specified . - - Handle type. - Heap index. - True if the handle type corresponds to an Ecma335 heap, false otherwise. - - - - Creates a handle from a token value. - - - is not a valid metadata token. - It must encode a metadata table entity or an offset in heap. - - - - - Creates an entity handle from a token value. - - is not a valid metadata entity token. - - - - Creates a handle from a token value. - - - is not a valid table index. - - - - Returns true if the given raw (non-virtual) handle represents the same string as given ASCII string. - - - - - Returns the heap index of the given ASCII character or -1 if not found prior null terminator or end of heap. - - - - - Returns true if the given raw (non-virtual) handle represents a string that starts with given ASCII prefix. - - - - - Equivalent to Array.BinarySearch, searches for given raw (non-virtual) handle in given array of ASCII strings. - - - - - These contants are all in the byte range and apply to the interpretation of , - - - - - Use the highest bit to mark tokens that are virtual (synthesized). - We create virtual tokens to represent projected WinMD entities. - - - - - In the case of string handles, the two lower bits that (in addition to the - virtual bit not included in this mask) encode how to obtain the string value. - - - - - Use the highest bit to mark tokens that are virtual (synthesized). - We create virtual tokens to represent projected WinMD entities. - - - - - Returns true if the token value can escape the metadata reader. - We don't allow virtual tokens and heap tokens other than UserString to escape - since the token type ids are internal to the reader and not specified by ECMA spec. - - Spec (Partition III, 1.9 Metadata tokens): - Many CIL instructions are followed by a "metadata token". This is a 4-byte value, that specifies a row in a - metadata table, or a starting byte offset in the User String heap. - - For example, a value of 0x02 specifies the TypeDef table; a value of 0x70 specifies the User - String heap.The value corresponds to the number assigned to that metadata table (see Partition II for the full - list of tables) or to 0x70 for the User String heap.The least-significant 3 bytes specify the target row within that - metadata table, or starting byte offset within the User String heap. - - - - - Returns whether the namespaceTable has been created. If it hasn't, calling a GetXXX method - on this will probably have a very high amount of overhead. - - - - - This will return a StringHandle for the simple name of a namespace name at the given segment index. - If no segment index is passed explicitly or the "segment" index is greater than or equal to the number - of segments, then the last segment is used. "Segment" in this context refers to part of a namespace - name between dots. - - Example: Given a NamespaceDefinitionHandle to "System.Collections.Generic.Test" called 'handle': - - reader.GetString(GetSimpleName(handle)) == "Test" - reader.GetString(GetSimpleName(handle, 0)) == "System" - reader.GetString(GetSimpleName(handle, 1)) == "Collections" - reader.GetString(GetSimpleName(handle, 2)) == "Generic" - reader.GetString(GetSimpleName(handle, 3)) == "Test" - reader.GetString(GetSimpleName(handle, 1000)) == "Test" - - - - - Two distinct namespace handles represent the same namespace if their full names are the same. This - method merges builders corresponding to such namespace handles. - - - - - This will take 'table' and merge all of the NamespaceData instances that point to the same - namespace. It has to create 'stringTable' as an intermediate dictionary, so it will hand it - back to the caller should the caller want to use it. - - - - - Creates a NamespaceDataBuilder instance that contains a synthesized NamespaceDefinitionHandle, - as well as the name provided. - - - - - Quick convenience method that handles linking together child + parent - - - - - Links a child to its parent namespace. If the parent namespace doesn't exist, this will create a - virtual one. This will automatically link any virtual namespaces it creates up to its parents. - - - - - This will link all parents/children in the given namespaces dictionary up to each other. - - In some cases, we need to synthesize namespaces that do not have any type definitions or forwarders - of their own, but do have child namespaces. These are returned via the virtualNamespaces out - parameter. - - - - - Loops through all type definitions in metadata, adding them to the given table - - - - - Loops through all type forwarders in metadata, adding them to the given table - - - - - Populates namespaceList with distinct namespaces. No ordering is guaranteed. - - - - - If the namespace table doesn't exist, populates it! - - - - - If the namespace list doesn't exist, populates it! - - - - - An intermediate class used to build NamespaceData instances. This was created because we wanted to - use ImmutableArrays in NamespaceData, but having ArrayBuilders and ImmutableArrays that served the - same purpose in NamespaceData got ugly. With the current design of how we create our Namespace - dictionary, this needs to be a class because we have a many-to-one mapping between NamespaceHandles - and NamespaceData. So, the pointer semantics must be preserved. - - This class assumes that the builders will not be modified in any way after the first call to - Freeze(). - - - - - Returns a NamespaceData that represents this NamespaceDataBuilder instance. After calling - this method, it is an error to use any methods or fields except Freeze() on the target - NamespaceDataBuilder. - - - - - Returns field offset for given field RowId, or -1 if not available. - - - - - In CLI metadata equal to the actual number of entries in AssemblyRef table. - In WinMD metadata it includes synthesized AssemblyRefs in addition. - - - - - Start IL offset of the try block. - - - - - Length in bytes of try block. - - - - - Start IL offset of the exception handler. - - - - - Length in bytes of the exception handler. - - - - - IL offset of the start of the filter block, or -1 if the region is not a filter. - - - - - Returns a TypeRef, TypeDef, or TypeSpec handle if the region represents a catch, nil token otherwise. - - - - - Name of the target type, or nil if the type is nested or defined in a root namespace. - - - - - Full name of the namespace where the target type, or nil if the type is nested or defined in a root namespace. - - - - - The definition handle of the namespace where the target type is defined, or nil if the type is nested or defined in a root namespace. - - - - - Handle to resolve the implementation of the target type. - - - - representing another module in the assembly. - representing another assembly if is true. - representing the declaring exported type in which this was is nested. - - - - - - Returns field layout offset, or -1 if not available. - - - - - or . - - - Corresponds to Owner field of GenericParam table in ECMA-335 Standard. - - - - - Attributes specifying variance and constraints. - - - Corresponds to Flags field of GenericParam table in ECMA-335 Standard. - - - - - Zero-based index of the parameter within the declaring generic type or method declaration. - - - Corresponds to Number field of GenericParam table in ECMA-335 Standard. - - - - - The name of the generic parameter. - - - Corresponds to Name field of GenericParam table in ECMA-335 Standard. - - - - - The constrained . - - - Corresponds to Owner field of GenericParamConstraint table in ECMA-335 Standard. - - - - - Handle (, , or ) - specifying from which type this generic parameter is constrained to derive, - or which interface this generic parameter is constrained to implement. - - - Corresponds to Constraint field of GenericParamConstraint table in ECMA-335 Standard. - - - - - Represents generic type parameters of a method or type. - - - - - Represents constraints of a generic type parameter. - - - - - Collection of parameters of a specified method. - - - - - Represents a collection of . - - - - - Represents a collection of . - - - - - Represents a collection of . - - - - - Represents a collection of . - - - - - Collection of assembly references. - - - - - Represents a collection of . - - - - - Represents a collection of . - - - - - Compares two handles. - - - The order of handles that differ in kind is undefined. - Returns 0 if and only if returns true. - - - - - Compares two entity handles. - - - The order of handles that differ in kind is undefined. - Returns 0 if and only if returns true. - - - - - Represents any metadata entity (type reference/definition/specification, method definition, custom attribute, etc.) or value (string, blob, guid, user string). - - - Use to store multiple kinds of handles. - - - - - Creates from a token or a token combined with a virtual flag. - - - - - Token type (0x##000000), does not include virtual flag. - - - - - Small token type (0x##), does not include virtual flag. - - - - - Value stored in an . - - - - - Value stored in a concrete entity handle (see , , etc.). - - - - - Represents a metadata entity (type reference/definition/specification, method definition, custom attribute, etc.). - - - Use to store multiple kinds of entity handles. - It has smaller memory footprint than . - - - - - Value stored in a specific entity handle (see , , etc.). - - - - - Returns a handle to corresponding to this handle. - - - The resulting handle is only valid within the context of a open on the Portable PDB blob, - which in case of standalone PDB file is a different reader than the one containing this method definition. - - - - - A handle that represents a namespace definition. - - - - - The interface that is implemented - , , or - - - - - Specifies the byte offset within the referenced file at which this resource record begins. - - - Corresponds to Offset field of ManifestResource table in ECMA-335 Standard. - - - - - Resource attributes. - - - Corresponds to Flags field of ManifestResource table in ECMA-335 Standard. - - - - - Name of the resource. - - - Corresponds to Name field of ManifestResource table in ECMA-335 Standard. - - - - - , , or nil handle. - - - Corresponds to Implementation field of ManifestResource table in ECMA-335 Standard. - - If nil then is an offset in the PE image that contains the metadata, - starting from the Resource entry in the CLI header. - - - - - MethodDef, ModuleRef,TypeDef, TypeRef, or TypeSpec handle. - - - - - Determines if the member reference is to a method or field. - - - - - Indicates whether a MemberReference references a method or field. - - - - - The MemberReference references a method. - - - - - The MemberReference references a field. - - - - - CLI metadata. - - - - - Windows Metadata. - - - - - Windows Metadata generated by managed compilers. - - - - - Reads metadata as defined byte the ECMA 335 CLI specification. - - - - - Creates a metadata reader from the metadata stored at the given memory location. - - - The memory is owned by the caller and it must be kept memory alive and unmodified throughout the lifetime of the . - - - - - Creates a metadata reader from the metadata stored at the given memory location. - - - The memory is owned by the caller and it must be kept memory alive and unmodified throughout the lifetime of the . - Use to obtain - metadata from a PE image. - - - - - Creates a metadata reader from the metadata stored at the given memory location. - - - The memory is owned by the caller and it must be kept memory alive and unmodified throughout the lifetime of the . - Use to obtain - metadata from a PE image. - - - - - True if the metadata stream has minimal delta format. Used for EnC. - - - The metadata stream has minimal delta format if "#JTD" stream is present. - Minimal delta format uses large size (4B) when encoding table/heap references. - The heaps in minimal delta only contain data of the delta, - there is no padding at the beginning of the heaps that would align them - with the original full metadata heaps. - - - - - Looks like this function reads beginning of the header described in - Ecma-335 24.2.1 Metadata root - - - - - Reads stream headers described in Ecma-335 24.2.2 Stream header - - - - - A row count for each possible table. May be indexed by . - - - - - Information decoded from #Pdb stream, or null if the stream is not present. - - - - - Returns an array of types nested in the specified type. - - - - - The backing field of a WinRT enumeration type is not public although the backing fields - of managed enumerations are. To allow managed languages to directly access this field, - it is made public by the metadata adapter. - - - - - We want to know if a given method implements a redirected interface. - For example, if we are given the method RemoveAt on a class "A" - which implements the IVector interface (which is redirected - to IList in .NET) then this method would return true. The most - likely reason why we would want to know this is that we wish to hide - (mark private) all methods which implement methods on a redirected - interface. - - The declaration token for the method - - Returns true if the redirected interface is . - - True if the method implements a method on a redirected interface. - False otherwise. - - - - Returns the type definition or reference handle of the attribute type. - - or or nil token if the metadata is invalid and the type can't be determined. - - - - All options are disabled. - - - - - The options that are used when a is obtained - via an overload that does not take a - argument. - - - - - Windows Runtime projections are enabled (on by default). - - - - - Provides string comparison helpers to query strings in metadata while - avoiding allocation where possible. - - - - No allocation is performed unless both the handle argument and the - value argument contain non-ascii text. - - Obtain instances using . - - A default-initialized instance is useless and behaves as a null reference. - - The code is optimized such that there is no additional overhead in - re-obtaining a a comparer over hoisting it in to a local. - - That is to say that a construct like: - - - if (reader.StringComparer.Equals(typeDef.Namespace, "System") && - reader.StringComparer.Equals(typeDef.Name, "Object") - { - // found System.Object - } - - - is no less efficient than: - - - var comparer = reader.StringComparer; - if (comparer.Equals(typeDef.Namespace, "System") && - comparer.Equals(typeDef.Name, "Object") - { - // found System.Object - } - - - The choice between them is therefore one of style and not performance. - - - - - Provides the with a custom mechanism for decoding - byte sequences in metadata that represent text. - - - This can be used for the following purposes: - - 1) To customize the treatment of invalid input. When no decoder is provided, - the uses the default fallback replacement - with \uFFFD) - - 2) To reuse existing strings instead of allocating a new one for each decoding - operation. - - - - - The default decoder used by to decode UTF-8 when - no decoder is provided to the constructor. - - - - - Creates a for the given encoding. - - The encoding to use. - - To cache and reuse existing strings. Create a derived class and override - - - - - Gets the encoding used by this instance. - - - - - The mechanism through which the obtains strings - for byte sequences in metadata. Override this to cache strings if required. - Otherwise, it is implemented by forwarding straight to - and every call will allocate a new string. - - Pointer to bytes to decode. - Number of bytes to decode. - The decoded string. - - - - Size of the method body - includes the header, IL and exception regions. - - - - - MethodDef or MemberRef handle specifying to which generic method this refers, - that is which generic method is it an instantiation of. - - - - - Blob handle holding the signature of this instantiation. - - - - - Gets the unqualified name of the NamespaceDefinition. - - - - - Gets the parent namespace. - - - - - Gets the namespace definitions that are direct children of the current - namespace definition. - - System.Collections and System.Linq are direct children of System. - System.Collections.Generic is a direct child of System.Collections. - System.Collections.Generic is *not* a direct child of System. - - - - - Gets all type definitions that reside directly in a namespace. - - - - - Gets all exported types that reside directly in a namespace. - - - - - Returns Document Name Blob. - - - - - representing a blob on #Blob heap in Portable PDB - structured as Document Name. - - - The kind of the handle is . - The handle is a specialization of and doesn't have a distinct kind. - - - - - Returns a handle to corresponding to this handle. - - - The resulting handle is only valid within the context of a open on the type system metadata blob, - which in case of standalone PDB file is a different reader than the one containing this method debug information. - - - - Invalid blob format. - - - - The constant signature. - - - - - Returns a blob encoding sequence points. - Use to decode. - - - - - The document containing the first sequence point of the method, - or nil if the method doesn't have sequence points. - - - - - Returns local signature handle. - - - - - If the method is a MoveNext method of a state machine returns the kickoff method of the state machine, otherwise returns nil handle. - - - - - Returns a body block of a method with specified Relative Virtual Address (RVA); - - is null. - The body is not found in the metadata or is invalid. - Section where the method is stored is not available. - - - - Gets a from a . - - - The caller must keep the alive and undisposed throughout the lifetime of the metadata reader. - - - - - Gets a from a . - - - The caller must keep the alive and undisposed throughout the lifetime of the metadata reader. - - - - - Gets a from a . - - - The caller must keep the alive and undisposed throughout the lifetime of the metadata reader. - - - - - Equivalent to . - - - - - Equivalent to . - - - - - Equivalent to . - - - - - Equivalent to . - - - - - Equivalent to . - - - - - Equivalent to . - - - - - Equivalent to . - - - - - Equivalent to . - - - - - Equivalent to . - - - - - Equivalent to . - - - - - Equivalent to . - - - - - Equivalent to . - - - - - Equivalent to . - - - - - Equivalent to . - - - - - Equivalent to . - - - - - The attribute argument is a System.Type instance. - - - - - The attribute argument is "boxed" (passed to a parameter, field, or property of type object) and carries type information in the attribute blob. - - - - - The attribute argument is an Enum instance. - - - - - Specified additional flags that can be applied to method signatures. - Underlying values correspond to the representation in the leading signature - byte represented by . - - - - - No flags. - - - - - Generic method. - - - - - Instance method. - - Ecma 335 CLI Specification refers to this flag as HAS_THIS. - - - - The first explicitly declared parameter represents the instance pointer. - - - - - Specifies how arguments in a given signature are passed from the caller to the callee. - Underlying values correspond to the representation in the leading signature byte - represented by . - - - - - Managed calling convention with fixed-length argument list. - - - - - Unmanaged C/C++-style calling convention where the call stack is cleaned by the caller. - - - - - Unmanaged calling convention where call stack is cleaned up by the callee. - - - - - Unmanaged C++-style calling convention for calling instance member functions with a fixed argument list. - - - - - Unmanaged calling convention where arguments are passed in registers when possible. - - - - - Managed calling convention for passing extra arguments. - - - - - Represents the signature characteristics specified by the leading byte of signature blobs. - - - This header byte is present in all method definition, method reference, standalone method, field, - property, and local variable signatures, but not in type specification signatures. - - - - - Specifies the signature kind. Underlying values correspond to the representation - in the leading signature byte represented by . - - - - - Method reference, method definition, or standalone method signature. - - - - - Field signature. - - - - - Local variables signature. - - - - - Property signature. - - - - - Method specification signature. - - - - - Represents the type codes that are used in signature encoding. - - - - - Represents an invalid or uninitialized type code. It will not appear in valid signatures. - - - - - Represents in signatures. - - - - - Represents in signatures. - - - - - Represents in signatures. - - - - - Represents in signatures. - - - - - Represents in signatures. - - - - - Represents in signatures. - - - - - Represents in signatures. - - - - - Represents in signatures. - - - - - Represents in signatures. - - - - - Represents in signatures. - - - - - Represents in signatures. - - - - - Represents in signatures. - - - - - Represents in signatures. - - - - - Represents in signatures. - - - - - Represents a unmanaged pointers in signatures. - It is followed in the blob by the signature encoding of the underlying type. - - - - - Represents managed pointers (byref return values and parameters) in signatures. - It is followed in the blob by the signature encoding of the underlying type. - - - - - Represents a generic type parameter used within a signature. - - - - - Represents a generalized in signatures. - - - - - Represents the instantiation of a generic type in signatures. - - - - - Represents a System.TypedReference in signatures. - - - - - Represents a in signatures. - - - - - Represents a in signatures. - - - - - Represents function pointer types in signatures. - - - - - Represents - - - - - Represents a single dimensional with 0 lower bound. - - - - - Represents a generic method parameter used within a signature. - - - - - Represents a custom modifier applied to a type within a signature that the caller must understand. - - - - - Represents a custom modifier applied to a type within a signature that the caller can ignore. - - - - - Precedes a type in signatures. - - - In raw metadata, this will be encoded as either ELEMENT_TYPE_CLASS (0x12) for reference - types and ELEMENT_TYPE_VALUETYPE (0x11) for value types. This is collapsed to a single - code because Windows Runtime projections can project from class to value type or vice-versa - and the raw code is misleading in those cases. - - - - - Represents a marker to indicate the end of fixed arguments and the beginning of variable arguments. - - - - - Represents a local variable that is pinned by garbage collector - - - - - Name of the type. - - - - - Full name of the namespace where the type is defined, or nil if the type is nested or defined in a root namespace. - - - - - The definition handle of the namespace where the type is defined, or nil if the type is nested or defined in a root namespace. - - - - - The base type of the type definition: either - , or . - - - - - Returns the enclosing type of a specified nested type or nil handle if the type is not nested. - - - - - Returns an array of types nested in the specified type. - - - - - Resolution scope in which the target type is defined and is uniquely identified by the specified and . - - - Resolution scope can be one of the following handles: - - of the enclosing type, if the target type is a nested type. - , if the target type is defined in another module within the same assembly as this one. - , if the target type is defined in the current module. This should not occur in a CLI compressed metadata module. - , if the target type is defined in a different assembly from the current module. - Nil handle if the target type must be resolved by searching the for a matching and . - - - - - - Name of the target type. - - - - - Full name of the namespace where the target type is defined, or nil if the type is nested or defined in a root namespace. - - - - - The type of target machine. - - - - - The number of sections. This indicates the size of the section table, which immediately follows the headers. - - - - - The low 32 bits of the number of seconds since 00:00 January 1, 1970, that indicates when the file was created. - - - - - The file pointer to the COFF symbol table, or zero if no COFF symbol table is present. - This value should be zero for a PE image. - - - - - The number of entries in the symbol table. This data can be used to locate the string table, - which immediately follows the symbol table. This value should be zero for a PE image. - - - - - The size of the optional header, which is required for executable files but not for object files. - This value should be zero for an object file. - - - - - The flags that indicate the attributes of the file. - - - - - COR20Flags - - - - - The target CPU is unknown or not specified. - - - - - Intel 386. - - - - - MIPS little-endian WCE v2 - - - - - Alpha - - - - - Hitachi SH3 little endian - - - - - Hitachi SH3 DSP. - - - - - Hitachi SH3 little endian. - - - - - Hitachi SH4 little endian. - - - - - Hitachi SH5. - - - - - ARM little endian - - - - - Thumb. - - - - - ARM Thumb-2 little endian. - - - - - Matsushita AM33. - - - - - IBM PowerPC little endian. - - - - - PowerPCFP - - - - - Intel 64 - - - - - MIPS - - - - - ALPHA64 - - - - - MIPS with FPU. - - - - - MIPS16 with FPU. - - - - - Infineon - - - - - EFI Byte Code - - - - - AMD64 (K8) - - - - - M32R little-endian - - - - - Simple BinaryReader wrapper to: - - 1) throw BadImageFormat instead of EndOfStream or ArgumentOutOfRange. - 2) limit reads to a subset of the base stream. - - Only methods that are needed to read PE headers are implemented. - - - - - Reads a fixed-length byte block as a null-padded UTF8-encoded string. - The padding is not included in the returned string. - - Note that it is legal for UTF8 strings to contain NUL; if NUL occurs - between non-NUL codepoints, it is not considered to be padding and - is included in the result. - - - - - Resolve image size as either the given user-specified size or distance from current position to end-of-stream. - Also performs the relevant argument validation and publicly visible caller has same argument names. - - size is null and distance from current position to end-of-stream can't fit in Int32. - Size is negative or extends past the end-of-stream from current position. - - - - Identifies the format of the image file. - - - - - The linker major version number. - - - - - The linker minor version number. - - - - - The size of the code (text) section, or the sum of all code sections if there are multiple sections. - - - - - The size of the initialized data section, or the sum of all such sections if there are multiple data sections. - - - - - The size of the uninitialized data section (BSS), or the sum of all such sections if there are multiple BSS sections. - - - - - The address of the entry point relative to the image base when the PE file is loaded into memory. - For program images, this is the starting address. For device drivers, this is the address of the initialization function. - An entry point is optional for DLLs. When no entry point is present, this field must be zero. - - - - - The address that is relative to the image base of the beginning-of-code section when it is loaded into memory. - - - - - The address that is relative to the image base of the beginning-of-data section when it is loaded into memory. - - - - - The preferred address of the first byte of image when loaded into memory; - must be a multiple of 64K. - - - - - The alignment (in bytes) of sections when they are loaded into memory. It must be greater than or equal to . - The default is the page size for the architecture. - - - - - The alignment factor (in bytes) that is used to align the raw data of sections in the image file. - The value should be a power of 2 between 512 and 64K, inclusive. The default is 512. - If the is less than the architecture's page size, - then must match . - - - - - The major version number of the required operating system. - - - - - The minor version number of the required operating system. - - - - - The major version number of the image. - - - - - The minor version number of the image. - - - - - The major version number of the subsystem. - - - - - The minor version number of the subsystem. - - - - - The size (in bytes) of the image, including all headers, as the image is loaded in memory. - It must be a multiple of . - - - - - The combined size of an MS DOS stub, PE header, and section headers rounded up to a multiple of FileAlignment. - - - - - The image file checksum. - - - - - The subsystem that is required to run this image. - - - - - The size of the stack to reserve. Only is committed; - the rest is made available one page at a time until the reserve size is reached. - - - - - The size of the stack to commit. - - - - - The size of the local heap space to reserve. Only is committed; - the rest is made available one page at a time until the reserve size is reached. - - - - - The size of the local heap space to commit. - - - - - The number of data-directory entries in the remainder of the . Each describes a location and size. - - - - - The Certificate Table entry points to a table of attribute certificates. - These certificates are not loaded into memory as part of the image. - As such, the first field of this entry, which is normally an RVA, is a file pointer instead. - - - - - An object used to read PE (Portable Executable) and COFF (Common Object File Format) headers from a stream. - - - - - Reads PE headers from the current location in the stream. - - Stream containing PE image starting at the stream's current position and ending at the end of the stream. - The data read from stream have invalid format. - Error reading from the stream. - The stream doesn't support seek operations. - is null. - - - - Reads PE headers from the current location in the stream. - - Stream containing PE image of the given size starting at its current position. - Size of the PE image. - The data read from stream have invalid format. - Error reading from the stream. - The stream doesn't support seek operations. - is null. - Size is negative or extends past the end of the stream. - - - - Gets the offset (in bytes) from the start of the PE image to the start of the CLI metadata. - or -1 if the image does not contain metadata. - - - - - Gets the size of the CLI metadata 0 if the image does not contain metadata.) - - - - - Gets the COFF header of the image. - - - - - Gets the byte offset from the start of the PE image to the start of the COFF header. - - - - - Determines if the image is Coff only. - - - - - Gets the PE header of the image or null if the image is COFF only. - - - - - Gets the byte offset from the start of the image to - - - - - Gets the PE section headers. - - - - - Gets the CLI header or null if the image does not have one. - - - - - Gets the byte offset from the start of the image to the COR header or -1 if the image does not have one. - - - - - Determines if the image represents a Windows console application. - - - - - Determines if the image represents a dynamically linked library. - - - - - Determines if the image represents an executable. - - - - - Gets the offset (in bytes) from the start of the image to the given directory entry. - - - - The section containing the directory could not be found. - The section containing the - - - - Searches sections of the PE image for the one that contains specified Relative Virtual Address. - - Address. - - Index of the section that contains , - or -1 if there is none. - - - - - Portable Executable format reader. - - - The implementation is thread-safe, that is multiple threads can read data from the reader in parallel. - Disposal of the reader is not thread-safe (see ). - - - - - Creates a Portable Executable reader over a PE image stored in memory. - - Pointer to the start of the PE image. - The size of the PE image. - is . - is negative. - - The memory is owned by the caller and not released on disposal of the . - The caller is responsible for keeping the memory alive and unmodified throughout the lifetime of the . - The content of the image is not read during the construction of the - - - - - Creates a Portable Executable reader over a PE image stored in a stream. - - PE image stream. - is null. - - is specified and the PE headers of the image are invalid. - - - Ownership of the stream is transferred to the upon successful validation of constructor arguments. It will be - disposed by the and the caller must not manipulate it. - - - - - Creates a Portable Executable reader over a PE image stored in a stream beginning at its current position and ending at the end of the stream. - - PE image stream. - - Options specifying how sections of the PE image are read from the stream. - - Unless is specified, ownership of the stream is transferred to the - upon successful argument validation. It will be disposed by the and the caller must not manipulate it. - - Unless or is specified no data - is read from the stream during the construction of the . Furthermore, the stream must not be manipulated - by caller while the is alive and undisposed. - - If or , the - will have read all of the data requested during construction. As such, if is also - specified, the caller retains full ownership of the stream and is assured that it will not be manipulated by the - after construction. - - is null. - has an invalid value. - - is specified and the PE headers of the image are invalid. - - - - - Creates a Portable Executable reader over a PE image of the given size beginning at the stream's current position. - - PE image stream. - PE image size. - - Options specifying how sections of the PE image are read from the stream. - - Unless is specified, ownership of the stream is transferred to the - upon successful argument validation. It will be disposed by the and the caller must not manipulate it. - - Unless or is specified no data - is read from the stream during the construction of the . Furthermore, the stream must not be manipulated - by caller while the is alive and undisposed. - - If or , the - will have read all of the data requested during construction. As such, if is also - specified, the caller retains full ownership of the stream and is assured that it will not be manipulated by the - after construction. - - Size is negative or extends past the end of the stream. - - - - Creates a Portable Executable reader over a PE image stored in a byte array. - - PE image. - - The content of the image is not read during the construction of the - - is null. - - - - Disposes all memory allocated by the reader. - - - can be called multiple times (but not in parallel). - It is not safe to call in parallel with any other operation on the - or reading from s retrieved from the reader. - - - - - Gets the PE headers. - - The headers contain invalid data. - - - - Returns a view of the entire image as a pointer and length. - - PE image not available. - - - - Return true if the reader can access the entire PE image. - - - Returns false if the is constructed from a stream and only part of it is prefetched into memory. - - - - - Gets a pointer to and size of the PE image if available (). - - The entire PE image is not available. - - - - Returns true if the PE image contains CLI metadata. - - The PE headers contain invalid data. - - - - Loads PE section that contains CLI metadata. - - The PE image doesn't contain metadata ( returns false). - The PE headers contain invalid data. - - - - Loads PE section that contains the specified into memory - and returns a memory block that starts at and ends at the end of the containing section. - - Relative Virtual Address of the data to read. - - An empty block if doesn't represent a location in any of the PE sections of this PE image. - - The PE headers contain invalid data. - - - - By default the stream is disposed when is disposed and sections of the PE image are read lazily. - - - - - Keep the stream open when the is disposed. - - - - - Reads metadata section into memory right away. - - - Reading from other sections of the file is not allowed ( is thrown by the ). - The underlying file may be closed and even deleted after is constructed. - - closes the stream automatically by the time the constructor returns unless is specified. - - - - - Reads the entire image into memory right away. - - - closes the stream automatically by the time the constructor returns unless is specified. - - - - - The name of the section. - - - - - The total size of the section when loaded into memory. - If this value is greater than , the section is zero-padded. - This field is valid only for PE images and should be set to zero for object files. - - - - - For PE images, the address of the first byte of the section relative to the image base when the - section is loaded into memory. For object files, this field is the address of the first byte before - relocation is applied; for simplicity, compilers should set this to zero. Otherwise, - it is an arbitrary value that is subtracted from offsets during relocation. - - - - - The size of the section (for object files) or the size of the initialized data on disk (for image files). - For PE images, this must be a multiple of . - If this is less than , the remainder of the section is zero-filled. - Because the field is rounded but the field is not, - it is possible for to be greater than as well. - When a section contains only uninitialized data, this field should be zero. - - - - - The file pointer to the first page of the section within the COFF file. - For PE images, this must be a multiple of . - For object files, the value should be aligned on a 4 byte boundary for best performance. - When a section contains only uninitialized data, this field should be zero. - - - - - The file pointer to the beginning of relocation entries for the section. - This is set to zero for PE images or if there are no relocations. - - - - - The file pointer to the beginning of line-number entries for the section. - This is set to zero if there are no COFF line numbers. - This value should be zero for an image because COFF debugging information is deprecated. - - - - - The number of relocation entries for the section. This is set to zero for PE images. - - - - - The number of line-number entries for the section. - This value should be zero for an image because COFF debugging information is deprecated. - - - - - The flags that describe the characteristics of the section. - - - - - Used to modify the value of the property. - CLS-compliant setters are named with set_ prefix. - - - - - Used to read the value of the property. - CLS-compliant getters are named with get_ prefix. - - - - - Other method for property (not getter or setter) or event (not adder, remover, or raiser). - - - - - Used to add a handler for an event. - Corresponds to the AddOn flag in the Ecma 335 CLI specification. - CLS-compliant adders are named with add_ prefix. - - - - - Used to remove a handler for an event. - Corresponds to the RemoveOn flag in the Ecma 335 CLI specification. - CLS-compliant removers are named with remove_ prefix. - - - - - Used to indicate that an event has occurred. - Corresponds to the Fire flag in the Ecma 335 CLI specification. - CLS-compliant raisers are named with raise_ prefix. - - - - - Specifies the security actions that can be performed using declarative security. - - - - - No declarative security action. - - - - - Check that all callers in the call chain have been granted specified permission, - - - - - The calling code can access the resource identified by the current permission object, even if callers higher in the stack have not been granted permission to access the resource. - - - - - Without further checks refuse Demand for the specified permission. - - - - - Without further checks, refuse Demand for all permissions other than those specified. - - - - - Check that the immediate caller has been granted the specified permission; - - - - - The derived class inheriting the class or overriding a method is required to have been granted the specified permission. - - - - - The request for the minimum permissions required for code to run. This action can only be used within the scope of the assembly. - - - - - The request for additional permissions that are optional (not required to run). This request implicitly refuses all other permissions not specifically requested. This action can only be used within the scope of the assembly. - - - - - The request that permissions that might be misused will not be granted to the calling code. This action can only be used within the scope of the assembly. - - - - - The Resource is exported from the Assembly - - - - - The Resource is not exported from the Assembly - - - - - Masks just the visibility-related attributes. - - - - - Specifies all the hash algorithms used for hashing assembly files and for generating the strong name. - - - - - A mask indicating that there is no hash algorithm. If you specify None for a multi-module assembly, the common language runtime defaults to the SHA1 algorithm, since multi-module assemblies need to generate a hash. - - - - - Retrieves the MD5 message-digest algorithm. MD5 was developed by Rivest in 1991. It is basically MD4 with safety-belts and while it is slightly slower than MD4, it helps provide more security. The algorithm consists of four distinct rounds, which has a slightly different design from that of MD4. Message-digest size, as well as padding requirements, remain the same. - - - - - Retrieves a revision of the Secure Hash Algorithm that corrects an unpublished flaw in SHA. - - - - - Retrieves a version of the Secure Hash Algorithm with a hash size of 256 bits. - - - - - Retrieves a version of the Secure Hash Algorithm with a hash size of 384 bits. - - - - - Retrieves a version of the Secure Hash Algorithm with a hash size of 512 bits. - - - - - The assembly reference holds the full (unhashed) public key. - Not applicable on assembly definition. - - - - - The implementation of the referenced assembly used at runtime is not expected to match the version seen at compile time. - - - - - The assembly contains Windows Runtime code. - - - - - Content type mask. Masked bits correspond to values of . - - - - - Specifies that just-in-time (JIT) compiler optimization is disabled for the assembly. - - - - - Specifies that just-in-time (JIT) compiler tracking is enabled for the assembly. - - - - + + + + System.Reflection.Metadata + + + + + Compares the current content of this writer with another one. + + + + Range specified by and falls outside of the bounds of the buffer content. + + + Range specified by and falls outside of the bounds of the buffer content. + + + is negative. + + + is null. + is negative. + + + is null. + + + is null. + is negative. + + + is null. + + + is null. + Range specified by and falls outside of the bounds of the . + + + is null. + + + is null. + Range specified by and falls outside of the bounds of the . + + + + Writes a reference to a heap (heap index) or a table (row id). + + + References may be small (2B) or large (4B). + + + + + Writes UTF16 (little-endian) encoded string at the current position. + + is null. + + + + Writes UTF16 (little-endian) encoded string at the current position. + + is null. + + + + Writes string in SerString format (see ECMA-335-II 23.3 Custom attributes): + The string is UTF8 encoded and prefixed by the its size in bytes. + Null string is represented as a single byte 0xFF. + + + + + Writes UTF8 encoded string at the current position. + + is null. + + + + Implements compressed signed integer encoding as defined by ECMA-335-II chapter 23.2: Blobs and signatures. + + + If the value lies between -64 (0xFFFFFFC0) and 63 (0x3F), inclusive, encode as a one-byte integer: + bit 7 clear, value bits 5 through 0 held in bits 6 through 1, sign bit (value bit 31) in bit 0. + + If the value lies between -8192 (0xFFFFE000) and 8191 (0x1FFF), inclusive, encode as a two-byte integer: + 15 set, bit 14 clear, value bits 12 through 0 held in bits 13 through 1, sign bit(value bit 31) in bit 0. + + If the value lies between -268435456 (0xF000000) and 268435455 (0x0FFFFFFF), inclusive, encode as a four-byte integer: + 31 set, 30 set, bit 29 clear, value bits 27 through 0 held in bits 28 through 1, sign bit(value bit 31) in bit 0. + + can't be represented as a compressed signed integer. + + + + Implements compressed unsigned integer encoding as defined by ECMA-335-II chapter 23.2: Blobs and signatures. + + + If the value lies between 0 (0x00) and 127 (0x7F), inclusive, + encode as a one-byte integer (bit 7 is clear, value held in bits 6 through 0). + + If the value lies between 28 (0x80) and 214 – 1 (0x3FFF), inclusive, + encode as a 2-byte integer with bit 15 set, bit 14 clear(value held in bits 13 through 0). + + Otherwise, encode as a 4-byte integer, with bit 31 set, bit 30 set, bit 29 clear (value held in bits 28 through 0). + + can't be represented as a compressed signed integer. + + + + Writes a constant value (see ECMA-335 Partition II section 22.9) at the current position. + + is not of a constant type. + + + + Returns a sequence of all blobs that represent the content of the builder. + + Content is not available, the builder has been linked with another one. + + + + Compares the current content of this writer with another one. + + Content is not available, the builder has been linked with another one. + + + Content is not available, the builder has been linked with another one. + + + Range specified by and falls outside of the bounds of the buffer content. + Content is not available, the builder has been linked with another one. + + + Content is not available, the builder has been linked with another one. + + + Range specified by and falls outside of the bounds of the buffer content. + Content is not available, the builder has been linked with another one. + + + is null. + Content is not available, the builder has been linked with another one. + + + is default(). + Content is not available, the builder has been linked with another one. + + + is null. + Content is not available, the builder has been linked with another one. + + + is null. + Builder is not writable, it has been linked with another one. + + + is null. + Builder is not writable, it has been linked with another one. + + + + Reserves a contiguous block of bytes. + + is negative. + Builder is not writable, it has been linked with another one. + + + is negative. + Builder is not writable, it has been linked with another one. + + + is null. + is negative. + Builder is not writable, it has been linked with another one. + + + is null. + is negative. + Builder is not writable, it has been linked with another one. + Bytes successfully written from the . + + + is null. + Builder is not writable, it has been linked with another one. + + + is null. + Range specified by and falls outside of the bounds of the . + Builder is not writable, it has been linked with another one. + + + is null. + Builder is not writable, it has been linked with another one. + + + is null. + Range specified by and falls outside of the bounds of the . + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + + Writes a reference to a heap (heap index) or a table (row id). + + + References may be small (2B) or large (4B). + + Builder is not writable, it has been linked with another one. + + + + Writes UTF16 (little-endian) encoded string at the current position. + + is null. + Builder is not writable, it has been linked with another one. + + + + Writes UTF16 (little-endian) encoded string at the current position. + + is null. + Builder is not writable, it has been linked with another one. + + + + Writes string in SerString format (see ECMA-335-II 23.3 Custom attributes): + The string is UTF8 encoded and prefixed by the its size in bytes. + Null string is represented as a single byte 0xFF. + + Builder is not writable, it has been linked with another one. + + + + Writes UTF8 encoded string at the current position. + + is null. + Builder is not writable, it has been linked with another one. + + + + Implements compressed signed integer encoding as defined by ECMA-335-II chapter 23.2: Blobs and signatures. + + + If the value lies between -64 (0xFFFFFFC0) and 63 (0x3F), inclusive, encode as a one-byte integer: + bit 7 clear, value bits 5 through 0 held in bits 6 through 1, sign bit (value bit 31) in bit 0. + + If the value lies between -8192 (0xFFFFE000) and 8191 (0x1FFF), inclusive, encode as a two-byte integer: + 15 set, bit 14 clear, value bits 12 through 0 held in bits 13 through 1, sign bit(value bit 31) in bit 0. + + If the value lies between -268435456 (0xF000000) and 268435455 (0x0FFFFFFF), inclusive, encode as a four-byte integer: + 31 set, 30 set, bit 29 clear, value bits 27 through 0 held in bits 28 through 1, sign bit(value bit 31) in bit 0. + + can't be represented as a compressed signed integer. + Builder is not writable, it has been linked with another one. + + + + Implements compressed unsigned integer encoding as defined by ECMA-335-II chapter 23.2: Blobs and signatures. + + + If the value lies between 0 (0x00) and 127 (0x7F), inclusive, + encode as a one-byte integer (bit 7 is clear, value held in bits 6 through 0). + + If the value lies between 28 (0x80) and 214 – 1 (0x3FFF), inclusive, + encode as a 2-byte integer with bit 15 set, bit 14 clear (value held in bits 13 through 0). + + Otherwise, encode as a 4-byte integer, with bit 31 set, bit 30 set, bit 29 clear (value held in bits 28 through 0). + + can't be represented as a compressed integer. + Builder is not writable, it has been linked with another one. + + + + Writes a constant value (see ECMA-335 Partition II section 22.9) at the current position. + + is not of a constant type. + Builder is not writable, it has been linked with another one. + + + + Represents a disposable blob of memory accessed via unsafe pointer. + + + + + Pointer to the underlying data (not valid after disposal). + + + + + Returns the content of the memory block. + + + Only creates a copy of the data if they are not represented by a managed byte array, or the offset is non-zero. + + + + + Disposes the block. + + + The operation is idempotent, but must not be called concurrently with any other operations on the block + or with another call to Dispose. + + Using the block after dispose is an error in our code and therefore no effort is made to throw a tidy + ObjectDisposedException and null ref or AV is possible. + + + + + Represents a memory block backed by an array of bytes. + + + + + Class representing raw memory but not owning the memory. + + + + + Represents raw memory owned by an external object. + + + + + Creates and hydrates a memory block representing all data. + + Error while reading from the memory source. + + + + Creates and hydrates a memory block representing data in the specified range. + + Starting offset relative to the beginning of the data represented by this provider. + Size of the resulting block. + Error while reading from the memory source. + + + + Gets a seekable and readable that can be used to read all data. + The operations on the stream has to be done under a lock of if non-null. + The image starts at and has size . + It is the caller's responsibility not to read outside those bounds. + + + + + The size of the data. + + + + + Represents memory block allocated on native heap. + + + Owns the native memory resource. + + + + + Represents data read from a stream. + + + Uses memory map to load data from streams backed by files that are bigger than . + + + + Error while reading from the stream. + + + + Provides helpers to decode strings from unmanaged memory to System.String while avoiding + intermediate allocation. + + This has three components: + + (1) Light-up Encoding.GetString(byte*, int) via reflection and resurface it as extension + method. + + This is a new API that will provide API convergence across all platforms for + this scenario. It is already on .NET 4.6+ and ASP.NET vNext, but not yet available + on every platform we support. See below for how we fall back. + + (2) Deal with WinRT prefixes. + + When reading managed winmds with projections enabled, the metadata reader needs to prepend + a WinRT prefix in some case . Doing this without allocation poses a problem + as we don't have the prefix and input in contiguous data that we can pass to the + Encoding.GetString. We handle this case using pooled managed scratch buffers where we copy + the prefix and input and decode using Encoding.GetString(byte[], int, int). + + (3) Deal with platforms that don't yet have Encoding.GetString(byte*, int). + + If we're running on a full framework earlier than 4.6, we will bind to the internal + String.CreateStringFromEncoding which is equivalent and Encoding.GetString is just a trivial + wrapper around it in .NET 4.6. This means that we always have the fast path on every + full framework version we support. + + If we can't bind to it via reflection, then we emulate it using what is effectively (2) and + with an empty prefix. + + For both (2) and (3), the pooled buffers have a fixed size deemed large enough for the + vast majority of metadata strings. In the rare worst case (byteCount > threshold and + (lightUpAttemptFailed || prefix != null), we give up and allocate a temporary array, + copy to it, decode, and throw it away. + + + + + The offset bias value used in the FNV-1a algorithm + See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + + + + + The generative factor used in the FNV-1a algorithm + See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + + + + + Compute the FNV-1a hash of a sequence of bytes + See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + + The sequence of bytes + The FNV-1a hash of + + + + Compute the FNV-1a hash of a sequence of bytes + See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + + The sequence of bytes + The FNV-1a hash of + + + + Provides tools for using in interop scenarios. + + + *** WARNING *** + + If you decide to copy this code elsewhere, please retain the documentation here + and the Dangerous prefixes in the API names. This will help track down and audit + other places where this technique (with dangerous consequences when misused) may + be applied. + + A generic version of this API was once public in a pre-release of immutable + collections, but it was deemed to be too subject to abuse when available publicly. + + This implementation is scoped to byte arrays as that is all that the metadata reader needs. + + Also, since we don't have access to immutable collection internals, we use a trick involving + overlapping a with a refer. While + unverifiable, it is valid. See Ecma 335, section II.10.7 Controlling instance layout: + + "It is possible to overlap fields in this way, though offsets occupied by an object reference + shall not overlap with offsets occupied by a built-in value type or a part of + another object reference. While one object reference can completely overlap another, this is + unverifiable." + + Furthermore, the fact that backed by a single + field is something inherent to the design of ImmutableArray in order to get its performance + characteristics and therefore something we (Microsoft) are comfortable defining as a contract that + can be depended upon as below. + + + + + Creates a new instance of using a given mutable array as the backing + field, without creating a defensive copy. It is the responsibility of the caller to ensure no other mutable + references exist to the array. Do not mutate the array after calling this method. + + The mutable array to use as the backing field. The incoming reference is set to null + since it should not be retained by the caller. + + Users of this method should take extra care to ensure that the mutable array given as a parameter + is never modified. The returned will use the given array as its backing + field without creating a defensive copy, so changes made to the given mutable array will be observable + on the returned . Instance and static methods of + and may malfunction if they operate on an instance + whose underlying backing field is modified. + + An immutable array. + + + + Access the backing mutable array instance for the given , without + creating a defensive copy. It is the responsibility of the caller to ensure the array is not modified + through the returned mutable reference. Do not mutate the returned array. + + The from which to retrieve the backing field. + + Users of this method should take extra care to ensure that the returned mutable array is never modified. + The returned mutable array continues to be used as the backing field of the given + without creating a defensive copy, so changes made to the returned mutable array will be observable + on the given . Instance and static methods of + and may malfunction if they operate on an instance + whose underlying backing field is modified. + + The underlying array, or null if is true. + + + + Decodes a compressed integer value starting at offset. + See Metadata Specification section II.23.2: Blobs and signatures. + + Offset to the start of the compressed data. + Bytes actually read. + + Value between 0 and 0x1fffffff, or if the value encoding is invalid. + + + + + Read UTF8 at the given offset up to the given terminator, null terminator, or end-of-block. + + Offset in to the block where the UTF8 bytes start. + UTF8 encoded prefix to prepend to the bytes at the offset before decoding. + The UTF8 decoder to use that allows user to adjust fallback and/or reuse existing strings without allocating a new one. + The number of bytes read, which includes the terminator if we did not hit the end of the block. + A character in the ASCII range that marks the end of the string. + If a value other than '\0' is passed we still stop at the null terminator if encountered first. + The decoded string. + + + + Get number of bytes from offset to given terminator, null terminator, or end-of-block (whichever comes first). + Returned length does not include the terminator, but numberOfBytesRead out parameter does. + + Offset in to the block where the UTF8 bytes start. + A character in the ASCII range that marks the end of the string. + If a value other than '\0' is passed we still stop at the null terminator if encountered first. + The number of bytes read, which includes the terminator if we did not hit the end of the block. + Length (byte count) not including terminator. + + + + In a table that specifies children via a list field (e.g. TypeDef.FieldList, TypeDef.MethodList), + seaches for the parent given a reference to a child. + + Returns row number [0..RowCount). + + + + In a table ordered by a column containing entity references seaches for a row with the specified reference. + + Returns row number [0..RowCount) or -1 if not found. + + + + Calculates a range of rows that have specified value in the specified column in a table that is sorted by that column. + + + + + Calculates a range of rows that have specified value in the specified column in a table that is sorted by that column. + + + + + The usage is: + var inst = PooledStringBuilder.GetInstance(); + var sb = inst.builder; + ... Do Stuff... + ... sb.ToString() ... + inst.Free(); + + + + + Generic implementation of object pooling pattern with predefined pool size limit. The main + purpose is that limited number of frequently used objects can be kept in the pool for + further recycling. + + Notes: + 1) it is not the goal to keep all returned objects. Pool is not meant for storage. If there + is no space in the pool, extra returned objects will be dropped. + + 2) it is implied that if object was obtained from a pool, the caller will return it back in + a relatively short time. Keeping checked out objects for long durations is ok, but + reduces usefulness of pooling. Just new up your own. + + Not returning objects to the pool in not detrimental to the pool's work, but is a bad practice. + Rationale: + If there is no intent for reusing the object, do not use pool - just use "new". + + + + + Produces an instance. + + + Search strategy is a simple linear probing which is chosen for it cache-friendliness. + Note that Free will try to store recycled objects close to the start thus statistically + reducing how far we will typically search. + + + + + Returns objects to the pool. + + + Search strategy is a simple linear probing which is chosen for it cache-friendliness. + Note that Free will try to store recycled objects close to the start thus statistically + reducing how far we will typically search in Allocate. + + + + + Copies specified amount of data from given stream to a target memory pointer. + + unexpected stream end. + + + + Attempts to read all of the requested bytes from the stream into the buffer + + + The number of bytes read. Less than will + only be returned if the end of stream is reached before all bytes can be read. + + + Unlike it is not guaranteed that + the stream position or the output buffer will be unchanged if an exception is + returned. + + + + + Decodes custom attribute blobs. + + + + + Gets the TType representation for . + + + + + Returns true if the given type represents . + + + + + Get the type symbol for the given serialized type name. + The serialized type name is in so-called "reflection notation" (i.e. as understood by .) + + The name is malformed. + + + + Gets the underlying type of the given enum type symbol. + + The given type symbol does not represent an enum. + + + + Represents the shape of an array type. + + + + + Gets the number of dimensions in the array. + + + + + Gets the sizes of each dimension. Length may be smaller than rank, in which case the trailing dimensions have unspecified sizes. + + + + + Gets the lower-bounds of each dimension. Length may be smaller than rank, in which case the trailing dimensions have unspecified lower bounds. + + + + + Gets the type symbol for a single-dimensional array with zero lower bounds of the given element type. + + + + + Gets the a type symbol for the function pointer type of the given method signature. + + + + + Gets the type symbol for the generic method parameter at the given zero-based index. + + + + + Gets the type symbol for the generic type parameter at the given zero-based index. + + + + + Gets the type symbol for a type with a custom modifier applied. + + The metadata reader that was passed to the . It may be null. + True if the modifier is required, false if it's optional. + The modifier type applied. + The type symbol of the underlying type without modifiers applied. + + + + Gets the type symbol for a local variable type that is marked as pinned. + + + + + Gets the type symbol for a type definition. + + + The metadata reader that was passed to the. It may be null. + + + The type definition handle. + + + When is used indicates whether + the type reference is to class or value type. Otherwise + will be passed. + + + + + Gets the type symbol for a type reference. + + + The metadata reader that was passed to the . It may be null. + + + The type definition handle. + + + When is used indicates whether + the type reference is to class or value type. Otherwise + will be passed. + + + + + Gets the type symbol for a type specification. + + + The metadata reader that was passed to the . It may be null. + + + The type specification handle. + + + When is used indicates whether + the type reference is to class or value type. Otherwise + will be passed. + + + + + It is not known in the current context if the type reference or definition is a class or value type. + This will be the case when is not specified. + + + + + The type definition or reference refers to a class. + + + + + The type definition or reference refers to a value type. + + + + + Gets the type symbol for a primitive type. + + + + + Gets the type symbol for a generic instantiation of the given generic type with the given type arguments. + + + + + Gets the type symbol for a generalized array of the given element type and shape. + + + + + Gets the type symbol for a managed pointer to the given element type. + + + + + Gets the type symbol for an unmanaged pointer to the given element ty + + + + + Decodes signature blobs. + See Metadata Specification section II.23.2: Blobs and signatures. + + + + + Creates a new SignatureDecoder. + + The provider used to obtain type symbols as the signature is decoded. + + The metadata reader from which the signature was obtained. It may be null if the given provider allows it. + However, if is specified, it should + be non-null to evaluate WinRT projections from class to value type or vice-versa correctly. + + Set of optional decoder features to enable. + + + + Decodes a type embedded in a signature and advances the reader past the type. + + The blob reader positioned at the leading SignatureTypeCode + Allow a to follow a (CLASS | VALUETYPE) in the signature. + At present, the only context where that would be valid is in a LocalConstantSig as defined by the Portable PDB specification. + + The decoded type. + The reader was not positioned at a valid signature type. + + + + Decodes a list of types, with at least one instance that is preceded by its count as a compressed integer. + + + + + Decodes a method (definition, reference, or standalone) or property signature blob. + + BlobReader positioned at a method signature. + The decoded method signature. + The method signature is invalid. + + + + Decodes a method specification signature blob and advances the reader past the signature. + + A BlobReader positioned at a valid method specification signature. + The types used to instantiate a generic method via the method specification. + + + + Decodes a local variable signature blob and advances the reader past the signature. + + The blob reader positioned at a local variable signature. + The local variable types. + The local variable signature is invalid. + + + + Decodes a field signature blob and advances the reader past the signature. + + The blob reader positioned at a field signature. + The decoded field type. + + + + Disable all options (default when no options are passed). + + + + + Causes the decoder to pass or + to the instead of . + + + There is additional overhead for this case when dealing with .winmd files to handle projection. + Most scenarios will end up resolving valuetype vs. class from the actual definitions and do not + need to know which was used in the signature. As such, it is not enabled by default. + + + + + Represents a method (definition, reference, or standalone) or property signature. + In the case of properties, the signature matches that of a getter with a distinguishing . + + + + + Represents the information in the leading byte of the signature (kind, calling convention, flags). + + + + + Gets the method's return type. + + + + + Gets the number of parameters that are required. Will be equal to the length of + unless this signature represents the standalone call site of a vararg method, in which case the entries + extra entries in are the types used for the optional parameters. + + + + + Gets the number of generic type parameters of the method. Will be 0 for non-generic methods. + + + + + Gets the method's parameter types. + + + + + Represents a primitive type found in metadata signatures. + + + + + Serialized #Pdb stream. + + + + + Fills in stringIndexMap with data from stringIndex and write to stringWriter. + Releases stringIndex as the stringTable is sealed after this point. + + + + + Sorts strings such that a string is followed immediately by all strings + that are a suffix of it. + + + + + Table row counts. + + + + + External table row counts. + + + + + Non-empty tables that are emitted into the metadata table stream. + + + + + Non-empty tables stored in an external metadata table stream that might be referenced from the metadata table stream being emitted. + + + + + Exact (unaligned) heap sizes. + + + + + Overall size of metadata stream storage (stream headers, table stream, heaps, additional streams). + Aligned to . + + + + + The size of metadata stream (#- or #~). Aligned. + Aligned to . + + + + + The size of #Pdb stream. Aligned. + + + + + Metadata header size. + Includes: + - metadata storage signature + - storage header + - stream headers + + + + + Total size of metadata (header and all streams). + + + + + Provides an extension method to access the TypeDefinitionId column of the ExportedType table. + + + + + Gets a hint at the likely row number of the target type in the TypeDef table of its module. + If the namespaces and names do not match, resolution falls back to a full search of the + target TypeDef table. Ignored and should be zero if is + true. + + + + + Provides extension methods for working with certain raw elements of the Ecma 335 metadata tables and heaps. + + + + + Returns the number of rows in the specified table. + + is null. + is not a valid table index. + + + + Returns the size of a row in the specified table. + + is null. + is not a valid table index. + + + + Returns the offset from the start of metadata to the specified table. + + is null. + is not a valid table index. + + + + Returns the size of the specified heap. + + is null. + is not a valid heap index. + + + + Returns the offset from the start of metadata to the specified heap. + + is null. + is not a valid heap index. + + + + Returns the size of the specified heap. + + is null. + is not a valid heap index. + + + + Returns the a handle to the UserString that follows the given one in the UserString heap or a nil handle if it is the last one. + + is null. + + + + Returns the a handle to the Blob that follows the given one in the Blob heap or a nil handle if it is the last one. + + is null. + + + + Returns the a handle to the String that follows the given one in the String heap or a nil handle if it is the last one. + + is null. + + + + Enumerates entries of EnC log. + + is null. + + + + Enumerates entries of EnC map. + + is null. + + + + Enumerate types that define one or more properties. + + + The resulting sequence corresponds exactly to entries in PropertyMap table, + i.e. n-th returned is stored in n-th row of PropertyMap. + + + + + Enumerate types that define one or more events. + + + The resulting sequence corresponds exactly to entries in EventMap table, + i.e. n-th returned is stored in n-th row of EventMap. + + + + + Maximum number of tables that can be present in Ecma335 metadata. + + + + + Maximum number of tables that can be present in Ecma335 metadata. + + + + + Returns the row number of a metadata table entry that corresponds + to the specified in the context of . + + One based row number. + The is not a valid metadata table handle. + + + + Returns the offset of metadata heap data that corresponds + to the specified in the context of . + + Zero based offset, or -1 if isn't a metadata heap handle. + The operation is not supported for the specified . + The is invalid. + + + + Returns the metadata token of the specified in the context of . + + Metadata token. + The operation is not supported for the specified . + + + + Returns the metadata token of the specified in the context of . + + Metadata token. + + Handle represents a metadata entity that doesn't have a token. + A token can only be retrieved for a metadata table handle or a heap handle of type . + + The operation is not supported for the specified . + + + + Returns the row number of a metadata table entry that corresponds + to the specified . + + + One based row number, or -1 if can only be interpreted in a context of a specific . + See . + + + + + Returns the offset of metadata heap data that corresponds + to the specified . + + + Zero based offset, or -1 if can only be interpreted in a context of a specific . + See . + + + + + Returns the metadata token of the specified . + + + Metadata token, or 0 if can only be interpreted in a context of a specific . + See . + + + Handle represents a metadata entity that doesn't have a token. + A token can only be retrieved for a metadata table handle or a heap handle of type . + + + + + Returns the metadata token of the specified . + + + Metadata token, or 0 if can only be interpreted in a context of a specific . + See . + + + + + Gets the of the table corresponding to the specified . + + Handle type. + Table index. + True if the handle type corresponds to an Ecma335 table, false otherwise. + + + + Gets the of the heap corresponding to the specified . + + Handle type. + Heap index. + True if the handle type corresponds to an Ecma335 heap, false otherwise. + + + + Creates a handle from a token value. + + + is not a valid metadata token. + It must encode a metadata table entity or an offset in heap. + + + + + Creates an entity handle from a token value. + + is not a valid metadata entity token. + + + + Creates an from a token value. + + + is not a valid table index. + + + + Creates an from a token value. + + + is not a valid table index. + + + + Returns true if the given raw (non-virtual) handle represents the same string as given ASCII string. + + + + + Returns the heap index of the given ASCII character or -1 if not found prior null terminator or end of heap. + + + + + Returns true if the given raw (non-virtual) handle represents a string that starts with given ASCII prefix. + + + + + Equivalent to Array.BinarySearch, searches for given raw (non-virtual) handle in given array of ASCII strings. + + + + + These contants are all in the byte range and apply to the interpretation of , + + + + + Use the highest bit to mark tokens that are virtual (synthesized). + We create virtual tokens to represent projected WinMD entities. + + + + + In the case of string handles, the two lower bits that (in addition to the + virtual bit not included in this mask) encode how to obtain the string value. + + + + + Use the highest bit to mark tokens that are virtual (synthesized). + We create virtual tokens to represent projected WinMD entities. + + + + + Returns true if the token value can escape the metadata reader. + We don't allow virtual tokens and heap tokens other than UserString to escape + since the token type ids are internal to the reader and not specified by ECMA spec. + + Spec (Partition III, 1.9 Metadata tokens): + Many CIL instructions are followed by a "metadata token". This is a 4-byte value, that specifies a row in a + metadata table, or a starting byte offset in the User String heap. + + For example, a value of 0x02 specifies the TypeDef table; a value of 0x70 specifies the User + String heap.The value corresponds to the number assigned to that metadata table (see Partition II for the full + list of tables) or to 0x70 for the User String heap.The least-significant 3 bytes specify the target row within that + metadata table, or starting byte offset within the User String heap. + + + + + Returns whether the namespaceTable has been created. If it hasn't, calling a GetXXX method + on this will probably have a very high amount of overhead. + + + + + This will return a StringHandle for the simple name of a namespace name at the given segment index. + If no segment index is passed explicitly or the "segment" index is greater than or equal to the number + of segments, then the last segment is used. "Segment" in this context refers to part of a namespace + name between dots. + + Example: Given a NamespaceDefinitionHandle to "System.Collections.Generic.Test" called 'handle': + + reader.GetString(GetSimpleName(handle)) == "Test" + reader.GetString(GetSimpleName(handle, 0)) == "System" + reader.GetString(GetSimpleName(handle, 1)) == "Collections" + reader.GetString(GetSimpleName(handle, 2)) == "Generic" + reader.GetString(GetSimpleName(handle, 3)) == "Test" + reader.GetString(GetSimpleName(handle, 1000)) == "Test" + + + + + Two distinct namespace handles represent the same namespace if their full names are the same. This + method merges builders corresponding to such namespace handles. + + + + + This will take 'table' and merge all of the NamespaceData instances that point to the same + namespace. It has to create 'stringTable' as an intermediate dictionary, so it will hand it + back to the caller should the caller want to use it. + + + + + Creates a NamespaceDataBuilder instance that contains a synthesized NamespaceDefinitionHandle, + as well as the name provided. + + + + + Quick convenience method that handles linking together child + parent + + + + + Links a child to its parent namespace. If the parent namespace doesn't exist, this will create a + virtual one. This will automatically link any virtual namespaces it creates up to its parents. + + + + + This will link all parents/children in the given namespaces dictionary up to each other. + + In some cases, we need to synthesize namespaces that do not have any type definitions or forwarders + of their own, but do have child namespaces. These are returned via the virtualNamespaces out + parameter. + + + + + Loops through all type definitions in metadata, adding them to the given table + + + + + Loops through all type forwarders in metadata, adding them to the given table + + + + + Populates namespaceList with distinct namespaces. No ordering is guaranteed. + + + + + If the namespace table doesn't exist, populates it! + + + + + If the namespace list doesn't exist, populates it! + + + + + An intermediate class used to build NamespaceData instances. This was created because we wanted to + use ImmutableArrays in NamespaceData, but having ArrayBuilders and ImmutableArrays that served the + same purpose in NamespaceData got ugly. With the current design of how we create our Namespace + dictionary, this needs to be a class because we have a many-to-one mapping between NamespaceHandles + and NamespaceData. So, the pointer semantics must be preserved. + + This class assumes that the builders will not be modified in any way after the first call to + Freeze(). + + + + + Returns a NamespaceData that represents this NamespaceDataBuilder instance. After calling + this method, it is an error to use any methods or fields except Freeze() on the target + NamespaceDataBuilder. + + + + + Returns field offset for given field RowId, or -1 if not available. + + + + + In CLI metadata equal to the actual number of entries in AssemblyRef table. + In WinMD metadata it includes synthesized AssemblyRefs in addition. + + + + + True if the file contains metadata. + + + Corresponds to Flags field of File table in ECMA-335 Standard. + + + + + File name with extension. + + + Corresponds to Name field of File table in ECMA-335 Standard. + + + + + Hash value of the file content calculated using . + + + Corresponds to HashValue field of File table in ECMA-335 Standard. + + + + An array containing the '\0' character. + + + + Reads number. + + + Decimal number is encoded in 13 bytes as follows: + - byte 0: highest bit indicates sign (1 for negative, 0 for non-negative); the remaining 7 bits encode scale + - bytes 1..12: 96-bit unsigned integer in little endian encoding. + + The data at the current position was not a valid number. + + + + Reads UTF8 encoded string starting at the current position. + + The number of bytes to read. + The string. + bytes not available. + + + + Reads UTF16 (little-endian) encoded string starting at the current position. + + The number of bytes to read. + The string. + bytes not available. + + + + Reads bytes starting at the current position. + + The number of bytes to read. + The byte array. + bytes not available. + + + + Reads an unsigned compressed integer value. + See Metadata Specification section II.23.2: Blobs and signatures. + + The value of the compressed integer that was read. + true if the value was read successfully. false if the data at the current position was not a valid compressed integer. + + + + Reads an unsigned compressed integer value. + See Metadata Specification section II.23.2: Blobs and signatures. + + The value of the compressed integer that was read. + The data at the current position was not a valid compressed integer. + + + + Reads a signed compressed integer value. + See Metadata Specification section II.23.2: Blobs and signatures. + + The value of the compressed integer that was read. + true if the value was read successfully. false if the data at the current position was not a valid compressed integer. + + + + Reads a signed compressed integer value. + See Metadata Specification section II.23.2: Blobs and signatures. + + The value of the compressed integer that was read. + The data at the current position was not a valid compressed integer. + + + + Reads type code encoded in a serialized custom attribute value. + + if the encoding is invalid. + + + + Reads type code encoded in a signature. + + if the encoding is invalid. + + + + Reads a string encoded as a compressed integer containing its length followed by + its contents in UTF8. Null strings are encoded as a single 0xFF byte. + + Defined as a 'SerString' in the Ecma CLI specification. + String value or null. + If the encoding is invalid. + + + + Reads a type handle encoded in a signature as TypeDefOrRefOrSpecEncoded (see ECMA-335 II.23.2.8). + + The handle or nil if the encoding is invalid. + + + + Reads a #Blob heap handle encoded as a compressed integer. + + + Blobs that contain references to other blobs are used in Portable PDB format, for example . + + + + + Reads a constant value (see ECMA-335 Partition II section 22.9) from the current position. + + Error while reading from the blob. + is not a valid . + + Boxed constant value. To avoid allocating the object use Read* methods directly. + Constants of type are encoded as UTF16 strings, use to read them. + + + + + The type of the constant value. + + + Corresponds to Type field of Constant table in ECMA-335 Standard. + + + + + The constant value. + + + Corresponds to Value field of Constant table in ECMA-335 Standard. + + + + + The parent handle (, , or ). + + + Corresponds to Parent field of Constant table in ECMA-335 Standard. + + + + + The constructor ( or ) of the custom attribute type. + + + Corresponds to Type field of CustomAttribute table in ECMA-335 Standard. + + + + + The handle of the metadata entity the attribute is applied to. + + + Corresponds to Parent field of CustomAttribute table in ECMA-335 Standard. + + + + + The value of the attribute. + + + Corresponds to Value field of CustomAttribute table in ECMA-335 Standard. + + + + + Decodes the arguments encoded in the value blob. + + + + + Start IL offset of the try block. + + + + + Length in bytes of try block. + + + + + Start IL offset of the exception handler. + + + + + Length in bytes of the exception handler. + + + + + IL offset of the start of the filter block, or -1 if the region is not a filter. + + + + + Returns a TypeRef, TypeDef, or TypeSpec handle if the region represents a catch, nil token otherwise. + + + + + Name of the target type, or nil if the type is nested or defined in a root namespace. + + + + + Full name of the namespace where the target type, or nil if the type is nested or defined in a root namespace. + + + + + The definition handle of the namespace where the target type is defined, or nil if the type is nested or defined in a root namespace. + + + + + Handle to resolve the implementation of the target type. + + + + representing another module in the assembly. + representing another assembly if is true. + representing the declaring exported type in which this was is nested. + + + + + + Returns field layout offset, or -1 if not available. + + + + + or . + + + Corresponds to Owner field of GenericParam table in ECMA-335 Standard. + + + + + Attributes specifying variance and constraints. + + + Corresponds to Flags field of GenericParam table in ECMA-335 Standard. + + + + + Zero-based index of the parameter within the declaring generic type or method declaration. + + + Corresponds to Number field of GenericParam table in ECMA-335 Standard. + + + + + The name of the generic parameter. + + + Corresponds to Name field of GenericParam table in ECMA-335 Standard. + + + + + The constrained . + + + Corresponds to Owner field of GenericParamConstraint table in ECMA-335 Standard. + + + + + Handle (, , or ) + specifying from which type this generic parameter is constrained to derive, + or which interface this generic parameter is constrained to implement. + + + Corresponds to Constraint field of GenericParamConstraint table in ECMA-335 Standard. + + + + + Represents generic type parameters of a method or type. + + + + + Represents constraints of a generic type parameter. + + + + + Collection of parameters of a specified method. + + + + + Represents a collection of . + + + + + Represents a collection of . + + + + + Represents a collection of . + + + + + Represents a collection of . + + + + + Collection of assembly references. + + + + + Represents a collection of . + + + + + Represents a collection of . + + + + + Compares two handles. + + + The order of handles that differ in kind and are not is undefined. + Returns 0 if and only if returns true. + + + + + Compares two entity handles. + + + Returns 0 if and only if returns true. + + + + + Represents any metadata entity (type reference/definition/specification, method definition, custom attribute, etc.) or value (string, blob, guid, user string). + + + Use to store multiple kinds of handles. + + + + + Creates from a token or a token combined with a virtual flag. + + + + + Token type (0x##000000), does not include virtual flag. + + + + + Small token type (0x##), does not include virtual flag. + + + + + Value stored in an . + + + + + Value stored in a concrete entity handle (see , , etc.). + + + + + Represents a metadata entity (type reference/definition/specification, method definition, custom attribute, etc.). + + + Use to store multiple kinds of entity handles. + It has smaller memory footprint than . + + + + + Value stored in a specific entity handle (see , , etc.). + + + + + Returns a handle to corresponding to this handle. + + + The resulting handle is only valid within the context of a open on the Portable PDB blob, + which in case of standalone PDB file is a different reader than the one containing this method definition. + + + + + #UserString heap handle. + + + The handle is 32-bit wide. + + + + + A handle that represents a namespace definition. + + + + + The interface that is implemented + , , or + + + + + Specifies the byte offset within the referenced file at which this resource record begins. + + + Corresponds to Offset field of ManifestResource table in ECMA-335 Standard. + + + + + Resource attributes. + + + Corresponds to Flags field of ManifestResource table in ECMA-335 Standard. + + + + + Name of the resource. + + + Corresponds to Name field of ManifestResource table in ECMA-335 Standard. + + + + + , , or nil handle. + + + Corresponds to Implementation field of ManifestResource table in ECMA-335 Standard. + + If nil then is an offset in the PE image that contains the metadata, + starting from the Resource entry in the CLI header. + + + + + MethodDef, ModuleRef,TypeDef, TypeRef, or TypeSpec handle. + + + + + Gets a handle to the signature blob. + + + + + Determines if the member reference is to a method or field. + + The member reference signature is invalid. + + + + Indicates whether a represents a standalone method or local variable signature. + + + + + The represents a standalone method signature. + + + + + The references a local variable signature. + + + + + Indicates whether a references a method or field. + + + + + The references a method. + + + + + The references a field. + + + + + CLI metadata. + + + + + Windows Metadata. + + + + + Windows Metadata generated by managed compilers. + + + + + Reads metadata as defined byte the ECMA 335 CLI specification. + + + + + Creates a metadata reader from the metadata stored at the given memory location. + + + The memory is owned by the caller and it must be kept memory alive and unmodified throughout the lifetime of the . + + + + + Creates a metadata reader from the metadata stored at the given memory location. + + + The memory is owned by the caller and it must be kept memory alive and unmodified throughout the lifetime of the . + Use to obtain + metadata from a PE image. + + + + + Creates a metadata reader from the metadata stored at the given memory location. + + + The memory is owned by the caller and it must be kept memory alive and unmodified throughout the lifetime of the . + Use to obtain + metadata from a PE image. + + + + + True if the metadata stream has minimal delta format. Used for EnC. + + + The metadata stream has minimal delta format if "#JTD" stream is present. + Minimal delta format uses large size (4B) when encoding table/heap references. + The heaps in minimal delta only contain data of the delta, + there is no padding at the beginning of the heaps that would align them + with the original full metadata heaps. + + + + + Looks like this function reads beginning of the header described in + Ecma-335 24.2.1 Metadata root + + + + + Reads stream headers described in Ecma-335 24.2.2 Stream header + + + + + A row count for each possible table. May be indexed by . + + + + + Information decoded from #Pdb stream, or null if the stream is not present. + + + + + Returns an array of types nested in the specified type. + + + + + The backing field of a WinRT enumeration type is not public although the backing fields + of managed enumerations are. To allow managed languages to directly access this field, + it is made public by the metadata adapter. + + + + + We want to know if a given method implements a redirected interface. + For example, if we are given the method RemoveAt on a class "A" + which implements the IVector interface (which is redirected + to IList in .NET) then this method would return true. The most + likely reason why we would want to know this is that we wish to hide + (mark private) all methods which implement methods on a redirected + interface. + + The declaration token for the method + + Returns true if the redirected interface is . + + True if the method implements a method on a redirected interface. + False otherwise. + + + + Returns the type definition or reference handle of the attribute type. + + or or nil token if the metadata is invalid and the type can't be determined. + + + + All options are disabled. + + + + + The options that are used when a is obtained + via an overload that does not take a + argument. + + + + + Windows Runtime projections are enabled (on by default). + + + + + Provides string comparison helpers to query strings in metadata while + avoiding allocation where possible. + + + + No allocation is performed unless both the handle argument and the + value argument contain non-ascii text. + + Obtain instances using . + + A default-initialized instance is useless and behaves as a null reference. + + The code is optimized such that there is no additional overhead in + re-obtaining a a comparer over hoisting it in to a local. + + That is to say that a construct like: + + + if (reader.StringComparer.Equals(typeDef.Namespace, "System") && + reader.StringComparer.Equals(typeDef.Name, "Object") + { + // found System.Object + } + + + is no less efficient than: + + + var comparer = reader.StringComparer; + if (comparer.Equals(typeDef.Namespace, "System") && + comparer.Equals(typeDef.Name, "Object") + { + // found System.Object + } + + + The choice between them is therefore one of style and not performance. + + + + + Provides the with a custom mechanism for decoding + byte sequences in metadata that represent text. + + + This can be used for the following purposes: + + 1) To customize the treatment of invalid input. When no decoder is provided, + the uses the default fallback replacement + with \uFFFD) + + 2) To reuse existing strings instead of allocating a new one for each decoding + operation. + + + + + The default decoder used by to decode UTF-8 when + no decoder is provided to the constructor. + + + + + Creates a for the given encoding. + + The encoding to use. + + To cache and reuse existing strings. Create a derived class and override + + + + + Gets the encoding used by this instance. + + + + + The mechanism through which the obtains strings + for byte sequences in metadata. Override this to cache strings if required. + Otherwise, it is implemented by forwarding straight to + and every call will allocate a new string. + + Pointer to bytes to decode. + Number of bytes to decode. + The decoded string. + + + + Size of the method body - includes the header, IL and exception regions. + + + + + MethodDef or MemberRef handle specifying to which generic method this refers, + that is which generic method is it an instantiation of. + + + + + Gets a handle to the signature blob. + + + + + Gets the unqualified name of the NamespaceDefinition. + + + + + Gets the parent namespace. + + + + + Gets the namespace definitions that are direct children of the current + namespace definition. + + System.Collections and System.Linq are direct children of System. + System.Collections.Generic is a direct child of System.Collections. + System.Collections.Generic is *not* a direct child of System. + + + + + Gets all type definitions that reside directly in a namespace. + + + + + Gets all exported types that reside directly in a namespace. + + + + + Returns Document Name Blob. + + + + + representing a blob on #Blob heap in Portable PDB + structured as Document Name. + + + The kind of the handle is . + The handle is a specialization of and doesn't have a distinct kind. + + + + + Returns a handle to corresponding to this handle. + + + The resulting handle is only valid within the context of a open on the type system metadata blob, + which in case of standalone PDB file is a different reader than the one containing this method debug information. + + + + Invalid blob format. + + + + The constant signature. + + + + + Returns a blob encoding sequence points. + Use to decode. + + + + + The document containing the first sequence point of the method, + or nil if the method doesn't have sequence points. + + + + + Returns local signature handle. + + + + + If the method is a MoveNext method of a state machine returns the kickoff method of the state machine, otherwise returns nil handle. + + + + + Returns a body block of a method with specified Relative Virtual Address (RVA); + + is null. + The body is not found in the metadata or is invalid. + Section where the method is stored is not available. + + + + Gets a from a . + + + The caller must keep the alive and undisposed throughout the lifetime of the metadata reader. + + + + + Gets a from a . + + + The caller must keep the alive and undisposed throughout the lifetime of the metadata reader. + + + + + Gets a from a . + + + The caller must keep the alive and undisposed throughout the lifetime of the metadata reader. + + + + + Equivalent to . + + + + + Equivalent to . + + + + + Equivalent to . + + + + + Equivalent to . + + + + + Equivalent to . + + + + + Equivalent to . + + + + + Equivalent to . + + + + + Equivalent to . + + + + + Equivalent to . + + + + + Equivalent to . + + + + + Equivalent to . + + + + + Equivalent to . + + + + + Equivalent to . + + + + + Equivalent to . + + + + + Equivalent to . + + + + + The attribute argument is a System.Type instance. + + + + + The attribute argument is "boxed" (passed to a parameter, field, or property of type object) and carries type information in the attribute blob. + + + + + The attribute argument is an Enum instance. + + + + + Specified additional flags that can be applied to method signatures. + Underlying values correspond to the representation in the leading signature + byte represented by . + + + + + No flags. + + + + + Generic method. + + + + + Instance method. + + Ecma 335 CLI Specification refers to this flag as HAS_THIS. + + + + The first explicitly declared parameter represents the instance pointer. + + + + + Specifies how arguments in a given signature are passed from the caller to the callee. + Underlying values correspond to the representation in the leading signature byte + represented by . + + + + + Managed calling convention with fixed-length argument list. + + + + + Unmanaged C/C++-style calling convention where the call stack is cleaned by the caller. + + + + + Unmanaged calling convention where call stack is cleaned up by the callee. + + + + + Unmanaged C++-style calling convention for calling instance member functions with a fixed argument list. + + + + + Unmanaged calling convention where arguments are passed in registers when possible. + + + + + Managed calling convention for passing extra arguments. + + + + + Represents the signature characteristics specified by the leading byte of signature blobs. + + + This header byte is present in all method definition, method reference, standalone method, field, + property, and local variable signatures, but not in type specification signatures. + + + + + Specifies the signature kind. Underlying values correspond to the representation + in the leading signature byte represented by . + + + + + Method reference, method definition, or standalone method signature. + + + + + Field signature. + + + + + Local variables signature. + + + + + Property signature. + + + + + Method specification signature. + + + + + Represents the type codes that are used in signature encoding. + + + + + Represents an invalid or uninitialized type code. It will not appear in valid signatures. + + + + + Represents in signatures. + + + + + Represents in signatures. + + + + + Represents in signatures. + + + + + Represents in signatures. + + + + + Represents in signatures. + + + + + Represents in signatures. + + + + + Represents in signatures. + + + + + Represents in signatures. + + + + + Represents in signatures. + + + + + Represents in signatures. + + + + + Represents in signatures. + + + + + Represents in signatures. + + + + + Represents in signatures. + + + + + Represents in signatures. + + + + + Represents a unmanaged pointers in signatures. + It is followed in the blob by the signature encoding of the underlying type. + + + + + Represents managed pointers (byref return values and parameters) in signatures. + It is followed in the blob by the signature encoding of the underlying type. + + + + + Represents a generic type parameter used within a signature. + + + + + Represents a generalized in signatures. + + + + + Represents the instantiation of a generic type in signatures. + + + + + Represents a System.TypedReference in signatures. + + + + + Represents a in signatures. + + + + + Represents a in signatures. + + + + + Represents function pointer types in signatures. + + + + + Represents + + + + + Represents a single dimensional with 0 lower bound. + + + + + Represents a generic method parameter used within a signature. + + + + + Represents a custom modifier applied to a type within a signature that the caller must understand. + + + + + Represents a custom modifier applied to a type within a signature that the caller can ignore. + + + + + Precedes a type in signatures. + + + In raw metadata, this will be encoded as either ELEMENT_TYPE_CLASS (0x12) for reference + types and ELEMENT_TYPE_VALUETYPE (0x11) for value types. This is collapsed to a single + code because Windows Runtime projections can project from class to value type or vice-versa + and the raw code is misleading in those cases. + + + + + Represents a marker to indicate the end of fixed arguments and the beginning of variable arguments. + + + + + Represents a local variable that is pinned by garbage collector + + + + + Gets a handle to the signature blob. + + + + + Determines the kind of signature, which can be or + + The signature is invalid. + + + + Name of the type. + + + + + Full name of the namespace where the type is defined, or nil if the type is nested or defined in a root namespace. + + + + + The definition handle of the namespace where the type is defined, or nil if the type is nested or defined in a root namespace. + + + + + The base type of the type definition: either + , or . + + + + + Returns the enclosing type of a specified nested type or nil handle if the type is not nested. + + + + + Returns an array of types nested in the specified type. + + + + + Resolution scope in which the target type is defined and is uniquely identified by the specified and . + + + Resolution scope can be one of the following handles: + + of the enclosing type, if the target type is a nested type. + , if the target type is defined in another module within the same assembly as this one. + , if the target type is defined in the current module. This should not occur in a CLI compressed metadata module. + , if the target type is defined in a different assembly from the current module. + Nil handle if the target type must be resolved by searching the for a matching and . + + + + + + Name of the target type. + + + + + Full name of the namespace where the target type is defined, or nil if the type is nested or defined in a root namespace. + + + + + Managed .text PE section. + + + Contains in the following order: + - Import Address Table + - COR Header + - IL + - Metadata + - Managed Resource Data + - Strong Name Signature + - Debug Table + - Import Table + - Name Table + - Runtime Startup Stub + - Mapped Field Data + + + + + Total size of metadata (header and all streams). + + + + + The size of IL stream (unaligned). + + + + + The size of mapped field data stream. + Aligned to . + + + + + The size of managed resource data stream. + Aligned to . + + + + + Size of strong name hash. + + + + + If set, the module must include a machine code stub that transfers control to the virtual execution system. + + + + + If set, the module contains instructions that assume a 64 bit instruction set. For example it may depend on an address being 64 bits. + This may be true even if the module contains only IL instructions because of PlatformInvoke and COM interop. + + + + + The size of a single entry in the "Debug Directory (Image Only)" + + + + + Minimal size of PDB path in Debug Directory. We pad the path to this minimal size to + allow some tools to patch the path without the need to rewrite the entire image. + This is a workaround put in place until these tools are retired. + + + + + The size of our debug directory: one entry for debug information, and an optional second one indicating + that the timestamp is deterministic (i.e. not really a timestamp) + + + + + Serializes .text section data into a specified . + + An empty builder to serialize section data to. + Relative virtual address of the section within the containing PE file. + Entry point token or RVA () + COR Flags (). + Base address of the PE image. + containing metadata. Must be populated with data. Linked into the and can't be expanded afterwards. + containing IL stream. Must be populated with data. Linked into the and can't be expanded afterwards. + containing mapped field data. Must be populated with data. Linked into the and can't be expanded afterwards. + containing managed resource data. Must be populated with data. Linked into the and can't be expanded afterwards. + containing debug table data. Must be populated with data. Linked into the and can't be expanded afterwards. + + + + Write one entry in the "Debug Directory (Image Only)" + See https://msdn.microsoft.com/en-us/windows/hardware/gg463119.aspx + section 5.1.1 (pages 71-72). + + + + + Write the entire "Debug Directory (Image Only)" along with data that it points to. + + + + + The type of target machine. + + + + + The number of sections. This indicates the size of the section table, which immediately follows the headers. + + + + + The low 32 bits of the number of seconds since 00:00 January 1, 1970, that indicates when the file was created. + + + + + The file pointer to the COFF symbol table, or zero if no COFF symbol table is present. + This value should be zero for a PE image. + + + + + The number of entries in the symbol table. This data can be used to locate the string table, + which immediately follows the symbol table. This value should be zero for a PE image. + + + + + The size of the optional header, which is required for executable files but not for object files. + This value should be zero for an object file. + + + + + The flags that indicate the attributes of the file. + + + + + COR20Flags + + + + + GUID (Globally Unique Identifier) of the associated PDB. + + + + + Iteration of the PDB. The first iteration is 1. The iteration is incremented each time the PDB content is augmented. + + + + + Path to the .pdb file containing debug information for the PE/COFF file. + + + + + Identifies the location, size and format of a block of debug information. + + + + + The time and date that the debug data was created if the PE/COFF file is not deterministic, + otherwise a value based on the hash of the content. + + + The algorithm used to calculate this value is an implementation + detail of the tool that produced the file. + + + + + The major version number of the debug data format. + + + + + The minor version number of the debug data format. + + + + + The format of debugging information. + + + + + The size of the debug data (not including the debug directory itself). + + + + + The address of the debug data when loaded, relative to the image base. + + + + + The file pointer to the debug data. + + + + + An unknown value that is ignored by all tools. + + + + + The COFF debug information (line numbers, symbol table, and string table). + This type of debug information is also pointed to by fields in the file headers. + + + + + Associated PDB file description. + + + + + Presence of this entry indicates deterministic PE/COFF file. + + + + The tool that produced the deterministic PE/COFF file guarantees that the entire content of the file + is based solely on documented inputs given to the tool (such as source files, resource files, compiler options, etc.) + rather than ambient environment variables (such as the current time, the operating system, + the bitness of the process running the tool, etc.). + + + The value of field TimeDateStamp in COFF File Header of a deterministic PE/COFF file + does not indicate the date and time when the file was produced and should not be interpreted that way. + Instead the value of the field is derived from a hash of the file content. The algorithm to calculate + this value is an implementation detail of the tool that produced the file. + + + The debug directory entry of type must have all fields, except for Type zeroed. + + + + + + The target CPU is unknown or not specified. + + + + + Intel 386. + + + + + MIPS little-endian WCE v2 + + + + + Alpha + + + + + Hitachi SH3 little endian + + + + + Hitachi SH3 DSP. + + + + + Hitachi SH3 little endian. + + + + + Hitachi SH4 little endian. + + + + + Hitachi SH5. + + + + + ARM little endian + + + + + Thumb. + + + + + ARM Thumb-2 little endian. + + + + + Matsushita AM33. + + + + + IBM PowerPC little endian. + + + + + PowerPCFP + + + + + Intel 64 + + + + + MIPS + + + + + ALPHA64 + + + + + MIPS with FPU. + + + + + MIPS16 with FPU. + + + + + Infineon + + + + + EFI Byte Code + + + + + AMD64 (K8) + + + + + M32R little-endian + + + + + Simple BinaryReader wrapper to: + + 1) throw BadImageFormat instead of EndOfStream or ArgumentOutOfRange. + 2) limit reads to a subset of the base stream. + + Only methods that are needed to read PE headers are implemented. + + + + + Reads a fixed-length byte block as a null-padded UTF8-encoded string. + The padding is not included in the returned string. + + Note that it is legal for UTF8 strings to contain NUL; if NUL occurs + between non-NUL codepoints, it is not considered to be padding and + is included in the result. + + + + + Resolve image size as either the given user-specified size or distance from current position to end-of-stream. + Also performs the relevant argument validation and publicly visible caller has same argument names. + + size is null and distance from current position to end-of-stream can't fit in Int32. + Size is negative or extends past the end-of-stream from current position. + + + + Reserved. + + + + + Reserved. + + + + + Reserved. + + + + + Reserved. + + + + + Image can handle a high entropy 64-bit virtual address space. + + + + + DLL can move. + + + + + Image is NX compatible. + + + + + Image understands isolation and doesn't want it. + + + + + Image does not use SEH. No SE handler may reside in this image. + + + + + Do not bind this image. + + + + + The image must run inside an AppContainer. + + + + + Driver uses WDM model. + + + + + Identifies the format of the image file. + + + + + The linker major version number. + + + + + The linker minor version number. + + + + + The size of the code (text) section, or the sum of all code sections if there are multiple sections. + + + + + The size of the initialized data section, or the sum of all such sections if there are multiple data sections. + + + + + The size of the uninitialized data section (BSS), or the sum of all such sections if there are multiple BSS sections. + + + + + The address of the entry point relative to the image base when the PE file is loaded into memory. + For program images, this is the starting address. For device drivers, this is the address of the initialization function. + An entry point is optional for DLLs. When no entry point is present, this field must be zero. + + + + + The address that is relative to the image base of the beginning-of-code section when it is loaded into memory. + + + + + The address that is relative to the image base of the beginning-of-data section when it is loaded into memory. + + + + + The preferred address of the first byte of image when loaded into memory; + must be a multiple of 64K. + + + + + The alignment (in bytes) of sections when they are loaded into memory. It must be greater than or equal to . + The default is the page size for the architecture. + + + + + The alignment factor (in bytes) that is used to align the raw data of sections in the image file. + The value should be a power of 2 between 512 and 64K, inclusive. The default is 512. + If the is less than the architecture's page size, + then must match . + + + + + The major version number of the required operating system. + + + + + The minor version number of the required operating system. + + + + + The major version number of the image. + + + + + The minor version number of the image. + + + + + The major version number of the subsystem. + + + + + The minor version number of the subsystem. + + + + + The size (in bytes) of the image, including all headers, as the image is loaded in memory. + It must be a multiple of . + + + + + The combined size of an MS DOS stub, PE header, and section headers rounded up to a multiple of FileAlignment. + + + + + The image file checksum. + + + + + The subsystem that is required to run this image. + + + + + The size of the stack to reserve. Only is committed; + the rest is made available one page at a time until the reserve size is reached. + + + + + The size of the stack to commit. + + + + + The size of the local heap space to reserve. Only is committed; + the rest is made available one page at a time until the reserve size is reached. + + + + + The size of the local heap space to commit. + + + + + The number of data-directory entries in the remainder of the . Each describes a location and size. + + + + + The Certificate Table entry points to a table of attribute certificates. + These certificates are not loaded into memory as part of the image. + As such, the first field of this entry, which is normally an RVA, is a file pointer instead. + + + + + An object used to read PE (Portable Executable) and COFF (Common Object File Format) headers from a stream. + + + + + Reads PE headers from the current location in the stream. + + Stream containing PE image starting at the stream's current position and ending at the end of the stream. + The data read from stream have invalid format. + Error reading from the stream. + The stream doesn't support seek operations. + is null. + + + + Reads PE headers from the current location in the stream. + + Stream containing PE image of the given size starting at its current position. + Size of the PE image. + The data read from stream have invalid format. + Error reading from the stream. + The stream doesn't support seek operations. + is null. + Size is negative or extends past the end of the stream. + + + + Gets the offset (in bytes) from the start of the PE image to the start of the CLI metadata. + or -1 if the image does not contain metadata. + + + + + Gets the size of the CLI metadata 0 if the image does not contain metadata.) + + + + + Gets the COFF header of the image. + + + + + Gets the byte offset from the start of the PE image to the start of the COFF header. + + + + + Determines if the image is Coff only. + + + + + Gets the PE header of the image or null if the image is COFF only. + + + + + Gets the byte offset from the start of the image to + + + + + Gets the PE section headers. + + + + + Gets the CLI header or null if the image does not have one. + + + + + Gets the byte offset from the start of the image to the COR header or -1 if the image does not have one. + + + + + Determines if the image represents a Windows console application. + + + + + Determines if the image represents a dynamically linked library. + + + + + Determines if the image represents an executable. + + + + + Gets the offset (in bytes) from the start of the image to the given directory entry. + + + + The section containing the directory could not be found. + The section containing the + + + + Searches sections of the PE image for the one that contains specified Relative Virtual Address. + + Address. + + Index of the section that contains , + or -1 if there is none. + + + + + Portable Executable format reader. + + + The implementation is thread-safe, that is multiple threads can read data from the reader in parallel. + Disposal of the reader is not thread-safe (see ). + + + + + Creates a Portable Executable reader over a PE image stored in memory. + + Pointer to the start of the PE image. + The size of the PE image. + is . + is negative. + + The memory is owned by the caller and not released on disposal of the . + The caller is responsible for keeping the memory alive and unmodified throughout the lifetime of the . + The content of the image is not read during the construction of the + + + + + Creates a Portable Executable reader over a PE image stored in a stream. + + PE image stream. + is null. + + is specified and the PE headers of the image are invalid. + + + Ownership of the stream is transferred to the upon successful validation of constructor arguments. It will be + disposed by the and the caller must not manipulate it. + + + + + Creates a Portable Executable reader over a PE image stored in a stream beginning at its current position and ending at the end of the stream. + + PE image stream. + + Options specifying how sections of the PE image are read from the stream. + + Unless is specified, ownership of the stream is transferred to the + upon successful argument validation. It will be disposed by the and the caller must not manipulate it. + + Unless or is specified no data + is read from the stream during the construction of the . Furthermore, the stream must not be manipulated + by caller while the is alive and undisposed. + + If or , the + will have read all of the data requested during construction. As such, if is also + specified, the caller retains full ownership of the stream and is assured that it will not be manipulated by the + after construction. + + is null. + has an invalid value. + + is specified and the PE headers of the image are invalid. + + + + + Creates a Portable Executable reader over a PE image of the given size beginning at the stream's current position. + + PE image stream. + PE image size. + + Options specifying how sections of the PE image are read from the stream. + + Unless is specified, ownership of the stream is transferred to the + upon successful argument validation. It will be disposed by the and the caller must not manipulate it. + + Unless or is specified no data + is read from the stream during the construction of the . Furthermore, the stream must not be manipulated + by caller while the is alive and undisposed. + + If or , the + will have read all of the data requested during construction. As such, if is also + specified, the caller retains full ownership of the stream and is assured that it will not be manipulated by the + after construction. + + Size is negative or extends past the end of the stream. + + + + Creates a Portable Executable reader over a PE image stored in a byte array. + + PE image. + + The content of the image is not read during the construction of the + + is null. + + + + Disposes all memory allocated by the reader. + + + can be called multiple times (but not in parallel). + It is not safe to call in parallel with any other operation on the + or reading from s retrieved from the reader. + + + + + Gets the PE headers. + + The headers contain invalid data. + + + + Returns a view of the entire image as a pointer and length. + + PE image not available. + + + + Return true if the reader can access the entire PE image. + + + Returns false if the is constructed from a stream and only part of it is prefetched into memory. + + + + + Gets a pointer to and size of the PE image if available (). + + The entire PE image is not available. + + + + Returns true if the PE image contains CLI metadata. + + The PE headers contain invalid data. + + + + Loads PE section that contains CLI metadata. + + The PE image doesn't contain metadata ( returns false). + The PE headers contain invalid data. + + + + Loads PE section that contains the specified into memory + and returns a memory block that starts at and ends at the end of the containing section. + + Relative Virtual Address of the data to read. + + An empty block if doesn't represent a location in any of the PE sections of this PE image. + + The PE headers contain invalid data. + + + + Reads all Debug Directory table entries. + + Bad format of the entry. + + + + Reads the data pointed to by the specifed Debug Directory entry and interprets them as CodeView. + + is not a CodeView entry. + Bad format of the data. + + + + By default the stream is disposed when is disposed and sections of the PE image are read lazily. + + + + + Keep the stream open when the is disposed. + + + + + Reads metadata section into memory right away. + + + Reading from other sections of the file is not allowed ( is thrown by the ). + The underlying file may be closed and even deleted after is constructed. + + closes the stream automatically by the time the constructor returns unless is specified. + + + + + Reads the entire image into memory right away. + + + closes the stream automatically by the time the constructor returns unless is specified. + + + + + The name of the section. + + + + + The total size of the section when loaded into memory. + If this value is greater than , the section is zero-padded. + This field is valid only for PE images and should be set to zero for object files. + + + + + For PE images, the address of the first byte of the section relative to the image base when the + section is loaded into memory. For object files, this field is the address of the first byte before + relocation is applied; for simplicity, compilers should set this to zero. Otherwise, + it is an arbitrary value that is subtracted from offsets during relocation. + + + + + The size of the section (for object files) or the size of the initialized data on disk (for image files). + For PE images, this must be a multiple of . + If this is less than , the remainder of the section is zero-filled. + Because the field is rounded but the field is not, + it is possible for to be greater than as well. + When a section contains only uninitialized data, this field should be zero. + + + + + The file pointer to the first page of the section within the COFF file. + For PE images, this must be a multiple of . + For object files, the value should be aligned on a 4 byte boundary for best performance. + When a section contains only uninitialized data, this field should be zero. + + + + + The file pointer to the beginning of relocation entries for the section. + This is set to zero for PE images or if there are no relocations. + + + + + The file pointer to the beginning of line-number entries for the section. + This is set to zero if there are no COFF line numbers. + This value should be zero for an image because COFF debugging information is deprecated. + + + + + The number of relocation entries for the section. This is set to zero for PE images. + + + + + The number of line-number entries for the section. + This value should be zero for an image because COFF debugging information is deprecated. + + + + + The flags that describe the characteristics of the section. + + + + + Used to modify the value of the property. + CLS-compliant setters are named with set_ prefix. + + + + + Used to read the value of the property. + CLS-compliant getters are named with get_ prefix. + + + + + Other method for property (not getter or setter) or event (not adder, remover, or raiser). + + + + + Used to add a handler for an event. + Corresponds to the AddOn flag in the Ecma 335 CLI specification. + CLS-compliant adders are named with add_ prefix. + + + + + Used to remove a handler for an event. + Corresponds to the RemoveOn flag in the Ecma 335 CLI specification. + CLS-compliant removers are named with remove_ prefix. + + + + + Used to indicate that an event has occurred. + Corresponds to the Fire flag in the Ecma 335 CLI specification. + CLS-compliant raisers are named with raise_ prefix. + + + + + Specifies the security actions that can be performed using declarative security. + + + + + No declarative security action. + + + + + Check that all callers in the call chain have been granted specified permission, + + + + + The calling code can access the resource identified by the current permission object, even if callers higher in the stack have not been granted permission to access the resource. + + + + + Without further checks refuse Demand for the specified permission. + + + + + Without further checks, refuse Demand for all permissions other than those specified. + + + + + Check that the immediate caller has been granted the specified permission; + + + + + The derived class inheriting the class or overriding a method is required to have been granted the specified permission. + + + + + The request for the minimum permissions required for code to run. This action can only be used within the scope of the assembly. + + + + + The request for additional permissions that are optional (not required to run). This request implicitly refuses all other permissions not specifically requested. This action can only be used within the scope of the assembly. + + + + + The request that permissions that might be misused will not be granted to the calling code. This action can only be used within the scope of the assembly. + + + + + The Resource is exported from the Assembly + + + + + The Resource is not exported from the Assembly + + + + + Masks just the visibility-related attributes. + + + + + Specifies all the hash algorithms used for hashing assembly files and for generating the strong name. + + + + + A mask indicating that there is no hash algorithm. If you specify None for a multi-module assembly, the common language runtime defaults to the SHA1 algorithm, since multi-module assemblies need to generate a hash. + + + + + Retrieves the MD5 message-digest algorithm. MD5 was developed by Rivest in 1991. It is basically MD4 with safety-belts and while it is slightly slower than MD4, it helps provide more security. The algorithm consists of four distinct rounds, which has a slightly different design from that of MD4. Message-digest size, as well as padding requirements, remain the same. + + + + + Retrieves a revision of the Secure Hash Algorithm that corrects an unpublished flaw in SHA. + + + + + Retrieves a version of the Secure Hash Algorithm with a hash size of 256 bits. + + + + + Retrieves a version of the Secure Hash Algorithm with a hash size of 384 bits. + + + + + Retrieves a version of the Secure Hash Algorithm with a hash size of 512 bits. + + + + + The assembly reference holds the full (unhashed) public key. + Not applicable on assembly definition. + + + + + The implementation of the referenced assembly used at runtime is not expected to match the version seen at compile time. + + + + + The assembly contains Windows Runtime code. + + + + + Content type mask. Masked bits correspond to values of . + + + + + Specifies that just-in-time (JIT) compiler optimization is disabled for the assembly. + + + + + Specifies that just-in-time (JIT) compiler tracking is enabled for the assembly. + + + + diff --git a/packages/System.Reflection.Metadata.1.2.0/lib/portable-net45+win8/System.Reflection.Metadata.dll b/packages/System.Reflection.Metadata.1.2.0/lib/portable-net45+win8/System.Reflection.Metadata.dll new file mode 100644 index 0000000..1c97714 Binary files /dev/null and b/packages/System.Reflection.Metadata.1.2.0/lib/portable-net45+win8/System.Reflection.Metadata.dll differ diff --git a/packages/System.Reflection.Metadata.1.1.0/lib/dotnet5.2/System.Reflection.Metadata.xml b/packages/System.Reflection.Metadata.1.2.0/lib/portable-net45+win8/System.Reflection.Metadata.xml similarity index 70% rename from packages/System.Reflection.Metadata.1.1.0/lib/dotnet5.2/System.Reflection.Metadata.xml rename to packages/System.Reflection.Metadata.1.2.0/lib/portable-net45+win8/System.Reflection.Metadata.xml index c1bcbbc..4da3096 100644 --- a/packages/System.Reflection.Metadata.1.1.0/lib/dotnet5.2/System.Reflection.Metadata.xml +++ b/packages/System.Reflection.Metadata.1.2.0/lib/portable-net45+win8/System.Reflection.Metadata.xml @@ -1,2862 +1,3936 @@ - - - - System.Reflection.Metadata - - - - - Represents a disposable blob of memory accessed via unsafe pointer. - - - - - Pointer to the underlying data (not valid after disposal). - - - - - Returns the content of the memory block. - - - Only creates a copy of the data if they are not represented by a managed byte array, or the offset is non-zero. - - - - - Disposes the block. - - - The operation is idempotent, but must not be called concurrently with any other operations on the block - or with another call to Dispose. - - Using the block after dispose is an error in our code and therefore no effort is made to throw a tidy - ObjectDisposedException and null ref or AV is possible. - - - - - Represents a memory block backed by an array of bytes. - - - - - Class representing raw memory but not owning the memory. - - - - - Represents raw memory owned by an external object. - - - - - Creates and hydrates a memory block representing all data. - - Error while reading from the memory source. - - - - Creates and hydrates a memory block representing data in the specified range. - - Starting offset relative to the beginning of the data represented by this provider. - Size of the resulting block. - Error while reading from the memory source. - - - - Gets a seekable and readable that can be used to read all data. - The operations on the stream has to be done under a lock of if non-null. - The image starts at and has size . - It is the caller's responsibility not to read outside those bounds. - - - - - The size of the data. - - - - - Represents memory block allocated on native heap. - - - Owns the native memory resource. - - - - - Represents data read from a stream. - - - Uses memory map to load data from streams backed by files that are bigger than . - - - - Error while reading from the stream. - - - - Provides helpers to decode strings from unmanaged memory to System.String while avoiding - intermediate allocation. - - This has three components: - - (1) Light-up Encoding.GetString(byte*, int) via reflection and resurface it as extension - method. - - This is a new API that will provide API convergence across all platforms for - this scenario. It is already on .NET 4.6+ and ASP.NET vNext, but not yet available - on every platform we support. See below for how we fall back. - - (2) Deal with WinRT prefixes. - - When reading managed winmds with projections enabled, the metadata reader needs to prepend - a WinRT prefix in some case . Doing this without allocation poses a problem - as we don't have the prefix and input in contiguous data that we can pass to the - Encoding.GetString. We handle this case using pooled managed scratch buffers where we copy - the prefix and input and decode using Encoding.GetString(byte[], int, int). - - (3) Deal with platforms that don't yet have Encoding.GetString(byte*, int). - - If we're running on a full framework earlier than 4.6, we will bind to the internal - String.CreateStringFromEncoding which is equivalent and Encoding.GetString is just a trivial - wrapper around it in .NET 4.6. This means that we always have the fast path on every - full framework version we support. - - If we can't bind to it via reflection, then we emulate it using what is effectively (2) and - with an empty prefix. - - For both (2) and (3), the pooled buffers have a fixed size deemed large enough for the - vast majority of metadata strings. In the rare worst case (byteCount > threshold and - (lightUpAttemptFailed || prefix != null), we give up and allocate a temporary array, - copy to it, decode, and throw it away. - - - - - Provides tools for using in interop scenarios. - - - *** WARNING *** - - If you decide to copy this code elsewhere, please retain the documentation here - and the Dangerous prefixes in the API names. This will help track down and audit - other places where this technique (with dangerous consequences when misused) may - be applied. - - A generic version of this API was once public in a pre-release of immutable - collections, but it was deemed to be too subject to abuse when available publicly. - - This implementation is scoped to byte arrays as that is all that the metadata reader needs. - - Also, since we don't have access to immutable collection internals, we use a trick involving - overlapping a with a refer. While - unverifiable, it is valid. See Ecma 335, section II.10.7 Controlling instance layout: - - "It is possible to overlap fields in this way, though offsets occupied by an object reference - shall not overlap with offsets occupied by a built-in value type or a part of - another object reference. While one object reference can completely overlap another, this is - unverifiable." - - Furthermore, the fact that backed by a single - field is something inherent to the design of ImmutableArray in order to get its performance - characteristics and therefore something we (Microsoft) are comfortable defining as a contract that - can be depended upon as below. - - - - - Creates a new instance of using a given mutable array as the backing - field, without creating a defensive copy. It is the responsibility of the caller to ensure no other mutable - references exist to the array. Do not mutate the array after calling this method. - - The mutable array to use as the backing field. The incoming reference is set to null - since it should not be retained by the caller. - - Users of this method should take extra care to ensure that the mutable array given as a parameter - is never modified. The returned will use the given array as its backing - field without creating a defensive copy, so changes made to the given mutable array will be observable - on the returned . Instance and static methods of - and may malfunction if they operate on an instance - whose underlying backing field is modified. - - An immutable array. - - - - Access the backing mutable array instance for the given , without - creating a defensive copy. It is the responsibility of the caller to ensure the array is not modified - through the returned mutable reference. Do not mutate the returned array. - - The from which to retrieve the backing field. - - Users of this method should take extra care to ensure that the returned mutable array is never modified. - The returned mutable array continues to be used as the backing field of the given - without creating a defensive copy, so changes made to the returned mutable array will be observable - on the given . Instance and static methods of - and may malfunction if they operate on an instance - whose underlying backing field is modified. - - The underlying array, or null if is true. - - - - Decodes a compressed integer value starting at offset. - See Metadata Specification section II.23.2: Blobs and signatures. - - Offset to the start of the compressed data. - Bytes actually read. - - Value between 0 and 0x1fffffff, or if the value encoding is invalid. - - - - - Read UTF8 at the given offset up to the given terminator, null terminator, or end-of-block. - - Offset in to the block where the UTF8 bytes start. - UTF8 encoded prefix to prepend to the bytes at the offset before decoding. - The UTF8 decoder to use that allows user to adjust fallback and/or reuse existing strings without allocating a new one. - The number of bytes read, which includes the terminator if we did not hit the end of the block. - A character in the ASCII range that marks the end of the string. - If a value other than '\0' is passed we still stop at the null terminator if encountered first. - The decoded string. - - - - Get number of bytes from offset to given terminator, null terminator, or end-of-block (whichever comes first). - Returned length does not include the terminator, but numberOfBytesRead out parameter does. - - Offset in to the block where the UTF8 bytes start. - A character in the ASCII range that marks the end of the string. - If a value other than '\0' is passed we still stop at the null terminator if encountered first. - The number of bytes read, which includes the terminator if we did not hit the end of the block. - Length (byte count) not including terminator. - - - - In a table that specifies children via a list field (e.g. TypeDef.FieldList, TypeDef.MethodList), - seaches for the parent given a reference to a child. - - Returns row number [0..RowCount). - - - - In a table ordered by a column containing entity references seaches for a row with the specified reference. - - Returns row number [0..RowCount) or -1 if not found. - - - - Calculates a range of rows that have specified value in the specified column in a table that is sorted by that column. - - - - - Calculates a range of rows that have specified value in the specified column in a table that is sorted by that column. - - - - - The usage is: - var inst = PooledStringBuilder.GetInstance(); - var sb = inst.builder; - ... Do Stuff... - ... sb.ToString() ... - inst.Free(); - - - - - Generic implementation of object pooling pattern with predefined pool size limit. The main - purpose is that limited number of frequently used objects can be kept in the pool for - further recycling. - - Notes: - 1) it is not the goal to keep all returned objects. Pool is not meant for storage. If there - is no space in the pool, extra returned objects will be dropped. - - 2) it is implied that if object was obtained from a pool, the caller will return it back in - a relatively short time. Keeping checked out objects for long durations is ok, but - reduces usefulness of pooling. Just new up your own. - - Not returning objects to the pool in not detrimental to the pool's work, but is a bad practice. - Rationale: - If there is no intent for reusing the object, do not use pool - just use "new". - - - - - Produces an instance. - - - Search strategy is a simple linear probing which is chosen for it cache-friendliness. - Note that Free will try to store recycled objects close to the start thus statistically - reducing how far we will typically search. - - - - - Returns objects to the pool. - - - Search strategy is a simple linear probing which is chosen for it cache-friendliness. - Note that Free will try to store recycled objects close to the start thus statistically - reducing how far we will typically search in Allocate. - - - - - Copies specified amount of data from given stream to a target memory pointer. - - unexpected stream end. - - - - True if the file contains metadata. - - - Corresponds to Flags field of File table in ECMA-335 Standard. - - - - - File name with extension. - - - Corresponds to Name field of File table in ECMA-335 Standard. - - - - - Hash value of the file content calculated using . - - - Corresponds to HashValue field of File table in ECMA-335 Standard. - - - - An array containing the '\0' character. - - - - Reads number. - - - Decimal number is encoded in 13 bytes as follows: - - byte 0: highest bit indicates sign (1 for negative, 0 for non-negative); the remaining 7 bits encode scale - - bytes 1..12: 96-bit unsigned integer in little endian encoding. - - The data at the current position was not a valid number. - - - - Reads UTF8 encoded string starting at the current position. - - The number of bytes to read. - The string. - bytes not available. - - - - Reads UTF16 (little-endian) encoded string starting at the current position. - - The number of bytes to read. - The string. - bytes not available. - - - - Reads bytes starting at the current position. - - The number of bytes to read. - The byte array. - bytes not available. - - - - Reads an unsigned compressed integer value. - See Metadata Specification section II.23.2: Blobs and signatures. - - The value of the compressed integer that was read. - true if the value was read successfully. false if the data at the current position was not a valid compressed integer. - - - - Reads an unsigned compressed integer value. - See Metadata Specification section II.23.2: Blobs and signatures. - - The value of the compressed integer that was read. - The data at the current position was not a valid compressed integer. - - - - Reads a signed compressed integer value. - See Metadata Specification section II.23.2: Blobs and signatures. - - The value of the compressed integer that was read. - true if the value was read successfully. false if the data at the current position was not a valid compressed integer. - - - - Reads a signed compressed integer value. - See Metadata Specification section II.23.2: Blobs and signatures. - - The value of the compressed integer that was read. - The data at the current position was not a valid compressed integer. - - - - Reads type code encoded in a serialized custom attribute value. - - if the encoding is invalid. - - - - Reads type code encoded in a signature. - - if the encoding is invalid. - - - - Reads a string encoded as a compressed integer containing its length followed by - its contents in UTF8. Null strings are encoded as a single 0xFF byte. - - Defined as a 'SerString' in the Ecma CLI specification. - String value or null. - If the encoding is invalid. - - - - Reads a type handle encoded in a signature as TypeDefOrRefOrSpecEncoded (see ECMA-335 II.23.2.8). - - The handle or nil if the encoding is invalid. - - - - Reads a #Blob heap handle encoded as a compressed integer. - - - Blobs that contain references to other blobs are used in Portable PDB format, for example . - - - - - Reads a constant value (see ECMA-335 Partition II section 22.9) from the current position. - - Error while reading from the blob. - is not a valid . - - Boxed constant value. To avoid allocating the object use Read* methods directly. - Constants of type are encoded as UTF16 strings, use to read them. - - - - - The type of the constant value. - - - Corresponds to Type field of Constant table in ECMA-335 Standard. - - - - - The constant value. - - - Corresponds to Value field of Constant table in ECMA-335 Standard. - - - - - The parent handle (, , or ). - - - Corresponds to Parent field of Constant table in ECMA-335 Standard. - - - - - The constructor ( or ) of the custom attribute type. - - - Corresponds to Type field of CustomAttribute table in ECMA-335 Standard. - - - - - The handle of the metadata entity the attribute is applied to. - - - Corresponds to Parent field of CustomAttribute table in ECMA-335 Standard. - - - - - The value of the attribute. - - - Corresponds to Value field of CustomAttribute table in ECMA-335 Standard. - - - - - Provides an extension method to access the TypeDefinitionId column of the ExportedType table. - - - - - Gets a hint at the likely row number of the target type in the TypeDef table of its module. - If the namespaces and names do not match, resolution falls back to a full search of the - target TypeDef table. Ignored and should be zero if is - true. - - - - - Provides extension methods for working with certain raw elements of the Ecma 335 metadata tables and heaps. - - - - - Returns the number of rows in the specified table. - - is null. - is not a valid table index. - - - - Returns the size of a row in the specified table. - - is null. - is not a valid table index. - - - - Returns the offset from the start of metadata to the specified table. - - is null. - is not a valid table index. - - - - Returns the size of the specified heap. - - is null. - is not a valid heap index. - - - - Returns the offset from the start of metadata to the specified heap. - - is null. - is not a valid heap index. - - - - Returns the size of the specified heap. - - is null. - is not a valid heap index. - - - - Returns the a handle to the UserString that follows the given one in the UserString heap or a nil handle if it is the last one. - - is null. - - - - Returns the a handle to the Blob that follows the given one in the Blob heap or a nil handle if it is the last one. - - is null. - - - - Returns the a handle to the String that follows the given one in the String heap or a nil handle if it is the last one. - - is null. - - - - Enumerates entries of EnC log. - - is null. - - - - Enumerates entries of EnC map. - - is null. - - - - Enumerate types that define one or more properties. - - - The resulting sequence corresponds exactly to entries in PropertyMap table, - i.e. n-th returned is stored in n-th row of PropertyMap. - - - - - Enumerate types that define one or more events. - - - The resulting sequence corresponds exactly to entries in EventMap table, - i.e. n-th returned is stored in n-th row of EventMap. - - - - - Maximum number of tables that can be present in Ecma335 metadata. - - - - - Maximum number of tables that can be present in Ecma335 metadata. - - - - - Returns the row number of a metadata table entry that corresponds - to the specified in the context of . - - One based row number. - The is not a valid metadata table handle. - - - - Returns the offset of metadata heap data that corresponds - to the specified in the context of . - - Zero based offset, or -1 if isn't a metadata heap handle. - The operation is not supported for the specified . - The is invalid. - - - - Returns the metadata token of the specified in the context of . - - Metadata token. - - Handle represents a metadata entity that doesn't have a token. - A token can only be retrieved for a metadata table handle or a heap handle of type . - - The operation is not supported for the specified . - - - - Returns the row number of a metadata table entry that corresponds - to the specified . - - - One based row number, or -1 if can only be interpreted in a context of a specific . - See . - - - - - Returns the offset of metadata heap data that corresponds - to the specified . - - - Zero based offset, or -1 if can only be interpreted in a context of a specific . - See . - - - - - Returns the metadata token of the specified . - - - Metadata token, or 0 if can only be interpreted in a context of a specific . - See . - - - Handle represents a metadata entity that doesn't have a token. - A token can only be retrieved for a metadata table handle or a heap handle of type . - - - - - Gets the of the table corresponding to the specified . - - Handle type. - Table index. - True if the handle type corresponds to an Ecma335 table, false otherwise. - - - - Gets the of the heap corresponding to the specified . - - Handle type. - Heap index. - True if the handle type corresponds to an Ecma335 heap, false otherwise. - - - - Creates a handle from a token value. - - - is not a valid metadata token. - It must encode a metadata table entity or an offset in heap. - - - - - Creates an entity handle from a token value. - - is not a valid metadata entity token. - - - - Creates a handle from a token value. - - - is not a valid table index. - - - - Returns true if the given raw (non-virtual) handle represents the same string as given ASCII string. - - - - - Returns the heap index of the given ASCII character or -1 if not found prior null terminator or end of heap. - - - - - Returns true if the given raw (non-virtual) handle represents a string that starts with given ASCII prefix. - - - - - Equivalent to Array.BinarySearch, searches for given raw (non-virtual) handle in given array of ASCII strings. - - - - - These contants are all in the byte range and apply to the interpretation of , - - - - - Use the highest bit to mark tokens that are virtual (synthesized). - We create virtual tokens to represent projected WinMD entities. - - - - - In the case of string handles, the two lower bits that (in addition to the - virtual bit not included in this mask) encode how to obtain the string value. - - - - - Use the highest bit to mark tokens that are virtual (synthesized). - We create virtual tokens to represent projected WinMD entities. - - - - - Returns true if the token value can escape the metadata reader. - We don't allow virtual tokens and heap tokens other than UserString to escape - since the token type ids are internal to the reader and not specified by ECMA spec. - - Spec (Partition III, 1.9 Metadata tokens): - Many CIL instructions are followed by a "metadata token". This is a 4-byte value, that specifies a row in a - metadata table, or a starting byte offset in the User String heap. - - For example, a value of 0x02 specifies the TypeDef table; a value of 0x70 specifies the User - String heap.The value corresponds to the number assigned to that metadata table (see Partition II for the full - list of tables) or to 0x70 for the User String heap.The least-significant 3 bytes specify the target row within that - metadata table, or starting byte offset within the User String heap. - - - - - Returns whether the namespaceTable has been created. If it hasn't, calling a GetXXX method - on this will probably have a very high amount of overhead. - - - - - This will return a StringHandle for the simple name of a namespace name at the given segment index. - If no segment index is passed explicitly or the "segment" index is greater than or equal to the number - of segments, then the last segment is used. "Segment" in this context refers to part of a namespace - name between dots. - - Example: Given a NamespaceDefinitionHandle to "System.Collections.Generic.Test" called 'handle': - - reader.GetString(GetSimpleName(handle)) == "Test" - reader.GetString(GetSimpleName(handle, 0)) == "System" - reader.GetString(GetSimpleName(handle, 1)) == "Collections" - reader.GetString(GetSimpleName(handle, 2)) == "Generic" - reader.GetString(GetSimpleName(handle, 3)) == "Test" - reader.GetString(GetSimpleName(handle, 1000)) == "Test" - - - - - Two distinct namespace handles represent the same namespace if their full names are the same. This - method merges builders corresponding to such namespace handles. - - - - - This will take 'table' and merge all of the NamespaceData instances that point to the same - namespace. It has to create 'stringTable' as an intermediate dictionary, so it will hand it - back to the caller should the caller want to use it. - - - - - Creates a NamespaceDataBuilder instance that contains a synthesized NamespaceDefinitionHandle, - as well as the name provided. - - - - - Quick convenience method that handles linking together child + parent - - - - - Links a child to its parent namespace. If the parent namespace doesn't exist, this will create a - virtual one. This will automatically link any virtual namespaces it creates up to its parents. - - - - - This will link all parents/children in the given namespaces dictionary up to each other. - - In some cases, we need to synthesize namespaces that do not have any type definitions or forwarders - of their own, but do have child namespaces. These are returned via the virtualNamespaces out - parameter. - - - - - Loops through all type definitions in metadata, adding them to the given table - - - - - Loops through all type forwarders in metadata, adding them to the given table - - - - - Populates namespaceList with distinct namespaces. No ordering is guaranteed. - - - - - If the namespace table doesn't exist, populates it! - - - - - If the namespace list doesn't exist, populates it! - - - - - An intermediate class used to build NamespaceData instances. This was created because we wanted to - use ImmutableArrays in NamespaceData, but having ArrayBuilders and ImmutableArrays that served the - same purpose in NamespaceData got ugly. With the current design of how we create our Namespace - dictionary, this needs to be a class because we have a many-to-one mapping between NamespaceHandles - and NamespaceData. So, the pointer semantics must be preserved. - - This class assumes that the builders will not be modified in any way after the first call to - Freeze(). - - - - - Returns a NamespaceData that represents this NamespaceDataBuilder instance. After calling - this method, it is an error to use any methods or fields except Freeze() on the target - NamespaceDataBuilder. - - - - - Returns field offset for given field RowId, or -1 if not available. - - - - - In CLI metadata equal to the actual number of entries in AssemblyRef table. - In WinMD metadata it includes synthesized AssemblyRefs in addition. - - - - - Start IL offset of the try block. - - - - - Length in bytes of try block. - - - - - Start IL offset of the exception handler. - - - - - Length in bytes of the exception handler. - - - - - IL offset of the start of the filter block, or -1 if the region is not a filter. - - - - - Returns a TypeRef, TypeDef, or TypeSpec handle if the region represents a catch, nil token otherwise. - - - - - Name of the target type, or nil if the type is nested or defined in a root namespace. - - - - - Full name of the namespace where the target type, or nil if the type is nested or defined in a root namespace. - - - - - The definition handle of the namespace where the target type is defined, or nil if the type is nested or defined in a root namespace. - - - - - Handle to resolve the implementation of the target type. - - - - representing another module in the assembly. - representing another assembly if is true. - representing the declaring exported type in which this was is nested. - - - - - - Returns field layout offset, or -1 if not available. - - - - - or . - - - Corresponds to Owner field of GenericParam table in ECMA-335 Standard. - - - - - Attributes specifying variance and constraints. - - - Corresponds to Flags field of GenericParam table in ECMA-335 Standard. - - - - - Zero-based index of the parameter within the declaring generic type or method declaration. - - - Corresponds to Number field of GenericParam table in ECMA-335 Standard. - - - - - The name of the generic parameter. - - - Corresponds to Name field of GenericParam table in ECMA-335 Standard. - - - - - The constrained . - - - Corresponds to Owner field of GenericParamConstraint table in ECMA-335 Standard. - - - - - Handle (, , or ) - specifying from which type this generic parameter is constrained to derive, - or which interface this generic parameter is constrained to implement. - - - Corresponds to Constraint field of GenericParamConstraint table in ECMA-335 Standard. - - - - - Represents generic type parameters of a method or type. - - - - - Represents constraints of a generic type parameter. - - - - - Collection of parameters of a specified method. - - - - - Represents a collection of . - - - - - Represents a collection of . - - - - - Represents a collection of . - - - - - Represents a collection of . - - - - - Collection of assembly references. - - - - - Represents a collection of . - - - - - Represents a collection of . - - - - - Compares two handles. - - - The order of handles that differ in kind is undefined. - Returns 0 if and only if returns true. - - - - - Compares two entity handles. - - - The order of handles that differ in kind is undefined. - Returns 0 if and only if returns true. - - - - - Represents any metadata entity (type reference/definition/specification, method definition, custom attribute, etc.) or value (string, blob, guid, user string). - - - Use to store multiple kinds of handles. - - - - - Creates from a token or a token combined with a virtual flag. - - - - - Token type (0x##000000), does not include virtual flag. - - - - - Small token type (0x##), does not include virtual flag. - - - - - Value stored in an . - - - - - Value stored in a concrete entity handle (see , , etc.). - - - - - Represents a metadata entity (type reference/definition/specification, method definition, custom attribute, etc.). - - - Use to store multiple kinds of entity handles. - It has smaller memory footprint than . - - - - - Value stored in a specific entity handle (see , , etc.). - - - - - Returns a handle to corresponding to this handle. - - - The resulting handle is only valid within the context of a open on the Portable PDB blob, - which in case of standalone PDB file is a different reader than the one containing this method definition. - - - - - A handle that represents a namespace definition. - - - - - The interface that is implemented - , , or - - - - - Specifies the byte offset within the referenced file at which this resource record begins. - - - Corresponds to Offset field of ManifestResource table in ECMA-335 Standard. - - - - - Resource attributes. - - - Corresponds to Flags field of ManifestResource table in ECMA-335 Standard. - - - - - Name of the resource. - - - Corresponds to Name field of ManifestResource table in ECMA-335 Standard. - - - - - , , or nil handle. - - - Corresponds to Implementation field of ManifestResource table in ECMA-335 Standard. - - If nil then is an offset in the PE image that contains the metadata, - starting from the Resource entry in the CLI header. - - - - - MethodDef, ModuleRef,TypeDef, TypeRef, or TypeSpec handle. - - - - - Determines if the member reference is to a method or field. - - - - - Indicates whether a MemberReference references a method or field. - - - - - The MemberReference references a method. - - - - - The MemberReference references a field. - - - - - CLI metadata. - - - - - Windows Metadata. - - - - - Windows Metadata generated by managed compilers. - - - - - Reads metadata as defined byte the ECMA 335 CLI specification. - - - - - Creates a metadata reader from the metadata stored at the given memory location. - - - The memory is owned by the caller and it must be kept memory alive and unmodified throughout the lifetime of the . - - - - - Creates a metadata reader from the metadata stored at the given memory location. - - - The memory is owned by the caller and it must be kept memory alive and unmodified throughout the lifetime of the . - Use to obtain - metadata from a PE image. - - - - - Creates a metadata reader from the metadata stored at the given memory location. - - - The memory is owned by the caller and it must be kept memory alive and unmodified throughout the lifetime of the . - Use to obtain - metadata from a PE image. - - - - - True if the metadata stream has minimal delta format. Used for EnC. - - - The metadata stream has minimal delta format if "#JTD" stream is present. - Minimal delta format uses large size (4B) when encoding table/heap references. - The heaps in minimal delta only contain data of the delta, - there is no padding at the beginning of the heaps that would align them - with the original full metadata heaps. - - - - - Looks like this function reads beginning of the header described in - Ecma-335 24.2.1 Metadata root - - - - - Reads stream headers described in Ecma-335 24.2.2 Stream header - - - - - A row count for each possible table. May be indexed by . - - - - - Information decoded from #Pdb stream, or null if the stream is not present. - - - - - Returns an array of types nested in the specified type. - - - - - The backing field of a WinRT enumeration type is not public although the backing fields - of managed enumerations are. To allow managed languages to directly access this field, - it is made public by the metadata adapter. - - - - - We want to know if a given method implements a redirected interface. - For example, if we are given the method RemoveAt on a class "A" - which implements the IVector interface (which is redirected - to IList in .NET) then this method would return true. The most - likely reason why we would want to know this is that we wish to hide - (mark private) all methods which implement methods on a redirected - interface. - - The declaration token for the method - - Returns true if the redirected interface is . - - True if the method implements a method on a redirected interface. - False otherwise. - - - - Returns the type definition or reference handle of the attribute type. - - or or nil token if the metadata is invalid and the type can't be determined. - - - - All options are disabled. - - - - - The options that are used when a is obtained - via an overload that does not take a - argument. - - - - - Windows Runtime projections are enabled (on by default). - - - - - Provides string comparison helpers to query strings in metadata while - avoiding allocation where possible. - - - - No allocation is performed unless both the handle argument and the - value argument contain non-ascii text. - - Obtain instances using . - - A default-initialized instance is useless and behaves as a null reference. - - The code is optimized such that there is no additional overhead in - re-obtaining a a comparer over hoisting it in to a local. - - That is to say that a construct like: - - - if (reader.StringComparer.Equals(typeDef.Namespace, "System") && - reader.StringComparer.Equals(typeDef.Name, "Object") - { - // found System.Object - } - - - is no less efficient than: - - - var comparer = reader.StringComparer; - if (comparer.Equals(typeDef.Namespace, "System") && - comparer.Equals(typeDef.Name, "Object") - { - // found System.Object - } - - - The choice between them is therefore one of style and not performance. - - - - - Provides the with a custom mechanism for decoding - byte sequences in metadata that represent text. - - - This can be used for the following purposes: - - 1) To customize the treatment of invalid input. When no decoder is provided, - the uses the default fallback replacement - with \uFFFD) - - 2) To reuse existing strings instead of allocating a new one for each decoding - operation. - - - - - The default decoder used by to decode UTF-8 when - no decoder is provided to the constructor. - - - - - Creates a for the given encoding. - - The encoding to use. - - To cache and reuse existing strings. Create a derived class and override - - - - - Gets the encoding used by this instance. - - - - - The mechanism through which the obtains strings - for byte sequences in metadata. Override this to cache strings if required. - Otherwise, it is implemented by forwarding straight to - and every call will allocate a new string. - - Pointer to bytes to decode. - Number of bytes to decode. - The decoded string. - - - - Size of the method body - includes the header, IL and exception regions. - - - - - MethodDef or MemberRef handle specifying to which generic method this refers, - that is which generic method is it an instantiation of. - - - - - Blob handle holding the signature of this instantiation. - - - - - Gets the unqualified name of the NamespaceDefinition. - - - - - Gets the parent namespace. - - - - - Gets the namespace definitions that are direct children of the current - namespace definition. - - System.Collections and System.Linq are direct children of System. - System.Collections.Generic is a direct child of System.Collections. - System.Collections.Generic is *not* a direct child of System. - - - - - Gets all type definitions that reside directly in a namespace. - - - - - Gets all exported types that reside directly in a namespace. - - - - - Returns Document Name Blob. - - - - - representing a blob on #Blob heap in Portable PDB - structured as Document Name. - - - The kind of the handle is . - The handle is a specialization of and doesn't have a distinct kind. - - - - - Returns a handle to corresponding to this handle. - - - The resulting handle is only valid within the context of a open on the type system metadata blob, - which in case of standalone PDB file is a different reader than the one containing this method debug information. - - - - Invalid blob format. - - - - The constant signature. - - - - - Returns a blob encoding sequence points. - Use to decode. - - - - - The document containing the first sequence point of the method, - or nil if the method doesn't have sequence points. - - - - - Returns local signature handle. - - - - - If the method is a MoveNext method of a state machine returns the kickoff method of the state machine, otherwise returns nil handle. - - - - - Returns a body block of a method with specified Relative Virtual Address (RVA); - - is null. - The body is not found in the metadata or is invalid. - Section where the method is stored is not available. - - - - Gets a from a . - - - The caller must keep the alive and undisposed throughout the lifetime of the metadata reader. - - - - - Gets a from a . - - - The caller must keep the alive and undisposed throughout the lifetime of the metadata reader. - - - - - Gets a from a . - - - The caller must keep the alive and undisposed throughout the lifetime of the metadata reader. - - - - - Equivalent to . - - - - - Equivalent to . - - - - - Equivalent to . - - - - - Equivalent to . - - - - - Equivalent to . - - - - - Equivalent to . - - - - - Equivalent to . - - - - - Equivalent to . - - - - - Equivalent to . - - - - - Equivalent to . - - - - - Equivalent to . - - - - - Equivalent to . - - - - - Equivalent to . - - - - - Equivalent to . - - - - - Equivalent to . - - - - - The attribute argument is a System.Type instance. - - - - - The attribute argument is "boxed" (passed to a parameter, field, or property of type object) and carries type information in the attribute blob. - - - - - The attribute argument is an Enum instance. - - - - - Specified additional flags that can be applied to method signatures. - Underlying values correspond to the representation in the leading signature - byte represented by . - - - - - No flags. - - - - - Generic method. - - - - - Instance method. - - Ecma 335 CLI Specification refers to this flag as HAS_THIS. - - - - The first explicitly declared parameter represents the instance pointer. - - - - - Specifies how arguments in a given signature are passed from the caller to the callee. - Underlying values correspond to the representation in the leading signature byte - represented by . - - - - - Managed calling convention with fixed-length argument list. - - - - - Unmanaged C/C++-style calling convention where the call stack is cleaned by the caller. - - - - - Unmanaged calling convention where call stack is cleaned up by the callee. - - - - - Unmanaged C++-style calling convention for calling instance member functions with a fixed argument list. - - - - - Unmanaged calling convention where arguments are passed in registers when possible. - - - - - Managed calling convention for passing extra arguments. - - - - - Represents the signature characteristics specified by the leading byte of signature blobs. - - - This header byte is present in all method definition, method reference, standalone method, field, - property, and local variable signatures, but not in type specification signatures. - - - - - Specifies the signature kind. Underlying values correspond to the representation - in the leading signature byte represented by . - - - - - Method reference, method definition, or standalone method signature. - - - - - Field signature. - - - - - Local variables signature. - - - - - Property signature. - - - - - Method specification signature. - - - - - Represents the type codes that are used in signature encoding. - - - - - Represents an invalid or uninitialized type code. It will not appear in valid signatures. - - - - - Represents in signatures. - - - - - Represents in signatures. - - - - - Represents in signatures. - - - - - Represents in signatures. - - - - - Represents in signatures. - - - - - Represents in signatures. - - - - - Represents in signatures. - - - - - Represents in signatures. - - - - - Represents in signatures. - - - - - Represents in signatures. - - - - - Represents in signatures. - - - - - Represents in signatures. - - - - - Represents in signatures. - - - - - Represents in signatures. - - - - - Represents a unmanaged pointers in signatures. - It is followed in the blob by the signature encoding of the underlying type. - - - - - Represents managed pointers (byref return values and parameters) in signatures. - It is followed in the blob by the signature encoding of the underlying type. - - - - - Represents a generic type parameter used within a signature. - - - - - Represents a generalized in signatures. - - - - - Represents the instantiation of a generic type in signatures. - - - - - Represents a System.TypedReference in signatures. - - - - - Represents a in signatures. - - - - - Represents a in signatures. - - - - - Represents function pointer types in signatures. - - - - - Represents - - - - - Represents a single dimensional with 0 lower bound. - - - - - Represents a generic method parameter used within a signature. - - - - - Represents a custom modifier applied to a type within a signature that the caller must understand. - - - - - Represents a custom modifier applied to a type within a signature that the caller can ignore. - - - - - Precedes a type in signatures. - - - In raw metadata, this will be encoded as either ELEMENT_TYPE_CLASS (0x12) for reference - types and ELEMENT_TYPE_VALUETYPE (0x11) for value types. This is collapsed to a single - code because Windows Runtime projections can project from class to value type or vice-versa - and the raw code is misleading in those cases. - - - - - Represents a marker to indicate the end of fixed arguments and the beginning of variable arguments. - - - - - Represents a local variable that is pinned by garbage collector - - - - - Name of the type. - - - - - Full name of the namespace where the type is defined, or nil if the type is nested or defined in a root namespace. - - - - - The definition handle of the namespace where the type is defined, or nil if the type is nested or defined in a root namespace. - - - - - The base type of the type definition: either - , or . - - - - - Returns the enclosing type of a specified nested type or nil handle if the type is not nested. - - - - - Returns an array of types nested in the specified type. - - - - - Resolution scope in which the target type is defined and is uniquely identified by the specified and . - - - Resolution scope can be one of the following handles: - - of the enclosing type, if the target type is a nested type. - , if the target type is defined in another module within the same assembly as this one. - , if the target type is defined in the current module. This should not occur in a CLI compressed metadata module. - , if the target type is defined in a different assembly from the current module. - Nil handle if the target type must be resolved by searching the for a matching and . - - - - - - Name of the target type. - - - - - Full name of the namespace where the target type is defined, or nil if the type is nested or defined in a root namespace. - - - - - The type of target machine. - - - - - The number of sections. This indicates the size of the section table, which immediately follows the headers. - - - - - The low 32 bits of the number of seconds since 00:00 January 1, 1970, that indicates when the file was created. - - - - - The file pointer to the COFF symbol table, or zero if no COFF symbol table is present. - This value should be zero for a PE image. - - - - - The number of entries in the symbol table. This data can be used to locate the string table, - which immediately follows the symbol table. This value should be zero for a PE image. - - - - - The size of the optional header, which is required for executable files but not for object files. - This value should be zero for an object file. - - - - - The flags that indicate the attributes of the file. - - - - - COR20Flags - - - - - The target CPU is unknown or not specified. - - - - - Intel 386. - - - - - MIPS little-endian WCE v2 - - - - - Alpha - - - - - Hitachi SH3 little endian - - - - - Hitachi SH3 DSP. - - - - - Hitachi SH3 little endian. - - - - - Hitachi SH4 little endian. - - - - - Hitachi SH5. - - - - - ARM little endian - - - - - Thumb. - - - - - ARM Thumb-2 little endian. - - - - - Matsushita AM33. - - - - - IBM PowerPC little endian. - - - - - PowerPCFP - - - - - Intel 64 - - - - - MIPS - - - - - ALPHA64 - - - - - MIPS with FPU. - - - - - MIPS16 with FPU. - - - - - Infineon - - - - - EFI Byte Code - - - - - AMD64 (K8) - - - - - M32R little-endian - - - - - Simple BinaryReader wrapper to: - - 1) throw BadImageFormat instead of EndOfStream or ArgumentOutOfRange. - 2) limit reads to a subset of the base stream. - - Only methods that are needed to read PE headers are implemented. - - - - - Reads a fixed-length byte block as a null-padded UTF8-encoded string. - The padding is not included in the returned string. - - Note that it is legal for UTF8 strings to contain NUL; if NUL occurs - between non-NUL codepoints, it is not considered to be padding and - is included in the result. - - - - - Resolve image size as either the given user-specified size or distance from current position to end-of-stream. - Also performs the relevant argument validation and publicly visible caller has same argument names. - - size is null and distance from current position to end-of-stream can't fit in Int32. - Size is negative or extends past the end-of-stream from current position. - - - - Identifies the format of the image file. - - - - - The linker major version number. - - - - - The linker minor version number. - - - - - The size of the code (text) section, or the sum of all code sections if there are multiple sections. - - - - - The size of the initialized data section, or the sum of all such sections if there are multiple data sections. - - - - - The size of the uninitialized data section (BSS), or the sum of all such sections if there are multiple BSS sections. - - - - - The address of the entry point relative to the image base when the PE file is loaded into memory. - For program images, this is the starting address. For device drivers, this is the address of the initialization function. - An entry point is optional for DLLs. When no entry point is present, this field must be zero. - - - - - The address that is relative to the image base of the beginning-of-code section when it is loaded into memory. - - - - - The address that is relative to the image base of the beginning-of-data section when it is loaded into memory. - - - - - The preferred address of the first byte of image when loaded into memory; - must be a multiple of 64K. - - - - - The alignment (in bytes) of sections when they are loaded into memory. It must be greater than or equal to . - The default is the page size for the architecture. - - - - - The alignment factor (in bytes) that is used to align the raw data of sections in the image file. - The value should be a power of 2 between 512 and 64K, inclusive. The default is 512. - If the is less than the architecture's page size, - then must match . - - - - - The major version number of the required operating system. - - - - - The minor version number of the required operating system. - - - - - The major version number of the image. - - - - - The minor version number of the image. - - - - - The major version number of the subsystem. - - - - - The minor version number of the subsystem. - - - - - The size (in bytes) of the image, including all headers, as the image is loaded in memory. - It must be a multiple of . - - - - - The combined size of an MS DOS stub, PE header, and section headers rounded up to a multiple of FileAlignment. - - - - - The image file checksum. - - - - - The subsystem that is required to run this image. - - - - - The size of the stack to reserve. Only is committed; - the rest is made available one page at a time until the reserve size is reached. - - - - - The size of the stack to commit. - - - - - The size of the local heap space to reserve. Only is committed; - the rest is made available one page at a time until the reserve size is reached. - - - - - The size of the local heap space to commit. - - - - - The number of data-directory entries in the remainder of the . Each describes a location and size. - - - - - The Certificate Table entry points to a table of attribute certificates. - These certificates are not loaded into memory as part of the image. - As such, the first field of this entry, which is normally an RVA, is a file pointer instead. - - - - - An object used to read PE (Portable Executable) and COFF (Common Object File Format) headers from a stream. - - - - - Reads PE headers from the current location in the stream. - - Stream containing PE image starting at the stream's current position and ending at the end of the stream. - The data read from stream have invalid format. - Error reading from the stream. - The stream doesn't support seek operations. - is null. - - - - Reads PE headers from the current location in the stream. - - Stream containing PE image of the given size starting at its current position. - Size of the PE image. - The data read from stream have invalid format. - Error reading from the stream. - The stream doesn't support seek operations. - is null. - Size is negative or extends past the end of the stream. - - - - Gets the offset (in bytes) from the start of the PE image to the start of the CLI metadata. - or -1 if the image does not contain metadata. - - - - - Gets the size of the CLI metadata 0 if the image does not contain metadata.) - - - - - Gets the COFF header of the image. - - - - - Gets the byte offset from the start of the PE image to the start of the COFF header. - - - - - Determines if the image is Coff only. - - - - - Gets the PE header of the image or null if the image is COFF only. - - - - - Gets the byte offset from the start of the image to - - - - - Gets the PE section headers. - - - - - Gets the CLI header or null if the image does not have one. - - - - - Gets the byte offset from the start of the image to the COR header or -1 if the image does not have one. - - - - - Determines if the image represents a Windows console application. - - - - - Determines if the image represents a dynamically linked library. - - - - - Determines if the image represents an executable. - - - - - Gets the offset (in bytes) from the start of the image to the given directory entry. - - - - The section containing the directory could not be found. - The section containing the - - - - Searches sections of the PE image for the one that contains specified Relative Virtual Address. - - Address. - - Index of the section that contains , - or -1 if there is none. - - - - - Portable Executable format reader. - - - The implementation is thread-safe, that is multiple threads can read data from the reader in parallel. - Disposal of the reader is not thread-safe (see ). - - - - - Creates a Portable Executable reader over a PE image stored in memory. - - Pointer to the start of the PE image. - The size of the PE image. - is . - is negative. - - The memory is owned by the caller and not released on disposal of the . - The caller is responsible for keeping the memory alive and unmodified throughout the lifetime of the . - The content of the image is not read during the construction of the - - - - - Creates a Portable Executable reader over a PE image stored in a stream. - - PE image stream. - is null. - - is specified and the PE headers of the image are invalid. - - - Ownership of the stream is transferred to the upon successful validation of constructor arguments. It will be - disposed by the and the caller must not manipulate it. - - - - - Creates a Portable Executable reader over a PE image stored in a stream beginning at its current position and ending at the end of the stream. - - PE image stream. - - Options specifying how sections of the PE image are read from the stream. - - Unless is specified, ownership of the stream is transferred to the - upon successful argument validation. It will be disposed by the and the caller must not manipulate it. - - Unless or is specified no data - is read from the stream during the construction of the . Furthermore, the stream must not be manipulated - by caller while the is alive and undisposed. - - If or , the - will have read all of the data requested during construction. As such, if is also - specified, the caller retains full ownership of the stream and is assured that it will not be manipulated by the - after construction. - - is null. - has an invalid value. - - is specified and the PE headers of the image are invalid. - - - - - Creates a Portable Executable reader over a PE image of the given size beginning at the stream's current position. - - PE image stream. - PE image size. - - Options specifying how sections of the PE image are read from the stream. - - Unless is specified, ownership of the stream is transferred to the - upon successful argument validation. It will be disposed by the and the caller must not manipulate it. - - Unless or is specified no data - is read from the stream during the construction of the . Furthermore, the stream must not be manipulated - by caller while the is alive and undisposed. - - If or , the - will have read all of the data requested during construction. As such, if is also - specified, the caller retains full ownership of the stream and is assured that it will not be manipulated by the - after construction. - - Size is negative or extends past the end of the stream. - - - - Creates a Portable Executable reader over a PE image stored in a byte array. - - PE image. - - The content of the image is not read during the construction of the - - is null. - - - - Disposes all memory allocated by the reader. - - - can be called multiple times (but not in parallel). - It is not safe to call in parallel with any other operation on the - or reading from s retrieved from the reader. - - - - - Gets the PE headers. - - The headers contain invalid data. - - - - Returns a view of the entire image as a pointer and length. - - PE image not available. - - - - Return true if the reader can access the entire PE image. - - - Returns false if the is constructed from a stream and only part of it is prefetched into memory. - - - - - Gets a pointer to and size of the PE image if available (). - - The entire PE image is not available. - - - - Returns true if the PE image contains CLI metadata. - - The PE headers contain invalid data. - - - - Loads PE section that contains CLI metadata. - - The PE image doesn't contain metadata ( returns false). - The PE headers contain invalid data. - - - - Loads PE section that contains the specified into memory - and returns a memory block that starts at and ends at the end of the containing section. - - Relative Virtual Address of the data to read. - - An empty block if doesn't represent a location in any of the PE sections of this PE image. - - The PE headers contain invalid data. - - - - By default the stream is disposed when is disposed and sections of the PE image are read lazily. - - - - - Keep the stream open when the is disposed. - - - - - Reads metadata section into memory right away. - - - Reading from other sections of the file is not allowed ( is thrown by the ). - The underlying file may be closed and even deleted after is constructed. - - closes the stream automatically by the time the constructor returns unless is specified. - - - - - Reads the entire image into memory right away. - - - closes the stream automatically by the time the constructor returns unless is specified. - - - - - The name of the section. - - - - - The total size of the section when loaded into memory. - If this value is greater than , the section is zero-padded. - This field is valid only for PE images and should be set to zero for object files. - - - - - For PE images, the address of the first byte of the section relative to the image base when the - section is loaded into memory. For object files, this field is the address of the first byte before - relocation is applied; for simplicity, compilers should set this to zero. Otherwise, - it is an arbitrary value that is subtracted from offsets during relocation. - - - - - The size of the section (for object files) or the size of the initialized data on disk (for image files). - For PE images, this must be a multiple of . - If this is less than , the remainder of the section is zero-filled. - Because the field is rounded but the field is not, - it is possible for to be greater than as well. - When a section contains only uninitialized data, this field should be zero. - - - - - The file pointer to the first page of the section within the COFF file. - For PE images, this must be a multiple of . - For object files, the value should be aligned on a 4 byte boundary for best performance. - When a section contains only uninitialized data, this field should be zero. - - - - - The file pointer to the beginning of relocation entries for the section. - This is set to zero for PE images or if there are no relocations. - - - - - The file pointer to the beginning of line-number entries for the section. - This is set to zero if there are no COFF line numbers. - This value should be zero for an image because COFF debugging information is deprecated. - - - - - The number of relocation entries for the section. This is set to zero for PE images. - - - - - The number of line-number entries for the section. - This value should be zero for an image because COFF debugging information is deprecated. - - - - - The flags that describe the characteristics of the section. - - - - - Used to modify the value of the property. - CLS-compliant setters are named with set_ prefix. - - - - - Used to read the value of the property. - CLS-compliant getters are named with get_ prefix. - - - - - Other method for property (not getter or setter) or event (not adder, remover, or raiser). - - - - - Used to add a handler for an event. - Corresponds to the AddOn flag in the Ecma 335 CLI specification. - CLS-compliant adders are named with add_ prefix. - - - - - Used to remove a handler for an event. - Corresponds to the RemoveOn flag in the Ecma 335 CLI specification. - CLS-compliant removers are named with remove_ prefix. - - - - - Used to indicate that an event has occurred. - Corresponds to the Fire flag in the Ecma 335 CLI specification. - CLS-compliant raisers are named with raise_ prefix. - - - - - Specifies the security actions that can be performed using declarative security. - - - - - No declarative security action. - - - - - Check that all callers in the call chain have been granted specified permission, - - - - - The calling code can access the resource identified by the current permission object, even if callers higher in the stack have not been granted permission to access the resource. - - - - - Without further checks refuse Demand for the specified permission. - - - - - Without further checks, refuse Demand for all permissions other than those specified. - - - - - Check that the immediate caller has been granted the specified permission; - - - - - The derived class inheriting the class or overriding a method is required to have been granted the specified permission. - - - - - The request for the minimum permissions required for code to run. This action can only be used within the scope of the assembly. - - - - - The request for additional permissions that are optional (not required to run). This request implicitly refuses all other permissions not specifically requested. This action can only be used within the scope of the assembly. - - - - - The request that permissions that might be misused will not be granted to the calling code. This action can only be used within the scope of the assembly. - - - - - The Resource is exported from the Assembly - - - - - The Resource is not exported from the Assembly - - - - - Masks just the visibility-related attributes. - - - - - Specifies all the hash algorithms used for hashing assembly files and for generating the strong name. - - - - - A mask indicating that there is no hash algorithm. If you specify None for a multi-module assembly, the common language runtime defaults to the SHA1 algorithm, since multi-module assemblies need to generate a hash. - - - - - Retrieves the MD5 message-digest algorithm. MD5 was developed by Rivest in 1991. It is basically MD4 with safety-belts and while it is slightly slower than MD4, it helps provide more security. The algorithm consists of four distinct rounds, which has a slightly different design from that of MD4. Message-digest size, as well as padding requirements, remain the same. - - - - - Retrieves a revision of the Secure Hash Algorithm that corrects an unpublished flaw in SHA. - - - - - Retrieves a version of the Secure Hash Algorithm with a hash size of 256 bits. - - - - - Retrieves a version of the Secure Hash Algorithm with a hash size of 384 bits. - - - - - Retrieves a version of the Secure Hash Algorithm with a hash size of 512 bits. - - - - - The assembly reference holds the full (unhashed) public key. - Not applicable on assembly definition. - - - - - The implementation of the referenced assembly used at runtime is not expected to match the version seen at compile time. - - - - - The assembly contains Windows Runtime code. - - - - - Content type mask. Masked bits correspond to values of . - - - - - Specifies that just-in-time (JIT) compiler optimization is disabled for the assembly. - - - - - Specifies that just-in-time (JIT) compiler tracking is enabled for the assembly. - - - - + + + + System.Reflection.Metadata + + + + + Compares the current content of this writer with another one. + + + + Range specified by and falls outside of the bounds of the buffer content. + + + Range specified by and falls outside of the bounds of the buffer content. + + + is negative. + + + is null. + is negative. + + + is null. + + + is null. + is negative. + + + is null. + + + is null. + Range specified by and falls outside of the bounds of the . + + + is null. + + + is null. + Range specified by and falls outside of the bounds of the . + + + + Writes a reference to a heap (heap index) or a table (row id). + + + References may be small (2B) or large (4B). + + + + + Writes UTF16 (little-endian) encoded string at the current position. + + is null. + + + + Writes UTF16 (little-endian) encoded string at the current position. + + is null. + + + + Writes string in SerString format (see ECMA-335-II 23.3 Custom attributes): + The string is UTF8 encoded and prefixed by the its size in bytes. + Null string is represented as a single byte 0xFF. + + + + + Writes UTF8 encoded string at the current position. + + is null. + + + + Implements compressed signed integer encoding as defined by ECMA-335-II chapter 23.2: Blobs and signatures. + + + If the value lies between -64 (0xFFFFFFC0) and 63 (0x3F), inclusive, encode as a one-byte integer: + bit 7 clear, value bits 5 through 0 held in bits 6 through 1, sign bit (value bit 31) in bit 0. + + If the value lies between -8192 (0xFFFFE000) and 8191 (0x1FFF), inclusive, encode as a two-byte integer: + 15 set, bit 14 clear, value bits 12 through 0 held in bits 13 through 1, sign bit(value bit 31) in bit 0. + + If the value lies between -268435456 (0xF000000) and 268435455 (0x0FFFFFFF), inclusive, encode as a four-byte integer: + 31 set, 30 set, bit 29 clear, value bits 27 through 0 held in bits 28 through 1, sign bit(value bit 31) in bit 0. + + can't be represented as a compressed signed integer. + + + + Implements compressed unsigned integer encoding as defined by ECMA-335-II chapter 23.2: Blobs and signatures. + + + If the value lies between 0 (0x00) and 127 (0x7F), inclusive, + encode as a one-byte integer (bit 7 is clear, value held in bits 6 through 0). + + If the value lies between 28 (0x80) and 214 – 1 (0x3FFF), inclusive, + encode as a 2-byte integer with bit 15 set, bit 14 clear(value held in bits 13 through 0). + + Otherwise, encode as a 4-byte integer, with bit 31 set, bit 30 set, bit 29 clear (value held in bits 28 through 0). + + can't be represented as a compressed signed integer. + + + + Writes a constant value (see ECMA-335 Partition II section 22.9) at the current position. + + is not of a constant type. + + + + Returns a sequence of all blobs that represent the content of the builder. + + Content is not available, the builder has been linked with another one. + + + + Compares the current content of this writer with another one. + + Content is not available, the builder has been linked with another one. + + + Content is not available, the builder has been linked with another one. + + + Range specified by and falls outside of the bounds of the buffer content. + Content is not available, the builder has been linked with another one. + + + Content is not available, the builder has been linked with another one. + + + Range specified by and falls outside of the bounds of the buffer content. + Content is not available, the builder has been linked with another one. + + + is null. + Content is not available, the builder has been linked with another one. + + + is default(). + Content is not available, the builder has been linked with another one. + + + is null. + Content is not available, the builder has been linked with another one. + + + is null. + Builder is not writable, it has been linked with another one. + + + is null. + Builder is not writable, it has been linked with another one. + + + + Reserves a contiguous block of bytes. + + is negative. + Builder is not writable, it has been linked with another one. + + + is negative. + Builder is not writable, it has been linked with another one. + + + is null. + is negative. + Builder is not writable, it has been linked with another one. + + + is null. + is negative. + Builder is not writable, it has been linked with another one. + Bytes successfully written from the . + + + is null. + Builder is not writable, it has been linked with another one. + + + is null. + Range specified by and falls outside of the bounds of the . + Builder is not writable, it has been linked with another one. + + + is null. + Builder is not writable, it has been linked with another one. + + + is null. + Range specified by and falls outside of the bounds of the . + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + Builder is not writable, it has been linked with another one. + + + + Writes a reference to a heap (heap index) or a table (row id). + + + References may be small (2B) or large (4B). + + Builder is not writable, it has been linked with another one. + + + + Writes UTF16 (little-endian) encoded string at the current position. + + is null. + Builder is not writable, it has been linked with another one. + + + + Writes UTF16 (little-endian) encoded string at the current position. + + is null. + Builder is not writable, it has been linked with another one. + + + + Writes string in SerString format (see ECMA-335-II 23.3 Custom attributes): + The string is UTF8 encoded and prefixed by the its size in bytes. + Null string is represented as a single byte 0xFF. + + Builder is not writable, it has been linked with another one. + + + + Writes UTF8 encoded string at the current position. + + is null. + Builder is not writable, it has been linked with another one. + + + + Implements compressed signed integer encoding as defined by ECMA-335-II chapter 23.2: Blobs and signatures. + + + If the value lies between -64 (0xFFFFFFC0) and 63 (0x3F), inclusive, encode as a one-byte integer: + bit 7 clear, value bits 5 through 0 held in bits 6 through 1, sign bit (value bit 31) in bit 0. + + If the value lies between -8192 (0xFFFFE000) and 8191 (0x1FFF), inclusive, encode as a two-byte integer: + 15 set, bit 14 clear, value bits 12 through 0 held in bits 13 through 1, sign bit(value bit 31) in bit 0. + + If the value lies between -268435456 (0xF000000) and 268435455 (0x0FFFFFFF), inclusive, encode as a four-byte integer: + 31 set, 30 set, bit 29 clear, value bits 27 through 0 held in bits 28 through 1, sign bit(value bit 31) in bit 0. + + can't be represented as a compressed signed integer. + Builder is not writable, it has been linked with another one. + + + + Implements compressed unsigned integer encoding as defined by ECMA-335-II chapter 23.2: Blobs and signatures. + + + If the value lies between 0 (0x00) and 127 (0x7F), inclusive, + encode as a one-byte integer (bit 7 is clear, value held in bits 6 through 0). + + If the value lies between 28 (0x80) and 214 – 1 (0x3FFF), inclusive, + encode as a 2-byte integer with bit 15 set, bit 14 clear (value held in bits 13 through 0). + + Otherwise, encode as a 4-byte integer, with bit 31 set, bit 30 set, bit 29 clear (value held in bits 28 through 0). + + can't be represented as a compressed integer. + Builder is not writable, it has been linked with another one. + + + + Writes a constant value (see ECMA-335 Partition II section 22.9) at the current position. + + is not of a constant type. + Builder is not writable, it has been linked with another one. + + + + Represents a disposable blob of memory accessed via unsafe pointer. + + + + + Pointer to the underlying data (not valid after disposal). + + + + + Returns the content of the memory block. + + + Only creates a copy of the data if they are not represented by a managed byte array, or the offset is non-zero. + + + + + Disposes the block. + + + The operation is idempotent, but must not be called concurrently with any other operations on the block + or with another call to Dispose. + + Using the block after dispose is an error in our code and therefore no effort is made to throw a tidy + ObjectDisposedException and null ref or AV is possible. + + + + + Represents a memory block backed by an array of bytes. + + + + + Class representing raw memory but not owning the memory. + + + + + Represents raw memory owned by an external object. + + + + + Creates and hydrates a memory block representing all data. + + Error while reading from the memory source. + + + + Creates and hydrates a memory block representing data in the specified range. + + Starting offset relative to the beginning of the data represented by this provider. + Size of the resulting block. + Error while reading from the memory source. + + + + Gets a seekable and readable that can be used to read all data. + The operations on the stream has to be done under a lock of if non-null. + The image starts at and has size . + It is the caller's responsibility not to read outside those bounds. + + + + + The size of the data. + + + + + Represents memory block allocated on native heap. + + + Owns the native memory resource. + + + + + Represents data read from a stream. + + + Uses memory map to load data from streams backed by files that are bigger than . + + + + Error while reading from the stream. + + + + Provides helpers to decode strings from unmanaged memory to System.String while avoiding + intermediate allocation. + + This has three components: + + (1) Light-up Encoding.GetString(byte*, int) via reflection and resurface it as extension + method. + + This is a new API that will provide API convergence across all platforms for + this scenario. It is already on .NET 4.6+ and ASP.NET vNext, but not yet available + on every platform we support. See below for how we fall back. + + (2) Deal with WinRT prefixes. + + When reading managed winmds with projections enabled, the metadata reader needs to prepend + a WinRT prefix in some case . Doing this without allocation poses a problem + as we don't have the prefix and input in contiguous data that we can pass to the + Encoding.GetString. We handle this case using pooled managed scratch buffers where we copy + the prefix and input and decode using Encoding.GetString(byte[], int, int). + + (3) Deal with platforms that don't yet have Encoding.GetString(byte*, int). + + If we're running on a full framework earlier than 4.6, we will bind to the internal + String.CreateStringFromEncoding which is equivalent and Encoding.GetString is just a trivial + wrapper around it in .NET 4.6. This means that we always have the fast path on every + full framework version we support. + + If we can't bind to it via reflection, then we emulate it using what is effectively (2) and + with an empty prefix. + + For both (2) and (3), the pooled buffers have a fixed size deemed large enough for the + vast majority of metadata strings. In the rare worst case (byteCount > threshold and + (lightUpAttemptFailed || prefix != null), we give up and allocate a temporary array, + copy to it, decode, and throw it away. + + + + + The offset bias value used in the FNV-1a algorithm + See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + + + + + The generative factor used in the FNV-1a algorithm + See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + + + + + Compute the FNV-1a hash of a sequence of bytes + See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + + The sequence of bytes + The FNV-1a hash of + + + + Compute the FNV-1a hash of a sequence of bytes + See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + + The sequence of bytes + The FNV-1a hash of + + + + Provides tools for using in interop scenarios. + + + *** WARNING *** + + If you decide to copy this code elsewhere, please retain the documentation here + and the Dangerous prefixes in the API names. This will help track down and audit + other places where this technique (with dangerous consequences when misused) may + be applied. + + A generic version of this API was once public in a pre-release of immutable + collections, but it was deemed to be too subject to abuse when available publicly. + + This implementation is scoped to byte arrays as that is all that the metadata reader needs. + + Also, since we don't have access to immutable collection internals, we use a trick involving + overlapping a with a refer. While + unverifiable, it is valid. See Ecma 335, section II.10.7 Controlling instance layout: + + "It is possible to overlap fields in this way, though offsets occupied by an object reference + shall not overlap with offsets occupied by a built-in value type or a part of + another object reference. While one object reference can completely overlap another, this is + unverifiable." + + Furthermore, the fact that backed by a single + field is something inherent to the design of ImmutableArray in order to get its performance + characteristics and therefore something we (Microsoft) are comfortable defining as a contract that + can be depended upon as below. + + + + + Creates a new instance of using a given mutable array as the backing + field, without creating a defensive copy. It is the responsibility of the caller to ensure no other mutable + references exist to the array. Do not mutate the array after calling this method. + + The mutable array to use as the backing field. The incoming reference is set to null + since it should not be retained by the caller. + + Users of this method should take extra care to ensure that the mutable array given as a parameter + is never modified. The returned will use the given array as its backing + field without creating a defensive copy, so changes made to the given mutable array will be observable + on the returned . Instance and static methods of + and may malfunction if they operate on an instance + whose underlying backing field is modified. + + An immutable array. + + + + Access the backing mutable array instance for the given , without + creating a defensive copy. It is the responsibility of the caller to ensure the array is not modified + through the returned mutable reference. Do not mutate the returned array. + + The from which to retrieve the backing field. + + Users of this method should take extra care to ensure that the returned mutable array is never modified. + The returned mutable array continues to be used as the backing field of the given + without creating a defensive copy, so changes made to the returned mutable array will be observable + on the given . Instance and static methods of + and may malfunction if they operate on an instance + whose underlying backing field is modified. + + The underlying array, or null if is true. + + + + Decodes a compressed integer value starting at offset. + See Metadata Specification section II.23.2: Blobs and signatures. + + Offset to the start of the compressed data. + Bytes actually read. + + Value between 0 and 0x1fffffff, or if the value encoding is invalid. + + + + + Read UTF8 at the given offset up to the given terminator, null terminator, or end-of-block. + + Offset in to the block where the UTF8 bytes start. + UTF8 encoded prefix to prepend to the bytes at the offset before decoding. + The UTF8 decoder to use that allows user to adjust fallback and/or reuse existing strings without allocating a new one. + The number of bytes read, which includes the terminator if we did not hit the end of the block. + A character in the ASCII range that marks the end of the string. + If a value other than '\0' is passed we still stop at the null terminator if encountered first. + The decoded string. + + + + Get number of bytes from offset to given terminator, null terminator, or end-of-block (whichever comes first). + Returned length does not include the terminator, but numberOfBytesRead out parameter does. + + Offset in to the block where the UTF8 bytes start. + A character in the ASCII range that marks the end of the string. + If a value other than '\0' is passed we still stop at the null terminator if encountered first. + The number of bytes read, which includes the terminator if we did not hit the end of the block. + Length (byte count) not including terminator. + + + + In a table that specifies children via a list field (e.g. TypeDef.FieldList, TypeDef.MethodList), + seaches for the parent given a reference to a child. + + Returns row number [0..RowCount). + + + + In a table ordered by a column containing entity references seaches for a row with the specified reference. + + Returns row number [0..RowCount) or -1 if not found. + + + + Calculates a range of rows that have specified value in the specified column in a table that is sorted by that column. + + + + + Calculates a range of rows that have specified value in the specified column in a table that is sorted by that column. + + + + + The usage is: + var inst = PooledStringBuilder.GetInstance(); + var sb = inst.builder; + ... Do Stuff... + ... sb.ToString() ... + inst.Free(); + + + + + Generic implementation of object pooling pattern with predefined pool size limit. The main + purpose is that limited number of frequently used objects can be kept in the pool for + further recycling. + + Notes: + 1) it is not the goal to keep all returned objects. Pool is not meant for storage. If there + is no space in the pool, extra returned objects will be dropped. + + 2) it is implied that if object was obtained from a pool, the caller will return it back in + a relatively short time. Keeping checked out objects for long durations is ok, but + reduces usefulness of pooling. Just new up your own. + + Not returning objects to the pool in not detrimental to the pool's work, but is a bad practice. + Rationale: + If there is no intent for reusing the object, do not use pool - just use "new". + + + + + Produces an instance. + + + Search strategy is a simple linear probing which is chosen for it cache-friendliness. + Note that Free will try to store recycled objects close to the start thus statistically + reducing how far we will typically search. + + + + + Returns objects to the pool. + + + Search strategy is a simple linear probing which is chosen for it cache-friendliness. + Note that Free will try to store recycled objects close to the start thus statistically + reducing how far we will typically search in Allocate. + + + + + Copies specified amount of data from given stream to a target memory pointer. + + unexpected stream end. + + + + Attempts to read all of the requested bytes from the stream into the buffer + + + The number of bytes read. Less than will + only be returned if the end of stream is reached before all bytes can be read. + + + Unlike it is not guaranteed that + the stream position or the output buffer will be unchanged if an exception is + returned. + + + + + Decodes custom attribute blobs. + + + + + Gets the TType representation for . + + + + + Returns true if the given type represents . + + + + + Get the type symbol for the given serialized type name. + The serialized type name is in so-called "reflection notation" (i.e. as understood by .) + + The name is malformed. + + + + Gets the underlying type of the given enum type symbol. + + The given type symbol does not represent an enum. + + + + Represents the shape of an array type. + + + + + Gets the number of dimensions in the array. + + + + + Gets the sizes of each dimension. Length may be smaller than rank, in which case the trailing dimensions have unspecified sizes. + + + + + Gets the lower-bounds of each dimension. Length may be smaller than rank, in which case the trailing dimensions have unspecified lower bounds. + + + + + Gets the type symbol for a single-dimensional array with zero lower bounds of the given element type. + + + + + Gets the a type symbol for the function pointer type of the given method signature. + + + + + Gets the type symbol for the generic method parameter at the given zero-based index. + + + + + Gets the type symbol for the generic type parameter at the given zero-based index. + + + + + Gets the type symbol for a type with a custom modifier applied. + + The metadata reader that was passed to the . It may be null. + True if the modifier is required, false if it's optional. + The modifier type applied. + The type symbol of the underlying type without modifiers applied. + + + + Gets the type symbol for a local variable type that is marked as pinned. + + + + + Gets the type symbol for a type definition. + + + The metadata reader that was passed to the. It may be null. + + + The type definition handle. + + + When is used indicates whether + the type reference is to class or value type. Otherwise + will be passed. + + + + + Gets the type symbol for a type reference. + + + The metadata reader that was passed to the . It may be null. + + + The type definition handle. + + + When is used indicates whether + the type reference is to class or value type. Otherwise + will be passed. + + + + + Gets the type symbol for a type specification. + + + The metadata reader that was passed to the . It may be null. + + + The type specification handle. + + + When is used indicates whether + the type reference is to class or value type. Otherwise + will be passed. + + + + + It is not known in the current context if the type reference or definition is a class or value type. + This will be the case when is not specified. + + + + + The type definition or reference refers to a class. + + + + + The type definition or reference refers to a value type. + + + + + Gets the type symbol for a primitive type. + + + + + Gets the type symbol for a generic instantiation of the given generic type with the given type arguments. + + + + + Gets the type symbol for a generalized array of the given element type and shape. + + + + + Gets the type symbol for a managed pointer to the given element type. + + + + + Gets the type symbol for an unmanaged pointer to the given element ty + + + + + Decodes signature blobs. + See Metadata Specification section II.23.2: Blobs and signatures. + + + + + Creates a new SignatureDecoder. + + The provider used to obtain type symbols as the signature is decoded. + + The metadata reader from which the signature was obtained. It may be null if the given provider allows it. + However, if is specified, it should + be non-null to evaluate WinRT projections from class to value type or vice-versa correctly. + + Set of optional decoder features to enable. + + + + Decodes a type embedded in a signature and advances the reader past the type. + + The blob reader positioned at the leading SignatureTypeCode + Allow a to follow a (CLASS | VALUETYPE) in the signature. + At present, the only context where that would be valid is in a LocalConstantSig as defined by the Portable PDB specification. + + The decoded type. + The reader was not positioned at a valid signature type. + + + + Decodes a list of types, with at least one instance that is preceded by its count as a compressed integer. + + + + + Decodes a method (definition, reference, or standalone) or property signature blob. + + BlobReader positioned at a method signature. + The decoded method signature. + The method signature is invalid. + + + + Decodes a method specification signature blob and advances the reader past the signature. + + A BlobReader positioned at a valid method specification signature. + The types used to instantiate a generic method via the method specification. + + + + Decodes a local variable signature blob and advances the reader past the signature. + + The blob reader positioned at a local variable signature. + The local variable types. + The local variable signature is invalid. + + + + Decodes a field signature blob and advances the reader past the signature. + + The blob reader positioned at a field signature. + The decoded field type. + + + + Disable all options (default when no options are passed). + + + + + Causes the decoder to pass or + to the instead of . + + + There is additional overhead for this case when dealing with .winmd files to handle projection. + Most scenarios will end up resolving valuetype vs. class from the actual definitions and do not + need to know which was used in the signature. As such, it is not enabled by default. + + + + + Represents a method (definition, reference, or standalone) or property signature. + In the case of properties, the signature matches that of a getter with a distinguishing . + + + + + Represents the information in the leading byte of the signature (kind, calling convention, flags). + + + + + Gets the method's return type. + + + + + Gets the number of parameters that are required. Will be equal to the length of + unless this signature represents the standalone call site of a vararg method, in which case the entries + extra entries in are the types used for the optional parameters. + + + + + Gets the number of generic type parameters of the method. Will be 0 for non-generic methods. + + + + + Gets the method's parameter types. + + + + + Represents a primitive type found in metadata signatures. + + + + + Serialized #Pdb stream. + + + + + Fills in stringIndexMap with data from stringIndex and write to stringWriter. + Releases stringIndex as the stringTable is sealed after this point. + + + + + Sorts strings such that a string is followed immediately by all strings + that are a suffix of it. + + + + + Table row counts. + + + + + External table row counts. + + + + + Non-empty tables that are emitted into the metadata table stream. + + + + + Non-empty tables stored in an external metadata table stream that might be referenced from the metadata table stream being emitted. + + + + + Exact (unaligned) heap sizes. + + + + + Overall size of metadata stream storage (stream headers, table stream, heaps, additional streams). + Aligned to . + + + + + The size of metadata stream (#- or #~). Aligned. + Aligned to . + + + + + The size of #Pdb stream. Aligned. + + + + + Metadata header size. + Includes: + - metadata storage signature + - storage header + - stream headers + + + + + Total size of metadata (header and all streams). + + + + + Provides an extension method to access the TypeDefinitionId column of the ExportedType table. + + + + + Gets a hint at the likely row number of the target type in the TypeDef table of its module. + If the namespaces and names do not match, resolution falls back to a full search of the + target TypeDef table. Ignored and should be zero if is + true. + + + + + Provides extension methods for working with certain raw elements of the Ecma 335 metadata tables and heaps. + + + + + Returns the number of rows in the specified table. + + is null. + is not a valid table index. + + + + Returns the size of a row in the specified table. + + is null. + is not a valid table index. + + + + Returns the offset from the start of metadata to the specified table. + + is null. + is not a valid table index. + + + + Returns the size of the specified heap. + + is null. + is not a valid heap index. + + + + Returns the offset from the start of metadata to the specified heap. + + is null. + is not a valid heap index. + + + + Returns the size of the specified heap. + + is null. + is not a valid heap index. + + + + Returns the a handle to the UserString that follows the given one in the UserString heap or a nil handle if it is the last one. + + is null. + + + + Returns the a handle to the Blob that follows the given one in the Blob heap or a nil handle if it is the last one. + + is null. + + + + Returns the a handle to the String that follows the given one in the String heap or a nil handle if it is the last one. + + is null. + + + + Enumerates entries of EnC log. + + is null. + + + + Enumerates entries of EnC map. + + is null. + + + + Enumerate types that define one or more properties. + + + The resulting sequence corresponds exactly to entries in PropertyMap table, + i.e. n-th returned is stored in n-th row of PropertyMap. + + + + + Enumerate types that define one or more events. + + + The resulting sequence corresponds exactly to entries in EventMap table, + i.e. n-th returned is stored in n-th row of EventMap. + + + + + Maximum number of tables that can be present in Ecma335 metadata. + + + + + Maximum number of tables that can be present in Ecma335 metadata. + + + + + Returns the row number of a metadata table entry that corresponds + to the specified in the context of . + + One based row number. + The is not a valid metadata table handle. + + + + Returns the offset of metadata heap data that corresponds + to the specified in the context of . + + Zero based offset, or -1 if isn't a metadata heap handle. + The operation is not supported for the specified . + The is invalid. + + + + Returns the metadata token of the specified in the context of . + + Metadata token. + The operation is not supported for the specified . + + + + Returns the metadata token of the specified in the context of . + + Metadata token. + + Handle represents a metadata entity that doesn't have a token. + A token can only be retrieved for a metadata table handle or a heap handle of type . + + The operation is not supported for the specified . + + + + Returns the row number of a metadata table entry that corresponds + to the specified . + + + One based row number, or -1 if can only be interpreted in a context of a specific . + See . + + + + + Returns the offset of metadata heap data that corresponds + to the specified . + + + Zero based offset, or -1 if can only be interpreted in a context of a specific . + See . + + + + + Returns the metadata token of the specified . + + + Metadata token, or 0 if can only be interpreted in a context of a specific . + See . + + + Handle represents a metadata entity that doesn't have a token. + A token can only be retrieved for a metadata table handle or a heap handle of type . + + + + + Returns the metadata token of the specified . + + + Metadata token, or 0 if can only be interpreted in a context of a specific . + See . + + + + + Gets the of the table corresponding to the specified . + + Handle type. + Table index. + True if the handle type corresponds to an Ecma335 table, false otherwise. + + + + Gets the of the heap corresponding to the specified . + + Handle type. + Heap index. + True if the handle type corresponds to an Ecma335 heap, false otherwise. + + + + Creates a handle from a token value. + + + is not a valid metadata token. + It must encode a metadata table entity or an offset in heap. + + + + + Creates an entity handle from a token value. + + is not a valid metadata entity token. + + + + Creates an from a token value. + + + is not a valid table index. + + + + Creates an from a token value. + + + is not a valid table index. + + + + Returns true if the given raw (non-virtual) handle represents the same string as given ASCII string. + + + + + Returns the heap index of the given ASCII character or -1 if not found prior null terminator or end of heap. + + + + + Returns true if the given raw (non-virtual) handle represents a string that starts with given ASCII prefix. + + + + + Equivalent to Array.BinarySearch, searches for given raw (non-virtual) handle in given array of ASCII strings. + + + + + These contants are all in the byte range and apply to the interpretation of , + + + + + Use the highest bit to mark tokens that are virtual (synthesized). + We create virtual tokens to represent projected WinMD entities. + + + + + In the case of string handles, the two lower bits that (in addition to the + virtual bit not included in this mask) encode how to obtain the string value. + + + + + Use the highest bit to mark tokens that are virtual (synthesized). + We create virtual tokens to represent projected WinMD entities. + + + + + Returns true if the token value can escape the metadata reader. + We don't allow virtual tokens and heap tokens other than UserString to escape + since the token type ids are internal to the reader and not specified by ECMA spec. + + Spec (Partition III, 1.9 Metadata tokens): + Many CIL instructions are followed by a "metadata token". This is a 4-byte value, that specifies a row in a + metadata table, or a starting byte offset in the User String heap. + + For example, a value of 0x02 specifies the TypeDef table; a value of 0x70 specifies the User + String heap.The value corresponds to the number assigned to that metadata table (see Partition II for the full + list of tables) or to 0x70 for the User String heap.The least-significant 3 bytes specify the target row within that + metadata table, or starting byte offset within the User String heap. + + + + + Returns whether the namespaceTable has been created. If it hasn't, calling a GetXXX method + on this will probably have a very high amount of overhead. + + + + + This will return a StringHandle for the simple name of a namespace name at the given segment index. + If no segment index is passed explicitly or the "segment" index is greater than or equal to the number + of segments, then the last segment is used. "Segment" in this context refers to part of a namespace + name between dots. + + Example: Given a NamespaceDefinitionHandle to "System.Collections.Generic.Test" called 'handle': + + reader.GetString(GetSimpleName(handle)) == "Test" + reader.GetString(GetSimpleName(handle, 0)) == "System" + reader.GetString(GetSimpleName(handle, 1)) == "Collections" + reader.GetString(GetSimpleName(handle, 2)) == "Generic" + reader.GetString(GetSimpleName(handle, 3)) == "Test" + reader.GetString(GetSimpleName(handle, 1000)) == "Test" + + + + + Two distinct namespace handles represent the same namespace if their full names are the same. This + method merges builders corresponding to such namespace handles. + + + + + This will take 'table' and merge all of the NamespaceData instances that point to the same + namespace. It has to create 'stringTable' as an intermediate dictionary, so it will hand it + back to the caller should the caller want to use it. + + + + + Creates a NamespaceDataBuilder instance that contains a synthesized NamespaceDefinitionHandle, + as well as the name provided. + + + + + Quick convenience method that handles linking together child + parent + + + + + Links a child to its parent namespace. If the parent namespace doesn't exist, this will create a + virtual one. This will automatically link any virtual namespaces it creates up to its parents. + + + + + This will link all parents/children in the given namespaces dictionary up to each other. + + In some cases, we need to synthesize namespaces that do not have any type definitions or forwarders + of their own, but do have child namespaces. These are returned via the virtualNamespaces out + parameter. + + + + + Loops through all type definitions in metadata, adding them to the given table + + + + + Loops through all type forwarders in metadata, adding them to the given table + + + + + Populates namespaceList with distinct namespaces. No ordering is guaranteed. + + + + + If the namespace table doesn't exist, populates it! + + + + + If the namespace list doesn't exist, populates it! + + + + + An intermediate class used to build NamespaceData instances. This was created because we wanted to + use ImmutableArrays in NamespaceData, but having ArrayBuilders and ImmutableArrays that served the + same purpose in NamespaceData got ugly. With the current design of how we create our Namespace + dictionary, this needs to be a class because we have a many-to-one mapping between NamespaceHandles + and NamespaceData. So, the pointer semantics must be preserved. + + This class assumes that the builders will not be modified in any way after the first call to + Freeze(). + + + + + Returns a NamespaceData that represents this NamespaceDataBuilder instance. After calling + this method, it is an error to use any methods or fields except Freeze() on the target + NamespaceDataBuilder. + + + + + Returns field offset for given field RowId, or -1 if not available. + + + + + In CLI metadata equal to the actual number of entries in AssemblyRef table. + In WinMD metadata it includes synthesized AssemblyRefs in addition. + + + + + True if the file contains metadata. + + + Corresponds to Flags field of File table in ECMA-335 Standard. + + + + + File name with extension. + + + Corresponds to Name field of File table in ECMA-335 Standard. + + + + + Hash value of the file content calculated using . + + + Corresponds to HashValue field of File table in ECMA-335 Standard. + + + + An array containing the '\0' character. + + + + Reads number. + + + Decimal number is encoded in 13 bytes as follows: + - byte 0: highest bit indicates sign (1 for negative, 0 for non-negative); the remaining 7 bits encode scale + - bytes 1..12: 96-bit unsigned integer in little endian encoding. + + The data at the current position was not a valid number. + + + + Reads UTF8 encoded string starting at the current position. + + The number of bytes to read. + The string. + bytes not available. + + + + Reads UTF16 (little-endian) encoded string starting at the current position. + + The number of bytes to read. + The string. + bytes not available. + + + + Reads bytes starting at the current position. + + The number of bytes to read. + The byte array. + bytes not available. + + + + Reads an unsigned compressed integer value. + See Metadata Specification section II.23.2: Blobs and signatures. + + The value of the compressed integer that was read. + true if the value was read successfully. false if the data at the current position was not a valid compressed integer. + + + + Reads an unsigned compressed integer value. + See Metadata Specification section II.23.2: Blobs and signatures. + + The value of the compressed integer that was read. + The data at the current position was not a valid compressed integer. + + + + Reads a signed compressed integer value. + See Metadata Specification section II.23.2: Blobs and signatures. + + The value of the compressed integer that was read. + true if the value was read successfully. false if the data at the current position was not a valid compressed integer. + + + + Reads a signed compressed integer value. + See Metadata Specification section II.23.2: Blobs and signatures. + + The value of the compressed integer that was read. + The data at the current position was not a valid compressed integer. + + + + Reads type code encoded in a serialized custom attribute value. + + if the encoding is invalid. + + + + Reads type code encoded in a signature. + + if the encoding is invalid. + + + + Reads a string encoded as a compressed integer containing its length followed by + its contents in UTF8. Null strings are encoded as a single 0xFF byte. + + Defined as a 'SerString' in the Ecma CLI specification. + String value or null. + If the encoding is invalid. + + + + Reads a type handle encoded in a signature as TypeDefOrRefOrSpecEncoded (see ECMA-335 II.23.2.8). + + The handle or nil if the encoding is invalid. + + + + Reads a #Blob heap handle encoded as a compressed integer. + + + Blobs that contain references to other blobs are used in Portable PDB format, for example . + + + + + Reads a constant value (see ECMA-335 Partition II section 22.9) from the current position. + + Error while reading from the blob. + is not a valid . + + Boxed constant value. To avoid allocating the object use Read* methods directly. + Constants of type are encoded as UTF16 strings, use to read them. + + + + + The type of the constant value. + + + Corresponds to Type field of Constant table in ECMA-335 Standard. + + + + + The constant value. + + + Corresponds to Value field of Constant table in ECMA-335 Standard. + + + + + The parent handle (, , or ). + + + Corresponds to Parent field of Constant table in ECMA-335 Standard. + + + + + The constructor ( or ) of the custom attribute type. + + + Corresponds to Type field of CustomAttribute table in ECMA-335 Standard. + + + + + The handle of the metadata entity the attribute is applied to. + + + Corresponds to Parent field of CustomAttribute table in ECMA-335 Standard. + + + + + The value of the attribute. + + + Corresponds to Value field of CustomAttribute table in ECMA-335 Standard. + + + + + Decodes the arguments encoded in the value blob. + + + + + Start IL offset of the try block. + + + + + Length in bytes of try block. + + + + + Start IL offset of the exception handler. + + + + + Length in bytes of the exception handler. + + + + + IL offset of the start of the filter block, or -1 if the region is not a filter. + + + + + Returns a TypeRef, TypeDef, or TypeSpec handle if the region represents a catch, nil token otherwise. + + + + + Name of the target type, or nil if the type is nested or defined in a root namespace. + + + + + Full name of the namespace where the target type, or nil if the type is nested or defined in a root namespace. + + + + + The definition handle of the namespace where the target type is defined, or nil if the type is nested or defined in a root namespace. + + + + + Handle to resolve the implementation of the target type. + + + + representing another module in the assembly. + representing another assembly if is true. + representing the declaring exported type in which this was is nested. + + + + + + Returns field layout offset, or -1 if not available. + + + + + or . + + + Corresponds to Owner field of GenericParam table in ECMA-335 Standard. + + + + + Attributes specifying variance and constraints. + + + Corresponds to Flags field of GenericParam table in ECMA-335 Standard. + + + + + Zero-based index of the parameter within the declaring generic type or method declaration. + + + Corresponds to Number field of GenericParam table in ECMA-335 Standard. + + + + + The name of the generic parameter. + + + Corresponds to Name field of GenericParam table in ECMA-335 Standard. + + + + + The constrained . + + + Corresponds to Owner field of GenericParamConstraint table in ECMA-335 Standard. + + + + + Handle (, , or ) + specifying from which type this generic parameter is constrained to derive, + or which interface this generic parameter is constrained to implement. + + + Corresponds to Constraint field of GenericParamConstraint table in ECMA-335 Standard. + + + + + Represents generic type parameters of a method or type. + + + + + Represents constraints of a generic type parameter. + + + + + Collection of parameters of a specified method. + + + + + Represents a collection of . + + + + + Represents a collection of . + + + + + Represents a collection of . + + + + + Represents a collection of . + + + + + Collection of assembly references. + + + + + Represents a collection of . + + + + + Represents a collection of . + + + + + Compares two handles. + + + The order of handles that differ in kind and are not is undefined. + Returns 0 if and only if returns true. + + + + + Compares two entity handles. + + + Returns 0 if and only if returns true. + + + + + Represents any metadata entity (type reference/definition/specification, method definition, custom attribute, etc.) or value (string, blob, guid, user string). + + + Use to store multiple kinds of handles. + + + + + Creates from a token or a token combined with a virtual flag. + + + + + Token type (0x##000000), does not include virtual flag. + + + + + Small token type (0x##), does not include virtual flag. + + + + + Value stored in an . + + + + + Value stored in a concrete entity handle (see , , etc.). + + + + + Represents a metadata entity (type reference/definition/specification, method definition, custom attribute, etc.). + + + Use to store multiple kinds of entity handles. + It has smaller memory footprint than . + + + + + Value stored in a specific entity handle (see , , etc.). + + + + + Returns a handle to corresponding to this handle. + + + The resulting handle is only valid within the context of a open on the Portable PDB blob, + which in case of standalone PDB file is a different reader than the one containing this method definition. + + + + + #UserString heap handle. + + + The handle is 32-bit wide. + + + + + A handle that represents a namespace definition. + + + + + The interface that is implemented + , , or + + + + + Specifies the byte offset within the referenced file at which this resource record begins. + + + Corresponds to Offset field of ManifestResource table in ECMA-335 Standard. + + + + + Resource attributes. + + + Corresponds to Flags field of ManifestResource table in ECMA-335 Standard. + + + + + Name of the resource. + + + Corresponds to Name field of ManifestResource table in ECMA-335 Standard. + + + + + , , or nil handle. + + + Corresponds to Implementation field of ManifestResource table in ECMA-335 Standard. + + If nil then is an offset in the PE image that contains the metadata, + starting from the Resource entry in the CLI header. + + + + + MethodDef, ModuleRef,TypeDef, TypeRef, or TypeSpec handle. + + + + + Gets a handle to the signature blob. + + + + + Determines if the member reference is to a method or field. + + The member reference signature is invalid. + + + + Indicates whether a represents a standalone method or local variable signature. + + + + + The represents a standalone method signature. + + + + + The references a local variable signature. + + + + + Indicates whether a references a method or field. + + + + + The references a method. + + + + + The references a field. + + + + + CLI metadata. + + + + + Windows Metadata. + + + + + Windows Metadata generated by managed compilers. + + + + + Reads metadata as defined byte the ECMA 335 CLI specification. + + + + + Creates a metadata reader from the metadata stored at the given memory location. + + + The memory is owned by the caller and it must be kept memory alive and unmodified throughout the lifetime of the . + + + + + Creates a metadata reader from the metadata stored at the given memory location. + + + The memory is owned by the caller and it must be kept memory alive and unmodified throughout the lifetime of the . + Use to obtain + metadata from a PE image. + + + + + Creates a metadata reader from the metadata stored at the given memory location. + + + The memory is owned by the caller and it must be kept memory alive and unmodified throughout the lifetime of the . + Use to obtain + metadata from a PE image. + + + + + True if the metadata stream has minimal delta format. Used for EnC. + + + The metadata stream has minimal delta format if "#JTD" stream is present. + Minimal delta format uses large size (4B) when encoding table/heap references. + The heaps in minimal delta only contain data of the delta, + there is no padding at the beginning of the heaps that would align them + with the original full metadata heaps. + + + + + Looks like this function reads beginning of the header described in + Ecma-335 24.2.1 Metadata root + + + + + Reads stream headers described in Ecma-335 24.2.2 Stream header + + + + + A row count for each possible table. May be indexed by . + + + + + Information decoded from #Pdb stream, or null if the stream is not present. + + + + + Returns an array of types nested in the specified type. + + + + + The backing field of a WinRT enumeration type is not public although the backing fields + of managed enumerations are. To allow managed languages to directly access this field, + it is made public by the metadata adapter. + + + + + We want to know if a given method implements a redirected interface. + For example, if we are given the method RemoveAt on a class "A" + which implements the IVector interface (which is redirected + to IList in .NET) then this method would return true. The most + likely reason why we would want to know this is that we wish to hide + (mark private) all methods which implement methods on a redirected + interface. + + The declaration token for the method + + Returns true if the redirected interface is . + + True if the method implements a method on a redirected interface. + False otherwise. + + + + Returns the type definition or reference handle of the attribute type. + + or or nil token if the metadata is invalid and the type can't be determined. + + + + All options are disabled. + + + + + The options that are used when a is obtained + via an overload that does not take a + argument. + + + + + Windows Runtime projections are enabled (on by default). + + + + + Provides string comparison helpers to query strings in metadata while + avoiding allocation where possible. + + + + No allocation is performed unless both the handle argument and the + value argument contain non-ascii text. + + Obtain instances using . + + A default-initialized instance is useless and behaves as a null reference. + + The code is optimized such that there is no additional overhead in + re-obtaining a a comparer over hoisting it in to a local. + + That is to say that a construct like: + + + if (reader.StringComparer.Equals(typeDef.Namespace, "System") && + reader.StringComparer.Equals(typeDef.Name, "Object") + { + // found System.Object + } + + + is no less efficient than: + + + var comparer = reader.StringComparer; + if (comparer.Equals(typeDef.Namespace, "System") && + comparer.Equals(typeDef.Name, "Object") + { + // found System.Object + } + + + The choice between them is therefore one of style and not performance. + + + + + Provides the with a custom mechanism for decoding + byte sequences in metadata that represent text. + + + This can be used for the following purposes: + + 1) To customize the treatment of invalid input. When no decoder is provided, + the uses the default fallback replacement + with \uFFFD) + + 2) To reuse existing strings instead of allocating a new one for each decoding + operation. + + + + + The default decoder used by to decode UTF-8 when + no decoder is provided to the constructor. + + + + + Creates a for the given encoding. + + The encoding to use. + + To cache and reuse existing strings. Create a derived class and override + + + + + Gets the encoding used by this instance. + + + + + The mechanism through which the obtains strings + for byte sequences in metadata. Override this to cache strings if required. + Otherwise, it is implemented by forwarding straight to + and every call will allocate a new string. + + Pointer to bytes to decode. + Number of bytes to decode. + The decoded string. + + + + Size of the method body - includes the header, IL and exception regions. + + + + + MethodDef or MemberRef handle specifying to which generic method this refers, + that is which generic method is it an instantiation of. + + + + + Gets a handle to the signature blob. + + + + + Gets the unqualified name of the NamespaceDefinition. + + + + + Gets the parent namespace. + + + + + Gets the namespace definitions that are direct children of the current + namespace definition. + + System.Collections and System.Linq are direct children of System. + System.Collections.Generic is a direct child of System.Collections. + System.Collections.Generic is *not* a direct child of System. + + + + + Gets all type definitions that reside directly in a namespace. + + + + + Gets all exported types that reside directly in a namespace. + + + + + Returns Document Name Blob. + + + + + representing a blob on #Blob heap in Portable PDB + structured as Document Name. + + + The kind of the handle is . + The handle is a specialization of and doesn't have a distinct kind. + + + + + Returns a handle to corresponding to this handle. + + + The resulting handle is only valid within the context of a open on the type system metadata blob, + which in case of standalone PDB file is a different reader than the one containing this method debug information. + + + + Invalid blob format. + + + + The constant signature. + + + + + Returns a blob encoding sequence points. + Use to decode. + + + + + The document containing the first sequence point of the method, + or nil if the method doesn't have sequence points. + + + + + Returns local signature handle. + + + + + If the method is a MoveNext method of a state machine returns the kickoff method of the state machine, otherwise returns nil handle. + + + + + Returns a body block of a method with specified Relative Virtual Address (RVA); + + is null. + The body is not found in the metadata or is invalid. + Section where the method is stored is not available. + + + + Gets a from a . + + + The caller must keep the alive and undisposed throughout the lifetime of the metadata reader. + + + + + Gets a from a . + + + The caller must keep the alive and undisposed throughout the lifetime of the metadata reader. + + + + + Gets a from a . + + + The caller must keep the alive and undisposed throughout the lifetime of the metadata reader. + + + + + Equivalent to . + + + + + Equivalent to . + + + + + Equivalent to . + + + + + Equivalent to . + + + + + Equivalent to . + + + + + Equivalent to . + + + + + Equivalent to . + + + + + Equivalent to . + + + + + Equivalent to . + + + + + Equivalent to . + + + + + Equivalent to . + + + + + Equivalent to . + + + + + Equivalent to . + + + + + Equivalent to . + + + + + Equivalent to . + + + + + The attribute argument is a System.Type instance. + + + + + The attribute argument is "boxed" (passed to a parameter, field, or property of type object) and carries type information in the attribute blob. + + + + + The attribute argument is an Enum instance. + + + + + Specified additional flags that can be applied to method signatures. + Underlying values correspond to the representation in the leading signature + byte represented by . + + + + + No flags. + + + + + Generic method. + + + + + Instance method. + + Ecma 335 CLI Specification refers to this flag as HAS_THIS. + + + + The first explicitly declared parameter represents the instance pointer. + + + + + Specifies how arguments in a given signature are passed from the caller to the callee. + Underlying values correspond to the representation in the leading signature byte + represented by . + + + + + Managed calling convention with fixed-length argument list. + + + + + Unmanaged C/C++-style calling convention where the call stack is cleaned by the caller. + + + + + Unmanaged calling convention where call stack is cleaned up by the callee. + + + + + Unmanaged C++-style calling convention for calling instance member functions with a fixed argument list. + + + + + Unmanaged calling convention where arguments are passed in registers when possible. + + + + + Managed calling convention for passing extra arguments. + + + + + Represents the signature characteristics specified by the leading byte of signature blobs. + + + This header byte is present in all method definition, method reference, standalone method, field, + property, and local variable signatures, but not in type specification signatures. + + + + + Specifies the signature kind. Underlying values correspond to the representation + in the leading signature byte represented by . + + + + + Method reference, method definition, or standalone method signature. + + + + + Field signature. + + + + + Local variables signature. + + + + + Property signature. + + + + + Method specification signature. + + + + + Represents the type codes that are used in signature encoding. + + + + + Represents an invalid or uninitialized type code. It will not appear in valid signatures. + + + + + Represents in signatures. + + + + + Represents in signatures. + + + + + Represents in signatures. + + + + + Represents in signatures. + + + + + Represents in signatures. + + + + + Represents in signatures. + + + + + Represents in signatures. + + + + + Represents in signatures. + + + + + Represents in signatures. + + + + + Represents in signatures. + + + + + Represents in signatures. + + + + + Represents in signatures. + + + + + Represents in signatures. + + + + + Represents in signatures. + + + + + Represents a unmanaged pointers in signatures. + It is followed in the blob by the signature encoding of the underlying type. + + + + + Represents managed pointers (byref return values and parameters) in signatures. + It is followed in the blob by the signature encoding of the underlying type. + + + + + Represents a generic type parameter used within a signature. + + + + + Represents a generalized in signatures. + + + + + Represents the instantiation of a generic type in signatures. + + + + + Represents a System.TypedReference in signatures. + + + + + Represents a in signatures. + + + + + Represents a in signatures. + + + + + Represents function pointer types in signatures. + + + + + Represents + + + + + Represents a single dimensional with 0 lower bound. + + + + + Represents a generic method parameter used within a signature. + + + + + Represents a custom modifier applied to a type within a signature that the caller must understand. + + + + + Represents a custom modifier applied to a type within a signature that the caller can ignore. + + + + + Precedes a type in signatures. + + + In raw metadata, this will be encoded as either ELEMENT_TYPE_CLASS (0x12) for reference + types and ELEMENT_TYPE_VALUETYPE (0x11) for value types. This is collapsed to a single + code because Windows Runtime projections can project from class to value type or vice-versa + and the raw code is misleading in those cases. + + + + + Represents a marker to indicate the end of fixed arguments and the beginning of variable arguments. + + + + + Represents a local variable that is pinned by garbage collector + + + + + Gets a handle to the signature blob. + + + + + Determines the kind of signature, which can be or + + The signature is invalid. + + + + Name of the type. + + + + + Full name of the namespace where the type is defined, or nil if the type is nested or defined in a root namespace. + + + + + The definition handle of the namespace where the type is defined, or nil if the type is nested or defined in a root namespace. + + + + + The base type of the type definition: either + , or . + + + + + Returns the enclosing type of a specified nested type or nil handle if the type is not nested. + + + + + Returns an array of types nested in the specified type. + + + + + Resolution scope in which the target type is defined and is uniquely identified by the specified and . + + + Resolution scope can be one of the following handles: + + of the enclosing type, if the target type is a nested type. + , if the target type is defined in another module within the same assembly as this one. + , if the target type is defined in the current module. This should not occur in a CLI compressed metadata module. + , if the target type is defined in a different assembly from the current module. + Nil handle if the target type must be resolved by searching the for a matching and . + + + + + + Name of the target type. + + + + + Full name of the namespace where the target type is defined, or nil if the type is nested or defined in a root namespace. + + + + + Managed .text PE section. + + + Contains in the following order: + - Import Address Table + - COR Header + - IL + - Metadata + - Managed Resource Data + - Strong Name Signature + - Debug Table + - Import Table + - Name Table + - Runtime Startup Stub + - Mapped Field Data + + + + + Total size of metadata (header and all streams). + + + + + The size of IL stream (unaligned). + + + + + The size of mapped field data stream. + Aligned to . + + + + + The size of managed resource data stream. + Aligned to . + + + + + Size of strong name hash. + + + + + If set, the module must include a machine code stub that transfers control to the virtual execution system. + + + + + If set, the module contains instructions that assume a 64 bit instruction set. For example it may depend on an address being 64 bits. + This may be true even if the module contains only IL instructions because of PlatformInvoke and COM interop. + + + + + The size of a single entry in the "Debug Directory (Image Only)" + + + + + Minimal size of PDB path in Debug Directory. We pad the path to this minimal size to + allow some tools to patch the path without the need to rewrite the entire image. + This is a workaround put in place until these tools are retired. + + + + + The size of our debug directory: one entry for debug information, and an optional second one indicating + that the timestamp is deterministic (i.e. not really a timestamp) + + + + + Serializes .text section data into a specified . + + An empty builder to serialize section data to. + Relative virtual address of the section within the containing PE file. + Entry point token or RVA () + COR Flags (). + Base address of the PE image. + containing metadata. Must be populated with data. Linked into the and can't be expanded afterwards. + containing IL stream. Must be populated with data. Linked into the and can't be expanded afterwards. + containing mapped field data. Must be populated with data. Linked into the and can't be expanded afterwards. + containing managed resource data. Must be populated with data. Linked into the and can't be expanded afterwards. + containing debug table data. Must be populated with data. Linked into the and can't be expanded afterwards. + + + + Write one entry in the "Debug Directory (Image Only)" + See https://msdn.microsoft.com/en-us/windows/hardware/gg463119.aspx + section 5.1.1 (pages 71-72). + + + + + Write the entire "Debug Directory (Image Only)" along with data that it points to. + + + + + The type of target machine. + + + + + The number of sections. This indicates the size of the section table, which immediately follows the headers. + + + + + The low 32 bits of the number of seconds since 00:00 January 1, 1970, that indicates when the file was created. + + + + + The file pointer to the COFF symbol table, or zero if no COFF symbol table is present. + This value should be zero for a PE image. + + + + + The number of entries in the symbol table. This data can be used to locate the string table, + which immediately follows the symbol table. This value should be zero for a PE image. + + + + + The size of the optional header, which is required for executable files but not for object files. + This value should be zero for an object file. + + + + + The flags that indicate the attributes of the file. + + + + + COR20Flags + + + + + GUID (Globally Unique Identifier) of the associated PDB. + + + + + Iteration of the PDB. The first iteration is 1. The iteration is incremented each time the PDB content is augmented. + + + + + Path to the .pdb file containing debug information for the PE/COFF file. + + + + + Identifies the location, size and format of a block of debug information. + + + + + The time and date that the debug data was created if the PE/COFF file is not deterministic, + otherwise a value based on the hash of the content. + + + The algorithm used to calculate this value is an implementation + detail of the tool that produced the file. + + + + + The major version number of the debug data format. + + + + + The minor version number of the debug data format. + + + + + The format of debugging information. + + + + + The size of the debug data (not including the debug directory itself). + + + + + The address of the debug data when loaded, relative to the image base. + + + + + The file pointer to the debug data. + + + + + An unknown value that is ignored by all tools. + + + + + The COFF debug information (line numbers, symbol table, and string table). + This type of debug information is also pointed to by fields in the file headers. + + + + + Associated PDB file description. + + + + + Presence of this entry indicates deterministic PE/COFF file. + + + + The tool that produced the deterministic PE/COFF file guarantees that the entire content of the file + is based solely on documented inputs given to the tool (such as source files, resource files, compiler options, etc.) + rather than ambient environment variables (such as the current time, the operating system, + the bitness of the process running the tool, etc.). + + + The value of field TimeDateStamp in COFF File Header of a deterministic PE/COFF file + does not indicate the date and time when the file was produced and should not be interpreted that way. + Instead the value of the field is derived from a hash of the file content. The algorithm to calculate + this value is an implementation detail of the tool that produced the file. + + + The debug directory entry of type must have all fields, except for Type zeroed. + + + + + + The target CPU is unknown or not specified. + + + + + Intel 386. + + + + + MIPS little-endian WCE v2 + + + + + Alpha + + + + + Hitachi SH3 little endian + + + + + Hitachi SH3 DSP. + + + + + Hitachi SH3 little endian. + + + + + Hitachi SH4 little endian. + + + + + Hitachi SH5. + + + + + ARM little endian + + + + + Thumb. + + + + + ARM Thumb-2 little endian. + + + + + Matsushita AM33. + + + + + IBM PowerPC little endian. + + + + + PowerPCFP + + + + + Intel 64 + + + + + MIPS + + + + + ALPHA64 + + + + + MIPS with FPU. + + + + + MIPS16 with FPU. + + + + + Infineon + + + + + EFI Byte Code + + + + + AMD64 (K8) + + + + + M32R little-endian + + + + + Simple BinaryReader wrapper to: + + 1) throw BadImageFormat instead of EndOfStream or ArgumentOutOfRange. + 2) limit reads to a subset of the base stream. + + Only methods that are needed to read PE headers are implemented. + + + + + Reads a fixed-length byte block as a null-padded UTF8-encoded string. + The padding is not included in the returned string. + + Note that it is legal for UTF8 strings to contain NUL; if NUL occurs + between non-NUL codepoints, it is not considered to be padding and + is included in the result. + + + + + Resolve image size as either the given user-specified size or distance from current position to end-of-stream. + Also performs the relevant argument validation and publicly visible caller has same argument names. + + size is null and distance from current position to end-of-stream can't fit in Int32. + Size is negative or extends past the end-of-stream from current position. + + + + Reserved. + + + + + Reserved. + + + + + Reserved. + + + + + Reserved. + + + + + Image can handle a high entropy 64-bit virtual address space. + + + + + DLL can move. + + + + + Image is NX compatible. + + + + + Image understands isolation and doesn't want it. + + + + + Image does not use SEH. No SE handler may reside in this image. + + + + + Do not bind this image. + + + + + The image must run inside an AppContainer. + + + + + Driver uses WDM model. + + + + + Identifies the format of the image file. + + + + + The linker major version number. + + + + + The linker minor version number. + + + + + The size of the code (text) section, or the sum of all code sections if there are multiple sections. + + + + + The size of the initialized data section, or the sum of all such sections if there are multiple data sections. + + + + + The size of the uninitialized data section (BSS), or the sum of all such sections if there are multiple BSS sections. + + + + + The address of the entry point relative to the image base when the PE file is loaded into memory. + For program images, this is the starting address. For device drivers, this is the address of the initialization function. + An entry point is optional for DLLs. When no entry point is present, this field must be zero. + + + + + The address that is relative to the image base of the beginning-of-code section when it is loaded into memory. + + + + + The address that is relative to the image base of the beginning-of-data section when it is loaded into memory. + + + + + The preferred address of the first byte of image when loaded into memory; + must be a multiple of 64K. + + + + + The alignment (in bytes) of sections when they are loaded into memory. It must be greater than or equal to . + The default is the page size for the architecture. + + + + + The alignment factor (in bytes) that is used to align the raw data of sections in the image file. + The value should be a power of 2 between 512 and 64K, inclusive. The default is 512. + If the is less than the architecture's page size, + then must match . + + + + + The major version number of the required operating system. + + + + + The minor version number of the required operating system. + + + + + The major version number of the image. + + + + + The minor version number of the image. + + + + + The major version number of the subsystem. + + + + + The minor version number of the subsystem. + + + + + The size (in bytes) of the image, including all headers, as the image is loaded in memory. + It must be a multiple of . + + + + + The combined size of an MS DOS stub, PE header, and section headers rounded up to a multiple of FileAlignment. + + + + + The image file checksum. + + + + + The subsystem that is required to run this image. + + + + + The size of the stack to reserve. Only is committed; + the rest is made available one page at a time until the reserve size is reached. + + + + + The size of the stack to commit. + + + + + The size of the local heap space to reserve. Only is committed; + the rest is made available one page at a time until the reserve size is reached. + + + + + The size of the local heap space to commit. + + + + + The number of data-directory entries in the remainder of the . Each describes a location and size. + + + + + The Certificate Table entry points to a table of attribute certificates. + These certificates are not loaded into memory as part of the image. + As such, the first field of this entry, which is normally an RVA, is a file pointer instead. + + + + + An object used to read PE (Portable Executable) and COFF (Common Object File Format) headers from a stream. + + + + + Reads PE headers from the current location in the stream. + + Stream containing PE image starting at the stream's current position and ending at the end of the stream. + The data read from stream have invalid format. + Error reading from the stream. + The stream doesn't support seek operations. + is null. + + + + Reads PE headers from the current location in the stream. + + Stream containing PE image of the given size starting at its current position. + Size of the PE image. + The data read from stream have invalid format. + Error reading from the stream. + The stream doesn't support seek operations. + is null. + Size is negative or extends past the end of the stream. + + + + Gets the offset (in bytes) from the start of the PE image to the start of the CLI metadata. + or -1 if the image does not contain metadata. + + + + + Gets the size of the CLI metadata 0 if the image does not contain metadata.) + + + + + Gets the COFF header of the image. + + + + + Gets the byte offset from the start of the PE image to the start of the COFF header. + + + + + Determines if the image is Coff only. + + + + + Gets the PE header of the image or null if the image is COFF only. + + + + + Gets the byte offset from the start of the image to + + + + + Gets the PE section headers. + + + + + Gets the CLI header or null if the image does not have one. + + + + + Gets the byte offset from the start of the image to the COR header or -1 if the image does not have one. + + + + + Determines if the image represents a Windows console application. + + + + + Determines if the image represents a dynamically linked library. + + + + + Determines if the image represents an executable. + + + + + Gets the offset (in bytes) from the start of the image to the given directory entry. + + + + The section containing the directory could not be found. + The section containing the + + + + Searches sections of the PE image for the one that contains specified Relative Virtual Address. + + Address. + + Index of the section that contains , + or -1 if there is none. + + + + + Portable Executable format reader. + + + The implementation is thread-safe, that is multiple threads can read data from the reader in parallel. + Disposal of the reader is not thread-safe (see ). + + + + + Creates a Portable Executable reader over a PE image stored in memory. + + Pointer to the start of the PE image. + The size of the PE image. + is . + is negative. + + The memory is owned by the caller and not released on disposal of the . + The caller is responsible for keeping the memory alive and unmodified throughout the lifetime of the . + The content of the image is not read during the construction of the + + + + + Creates a Portable Executable reader over a PE image stored in a stream. + + PE image stream. + is null. + + is specified and the PE headers of the image are invalid. + + + Ownership of the stream is transferred to the upon successful validation of constructor arguments. It will be + disposed by the and the caller must not manipulate it. + + + + + Creates a Portable Executable reader over a PE image stored in a stream beginning at its current position and ending at the end of the stream. + + PE image stream. + + Options specifying how sections of the PE image are read from the stream. + + Unless is specified, ownership of the stream is transferred to the + upon successful argument validation. It will be disposed by the and the caller must not manipulate it. + + Unless or is specified no data + is read from the stream during the construction of the . Furthermore, the stream must not be manipulated + by caller while the is alive and undisposed. + + If or , the + will have read all of the data requested during construction. As such, if is also + specified, the caller retains full ownership of the stream and is assured that it will not be manipulated by the + after construction. + + is null. + has an invalid value. + + is specified and the PE headers of the image are invalid. + + + + + Creates a Portable Executable reader over a PE image of the given size beginning at the stream's current position. + + PE image stream. + PE image size. + + Options specifying how sections of the PE image are read from the stream. + + Unless is specified, ownership of the stream is transferred to the + upon successful argument validation. It will be disposed by the and the caller must not manipulate it. + + Unless or is specified no data + is read from the stream during the construction of the . Furthermore, the stream must not be manipulated + by caller while the is alive and undisposed. + + If or , the + will have read all of the data requested during construction. As such, if is also + specified, the caller retains full ownership of the stream and is assured that it will not be manipulated by the + after construction. + + Size is negative or extends past the end of the stream. + + + + Creates a Portable Executable reader over a PE image stored in a byte array. + + PE image. + + The content of the image is not read during the construction of the + + is null. + + + + Disposes all memory allocated by the reader. + + + can be called multiple times (but not in parallel). + It is not safe to call in parallel with any other operation on the + or reading from s retrieved from the reader. + + + + + Gets the PE headers. + + The headers contain invalid data. + + + + Returns a view of the entire image as a pointer and length. + + PE image not available. + + + + Return true if the reader can access the entire PE image. + + + Returns false if the is constructed from a stream and only part of it is prefetched into memory. + + + + + Gets a pointer to and size of the PE image if available (). + + The entire PE image is not available. + + + + Returns true if the PE image contains CLI metadata. + + The PE headers contain invalid data. + + + + Loads PE section that contains CLI metadata. + + The PE image doesn't contain metadata ( returns false). + The PE headers contain invalid data. + + + + Loads PE section that contains the specified into memory + and returns a memory block that starts at and ends at the end of the containing section. + + Relative Virtual Address of the data to read. + + An empty block if doesn't represent a location in any of the PE sections of this PE image. + + The PE headers contain invalid data. + + + + Reads all Debug Directory table entries. + + Bad format of the entry. + + + + Reads the data pointed to by the specifed Debug Directory entry and interprets them as CodeView. + + is not a CodeView entry. + Bad format of the data. + + + + By default the stream is disposed when is disposed and sections of the PE image are read lazily. + + + + + Keep the stream open when the is disposed. + + + + + Reads metadata section into memory right away. + + + Reading from other sections of the file is not allowed ( is thrown by the ). + The underlying file may be closed and even deleted after is constructed. + + closes the stream automatically by the time the constructor returns unless is specified. + + + + + Reads the entire image into memory right away. + + + closes the stream automatically by the time the constructor returns unless is specified. + + + + + The name of the section. + + + + + The total size of the section when loaded into memory. + If this value is greater than , the section is zero-padded. + This field is valid only for PE images and should be set to zero for object files. + + + + + For PE images, the address of the first byte of the section relative to the image base when the + section is loaded into memory. For object files, this field is the address of the first byte before + relocation is applied; for simplicity, compilers should set this to zero. Otherwise, + it is an arbitrary value that is subtracted from offsets during relocation. + + + + + The size of the section (for object files) or the size of the initialized data on disk (for image files). + For PE images, this must be a multiple of . + If this is less than , the remainder of the section is zero-filled. + Because the field is rounded but the field is not, + it is possible for to be greater than as well. + When a section contains only uninitialized data, this field should be zero. + + + + + The file pointer to the first page of the section within the COFF file. + For PE images, this must be a multiple of . + For object files, the value should be aligned on a 4 byte boundary for best performance. + When a section contains only uninitialized data, this field should be zero. + + + + + The file pointer to the beginning of relocation entries for the section. + This is set to zero for PE images or if there are no relocations. + + + + + The file pointer to the beginning of line-number entries for the section. + This is set to zero if there are no COFF line numbers. + This value should be zero for an image because COFF debugging information is deprecated. + + + + + The number of relocation entries for the section. This is set to zero for PE images. + + + + + The number of line-number entries for the section. + This value should be zero for an image because COFF debugging information is deprecated. + + + + + The flags that describe the characteristics of the section. + + + + + Used to modify the value of the property. + CLS-compliant setters are named with set_ prefix. + + + + + Used to read the value of the property. + CLS-compliant getters are named with get_ prefix. + + + + + Other method for property (not getter or setter) or event (not adder, remover, or raiser). + + + + + Used to add a handler for an event. + Corresponds to the AddOn flag in the Ecma 335 CLI specification. + CLS-compliant adders are named with add_ prefix. + + + + + Used to remove a handler for an event. + Corresponds to the RemoveOn flag in the Ecma 335 CLI specification. + CLS-compliant removers are named with remove_ prefix. + + + + + Used to indicate that an event has occurred. + Corresponds to the Fire flag in the Ecma 335 CLI specification. + CLS-compliant raisers are named with raise_ prefix. + + + + + Specifies the security actions that can be performed using declarative security. + + + + + No declarative security action. + + + + + Check that all callers in the call chain have been granted specified permission, + + + + + The calling code can access the resource identified by the current permission object, even if callers higher in the stack have not been granted permission to access the resource. + + + + + Without further checks refuse Demand for the specified permission. + + + + + Without further checks, refuse Demand for all permissions other than those specified. + + + + + Check that the immediate caller has been granted the specified permission; + + + + + The derived class inheriting the class or overriding a method is required to have been granted the specified permission. + + + + + The request for the minimum permissions required for code to run. This action can only be used within the scope of the assembly. + + + + + The request for additional permissions that are optional (not required to run). This request implicitly refuses all other permissions not specifically requested. This action can only be used within the scope of the assembly. + + + + + The request that permissions that might be misused will not be granted to the calling code. This action can only be used within the scope of the assembly. + + + + + The Resource is exported from the Assembly + + + + + The Resource is not exported from the Assembly + + + + + Masks just the visibility-related attributes. + + + + + Specifies all the hash algorithms used for hashing assembly files and for generating the strong name. + + + + + A mask indicating that there is no hash algorithm. If you specify None for a multi-module assembly, the common language runtime defaults to the SHA1 algorithm, since multi-module assemblies need to generate a hash. + + + + + Retrieves the MD5 message-digest algorithm. MD5 was developed by Rivest in 1991. It is basically MD4 with safety-belts and while it is slightly slower than MD4, it helps provide more security. The algorithm consists of four distinct rounds, which has a slightly different design from that of MD4. Message-digest size, as well as padding requirements, remain the same. + + + + + Retrieves a revision of the Secure Hash Algorithm that corrects an unpublished flaw in SHA. + + + + + Retrieves a version of the Secure Hash Algorithm with a hash size of 256 bits. + + + + + Retrieves a version of the Secure Hash Algorithm with a hash size of 384 bits. + + + + + Retrieves a version of the Secure Hash Algorithm with a hash size of 512 bits. + + + + + The assembly reference holds the full (unhashed) public key. + Not applicable on assembly definition. + + + + + The implementation of the referenced assembly used at runtime is not expected to match the version seen at compile time. + + + + + The assembly contains Windows Runtime code. + + + + + Content type mask. Masked bits correspond to values of . + + + + + Specifies that just-in-time (JIT) compiler optimization is disabled for the assembly. + + + + + Specifies that just-in-time (JIT) compiler tracking is enabled for the assembly. + + + +